Beispiel #1
0
    def run_stage(self, stage):
        self.stage = stage

        self._make_verbose_path()
        self._make_report_path()
        self._make_arf_path()
        self._make_results_path()

        self.command_base = []
        self.command_options = []
        self.command_operands = []

        result = None
        if stage == 'initial':
            result = self.initial()
        elif stage == 'remediation':
            result = self.remediation()
        elif stage == 'final':
            result = self.final()
        else:
            raise RuntimeError('Unknown stage: {}.'.format(stage))

        if self.clean_files:
            for fname in self._filenames_to_clean_afterwards:
                os.remove(fname)

        if result:
            LogHelper.log_preloaded('pass')
        else:
            LogHelper.log_preloaded('fail')
        return result
Beispiel #2
0
    def run_stage(self, stage):
        self.stage = stage

        self._make_verbose_path()
        self._make_report_path()
        self._make_arf_path()
        self._make_results_path()

        self.command_base = []
        self.command_options = []
        self.command_operands = []

        result = None
        if stage == 'initial':
            result = self.initial()
        elif stage == 'remediation':
            result = self.remediation()
        elif stage == 'final':
            result = self.final()
        else:
            raise RuntimeError('Unknown stage: {}.'.format(stage))

        if self.clean_files:
            for fname in self._filenames_to_clean_afterwards:
                os.remove(fname)

        if result:
            LogHelper.log_preloaded('pass')
        else:
            LogHelper.log_preloaded('fail')
        return result
Beispiel #3
0
    def run_stage(self, stage):
        self.stage = stage

        self._make_verbose_path()
        self._make_report_path()
        self._make_arf_path()
        self._make_results_path()

        self.command_base = []
        self.command_options = ['--verbose', 'DEVEL']
        self.command_operands = []

        result = None
        if stage == 'initial':
            result = self.initial()
        elif stage == 'remediation':
            result = self.remediation()
        elif stage == 'final':
            result = self.final()
        else:
            raise RuntimeError('Unknown stage: {}.'.format(stage))

        if self.clean_files:
            for fname in tuple(self._filenames_to_clean_afterwards):
                try:
                    os.remove(fname)
                except OSError:
                    logging.error(
                        "Failed to cleanup file '{0}'"
                        .format(fname))
                finally:
                    self._filenames_to_clean_afterwards.remove(fname)

        if result:
            LogHelper.log_preloaded('pass')
            if self.clean_files:
                files_to_remove = [self.verbose_path]
                if stage in ['initial', 'final']:
                    files_to_remove.append(self.results_path)

                for fname in tuple(files_to_remove):
                    try:
                        if os.path.exists(fname):
                            os.remove(fname)
                    except OSError:
                        logging.error(
                            "Failed to cleanup file '{0}'"
                            .format(fname))
        else:
            LogHelper.log_preloaded('fail')
            if self.manual_debug:
                self._wait_for_continue()
        return result
Beispiel #4
0
    def run_stage(self, stage):
        self.stage = stage

        self._make_verbose_path()
        self._make_report_path()
        self._make_arf_path()
        self._make_results_path()

        self.command_base = []
        self.command_options = ['--verbose', 'DEVEL']
        self.command_operands = []

        result = None
        if stage == 'initial':
            result = self.initial()
        elif stage == 'remediation':
            result = self.remediation()
        elif stage == 'final':
            result = self.final()
        else:
            raise RuntimeError('Unknown stage: {}.'.format(stage))

        self._remove_files_to_clean()

        if result == 1:
            LogHelper.log_preloaded('pass')
            if self.clean_files:
                self._filenames_to_clean_afterwards.add(self.verbose_path)
                if stage in ['initial', 'remediation', 'final']:
                    # We need the initial ARF so we can generate the remediation out of it later
                    self._filenames_to_clean_afterwards.add(self.arf_path)

        elif result == 2:
            LogHelper.log_preloaded('notapplicable')
        else:
            LogHelper.log_preloaded('fail')
            if self.manual_debug:
                self._wait_for_continue()
        return result
Beispiel #5
0
    # check expected result
    try:
        actual_results = re.findall('{0}:(.*)$'.format(rule_id), output,
                                    re.MULTILINE)
    except IndexError:
        LogHelper.preload_log(logging.ERROR, ('Rule {0} has not been '
                                              'evaluated! Wrong profile '
                                              'selected?').format(rule_id),
                              'fail')
        success = False
    else:
        if context not in actual_results:
            LogHelper.preload_log(logging.ERROR,
                                  ('Rule result should have been '
                                   '"{0}", but is "{1}"!').format(
                                       context,
                                       ', '.join(actual_results)), 'fail')
            success = False

    if success and not dont_clean:
        # to save space, we are going to remove the report
        # as we have not encountered any anomalies
        os.remove(formatting['report'])
    if success:
        LogHelper.log_preloaded('pass')
    else:
        LogHelper.log_preloaded('fail')

    return success