Small improvements (#195)

* fixed crashes on one-line scripts, auto .dd

* Delete button

* Additional crash fix

* Disable read-only

---------

Co-authored-by: Dave <dbisu@users.noreply.github.com>
This commit is contained in:
XtramCZ
2026-01-10 19:17:16 +01:00
committed by GitHub
parent c3184a5390
commit 04eeacac09

View File

@@ -82,7 +82,7 @@ response_html = """<!DOCTYPE html>
</html> </html>
""" """
newrow_html = "<tr><td>{}</td><td><a href='/edit/{}'><button>Edit</button></a><a href='/run/{}'><button>Run</button></a></tr>" newrow_html = "<tr><td>{}</td><td><a href='/edit/{}'>Edit</a> / <a href='/delete/{}'>Delete</a> / <a href='/run/{}'>Run</a></tr>"
def setPayload(payload_number): def setPayload(payload_number):
if(payload_number == 1): if(payload_number == 1):
@@ -103,7 +103,7 @@ def ducky_main(request):
for f in files: for f in files:
if ('.dd' in f) == True: if ('.dd' in f) == True:
payloads.append(f) payloads.append(f)
newrow = newrow_html.format(f,f,f) newrow = newrow_html.format(f,f,f,f)
#print(newrow) #print(newrow)
rows = rows + newrow rows = rows + newrow
@@ -181,8 +181,8 @@ def write_script(request, filename):
textbuffer = form_data['scriptData'] textbuffer = form_data['scriptData']
textbuffer = cleanup_text(textbuffer) textbuffer = cleanup_text(textbuffer)
#print(textbuffer) #print(textbuffer)
for line in textbuffer: for line in textbuffer.splitlines():
f.write(line) f.write(line + '\n')
f.close() f.close()
storage.remount("/",readonly=True) storage.remount("/",readonly=True)
response = response_html.format("Wrote script " + filename) response = response_html.format("Wrote script " + filename)
@@ -202,17 +202,28 @@ def write_new_script(request):
form_data[key] = value form_data[key] = value
#print(form_data) #print(form_data)
filename = form_data['scriptName'] filename = form_data['scriptName']
if ".dd" not in filename:
filename = filename + ".dd"
textbuffer = form_data['scriptData'] textbuffer = form_data['scriptData']
textbuffer = cleanup_text(textbuffer) textbuffer = cleanup_text(textbuffer)
storage.remount("/",readonly=False) storage.remount("/",readonly=False)
f = open(filename,"w",encoding='utf-8') f = open(filename,"w",encoding='utf-8')
for line in textbuffer: for line in textbuffer.splitlines():
f.write(line) f.write(line + '\n')
f.close() f.close()
storage.remount("/",readonly=True) storage.remount("/",readonly=True)
response = response_html.format("Wrote script " + filename) response = response_html.format("Wrote script " + filename)
return("200 OK",[('Content-Type', 'text/html')], response) return("200 OK",[('Content-Type', 'text/html')], response)
@web_app.route("/delete/<filename>")
def delete(request, filename):
print("Deleting ", filename)
storage.remount("/",readonly=False)
os.remove(filename)
response = response_html.format("Deleted script " + filename)
storage.remount("/",readonly=True)
return("200 OK",[('Content-Type', 'text/html')], response)
@web_app.route("/run/<filename>") @web_app.route("/run/<filename>")
def run_script(request, filename): def run_script(request, filename):
print("run_script ", filename) print("run_script ", filename)