Ejemplo n.º 1
0
 def test_check_for_errors(self):
     valid_request = {'a': 'some', 'b': 'some data'}
     self.assertEqual(len(check_for_errors(valid_request)), 0, 'errors found but all entries are valid')
     invalid_request = {'a': 'some_data', 'b': None}
     result = check_for_errors(invalid_request)
     self.assertEqual(len(result), 1, 'number of invalid fields not correct')
     self.assertEqual(result['b'], 'Please specify the b')
 def test_check_for_errors(self):
     valid_request = {"a": "some", "b": "some data"}
     self.assertEqual(len(check_for_errors(valid_request)), 0,
                      "errors found but all entries are valid")
     invalid_request = {"a": "some_data", "b": None}
     result = check_for_errors(invalid_request)
     self.assertEqual(len(result), 1,
                      "number of invalid fields not correct")
     self.assertEqual(result['b'], "Please specify the b")
Ejemplo n.º 3
0
    def _app_upload(self):
        error = {}
        if request.method == 'POST':
            analysis_task = create_analysis_task(request)
            error = check_for_errors(analysis_task)
            if not error:
                fw = convert_analysis_task_to_fw_obj(analysis_task)
                with ConnectTo(InterComFrontEndBinding, self._config) as sc:
                    sc.add_analysis_task(fw)
                return render_template('upload/upload_successful.html',
                                       uid=analysis_task['uid'])

        with ConnectTo(FrontEndDbInterface, self._config) as sc:
            device_class_list = sc.get_device_class_list()
            vendor_list = sc.get_vendor_list()
            device_name_dict = sc.get_device_name_dict()
        with ConnectTo(InterComFrontEndBinding, self._config) as sc:
            analysis_plugins = sc.get_available_analysis_plugins()
        analysis_presets = [key for key in self._config['default_plugins']]
        return render_template('upload/upload.html',
                               device_classes=device_class_list,
                               vendors=vendor_list,
                               error=error,
                               analysis_presets=analysis_presets,
                               device_names=json.dumps(device_name_dict,
                                                       sort_keys=True),
                               analysis_plugin_dict=analysis_plugins)
Ejemplo n.º 4
0
 def _update_analysis_post(self, uid, re_do=False):
     analysis_task = create_re_analyze_task(request, uid=uid)
     error = check_for_errors(analysis_task)
     if error:
         return redirect(url_for(self._update_analysis_get.__name__, uid=uid, re_do=re_do, error=error))
     self._schedule_re_analysis_task(uid, analysis_task, re_do)
     return render_template('upload/upload_successful.html', uid=uid)
Ejemplo n.º 5
0
 def post_update_analysis(self, uid, re_do=False):
     analysis_task = create_re_analyze_task(request, uid=uid)
     force_reanalysis = request.form.get('force_reanalysis') == 'true'
     error = check_for_errors(analysis_task)
     if error:
         return self.get_update_analysis(uid=uid, re_do=re_do, error=error)
     self._schedule_re_analysis_task(uid, analysis_task, re_do, force_reanalysis)
     return render_template('upload/upload_successful.html', uid=uid)
Ejemplo n.º 6
0
 def post_upload(self):
     analysis_task = create_analysis_task(request, self._config)
     error = check_for_errors(analysis_task)
     if error:
         return self.get_upload(error=error)
     fw = convert_analysis_task_to_fw_obj(analysis_task)
     with ConnectTo(InterComFrontEndBinding, self._config) as sc:
         sc.add_analysis_task(fw)
     return render_template('upload/upload_successful.html', uid=analysis_task['uid'])
Ejemplo n.º 7
0
    def _update_analysis(self, uid, re_do=False):
        error = {}
        if request.method == 'POST':
            analysis_task = create_re_analyze_task(request, uid=uid)
            error = check_for_errors(analysis_task)
            if not error:
                self._schedule_re_analysis_task(uid, analysis_task, re_do)
                return render_template('upload/upload_successful.html',
                                       uid=uid)

        with ConnectTo(FrontEndDbInterface, self._config) as sc:
            old_firmware = sc.get_object(uid=uid, analysis_filter=[])
        if old_firmware is None:
            return render_template('uid_not_found.html', uid=uid)

        with ConnectTo(FrontEndDbInterface, self._config) as sc:
            device_class_list = sc.get_device_class_list()
        device_class_list.remove(old_firmware.device_class)

        with ConnectTo(FrontEndDbInterface, self._config) as sc:
            vendor_list = sc.get_vendor_list()
        vendor_list.remove(old_firmware.vendor)

        with ConnectTo(FrontEndDbInterface, self._config) as sc:
            device_name_dict = sc.get_device_name_dict()
        device_name_dict[old_firmware.device_class][
            old_firmware.vendor].remove(old_firmware.device_name)

        previously_processed_plugins = list(
            old_firmware.processed_analysis.keys())
        with ConnectTo(InterComFrontEndBinding, self._config) as sc:
            plugin_dict = overwrite_default_plugins(
                sc, previously_processed_plugins)

        if re_do:
            title = 're-do analysis'
        else:
            title = 'update analysis'

        return render_template('upload/re-analyze.html',
                               device_classes=device_class_list,
                               vendors=vendor_list,
                               error=error,
                               device_names=json.dumps(device_name_dict,
                                                       sort_keys=True),
                               firmware=old_firmware,
                               analysis_plugin_dict=plugin_dict,
                               title=title)