Skip to content

Update zeronet.py #2865

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: py3
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 24 additions & 24 deletions zeronet.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ def main():
if "--silent" not in sys.argv:
print("- Starting ZeroNet...")

main = None
main_module = None
try:
import main
main.start()
import main as main_module
main_module.start()
except Exception as err: # Prevent closing
import traceback
try:
Expand All @@ -24,21 +24,22 @@ def main():
print("Failed to log error:", log_err)
traceback.print_exc()
from Config import config
error_log_path = config.log_dir + "/error.log"
traceback.print_exc(file=open(error_log_path, "w"))
error_log_path = os.path.join(config.log_dir, "error.log")
with open(error_log_path, "w") as error_log:
traceback.print_exc(file=error_log)
print("---")
print("Please report it: https://github.com/HelloZeroNet/ZeroNet/issues/new?assignees=&labels=&template=bug-report.md")
if sys.platform.startswith("win") and "python.exe" not in sys.executable:
displayErrorMessage(err, error_log_path)

if main and (main.update_after_shutdown or main.restart_after_shutdown): # Updater
if main.update_after_shutdown:
if main_module and (main_module.update_after_shutdown or main_module.restart_after_shutdown): # Updater
if main_module.update_after_shutdown:
print("Shutting down...")
prepareShutdown()
import update
print("Updating...")
update.update()
if main.restart_after_shutdown:
if main_module.restart_after_shutdown:
print("Restarting...")
restart()
else:
Expand All @@ -54,23 +55,24 @@ def displayErrorMessage(err, error_log_path):
import subprocess

MB_YESNOCANCEL = 0x3
MB_ICONEXCLAIMATION = 0x30
MB_ICONEXCLAMATION = 0x30

ID_YES = 0x6
ID_NO = 0x7
ID_CANCEL = 0x2

err_message = "%s: %s" % (type(err).__name__, err)
err_title = "Unhandled exception: %s\nReport error?" % err_message
err_message = f"{type(err).__name__}: {err}"
err_title = f"Unhandled exception: {err_message}\nReport error?"

res = ctypes.windll.user32.MessageBoxW(0, err_title, "ZeroNet error", MB_YESNOCANCEL | MB_ICONEXCLAIMATION)
res = ctypes.windll.user32.MessageBoxW(0, err_title, "ZeroNet error", MB_YESNOCANCEL | MB_ICONEXCLAMATION)
if res == ID_YES:
import webbrowser
report_url = "https://github.com/HelloZeroNet/ZeroNet/issues/new?assignees=&labels=&template=bug-report.md&title=%s"
webbrowser.open(report_url % urllib.parse.quote("Unhandled exception: %s" % err_message))
report_url = "https://github.com/HelloZeroNet/ZeroNet/issues/new?assignees=&labels=&template=bug-report.md&title={}"
webbrowser.open(report_url.format(urllib.parse.quote(f"Unhandled exception: {err_message}")))
if res in [ID_YES, ID_NO]:
subprocess.Popen(['notepad.exe', error_log_path])


def prepareShutdown():
import atexit
atexit._run_exitfuncs()
Expand All @@ -87,10 +89,11 @@ def prepareShutdown():
import time
time.sleep(1) # Wait for files to close


def restart():
args = sys.argv[:]

sys.executable = sys.executable.replace(".pkg", "") # Frozen mac fix
sys.executable = sys.executable.replace(".pkg", "") # Frozen macOS fix

if not getattr(sys, 'frozen', False):
args.insert(0, sys.executable)
Expand All @@ -100,29 +103,26 @@ def restart():
del args[args.index("--open_browser") + 1] # argument value
del args[args.index("--open_browser")] # argument key

if getattr(sys, 'frozen', False):
pos_first_arg = 1 # Only the executable
else:
pos_first_arg = 2 # Interpter, .py file path
pos_first_arg = 1 if getattr(sys, 'frozen', False) else 2

args.insert(pos_first_arg, "--open_browser")
args.insert(pos_first_arg + 1, "False")

if sys.platform == 'win32':
args = ['"%s"' % arg for arg in args]
args = [f'"{arg}"' for arg in args]

try:
print("Executing %s %s" % (sys.executable, args))
print(f"Executing {sys.executable} {args}")
os.execv(sys.executable, args)
except Exception as err:
print("Execv error: %s" % err)
print(f"Execv error: {err}")
print("Bye.")


def start():
app_dir = os.path.dirname(os.path.abspath(__file__))
os.chdir(app_dir) # Change working dir to zeronet.py dir
sys.path.insert(0, os.path.join(app_dir, "src/lib")) # External liblary directory
os.chdir(app_dir) # Change working dir to script dir
sys.path.insert(0, os.path.join(app_dir, "src/lib")) # External library directory
sys.path.insert(0, os.path.join(app_dir, "src")) # Imports relative to src

if "--update" in sys.argv:
Expand Down