Example #1
0
    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")
Example #2
0
 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)
Example #3
0
 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)
Example #4
0
    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")
Example #5
0
    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")
Example #6
0
    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")
Example #7
0
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")