s4:getopt.py - set the password callback only when no password has been provided
authorMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Fri, 12 Feb 2010 12:55:14 +0000 (13:55 +0100)
committerMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Fri, 12 Feb 2010 14:04:07 +0000 (15:04 +0100)
Previously the "no_pass" and "no_pass2" variables weren't handled correctly.
Since at the initialisation of the "CredentialsOptions" we don't have any
password at all. Only afterwards we could get one through "set_password".

If a password is specified, use it. If no password is specified, consider the
use fo an input mask on STDOUT. But if the loadparm context contains one prefer
it over the input.

source4/scripting/python/samba/getopt.py

index a62bd5ae5a9e88c70f6adaeecb968305619c823d..ba7a9ebb2e81471f69daedea1b82b17ade23a027 100644 (file)
@@ -66,7 +66,7 @@ class VersionOptions(optparse.OptionGroup):
 class CredentialsOptions(optparse.OptionGroup):
     """Command line options for specifying credentials."""
     def __init__(self, parser):
-        self.no_pass = False
+        self.no_pass = True
         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,
@@ -94,6 +94,7 @@ class CredentialsOptions(optparse.OptionGroup):
 
     def _set_password(self, option, opt_str, arg, parser):
         self.creds.set_password(arg)
+        self.no_pass = False
 
     def _set_kerberos(self, option, opt_str, arg, parser):
         if bool(arg) or arg.lower() == "yes":
@@ -111,7 +112,7 @@ class CredentialsOptions(optparse.OptionGroup):
         :return: Credentials object
         """
         self.creds.guess(lp)
-        if not self.no_pass:
+        if self.no_pass:
             self.creds.set_cmdline_callbacks()
         return self.creds
 
@@ -119,7 +120,7 @@ class CredentialsOptionsDouble(CredentialsOptions):
     """Command line options for specifying credentials of two servers."""
     def __init__(self, parser):
         CredentialsOptions.__init__(self, parser)
-        self.no_pass2 = False
+        self.no_pass2 = True
         self.add_option("--simple-bind-dn2", metavar="DN2", action="callback",
                         callback=self._set_simple_bind_dn2, type=str,
                         help="DN to use for a simple bind")
@@ -146,6 +147,7 @@ class CredentialsOptionsDouble(CredentialsOptions):
 
     def _set_password2(self, option, opt_str, arg, parser):
         self.creds2.set_password(arg)
+        self.no_pass2 = False
 
     def _set_kerberos2(self, option, opt_str, arg, parser):
         if bool(arg) or arg.lower() == "yes":
@@ -163,6 +165,6 @@ class CredentialsOptionsDouble(CredentialsOptions):
         :return: Credentials object
         """
         self.creds2.guess(lp)
-        if not self.no_pass2:
+        if self.no_pass2:
             self.creds2.set_cmdline_callbacks()
         return self.creds2