diff options
| -rw-r--r-- | module/file_list.py | 2 | ||||
| -rw-r--r-- | module/web/ServerThread.py | 8 | ||||
| -rw-r--r-- | module/web/manage.py | 27 | ||||
| -rw-r--r-- | module/web/pyload.db | bin | 43008 -> 43008 bytes | 
4 files changed, 25 insertions, 12 deletions
| diff --git a/module/file_list.py b/module/file_list.py index 9d4c090d1..67ae447bb 100644 --- a/module/file_list.py +++ b/module/file_list.py @@ -295,7 +295,7 @@ class File_List(object):              """              packager.file_list.lock.acquire()              try: -                key, n, pyfile, pypack, pid = self._getFileFromID() +                key, n, pyfile, pypack, pid = packager._getFileFromID()                  del pypack.files[n]                  if not pypack.files:                      packager.removePackage(pid) diff --git a/module/web/ServerThread.py b/module/web/ServerThread.py index 2279296d8..d9f0f8cdc 100644 --- a/module/web/ServerThread.py +++ b/module/web/ServerThread.py @@ -4,6 +4,7 @@ from os.path import join  from subprocess import Popen, PIPE, STDOUT  from time import sleep  from signal import SIGINT +import os  class WebServer(threading.Thread):      def __init__(self, pycore): @@ -16,12 +17,15 @@ class WebServer(threading.Thread):          host = self.pycore.config['webinterface']['host']          port = self.pycore.config['webinterface']['port']          self.pycore.logger.info("Starting Webserver: %s:%s" % (host,port) ) -        self.p = Popen(['python',join(self.pycore.path,"module","web","manage.py"), "runserver", "%s:%s" % (host,port)], close_fds=True, stderr=PIPE, stdin=PIPE, stdout=PIPE, shell=True) +        self.p = Popen(['python',join(self.pycore.path,"module","web","manage.py"), "runserver", "%s:%s" % (host,port)], close_fds=True, stderr=PIPE, stdin=PIPE, stdout=PIPE)          #os.system("python " + join(self.pycore.path,"module","web","manage.py runserver %s:%s" % (host,port)))          #@TODO: better would be real python code +        sleep(1) +        with open("webserver.pid", "r") as f: +            self.pid = int(f.read().strip())          while self.running:              sleep(1)      def quit(self): -        self.p.terminate() +        os.kill(self.pid, SIGINT)          self.running = False diff --git a/module/web/manage.py b/module/web/manage.py index ae9495854..782f6fbe0 100644 --- a/module/web/manage.py +++ b/module/web/manage.py @@ -1,12 +1,21 @@  #!/usr/bin/env python -from django.core.management import execute_manager -try: -    import settings # Assumed to be in the same directory. -except ImportError: -    import sys -    sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__) -    sys.exit(1) +import os -if __name__ == "__main__": -    execute_manager(settings) +pid = os.fork() + +if pid: +    with open("webserver.pid", "w") as f: +        f.write(str(pid)) +else: +    from django.core.management import execute_manager + +    try: +        import settings # Assumed to be in the same directory. +    except ImportError: +        import sys +        sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__) +        sys.exit(1) + +    if __name__ == "__main__": +        execute_manager(settings) diff --git a/module/web/pyload.db b/module/web/pyload.dbBinary files differ index 097ea4d3a..44b0dbe23 100644 --- a/module/web/pyload.db +++ b/module/web/pyload.db | 
