X-Git-Url: http://git.samba.org/samba.git/?p=ab%2Fsamba.git%2F.git;a=blobdiff_plain;f=source4%2Fscripting%2Fpython%2Fsamba%2Fgetopt.py;h=82cb004b621eebd263a17f944a075d92b866d113;hp=c0e70530626eec5e1003dc82503ff613fe160eed;hb=142fbfb3c1f9f8cda7f0edaa801f8345f23d805f;hpb=6817c5d885a75a1af0e646827c3fa8220df8c7a5;ds=sidebyside diff --git a/source4/scripting/python/samba/getopt.py b/source4/scripting/python/samba/getopt.py index c0e70530626..82cb004b621 100644 --- a/source4/scripting/python/samba/getopt.py +++ b/source4/scripting/python/samba/getopt.py @@ -18,14 +18,30 @@ # import optparse -from credentials import Credentials +from credentials import Credentials, AUTO_USE_KERBEROS, DONT_USE_KERBEROS, MUST_USE_KERBEROS 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): @@ -34,31 +50,46 @@ class VersionOptions(optparse.OptionGroup): class CredentialsOptions(optparse.OptionGroup): def __init__(self, parser): + self.no_pass = False optparse.OptionGroup.__init__(self, parser, "Credentials Options") self.add_option("--simple-bind-dn", metavar="DN", action="callback", - callback=self.set_simple_bind_dn, type=str, + callback=self._set_simple_bind_dn, type=str, help="DN to use for a simple bind") self.add_option("--password", metavar="PASSWORD", action="callback", - help="Password", type=str, callback=self.set_password) + help="Password", type=str, callback=self._set_password) self.add_option("-U", "--username", metavar="USERNAME", action="callback", type=str, - help="Username", callback=self.parse_username) + help="Username", callback=self._parse_username) self.add_option("-W", "--workgroup", metavar="WORKGROUP", action="callback", type=str, - help="Workgroup", callback=self.parse_workgroup) + help="Workgroup", callback=self._parse_workgroup) + self.add_option("-N", "--no-pass", action="store_true", + help="Don't ask for a password") + self.add_option("-k", "--kerberos", metavar="KERBEROS", + action="callback", type=str, + help="Use Kerberos", callback=self._set_kerberos) self.creds = Credentials() - def parse_username(self, option, opt_str, arg, parser): + def _parse_username(self, option, opt_str, arg, parser): self.creds.parse_string(arg) - def parse_workgroup(self, option, opt_str, arg, parser): + def _parse_workgroup(self, option, opt_str, arg, parser): self.creds.set_domain(arg) - def set_password(self, option, opt_str, arg, parser): + def _set_password(self, option, opt_str, arg, parser): self.creds.set_password(arg) - def set_simple_bind_dn(self, option, opt_str, arg, parser): + def _set_kerberos(self, option, opt_str, arg, parser): + if bool(arg) or arg.lower() == "yes": + self.creds.set_kerberos_state(MUST_USE_KERBEROS) + else: + self.creds.set_kerberos_state(DONT_USE_KERBEROS) + + def _set_simple_bind_dn(self, option, opt_str, arg, parser): self.creds.set_bind_dn(arg) - def get_credentials(self): + def get_credentials(self, lp): + self.creds.guess(lp) + if not self.no_pass: + self.creds.set_cmdline_callbacks() return self.creds