Example #1
0
 def __init__(self):
     self.__output_directory = None
     self.__passing = '\033[92m'
     self.__failing = '\033[91m'
     self.__bold = '\033[1m'
     self.__italic = '\033[3m'
     self.__end = '\033[0m'
     self.__errorHandler = ErrorHandler()
class ConfigHandler:
    def __init__(self):
        self.__config = None
        self.__CONFIG_PATH = 'Project/config.json'
        self.__errorHandler = ErrorHandler()

    def load_config(self):
        with open(self.__CONFIG_PATH) as json_file:
            self.__config = json.load(json_file)

    def get_config(self):
        if not path.exists(self.__CONFIG_PATH):
            print('config.json not found')
            # handle error
            self.__errorHandler.path_does_not_exist("Config file")
        else:
            self.load_config()
            return self.__config
Example #3
0
class OutputHandler():

    def __init__(self):
        self.__output_directory = None
        self.__passing = '\033[92m'
        self.__failing = '\033[91m'
        self.__bold = '\033[1m'
        self.__italic = '\033[3m'
        self.__end = '\033[0m'
        self.__errorHandler = ErrorHandler()

    def set_output_directory(self, out_dir):
        if path.exists(out_dir):
            self.__output_directory = out_dir
        else:
            makedirs(out_dir)
            # Check with Sean if this is right
            self.__errorHandler.path_does_not_exist("Output directory")

    def output_to_terminal(self, policy_dict, verify_dict, elapsed_time, file_name):
        print('Finished parsing \"{0}\" with security policy in {1} seconds'.format(file_name, elapsed_time))
        for k, v in policy_dict.items():
            if verify_dict.get(k):
                #failed
                if "BANNED" in k:
                    print('Policy \"{0}\" '.format(k) +
                          self.__failing + 'FAILED' +
                          self.__end + self.__italic +
                          '\n\tFound Banned Artifact: {0}\n\tBanned List: {1}'.format(verify_dict[k], v) +
                          self.__end)
                else:
                    print('Policy \"{0}\" '.format(k) +
                          self.__failing + 'FAILED' +
                          self.__end + self.__italic +
                          '\n\tExpected: {0}\n\tWas: {1}'.format(v, verify_dict[k]) +
                          self.__end)

            else:
                #passed
                print('Policy \"{0}\" '.format(k) +
                      self.__passing +
                      'PASSED' +
                      self.__end)


    def log_to_file(self, policy_dict, verify_dict, elapsed_time, file_ame):
        if self.__output_directory is None:
            # Handle error
            self.__errorHandler.path_does_not_exist("Output Directory")
            pass

        timestamp = str(datetime.datetime.now()).split('.')[0].replace(' ', '_').replace(':', '_')
        file_name = path.join(self.__output_directory, 'k8scheckmate_{0}.txt'.format(timestamp))
        file = open(file_name, 'a+')
        file.write('Finished parsing \"{0}\" with security policy in {1} seconds\n'.format(file_name, elapsed_time))
        for k,v in policy_dict.items():
            if verify_dict.get(k):
                #failed
                file.write('Policy \"{0}\" FAILED\n\tExpected:{1}\n\tWas:{2}\n'.format(k, v, verify_dict[k]))

            else:
                #passed
                file.write('Policy \"{0}\" PASSED\n'.format(k))
        file.close()
        print('Successfully wrote output to file: {0}'.format(file_name))
Example #4
0
 def __init__(self):
     self.__chart_dict = None
     self.__policy_dict = None
     self.__values_dict = []
     self.__errorHandler = ErrorHandler()
Example #5
0
class Parser():
    def __init__(self):
        self.__chart_dict = None
        self.__policy_dict = None
        self.__values_dict = []
        self.__errorHandler = ErrorHandler()

    # Load methods will check to see if the file exists
    def load_chart(self, path):
        with open(path) as yaml_file:
            self.__chart_dict = yaml.load(yaml_file, yaml.SafeLoader)

        try:
            with open(path) as yaml_file:
                self.__chart_dict = yaml.load(yaml_file, yaml.SafeLoader)
        except (FileNotFoundError, IOError):
            self.__errorHandler.file_not_found(path)

    def load_policy(self, path):
        try:
            with open(path) as yaml_file:
                self.__policy_dict = yaml.load(yaml_file, yaml.SafeLoader)
        except (FileNotFoundError, IOError):
            self.__errorHandler.file_not_found(path)

    def load_values(self, paths):
        for path in paths:
            try:
                with open(path) as yaml_file:
                    self.__values_dict.append(
                        yaml.load(yaml_file, yaml.SafeLoader))
            except (FileNotFoundError, IOError):
                self.__errorHandler.file_not_found(path)

    # Get methods check if value has been provided
    def get_chart_dict(self, config):
        if config['chartPath'] != '':
            self.load_chart(config['chartPath'])
            return self.__chart_dict
        else:
            # handle error
            self.__errorHandler.path_does_not_exist("Chart Dictionary")

    def get_policy_dict(self, config):
        if config['policyPath'] != '':
            self.load_policy(config['policyPath'])
            return self.__policy_dict
        else:
            # handle error
            self.__errorHandler.path_does_not_exist("Policy Dictionary")

    def get_values_dict(self, config):
        if config['valuesPath'] != '':
            self.load_values(config['valuesPath'])
            return self.__values_dict
        else:
            # handle error
            self.__errorHandler.path_does_not_exist("Values Dictionary")
Example #6
0
def errorhandler():
    return ErrorHandler()
 def __init__(self):
     self.__config = None
     self.__CONFIG_PATH = 'Project/config.json'
     self.__errorHandler = ErrorHandler()