From 7ed83a0783ee3468eedcce319959226d4e3a3fa3 Mon Sep 17 00:00:00 2001 From: ThaaoBlues Date: Sun, 26 Jun 2022 12:21:41 +0200 Subject: [PATCH 1/5] fixing uninstaller script --- .gitignore | 4 ++- templates/favicon.ico | Bin 0 -> 5692 bytes unins000.json | 77 ++++++++++++++++++++++++++++++++++++++++++ unins000.py | 19 ++++++++--- 4 files changed, 94 insertions(+), 6 deletions(-) create mode 100644 templates/favicon.ico create mode 100644 unins000.json diff --git a/.gitignore b/.gitignore index 4b25993..819ac27 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,6 @@ static/ copypasta.build output output/* -copypasta.exe \ No newline at end of file +copypasta.exe +*.build +*.dist \ No newline at end of file diff --git a/templates/favicon.ico b/templates/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a94c4a6cb0677be810bf48f5bcf19db9bcc58cac GIT binary patch literal 5692 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 Ihc80@2RK~;bN~PV literal 0 HcmV?d00001 diff --git a/unins000.json b/unins000.json new file mode 100644 index 0000000..2492c2d --- /dev/null +++ b/unins000.json @@ -0,0 +1,77 @@ +{ + "version": "auto-py-to-exe-configuration_v1", + "pyinstallerOptions": [ + { + "optionDest": "noconfirm", + "value": true + }, + { + "optionDest": "filenames", + "value": "G:/Mon Drive/dev/projects/CopyPasta/unins000.py" + }, + { + "optionDest": "onefile", + "value": true + }, + { + "optionDest": "console", + "value": true + }, + { + "optionDest": "icon_file", + "value": "G:/Mon Drive/dev/projects/CopyPasta/favicon.ico" + }, + { + "optionDest": "ascii", + "value": false + }, + { + "optionDest": "clean_build", + "value": false + }, + { + "optionDest": "strip", + "value": false + }, + { + "optionDest": "noupx", + "value": false + }, + { + "optionDest": "disable_windowed_traceback", + "value": false + }, + { + "optionDest": "embed_manifest", + "value": true + }, + { + "optionDest": "uac_admin", + "value": true + }, + { + "optionDest": "uac_uiaccess", + "value": false + }, + { + "optionDest": "win_private_assemblies", + "value": false + }, + { + "optionDest": "win_no_prefer_redirects", + "value": false + }, + { + "optionDest": "bootloader_ignore_signals", + "value": false + }, + { + "optionDest": "argv_emulation", + "value": false + } + ], + "nonPyinstallerOptions": { + "increaseRecursionLimit": true, + "manualArguments": "" + } +} \ No newline at end of file diff --git a/unins000.py b/unins000.py index 127e329..79dc4b7 100644 --- a/unins000.py +++ b/unins000.py @@ -1,31 +1,40 @@ from shutil import rmtree from os import remove from getpass import getuser +from sys import argv +# for pyinstaller +import pywintypes + +APP_PATH = "C:/Program Files/CopyPasta" try: - remove("launcher.exe") + remove(f"{APP_PATH}/launcher.exe") except: pass try: - rmtree("copypasta") + rmtree(f"{APP_PATH}/copypasta",ignore_errors=True) except Exception as e: print(e) + try: user = getuser() remove(f"C:\\Users\\{user}\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\CopyPasta.lnk") + del user except Exception as e: print(e) try: - user = getuser() - remove(f"C:\\Users\\{user}\\Desktop\\CopyPasta.lnk") + remove(f"C:\\Users\\Public\\Desktop\\CopyPasta.lnk") except Exception as e: print(e) try: - remove("unins000.exe") + remove(argv[0]) except Exception as e: print(e) + + + From 9315a04ff89d4f1873be33c48941a545d8c4d2aa Mon Sep 17 00:00:00 2001 From: ThaaoBlues Date: Sun, 26 Jun 2022 15:31:14 +0200 Subject: [PATCH 2/5] new integrated video player --- copypasta.py | 12 +++++++++--- templates/index.html | 9 +++++---- util.py | 7 ++++++- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/copypasta.py b/copypasta.py index c79f249..9a59ffe 100644 --- a/copypasta.py +++ b/copypasta.py @@ -395,6 +395,11 @@ def process(process_id): copy(get_history_file_by_id(int(request.args.get("scan_id")))['content']) + if process_id == "[OPEN VIDEO]": + + ret = f"CopyPasta/Video"+f""+f"" + + return ret else: return abort(403) @@ -526,6 +531,7 @@ def upload(): store_to_history({ "file_type" : f"{file_type}", "date" : f"{time}","text" : f"{file_content}"}) + open_browser_if_settings_okay("http://127.0.0.1:21987/scan_preview") @@ -631,9 +637,9 @@ def upload(): file.save(full_path) store_to_history({"file_name" : f"{file.filename}","file_type" : f"{file_type}","date" : f"{time}","path" : f"{full_path}"}) - - open_browser_if_settings_okay(f"{COPYPASTA_URL}/image_preview?image_id={get_history_file_last_id()}") - + if is_image(file_type): + open_browser_if_settings_okay(f"{COPYPASTA_URL}/image_preview?image_id={get_history_file_last_id()}") + return jsonify({"upload_status" : "true"}) else: diff --git a/templates/index.html b/templates/index.html index 89362e3..77484d1 100644 --- a/templates/index.html +++ b/templates/index.html @@ -215,9 +215,10 @@

Last files/data sent :

//videos }else if(videos_ext.includes(obj.file_type)){ - var open_file_icon = ""; - - tab_element = "
title:"+obj.file_name+"
"+open_folder_icon+"
"+open_file_icon+delete_file_icon+"
"; + var open_file_icon = ""; + + var play_video_icon = ""; + tab_element = "
title:"+obj.file_name+"
"+play_video_icon+open_file_icon+"
"+open_folder_icon+delete_file_icon+"
"; //audio }else if(audios_ext.includes(obj.file_type)){ @@ -265,7 +266,7 @@

Last files/data sent :

//random file }else{ - var open_file_icon = " "; + var open_file_icon = " "; tab_element = ""+obj.date+""+obj.file_name+""+open_folder_icon+"
"+open_file_icon+delete_file_icon+""; } diff --git a/util.py b/util.py index 0219664..b6fc785 100644 --- a/util.py +++ b/util.py @@ -319,4 +319,9 @@ def remove_copypasta_port_redirect(): run("netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.0.0.1 connectport=80 connectaddress=127.0.0.1") except: # feature that may crash sometimes, not essential - pass \ No newline at end of file + pass + + +def is_image(file_type:str): + + return file_type in ["jpeg","jpg","png","ico","gif","apng","avif","gif","jfif","pjpeg","pjp","svg","webp"] \ No newline at end of file From 9dc241829405edd65d2bd34b52af3b07d63d95ac Mon Sep 17 00:00:00 2001 From: ThaaoBlues Date: Sun, 26 Jun 2022 18:06:43 +0200 Subject: [PATCH 3/5] better in-app video preview --- copypasta.py | 12 ++++-- templates/scan_preview.html | 2 +- templates/video_preview.html | 78 ++++++++++++++++++++++++++++++++++++ util.py | 4 ++ 4 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 templates/video_preview.html diff --git a/copypasta.py b/copypasta.py index 9a59ffe..329003d 100644 --- a/copypasta.py +++ b/copypasta.py @@ -396,10 +396,16 @@ def process(process_id): if process_id == "[OPEN VIDEO]": - - ret = f"CopyPasta/Video"+f""+f"" + file_path = request.args.get('file_path') - return ret + + # try to secure the file path + # if suspicious path, just go home + if (not path.exists(file_path)) or (not file_path.startswith("static/files_hist/")) or (".." in file_path): + return redirect("/") + + + return render_template("video_preview.html",file_path=file_path) else: return abort(403) diff --git a/templates/scan_preview.html b/templates/scan_preview.html index c24393d..4969d93 100644 --- a/templates/scan_preview.html +++ b/templates/scan_preview.html @@ -18,7 +18,7 @@ {% endif %} {% endwith %} - CopyPasta/scan preview + CopyPasta/Scan preview