zeronet.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/env python
  2. def main():
  3. print "- Starting ZeroNet..."
  4. import sys, os
  5. main = None
  6. try:
  7. sys.path.insert(0, os.path.join(os.path.dirname(__file__), "src")) # Imports relative to src
  8. import main
  9. main.start()
  10. if main.update_after_shutdown: # Updater
  11. import update, sys, os, gc
  12. # Try cleanup openssl
  13. try:
  14. if "lib.opensslVerify" in sys.modules:
  15. sys.modules["lib.opensslVerify"].opensslVerify.close()
  16. except Exception, err:
  17. print "Error closing openssl", err
  18. # Update
  19. update.update()
  20. # Close log files
  21. logger = sys.modules["main"].logging.getLogger()
  22. for handler in logger.handlers[:]:
  23. handler.flush()
  24. handler.close()
  25. logger.removeHandler(handler)
  26. except Exception, err: # Prevent closing
  27. import traceback
  28. traceback.print_exc()
  29. traceback.print_exc(file=open("log/error.log", "a"))
  30. if main and main.update_after_shutdown: # Updater
  31. # Restart
  32. gc.collect() # Garbage collect
  33. print "Restarting..."
  34. args = sys.argv[:]
  35. args.insert(0, sys.executable)
  36. if sys.platform == 'win32':
  37. args = ['"%s"' % arg for arg in args]
  38. os.execv(sys.executable, args)
  39. print "Bye."
  40. if __name__ == '__main__':
  41. main()