def run(self, *args, **kwargs): if kwargs.get("hostname", None) is not None and kwargs.get("hostip", None) is None: raise CommandError("Both a DNS name and an IP address are " "required for the host access check") lp = kwargs["sambaopts"].get_loadparm() # We need this to force the output samba.set_debug_level(2) logger = logging.getLogger("testparm") logger.addHandler(logging.StreamHandler(sys.stdout)) logger.info("Loaded smb config files from %s", lp.configfile) logger.info("Loaded services file OK.") valid = self.do_global_checks(lp, logger) valid = valid and self.do_share_checks(lp, logger) if kwargs.get("hostname", None) is not None and kwargs.get("hostip", None) is not None: self.check_client_access(lp, kwargs["hostname"], kwargs["hostip"]) else: if kwargs.get("section_name", None) is not None or kwargs.get("parameter_name", None) is not None: if kwargs.get("parameter_name", None) is None: lp[kwargs["section_name"]].dump(sys.stdout, lp.default_service, kwargs["verbose"]) else: print lp.get(kwargs["parameter_name"], kwargs["section_name"]) else: if not kwargs["suppress_prompt"]: print "Press enter to see a dump of your service definitions\n" sys.stdin.readline() lp.dump(sys.stdout, kwargs["verbose"]) if valid: return else: raise CommandError("Invalid smb.conf")
def setUp(self): super(TestCase, self).setUp() test_debug_level = os.getenv("TEST_DEBUG_LEVEL") if test_debug_level is not None: test_debug_level = int(test_debug_level) self._old_debug_level = samba.get_debug_level() samba.set_debug_level(test_debug_level) self.addCleanup(samba.set_debug_level, test_debug_level)
def run(self, sambaopts, versionopts, section_name=None, parameter_name=None, client_ip=None, client_name=None, verbose=False, suppress_prompt=None, show_all_parameters=False, server=None): if server: raise NotImplementedError("--server not yet implemented") if show_all_parameters: raise NotImplementedError( "--show-all-parameters not yet implemented") if client_name is not None and client_ip is None: raise CommandError("Both a DNS name and an IP address are " "required for the host access check") try: lp = sambaopts.get_loadparm() except RuntimeError as err: raise CommandError(err) # We need this to force the output samba.set_debug_level(2) logger = self.get_logger("testparm") logger.info("Loaded smb config files from %s", lp.configfile) logger.info("Loaded services file OK.") valid = self.do_global_checks(lp, logger) valid = valid and self.do_share_checks(lp, logger) if client_name is not None and client_ip is not None: self.check_client_access(lp, logger, client_name, client_ip) else: if section_name is not None or parameter_name is not None: if parameter_name is None: lp[section_name].dump(verbose) else: lp.dump_a_parameter(parameter_name, section_name) else: if not suppress_prompt: self.outf.write( "Press enter to see a dump of your service definitions\n" ) sys.stdin.readline() lp.dump(verbose) if valid: return else: raise CommandError("Invalid smb.conf")
def run(self, sambaopts, versionopts, section_name=None, parameter_name=None, client_ip=None, client_name=None, verbose=False, suppress_prompt=None, show_all_parameters=False, server=None): if server: raise NotImplementedError("--server not yet implemented") if show_all_parameters: raise NotImplementedError("--show-all-parameters not yet implemented") if client_name is not None and client_ip is None: raise CommandError("Both a DNS name and an IP address are " "required for the host access check") try: lp = sambaopts.get_loadparm() except RuntimeError as err: raise CommandError(err) # We need this to force the output samba.set_debug_level(2) logger = self.get_logger("testparm") logger.info("Loaded smb config files from %s", lp.configfile) logger.info("Loaded services file OK.") valid = self.do_global_checks(lp, logger) valid = valid and self.do_share_checks(lp, logger) if client_name is not None and client_ip is not None: self.check_client_access(lp, logger, client_name, client_ip) else: if section_name is not None or parameter_name is not None: if parameter_name is None: lp[section_name].dump(sys.stdout, lp.default_service, verbose) else: lp.dump_a_parameter(sys.stdout, parameter_name, section_name) else: if not suppress_prompt: self.outf.write("Press enter to see a dump of your service definitions\n") sys.stdin.readline() lp.dump(sys.stdout, verbose) if valid: return else: raise CommandError("Invalid smb.conf")
def run(self, *args, **kwargs): if kwargs.get('hostname', None) is not None and \ kwargs.get('hostip', None) is None: raise CommandError("Both a DNS name and an IP address are " \ "required for the host access check") lp = kwargs['sambaopts'].get_loadparm() # We need this to force the output samba.set_debug_level(2) logger = logging.getLogger("testparm") logger.addHandler(logging.StreamHandler(sys.stdout)) logger.info("Loaded smb config files from %s", lp.configfile) logger.info("Loaded services file OK.") valid = self.do_global_checks(lp, logger) valid = valid and self.do_share_checks(lp, logger) if kwargs.get('hostname', None) is not None and \ kwargs.get('hostip', None) is not None: self.check_client_access(lp, kwargs['hostname'], kwargs['hostip']) else: if kwargs.get('section_name', None) is not None or \ kwargs.get('parameter_name', None) is not None: if kwargs.get('parameter_name', None) is None: lp[kwargs['section_name']].dump(sys.stdout, lp.default_service, kwargs['verbose']) else: print lp.get(kwargs['parameter_name'], kwargs['section_name']) else: if not kwargs['suppress_prompt']: print "Press enter to see a dump of your service definitions\n" sys.stdin.readline() lp.dump(sys.stdout, kwargs['verbose']) if valid: return else: raise CommandError("Invalid smb.conf")
class cmd_testparm(Command): """Syntax check the configuration file.""" synopsis = "%prog [options]" takes_optiongroups = { "sambaopts": options.SambaOptions, "versionopts": options.VersionOptions } takes_options = [ Option("--section-name", type=str, help="Limit testparm to a named section"), Option("--parameter-name", type=str, help="Limit testparm to a named parameter"), Option("--client-name", type=str, help="Client DNS name for 'hosts allow' checking " "(should match reverse lookup)"), Option("--client-ip", type=str, help="Client IP address for 'hosts allow' checking"), Option("--suppress-prompt", action="store_true", default=False, help="Suppress prompt for enter"), Option("-v", "--verbose", action="store_true", default=False, help="Show default options too"), # We need support for smb.conf macros before this will work again Option("--server", type=str, help="Set %L macro to servername"), # These are harder to do with the new code structure Option("--show-all-parameters", action="store_true", default=False, help="Show the parameters, type, possible values") ] takes_args = [] def run(self, sambaopts, versionopts, section_name=None, parameter_name=None, client_ip=None, client_name=None, verbose=False, suppress_prompt=None, show_all_parameters=False, server=None): if server: raise NotImplementedError("--server not yet implemented") if show_all_parameters: raise NotImplementedError( "--show-all-parameters not yet implemented") if client_name is not None and client_ip is None: raise CommandError("Both a DNS name and an IP address are " "required for the host access check") try: lp = sambaopts.get_loadparm() except RuntimeError, err: raise CommandError(err) # We need this to force the output samba.set_debug_level(2) logger = self.get_logger("testparm") logger.info("Loaded smb config files from %s", lp.configfile) logger.info("Loaded services file OK.") valid = self.do_global_checks(lp, logger) valid = valid and self.do_share_checks(lp, logger) if client_name is not None and client_ip is not None: self.check_client_access(lp, logger, client_name, client_ip) else: if section_name is not None or parameter_name is not None: if parameter_name is None: lp[section_name].dump(verbose) else: lp.dump_a_parameter(parameter_name, section_name) else: if not suppress_prompt: self.outf.write( "Press enter to see a dump of your service definitions\n" ) sys.stdin.readline() lp.dump(verbose) if valid: return else: raise CommandError("Invalid smb.conf")