def __init__(self): """ :raises SettingsException: """ self.config_parsers = dict() # dict of DefaultConfigParser indexed by filename self.toolbox = None # Receives Toolbox object self.services = None # Receives ServicesConfig object # Check directory and presence of *.conf files if not FileUtils.is_dir(SETTINGS_DIR): raise SettingsException('Configuration directory ({dir}) does not exist'.format(dir=SETTINGS_DIR)) files = FileUtils.list_directory(SETTINGS_DIR) for f in files: if not FileUtils.check_extension(f, CONF_EXT): files.remove(f) if not files: raise SettingsException('Configuration directory ({dir}) does not store any *.conf file'.format( dir=SETTINGS_DIR)) if TOOLBOX_CONF_FILE+CONF_EXT not in files: raise SettingsException('Missing mandatory {toolbox}{ext} settings file in directory "{dir}"'.format( toolbox=TOOLBOX_CONF_FILE, ext=CONF_EXT, dir=SETTINGS_DIR)) if INSTALL_STATUS_CONF_FILE+CONF_EXT not in files: open(SETTINGS_DIR+'/'+INSTALL_STATUS_CONF_FILE+CONF_EXT, 'a').close() logger.info('{status}{ext} settings file created in directory "{dir}"'.format( status=INSTALL_STATUS_CONF_FILE, ext=CONF_EXT, dir=SETTINGS_DIR)) files.append(INSTALL_STATUS_CONF_FILE+CONF_EXT) # Parse settings files, add tools inside toolbox and create scan configs self.__parse_all_conf_files(files) self.__create_toolbox() self.__create_all_services_checks()
def __init__(self): """ Start the parsing of settings files and create the Settings object. :raises SettingsException: Exception raised if any error is encountered while parsing files (syntax error, missing mandatory file...) """ self.config_parsers = dict( ) # Dict of DefaultConfigParser indexed by filename self.toolbox = None # Receives Toolbox object self.services = None # Receives ServicesConfig object self.attack_profiles = None # Receives AttackProfiles object # Check directory if not FileUtils.is_dir(SETTINGS_DIR): raise SettingsException('Configuration directory ({dir}) does not ' \ 'exist'.format(dir=SETTINGS_DIR)) # Check presence of *.conf files files = FileUtils.list_directory(SETTINGS_DIR) for f in files: if not FileUtils.check_extension(f, CONF_EXT): files.remove(f) if not files: raise SettingsException('Configuration directory ({dir}) does not ' \ 'store any *.conf file'.format(dir=SETTINGS_DIR)) if TOOLBOX_CONF_FILE + CONF_EXT not in files: raise SettingsException('Missing mandatory {toolbox}{ext} settings ' \ 'file in directory "{dir}"'.format( toolbox=TOOLBOX_CONF_FILE, ext=CONF_EXT, dir=SETTINGS_DIR)) if ATTACK_PROFILES_CONF_FILE + CONF_EXT not in files: raise SettingsException('Missing mandatory {profiles}{ext} settings ' \ 'file in directory "{dir}"'.format( profiles=ATTACK_PROFILES_CONF_FILE, ext=CONF_EXT, dir=SETTINGS_DIR)) # Create _install_status.conf file if necessary if INSTALL_STATUS_CONF_FILE + CONF_EXT not in files: open(SETTINGS_DIR + '/' + INSTALL_STATUS_CONF_FILE + CONF_EXT, 'a').close() logger.info('{status}{ext} settings file created in directory ' \ '"{dir}"'.format(status=INSTALL_STATUS_CONF_FILE, ext=CONF_EXT, dir=SETTINGS_DIR)) files.append(INSTALL_STATUS_CONF_FILE + CONF_EXT) # Parse configuration files and create objects from them self.__parse_all_conf_files(files) self.__create_toolbox() self.__create_all_services_config_and_checks() self.__create_attack_profiles()
def __init__(self, settings_dir, toolbox_dir, output): """ Initialize Settings object @Args settings_dir: directory where config files are stored toolbox_dir: directory where the toolbox is stored output: Instance of CLIOutput """ self.settings_dir = settings_dir self.toolbox_dir = toolbox_dir self.output = output # config_parsers: dict of config_parsers indexed by conf_filename self.config_parsers = {} # general_settings: 2 dimensions dict - [service_name][option_name] self.general_settings = {} self.toolbox = Toolbox(self) # Check directory and presence of *.conf files if not FileUtils.is_dir(settings_dir): self.output.printError( 'Configuration directory ({0}) does not exist'.format( settings_dir)) raise ValueError files = FileUtils.list_directory(settings_dir) for f in files: if not FileUtils.check_extension(f, CONF_EXT): files.remove(f) if not files: self.output.printError( 'Configuration directory ({0}) does not store any *.conf file'. format(settings_dir)) raise ValueError # Parse config files self.parseAllConfFiles(files)
def __init__(self, settings_dir, toolbox_dir, output): """ Constructor of Settings object @Args settings_dir: directory where config files are stored toolbox_dir: directory where the toolbox is stored output: Instance of CLIOutput """ self.settings_dir = settings_dir self.toolbox_dir = toolbox_dir self.output = output # config_parsers: dict of config_parsers indexed by service_name self.config_parsers = {} # general_settings: 2 dimensions dict - [service_name][setting] self.general_settings = {} self.toolbox = Toolbox(self) # Check directory and presence of *.conf files if not FileUtils.is_dir(settings_dir): self.output.printError( 'Configuration directory ({0}) does not exist'.format( settings_dir)) sys.exit(0) files = FileUtils.list_directory(settings_dir) for f in files: if not FileUtils.check_extension(f, CONF_EXT): files.remove(f) if not files: self.output.printError( 'Configuration directory ({0}) does not store any *.conf file'. format(settings_dir)) sys.exit(0) # Parse config files # i.e. extract tools categories and optional/specific settings for each service self.parseConfFiles(files)