def edit_job(job_id): # TODO prefill form with current values job = Job.objects.get(id=job_id) if job: if not can_do_stuff_with_job(current_user, job.owner): flask.flash('You are not allowed to edit this job') return flask.redirect("/jobs/show") if flask.request.method == 'POST': data = flask.request.form engine = data.get('mutation_engine') if data.get('fuzzer') == "afl" or "syzkaller": engine = 'external' Job.objects(id=job_id).update(**{ 'name': data.get('name'), 'description': data.get('description'), 'fuzzer': data.get('fuzzer'), 'mutation_engine': engine, 'verifier': data.get('verifier'), }) return flask.redirect("/jobs/show") else: engines = [x['name'] for x in f3c_global_config.mutation_engines] fuzzers = [x['name'] for x in f3c_global_config.fuzzers] verifiers = [x['name'] for x in f3c_global_config.verifiers] return flask.render_template('jobs_edit.html', job=job, engines=engines, fuzzers=fuzzers, verifiers=verifiers) else: flask.abort(400, description="Invalid job ID")
def get_original_and_crash_test_case_of_crash(crash): crash_test_case = crash.test_case original_test_case = list(Job.objects(id=crash.job_id))[0]["samples"] encoded_crash_test_case = base64.b64encode(crash_test_case).decode('ascii') if testcase_can_be_diffed(crash.job_id): if (original_test_case.startswith(b'PK')): original_test_case = get_original_crash_test_case_of_zipfile( crash_test_case, original_test_case) encoded_original_test_case = base64.b64encode( original_test_case).decode('ascii') else: encoded_original_test_case = None return encoded_original_test_case, encoded_crash_test_case
def _get_active_jobs(self): res = Job.objects(enabled=True) return res
def get_job_name_of_job_id(job_id): return list(Job.objects(id=job_id))[0]["name"]
def testcase_can_be_diffed(job_id): mutation_engine = list(Job.objects(id=job_id))[0]["mutation_engine"] if mutation_engine == "radamsa": return True else: return False