[SCM] Samba Shared Repository - branch v4-0-test updated - release-4-0-0alpha2-536-gf93bd89

Jelmer Vernooij jelmer at samba.org
Wed Jan 23 22:39:54 GMT 2008


The branch, v4-0-test has been updated
       via  f93bd899f1402a9d89f55d5dca67318a60f5a72b (commit)
       via  b3afde0f00ab5093b577b139a062c233d4db2524 (commit)
       via  ffd793bbde636366855462f980f1f7d0e25afaab (commit)
      from  948ee9b7acd90b994bb9d9f7c1813a8eca430e4f (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test


- Log -----------------------------------------------------------------
commit f93bd899f1402a9d89f55d5dca67318a60f5a72b
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Wed Jan 23 23:38:21 2008 +0100

    Default to creating anonymous credentials.

commit b3afde0f00ab5093b577b139a062c233d4db2524
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Wed Jan 23 23:33:36 2008 +0100

    python: Add convenience function for getting command line loadparm context
    and default to using system smb.conf.

commit ffd793bbde636366855462f980f1f7d0e25afaab
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Wed Jan 23 23:15:39 2008 +0100

    Add bindings for lp_load_default().

-----------------------------------------------------------------------

Summary of changes:
 source/auth/credentials/credentials.i      |    2 +-
 source/auth/credentials/credentials_wrap.c |    2 +-
 source/lib/ldb/tests/python/ldap.py        |    7 ++---
 source/param/param.i                       |    1 +
 source/param/param.py                      |    1 +
 source/param/param_wrap.c                  |   30 ++++++++++++++++++++++++++++
 source/param/tests/bindings.py             |    3 ++
 source/scripting/bin/winreg.py             |    5 ++-
 source/scripting/python/samba/getopt.py    |   20 ++++++++++++++++-
 source/setup/provision.py                  |    9 +++----
 source/setup/upgrade.py                    |    9 +++----
 source/setup/vampire.py                    |    7 ++---
 12 files changed, 72 insertions(+), 24 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/auth/credentials/credentials.i b/source/auth/credentials/credentials.i
index ee09b43..fedb8bd 100644
--- a/source/auth/credentials/credentials.i
+++ b/source/auth/credentials/credentials.i
@@ -51,7 +51,7 @@ typedef struct cli_credentials cli_credentials;
 typedef struct cli_credentials {
     %extend {
         cli_credentials(void) {
-            return cli_credentials_init(NULL);
+            return cli_credentials_init_anon(NULL);
         }
         /* username */
         const char *get_username(void);
diff --git a/source/auth/credentials/credentials_wrap.c b/source/auth/credentials/credentials_wrap.c
index 146a81a..849b28e 100644
--- a/source/auth/credentials/credentials_wrap.c
+++ b/source/auth/credentials/credentials_wrap.c
@@ -2527,7 +2527,7 @@ typedef struct cli_credentials cli_credentials;
 #include "librpc/gen_ndr/samr.h" /* for struct samr_Password */
 
 SWIGINTERN cli_credentials *new_cli_credentials(){
-            return cli_credentials_init(NULL);
+            return cli_credentials_init_anon(NULL);
         }
 
 SWIGINTERN swig_type_info*
diff --git a/source/lib/ldb/tests/python/ldap.py b/source/lib/ldb/tests/python/ldap.py
index 01b66a3..d35f776 100755
--- a/source/lib/ldb/tests/python/ldap.py
+++ b/source/lib/ldb/tests/python/ldap.py
@@ -19,7 +19,8 @@ from samba import Ldb
 import param
 
 parser = optparse.OptionParser("ldap [options] <host>")
-parser.add_option_group(options.SambaOptions(parser))
+sambaopts = options.SambaOptions(parser)
+parser.add_option_group(sambaopts)
 parser.add_option_group(options.VersionOptions(parser))
 # use command line creds if available
 credopts = options.CredentialsOptions(parser)
@@ -33,9 +34,7 @@ if len(args) < 1:
 
 host = args[0]
 
-lp = param.LoadParm()
-if opts.configfile:
-    lp.load(opts.configfile)
+lp = sambaopts.get_loadparm()
 
 def delete_force(ldb, dn):
     try:
diff --git a/source/param/param.i b/source/param/param.i
index eeecb0e..7322302 100644
--- a/source/param/param.i
+++ b/source/param/param.i
@@ -50,6 +50,7 @@ typedef struct loadparm_context {
     %extend {
         loadparm_context(TALLOC_CTX *mem_ctx) { return loadparm_init(mem_ctx); }
         bool load(const char *filename) { return lp_load($self, filename); }
+        bool load_default() { return lp_load_default($self); }
 #ifdef SWIGPYTHON
         int __len__() { return lp_numservices($self); }
         struct loadparm_service *__getitem__(const char *name) { return lp_service($self, name); }
diff --git a/source/param/param.py b/source/param/param.py
index 66b51e5..5adf7a4 100644
--- a/source/param/param.py
+++ b/source/param/param.py
@@ -64,6 +64,7 @@ class LoadParm(object):
         _param.LoadParm_swiginit(self,_param.new_LoadParm(*args, **kwargs))
     __swig_destroy__ = _param.delete_LoadParm
 LoadParm.load = new_instancemethod(_param.LoadParm_load,None,LoadParm)
+LoadParm.load_default = new_instancemethod(_param.LoadParm_load_default,None,LoadParm)
 LoadParm.__len__ = new_instancemethod(_param.LoadParm___len__,None,LoadParm)
 LoadParm.__getitem__ = new_instancemethod(_param.LoadParm___getitem__,None,LoadParm)
 LoadParm.configfile = new_instancemethod(_param.LoadParm_configfile,None,LoadParm)
diff --git a/source/param/param_wrap.c b/source/param/param_wrap.c
index d8be725..275e2d6 100644
--- a/source/param/param_wrap.c
+++ b/source/param/param_wrap.c
@@ -2602,6 +2602,7 @@ SWIGINTERNINLINE PyObject*
   return PyBool_FromLong(value ? 1 : 0);
 }
 
+SWIGINTERN bool loadparm_context_load_default(loadparm_context *self){ return lp_load_default(self); }
 SWIGINTERN int loadparm_context___len__(loadparm_context *self){ return lp_numservices(self); }
 
   #define SWIG_From_long   PyInt_FromLong 
@@ -2840,6 +2841,34 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_LoadParm_load_default(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+  PyObject *resultobj = 0;
+  loadparm_context *arg1 = (loadparm_context *) 0 ;
+  bool result;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  char *  kwnames[] = {
+    (char *) "self", NULL 
+  };
+  
+  arg1 = loadparm_init(NULL);
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"|O:LoadParm_load_default",kwnames,&obj0)) SWIG_fail;
+  if (obj0) {
+    res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_loadparm_context, 0 |  0 );
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "LoadParm_load_default" "', argument " "1"" of type '" "loadparm_context *""'"); 
+    }
+    arg1 = (loadparm_context *)(argp1);
+  }
+  result = (bool)loadparm_context_load_default(arg1);
+  resultobj = SWIG_From_bool((bool)(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_LoadParm___len__(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   loadparm_context *arg1 = (loadparm_context *) 0 ;
@@ -4050,6 +4079,7 @@ SWIGINTERN PyObject *Swig_var_default_config_get(void) {
 static PyMethodDef SwigMethods[] = {
 	 { (char *)"new_LoadParm", (PyCFunction)_wrap_new_LoadParm, METH_NOARGS, NULL},
 	 { (char *)"LoadParm_load", (PyCFunction) _wrap_LoadParm_load, METH_VARARGS | METH_KEYWORDS, NULL},
+	 { (char *)"LoadParm_load_default", (PyCFunction) _wrap_LoadParm_load_default, METH_VARARGS | METH_KEYWORDS, NULL},
 	 { (char *)"LoadParm___len__", (PyCFunction) _wrap_LoadParm___len__, METH_VARARGS | METH_KEYWORDS, NULL},
 	 { (char *)"LoadParm___getitem__", (PyCFunction) _wrap_LoadParm___getitem__, METH_VARARGS | METH_KEYWORDS, NULL},
 	 { (char *)"LoadParm_configfile", (PyCFunction) _wrap_LoadParm_configfile, METH_VARARGS | METH_KEYWORDS, NULL},
diff --git a/source/param/tests/bindings.py b/source/param/tests/bindings.py
index 9ea1c00..0dd186b 100644
--- a/source/param/tests/bindings.py
+++ b/source/param/tests/bindings.py
@@ -46,6 +46,9 @@ class LoadParmTestCase(unittest.TestCase):
         self.assertTrue(file.is_myname("BLA"))
         self.assertFalse(file.is_myname("FOOBAR"))
 
+    def test_load_default(self):
+        file = param.LoadParm()
+        file.load_default()
 
 class ParamTestCase(unittest.TestCase):
     def test_init(self):
diff --git a/source/scripting/bin/winreg.py b/source/scripting/bin/winreg.py
index f68f2d1..1e39ee8 100755
--- a/source/scripting/bin/winreg.py
+++ b/source/scripting/bin/winreg.py
@@ -12,7 +12,8 @@ import optparse
 import samba.getopt as options
 
 parser = optparse.OptionParser("%s <BINDING> [path]" % sys.argv[0])
-parser.add_option_group(options.SambaOptions(parser))
+sambaopts = options.SambaOptions(parser)
+parser.add_option_group(sambaopts)
 parser.add_option("--createkey", type="string", metavar="KEYNAME", 
         help="create a key")
 
@@ -25,7 +26,7 @@ if len(args) < 1:
 binding = args[0]
 
 print "Connecting to " + binding
-conn = winreg.winreg(binding, opts.configfile)
+conn = winreg.winreg(binding, sambaopts.get_loadparm())
 
 def list_values(key):
     (num_values, max_valnamelen, max_valbufsize) = conn.QueryInfoKey(key, winreg.String())[4:8]
diff --git a/source/scripting/python/samba/getopt.py b/source/scripting/python/samba/getopt.py
index a087974..dfcf2c4 100644
--- a/source/scripting/python/samba/getopt.py
+++ b/source/scripting/python/samba/getopt.py
@@ -23,9 +23,25 @@ from credentials import Credentials
 class SambaOptions(optparse.OptionGroup):
     def __init__(self, parser):
         optparse.OptionGroup.__init__(self, parser, "Samba Common Options")
-        self.add_option("-s", "--configfile", type="string", metavar="FILE",
-                        help="Configuration file")
+        self.add_option("-s", "--configfile", action="callback",
+                        type=str, metavar="FILE", help="Configuration file", 
+                        callback=self._load_configfile)
+        self._configfile = None
 
+    def get_loadparm_path(self):
+        return self._configfile
+
+    def _load_configfile(self, option, opt_str, arg, parser):
+        self._configfile = arg
+
+    def get_loadparm(self):
+        import param
+        lp = param.LoadParm()
+        if self._configfile is None:
+            lp.load_default()
+        else:
+            lp.load(self._configfile)
+        return lp
 
 class VersionOptions(optparse.OptionGroup):
     def __init__(self, parser):
diff --git a/source/setup/provision.py b/source/setup/provision.py
index 88015ce..b9a11bd 100755
--- a/source/setup/provision.py
+++ b/source/setup/provision.py
@@ -37,7 +37,8 @@ from samba.provision import (provision,
                              provision_paths_from_lp)
 
 parser = optparse.OptionParser("provision [options]")
-parser.add_option_group(options.SambaOptions(parser))
+sambaopts = options.SambaOptions(parser)
+parser.add_option_group(sambaopts)
 parser.add_option_group(options.VersionOptions(parser))
 credopts = options.CredentialsOptions(parser)
 parser.add_option_group(credopts)
@@ -111,9 +112,7 @@ if opts.realm is None or opts.domain is None:
 	sys.exit(1)
 
 # cope with an initially blank smb.conf 
-lp = param.LoadParm()
-if opts.configfile:
-    lp.load(opts.configfile)
+lp = sambaopts.get_loadparm()
 if opts.targetdir is not None:
     if not os.path.exists(opts.targetdir):
         os.mkdir(opts.targetdir)
@@ -127,7 +126,7 @@ if opts.aci is not None:
 	print "set ACI: %s" % opts.aci
 
 paths = provision_paths_from_lp(lp, opts.realm.lower())
-paths.smbconf = opts.configfile
+paths.smbconf = sambaopts.get_loadparm_path()
 
 if opts.ldap_backend:
 	if opts.ldap_backend == "ldapi":
diff --git a/source/setup/upgrade.py b/source/setup/upgrade.py
index ea6f83d..4cf9641 100755
--- a/source/setup/upgrade.py
+++ b/source/setup/upgrade.py
@@ -14,7 +14,8 @@ import samba.getopt as options
 from auth import system_session
 
 parser = optparse.OptionParser("upgrade [options] <libdir> <smbconf>")
-parser.add_option_group(options.SambaOptions(parser))
+sambaopts = options.SambaOptions(parser)
+parser.add_option_group(sambaopts)
 parser.add_option_group(options.VersionOptions(parser))
 credopts = options.CredentialsOptions(parser)
 parser.add_option_group(credopts)
@@ -59,15 +60,13 @@ if setup_dir is None:
 	setup_dir = "setup"
 
 creds = credopts.get_credentials()
-lp = param.LoadParm()
-if opts.configfile:
-    lp.load(opts.configfile)
+lp = sambaopts.get_loadparm()
 if opts.targetdir is not None:
     if not os.path.exists(opts.targetdir):
         os.mkdir(opts.targetdir)
     lp.set("private dir", os.path.abspath(opts.targetdir))
     lp.set("lock dir", os.path.abspath(opts.targetdir))
 paths = provision_paths_from_lp(lp, "")
-paths.smbconf = opts.configfile
+paths.smbconf = sambaopts.get_loadparm_path()
 upgrade_provision(samba3, setup_dir, message, credentials=creds, session_info=system_session(), 
                   lp=lp, paths=paths)
diff --git a/source/setup/vampire.py b/source/setup/vampire.py
index 392cd2d..728c531 100755
--- a/source/setup/vampire.py
+++ b/source/setup/vampire.py
@@ -26,7 +26,8 @@ from auth import system_session
 import sys
 
 parser = optparse.OptionParser("vampire [options] <domain>")
-parser.add_option_group(options.SambaOptions(parser))
+sambaopts = options.SambaOptions(parser)
+parser.add_option_group(sambaopts)
 parser.add_option_group(options.VersionOptions(parser))
 credopts = options.CredentialsOptions(parser)
 parser.add_option_group(credopts)
@@ -47,8 +48,6 @@ def vampire(domain, session_info, credentials, lp):
     ctx.samsync_ldb(vampire_ctx, machine_creds=machine_creds, 
                     session_info=session_info)
 
-lp = param.LoadParm()
-if opts.configfile:
-    lp.load(opts.configfile)
+lp = sambaopts.get_loadparm()
 vampire(args[0], session_info=system_session(), 
         credentials=credopts.get_credentials(), lp=lp)


-- 
Samba Shared Repository


More information about the samba-cvs mailing list