예제 #1
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)
예제 #2
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)
예제 #3
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)