예제 #1
0
    def __init__(self, krb5configs):
        self.data = {}
        main_data = {}
        self.includedir = []
        self.include = []
        self.module = []
        self.files = []

        for krb5_parser in krb5configs:
            self.files.append(krb5_parser.file_name)
            if krb5_parser.file_path == "/etc/krb5.conf":
                main_data = krb5_parser.data
                self.includedir = krb5_parser.includedir
                self.include = krb5_parser.include
                self.module = krb5_parser.module
            else:
                dict_deep_merge(self.data, krb5_parser.data)
        # Same options in same section from other configuration files will be covered by the option
        # from main configuration, but different options in same section will be kept.
        for key, value in main_data.items():
            if key in self.data.keys():
                self.data[key].update(value)
            else:
                self.data[key] = value

        super(AllKrb5Conf, self).__init__()
예제 #2
0
    def __init__(self, httpd_conf):
        deprecated(
            HttpdConfAll,
            "Import HttpdConfTree from 'insights.combiners.httpd_conf' instead."
        )

        self.data = {}
        self.config_data = []

        config_files_data = []
        main_config_data = []

        for httpd_parser in httpd_conf:
            file_name = httpd_parser.file_name
            file_path = httpd_parser.file_path

            # Flag to be used for different handling of the main config file
            main_config = httpd_parser.file_name == 'httpd.conf'

            if not main_config:
                config_files_data.append(
                    self.ConfigData(file_name, file_path, httpd_parser.data))
            else:
                main_config_data.append(
                    self.ConfigData(file_name, file_path,
                                    httpd_parser.first_half))
                main_config_data.append(
                    self.ConfigData(file_name, file_path,
                                    httpd_parser.second_half))

        # Sort configuration files
        config_files_data.sort()

        # Add both parts of main configuration file and store as attribute.
        # These values can be used when looking for bad settings which are not actually active
        # but may become active if other configurations are changed
        if main_config_data:
            self.config_data = [main_config_data[0]
                                ] + config_files_data + [main_config_data[1]]
        else:
            self.config_data = config_files_data

        # Store active settings - the last parsed value us stored
        self.data = {}
        for _, _, full_data in self.config_data:
            copy_data = full_data.copy()
            for option, parsed_data in copy_data.items():
                if isinstance(parsed_data, dict):
                    if option not in self.data:
                        self.data[option] = {}
                    dict_deep_merge(self.data[option], parsed_data)
                else:
                    if option not in self.data:
                        self.data[option] = []
                    self.data[option].extend(parsed_data)