Files
copyparty/scripts/pyinstaller/loader.py

102 lines
2.1 KiB
Python
Raw Normal View History

2022-09-19 00:59:54 +02:00
# coding: utf-8
v = r"""
this is the EXE edition of copyparty, compatible with Windows7-SP1
and later. To make this possible, the EXE was compiled with Python
3.7.9, which is EOL and does not receive security patches anymore.
2022-09-19 23:49:07 +02:00
if possible, for performance and security reasons, please use this instead:
2022-09-19 00:59:54 +02:00
https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py
"""
2022-12-07 21:35:53 +00:00
try:
print(v.replace("\n", "\n▒▌ ")[1:] + "\n")
except:
print(v.replace("\n", "\n|| ")[1:] + "\n")
2022-09-19 00:59:54 +02:00
import re
import os
import sys
import shutil
2022-09-20 21:40:56 +02:00
import traceback
2022-09-19 00:59:54 +02:00
import subprocess as sp
2022-09-20 21:40:56 +02:00
def confirm(rv):
print()
print("retcode", rv if rv else traceback.format_exc())
print("*** hit enter to exit ***")
try:
input()
except:
pass
sys.exit(rv or 1)
def meicln(mod):
2022-09-19 00:59:54 +02:00
pdir, mine = os.path.split(mod)
dirs = os.listdir(pdir)
dirs = [x for x in dirs if x.startswith("_MEI") and x != mine]
dirs = [os.path.join(pdir, x) for x in dirs]
rm = []
for d in dirs:
if os.path.isdir(os.path.join(d, "copyparty", "web")):
rm.append(d)
if not rm:
return
print("deleting abandoned SFX dirs:")
for d in rm:
print(d)
for _ in range(9):
try:
shutil.rmtree(d)
break
except:
pass
print()
def meichk():
filt = "copyparty"
if filt not in sys.executable:
filt = os.path.basename(sys.executable)
pids = []
ptn = re.compile(r"^([^\s]+)\s+([0-9]+)")
2022-10-19 00:06:48 +02:00
try:
procs = sp.check_output("tasklist").decode("utf-8", "replace")
except:
procs = "" # winpe
2022-09-19 00:59:54 +02:00
for ln in procs.splitlines():
m = ptn.match(ln)
if m and filt in m.group(1).lower():
pids.append(int(m.group(2)))
mod = os.path.dirname(os.path.realpath(__file__))
if os.path.basename(mod).startswith("_MEI") and len(pids) == 2:
2022-09-20 21:40:56 +02:00
meicln(mod)
2022-09-19 00:59:54 +02:00
meichk()
from copyparty.__main__ import main
2022-09-20 21:40:56 +02:00
try:
main()
except SystemExit as ex:
c = ex.code
if c not in [0, -15]:
confirm(ex.code)
except KeyboardInterrupt:
pass
except:
confirm(0)