2019-04-07 04:55:55 +02:00
|
|
|
#!/usr/bin/env python3
|
2015-01-12 02:03:45 +01:00
|
|
|
|
2015-06-17 23:31:38 +02:00
|
|
|
# Included modules
|
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
|
|
|
|
|
2015-01-26 20:09:49 +01:00
|
|
|
def main():
|
2019-03-18 01:08:20 +01:00
|
|
|
if sys.version_info.major < 3:
|
|
|
|
print("Error: Python 3.x is required")
|
|
|
|
sys.exit(0)
|
|
|
|
|
2017-06-21 00:03:26 +02:00
|
|
|
if "--silent" not in sys.argv:
|
2019-03-15 21:06:59 +01:00
|
|
|
print("- Starting ZeroNet...")
|
2015-06-17 23:31:38 +02:00
|
|
|
|
|
|
|
main = None
|
|
|
|
try:
|
2016-12-01 13:41:29 +01:00
|
|
|
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
|
|
|
|
sys.path.insert(0, os.path.join(app_dir, "src")) # Imports relative to src
|
2015-06-17 23:31:38 +02:00
|
|
|
import main
|
|
|
|
main.start()
|
|
|
|
if main.update_after_shutdown: # Updater
|
2015-06-18 02:53:01 +02:00
|
|
|
import gc
|
|
|
|
import update
|
2015-06-17 23:31:38 +02:00
|
|
|
|
2016-11-08 15:02:28 +01:00
|
|
|
# Close lock file
|
2019-04-15 12:31:33 +02:00
|
|
|
main.lock.close()
|
2016-11-08 15:02:28 +01:00
|
|
|
|
2016-12-04 18:55:33 +01:00
|
|
|
# Update
|
2017-06-05 01:08:27 +02:00
|
|
|
try:
|
|
|
|
update.update()
|
2019-03-15 21:06:59 +01:00
|
|
|
except Exception as err:
|
|
|
|
print("Update error: %s" % err)
|
2016-12-04 18:55:33 +01:00
|
|
|
|
2019-03-15 21:06:59 +01:00
|
|
|
except Exception as err: # Prevent closing
|
2015-06-18 02:53:01 +02:00
|
|
|
import traceback
|
2017-01-11 13:12:20 +01:00
|
|
|
try:
|
|
|
|
import logging
|
|
|
|
logging.exception("Unhandled exception: %s" % err)
|
2019-03-15 21:06:59 +01:00
|
|
|
except Exception as log_err:
|
|
|
|
print("Failed to log error:", log_err)
|
2017-01-11 13:12:20 +01:00
|
|
|
traceback.print_exc()
|
2018-07-10 03:28:02 +02:00
|
|
|
from Config import config
|
2017-01-11 13:12:20 +01:00
|
|
|
traceback.print_exc(file=open(config.log_dir + "/error.log", "a"))
|
2015-06-17 23:31:38 +02:00
|
|
|
|
2018-07-10 03:28:02 +02:00
|
|
|
if main and (main.update_after_shutdown or main.restart_after_shutdown): # Updater
|
|
|
|
import atexit
|
2019-03-15 21:06:59 +01:00
|
|
|
print("Restarting...")
|
2018-07-10 03:28:02 +02:00
|
|
|
# Close log files
|
2019-04-15 12:31:33 +02:00
|
|
|
logger = main.logging.getLogger()
|
2018-07-10 03:28:02 +02:00
|
|
|
|
|
|
|
for handler in logger.handlers[:]:
|
|
|
|
handler.flush()
|
|
|
|
handler.close()
|
|
|
|
logger.removeHandler(handler)
|
|
|
|
|
|
|
|
atexit._run_exitfuncs()
|
2016-03-16 21:27:00 +01:00
|
|
|
import time
|
2016-03-12 20:34:37 +01:00
|
|
|
time.sleep(1) # Wait files to close
|
2015-06-17 23:31:38 +02:00
|
|
|
args = sys.argv[:]
|
2017-01-21 23:01:29 +01:00
|
|
|
|
|
|
|
sys.executable = sys.executable.replace(".pkg", "") # Frozen mac fix
|
|
|
|
|
|
|
|
if not getattr(sys, 'frozen', False):
|
|
|
|
args.insert(0, sys.executable)
|
|
|
|
|
2015-06-17 23:31:38 +02:00
|
|
|
if sys.platform == 'win32':
|
|
|
|
args = ['"%s"' % arg for arg in args]
|
2017-01-21 23:01:29 +01:00
|
|
|
|
|
|
|
try:
|
2019-03-15 21:06:59 +01:00
|
|
|
print("Executing %s %s" % (sys.executable, args))
|
2017-01-21 23:01:29 +01:00
|
|
|
os.execv(sys.executable, args)
|
2019-03-15 21:06:59 +01:00
|
|
|
except Exception as err:
|
|
|
|
print("Execv error: %s" % err)
|
|
|
|
print("Bye.")
|
2015-01-26 20:09:49 +01:00
|
|
|
|
2017-01-21 23:01:29 +01:00
|
|
|
|
2015-01-26 20:09:49 +01:00
|
|
|
if __name__ == '__main__':
|
2017-01-11 13:12:20 +01:00
|
|
|
main()
|