refactor: split project add/update

This commit is contained in:
Dobin Rutishauser
2025-06-20 12:41:29 +02:00
parent 716f7a47ed
commit 71bc23f47a
3 changed files with 58 additions and 45 deletions
+1 -1
View File
@@ -39,7 +39,7 @@
<!-- Row 2: Input files -->
<div class="col-3">
<!-- leave this here or it will fuck up layout -->
<form method="POST" enctype="multipart/form-data" action="/project_add">
<form method="POST" enctype="multipart/form-data" action="/project_update">
<input type="text" name="project_name" class="hidden form-control"
placeholder="" value="{{project_name}}"
+22 -10
View File
@@ -174,11 +174,15 @@ def add_project():
project_name = request.form['project_name']
comment = request.form['comment']
# check if already exists
if storage.get_project_setting(project_name) != None:
logger.error("Project {} already exists".format(project_name))
return redirect("/projects", code=302)
# Empty settings, except name
settings = Settings(project_name)
settings.project_comment = comment
# new project?
if storage.get_project_setting(project_name) == None:
# Sane defaults for web
settings.injectable_base = "7z.exe"
settings.payload_base = "calc64.bin"
@@ -190,13 +194,25 @@ def add_project():
settings.fix_missing_iat = True
settings.plugin_antiemulation = "sirallocalot"
# add new project
settings.project_comment = comment
# add new project to disk
storage.add_project_setting(settings)
# update project
else:
return redirect("/project/{}".format(project_name), code=302)
else: # GET
return render_template('project_add_get.html')
@views_project.route("/project_update", methods=['POST'])
def update_project():
project_name = request.form['project_name']
comment = request.form['comment']
logger.info("Update project: {}".format(project_name))
settings: Settings|None = storage.get_project_setting(project_name)
if settings == None:
logger.error("Project {} not found".format(project_name))
return redirect("/projects", code=302)
shellcode_file = request.form['shellcode']
injectable_file = request.form['exe']
@@ -221,14 +237,10 @@ def add_project():
settings.plugin_virtualprotect = request.form.get('virtualprotect', "standard")
# overwrite project
#settings = storage.get_project(project_name)
storage.save_project_settings(settings)
return redirect("/project/{}".format(project_name), code=302)
else: # GET
return render_template('project_add_get.html')
def supermega_thread(settings: Settings):
global thread_running
+1
View File
@@ -224,6 +224,7 @@ def start_real(settings: Settings) -> bool:
try:
injector.inject_exe()
except Exception as e:
logger.error("Error injecting executable: {}".format(e))
return False
#observer.add_code_file("exe_final", extract_code_from_exe_file_ep(settings.get_inject_exe_out(), 300))