summaryrefslogtreecommitdiffstats
path: root/module/web
diff options
context:
space:
mode:
Diffstat (limited to 'module/web')
-rw-r--r--module/web/ServerThread.py97
-rw-r--r--module/web/cnl/views.py56
-rw-r--r--module/web/lighttpd/lighttpd_default.conf151
-rw-r--r--module/web/locale/de/LC_MESSAGES/django.po94
-rw-r--r--module/web/locale/en/LC_MESSAGES/django.po94
-rw-r--r--module/web/pyload/urls.py2
-rw-r--r--module/web/pyload/views.py6
-rw-r--r--module/web/settings.py6
-rw-r--r--module/web/templates/default/downloads.html4
9 files changed, 413 insertions, 97 deletions
diff --git a/module/web/ServerThread.py b/module/web/ServerThread.py
index 1276966ef..5d0dc8738 100644
--- a/module/web/ServerThread.py
+++ b/module/web/ServerThread.py
@@ -1,52 +1,97 @@
#!/usr/bin/env python
from __future__ import with_statement
-import threading
-from os.path import join
+import os
from os.path import exists
-from subprocess import Popen, PIPE, STDOUT
-from time import sleep
+from os.path import join
from signal import SIGINT
-import os
+from subprocess import PIPE
+from subprocess import Popen
+from subprocess import call
+from sys import version_info
+import threading
+from time import sleep
class WebServer(threading.Thread):
def __init__(self, pycore):
threading.Thread.__init__(self)
self.pycore = pycore
self.running = True
+ self.lighttpd = False
self.setDaemon(True)
def run(self):
host = self.pycore.config['webinterface']['host']
port = self.pycore.config['webinterface']['port']
+ path = join(self.pycore.path, "module", "web")
- if not exists(join(self.pycore.path,"module","web","pyload.db")):
+ if not exists(join(self.pycore.path, "module", "web", "pyload.db")):
print "########## IMPORTANT ###########"
print "### Database for Webinterface doesnt exitst, it will not be available."
- print "### Please run: python %s syncdb" % join(self.pycore.path,"module","web","manage.py")
- print "### You have to add at least one User, to gain access to webinterface: python %s createsuperuser" % join(self.pycore.path,"module","web","manage.py")
+ print "### Please run: python %s syncdb" % join(self.pycore.path, "module", "web", "manage.py")
+ print "### You have to add at least one User, to gain access to webinterface: python %s createsuperuser" % join(self.pycore.path, "module", "web", "manage.py")
print "### Dont forget to restart pyLoad if you are done."
print "################################"
- raise Exception, "Database doesnt exists, please use syncdb"
-
- self.pycore.logger.info("Starting Webserver: %s:%s" % (host,port) )
-
- if os.name == 'posix':
- command = ['python',join(self.pycore.path,"module","web","run_unix.py"), "runserver", "%s:%s" % (host,port)]
- self.p = Popen(command, 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)
- else:
- command = ['python',join(self.pycore.path,"module","web","manage.py"), "runserver", "%s:%s" % (host,port)]
+ return None
+
+ try:
+ call(["lighttpd", "-v"], stdout=PIPE, stderr=PIPE)
+ import flup
+ self.lighttpd = True
+
+ except Exception:
+ self.lighttpd = False
+
+ if self.lighttpd:
+ self.pycore.logger.info("Starting lighttpd Webserver: %s:%s" % (host, port))
+ config = file(join(path, "lighttpd", "lighttpd_default.conf"), "rb")
+ content = config.readlines()
+ config.close()
+ content = "".join(content)
+
+ content = content.replace("%(path)", join(path, "lighttpd"))
+ content = content.replace("%(host)", host)
+ content = content.replace("%(port)", port)
+ content = content.replace("%(media)", join(path, "media"))
+ content = content.replace("%(version)", ".".join(map(str,version_info[0:2])))
+
+ new_config = file(join(path, "lighttpd", "lighttpd.conf"), "wb")
+ new_config.write(content)
+ new_config.close()
+
+ command = ['python', join(self.pycore.path, "module", "web", "manage.py"), "runfcgi", "daemonize=false", "method=threaded", "host=127.0.0.1", "port=9295"]
self.p = Popen(command, stderr=PIPE, stdin=PIPE, stdout=PIPE)
- while self.running:
+
+ command2 = ['lighttpd', '-D', '-f', join(path, "lighttpd", "lighttpd.conf")]
+ self.p2 = Popen(command2, stderr=PIPE, stdin=PIPE, stdout=PIPE)
+
+
+
+ else:
+ self.pycore.logger.info("Starting django buildin Webserver: %s:%s" % (host, port))
+
+ if os.name == 'posix':
+ command = ['python', join(self.pycore.path, "module", "web", "run_unix.py"), "runserver", "%s:%s" % (host, port)]
+ self.p = Popen(command, 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)
+ else:
+ command = ['python', join(self.pycore.path, "module", "web", "manage.py"), "runserver", "%s:%s" % (host, port)]
+ self.p = Popen(command, stderr=PIPE, stdin=PIPE, stdout=PIPE)
+ while self.running:
+ sleep(1)
+
def quit(self):
+
+ if self.lighttpd:
+ self.p.kill()
+ self.p2.kill()
+ return True
+
if os.name == 'posix':
try:
os.kill(self.pid, SIGINT)
diff --git a/module/web/cnl/views.py b/module/web/cnl/views.py
index 490a445f1..9d309dbf6 100644
--- a/module/web/cnl/views.py
+++ b/module/web/cnl/views.py
@@ -1,37 +1,60 @@
# Create your views here.
+import base64
+import binascii
+from os.path import join
+import re
+from urllib import unquote
+
from django.conf import settings
from django.http import HttpResponse
from django.http import HttpResponseServerError
-from os.path import join
-import binascii
-from urllib import unquote
-import re
-import base64
try:
from Crypto.Cipher import AES
except:
pass
+def local_check(function):
+ def _dec(view_func):
+ def _view(request, * args, ** kwargs):
+ if request.META['REMOTE_ADDR'] == '127.0.0.1' or request.META['REMOTE_ADDR'] == 'localhost':
+ return view_func(request, * args, ** kwargs)
+ else:
+ return HttpResponseServerError()
+
+ _view.__name__ = view_func.__name__
+ _view.__dict__ = view_func.__dict__
+ _view.__doc__ = view_func.__doc__
+
+ return _view
+
+ if function is None:
+ return _dec
+ else:
+ return _dec(function)
+
+@local_check
def flash(request):
return HttpResponse()
+@local_check
def add(request):
- package = request.POST.get('referer','ClickAndLoad Package')
+ package = request.POST.get('referer', 'ClickAndLoad Package')
urls = filter(lambda x: x != "", request.POST['urls'].split("\n"))
settings.PYLOAD.add_package(package, urls, False)
return HttpResponse()
+@local_check
def addcrypted(request):
- package = request.POST.get('referer','ClickAndLoad Package')
- dlc = request.POST['crypted'].replace(" ","+")
+ package = request.POST.get('referer', 'ClickAndLoad Package')
+ dlc = request.POST['crypted'].replace(" ", "+")
- dlc_path = join(settings.DL_ROOT, package.replace("/","").replace("\\","").replace(":","")+".dlc")
+ dlc_path = join(settings.DL_ROOT, package.replace("/", "").replace("\\", "").replace(":", "") + ".dlc")
dlc_file = file(dlc_path, "wb")
dlc_file.write(dlc)
dlc_file.close()
@@ -41,13 +64,14 @@ def addcrypted(request):
return HttpResponse()
+@local_check
def addcrypted2(request):
package = request.POST.get("source", "ClickAndLoad Package")
crypted = request.POST["crypted"]
jk = request.POST["jk"]
- crypted = base64.standard_b64decode(unquote(crypted.replace(" ","+")))
+ crypted = base64.standard_b64decode(unquote(crypted.replace(" ", "+")))
jk = re.findall(r"return ('|\")(.+)('|\")", jk)[0][1]
@@ -55,25 +79,29 @@ def addcrypted2(request):
IV = Key
obj = AES.new(Key, AES.MODE_CBC, IV)
- result = obj.decrypt(crypted).replace("\x00","").split("\n")
-
+ result = obj.decrypt(crypted).replace("\x00", "").split("\n")
+
+ result = filter(lambda x: x != "", result)
+
settings.PYLOAD.add_package(package, result, False)
return HttpResponse()
+@local_check
def flashgot(request):
if request.META['HTTP_REFERER'] != "http://localhost:9666/flashgot" and request.META['HTTP_REFERER'] != "http://127.0.0.1:9666/flashgot":
return HttpResponseServerError()
- autostart = int(request.POST.get('autostart',0))
+ autostart = int(request.POST.get('autostart', 0))
package = request.POST.get('package', "FlashGot")
- urls = request.POST['urls'].split("\n")
+ urls = urls = filter(lambda x: x != "", request.POST['urls'].split("\n"))
folder = request.POST.get('dir', None)
settings.PYLOAD.add_package(package, urls, autostart)
return HttpResponse("")
+@local_check
def crossdomain(request):
rep = "<?xml version=\"1.0\"?>\r\n"
rep += "<!DOCTYPE cross-domain-policy SYSTEM \"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd\">\r\n"
diff --git a/module/web/lighttpd/lighttpd_default.conf b/module/web/lighttpd/lighttpd_default.conf
new file mode 100644
index 000000000..fb971ffbe
--- /dev/null
+++ b/module/web/lighttpd/lighttpd_default.conf
@@ -0,0 +1,151 @@
+# lighttpd configuration file
+#
+# use it as a base for lighttpd 1.0.0 and above
+#
+# $Id: lighttpd.conf,v 1.7 2004/11/03 22:26:05 weigon Exp $
+
+############ Options you really have to take care of ####################
+
+## modules to load
+# at least mod_access and mod_accesslog should be loaded
+# all other module should only be loaded if really neccesary
+# - saves some time
+# - saves memory
+server.modules = (
+ "mod_rewrite",
+ "mod_redirect",
+ "mod_alias",
+ "mod_access",
+# "mod_trigger_b4_dl",
+# "mod_auth",
+# "mod_status",
+# "mod_setenv",
+ "mod_fastcgi",
+# "mod_proxy",
+# "mod_simple_vhost",
+# "mod_evhost",
+# "mod_userdir",
+# "mod_cgi",
+# "mod_compress",
+# "mod_ssi",
+# "mod_usertrack",
+# "mod_expire",
+# "mod_secdownload",
+# "mod_rrdtool",
+# "mod_accesslog"
+ )
+
+## A static document-root. For virtual hosting take a look at the
+## mod_simple_vhost module.
+server.document-root = "/srv/http/"
+
+## where to send error-messages to
+server.errorlog = "%(path)/error.log"
+
+# files to check for if .../ is requested
+index-file.names = ( "index.php", "index.html",
+ "index.htm", "default.htm" )
+
+## set the event-handler (read the performance section in the manual)
+# server.event-handler = "freebsd-kqueue" # needed on OS X
+
+# mimetype mapping
+mimetype.assign = (
+ ".pdf" => "application/pdf",
+ ".sig" => "application/pgp-signature",
+ ".spl" => "application/futuresplash",
+ ".class" => "application/octet-stream",
+ ".ps" => "application/postscript",
+ ".torrent" => "application/x-bittorrent",
+ ".dvi" => "application/x-dvi",
+ ".gz" => "application/x-gzip",
+ ".pac" => "application/x-ns-proxy-autoconfig",
+ ".swf" => "application/x-shockwave-flash",
+ ".tar.gz" => "application/x-tgz",
+ ".tgz" => "application/x-tgz",
+ ".tar" => "application/x-tar",
+ ".zip" => "application/zip",
+ ".mp3" => "audio/mpeg",
+ ".m3u" => "audio/x-mpegurl",
+ ".wma" => "audio/x-ms-wma",
+ ".wax" => "audio/x-ms-wax",
+ ".ogg" => "application/ogg",
+ ".wav" => "audio/x-wav",
+ ".gif" => "image/gif",
+ ".jar" => "application/x-java-archive",
+ ".jpg" => "image/jpeg",
+ ".jpeg" => "image/jpeg",
+ ".png" => "image/png",
+ ".xbm" => "image/x-xbitmap",
+ ".xpm" => "image/x-xpixmap",
+ ".xwd" => "image/x-xwindowdump",
+ ".css" => "text/css",
+ ".html" => "text/html",
+ ".htm" => "text/html",
+ ".js" => "text/javascript",
+ ".asc" => "text/plain",
+ ".c" => "text/plain",
+ ".cpp" => "text/plain",
+ ".log" => "text/plain",
+ ".conf" => "text/plain",
+ ".text" => "text/plain",
+ ".txt" => "text/plain",
+ ".dtd" => "text/xml",
+ ".xml" => "text/xml",
+ ".mpeg" => "video/mpeg",
+ ".mpg" => "video/mpeg",
+ ".mov" => "video/quicktime",
+ ".qt" => "video/quicktime",
+ ".avi" => "video/x-msvideo",
+ ".asf" => "video/x-ms-asf",
+ ".asx" => "video/x-ms-asf",
+ ".wmv" => "video/x-ms-wmv",
+ ".bz2" => "application/x-bzip",
+ ".tbz" => "application/x-bzip-compressed-tar",
+ ".tar.bz2" => "application/x-bzip-compressed-tar",
+ # default mime type
+ "" => "application/octet-stream",
+ )
+
+# Use the "Content-Type" extended attribute to obtain mime type if possible
+#mimetype.use-xattr = "enable"
+
+#### accesslog module
+accesslog.filename = "%(path)/access.log"
+
+url.access-deny = ( "~", ".inc" )
+
+$HTTP["url"] =~ "\.pdf$" {
+ server.range-requests = "disable"
+}
+static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
+
+server.pid-file = "%(path)/lighttpd.pid"
+
+server.bind = "%(host)"
+server.port = %(port)
+
+#server.document-root = "/home/user/public_html"
+fastcgi.server = (
+ "/pyload.fcgi" => (
+ "main" => (
+ "host" => "127.0.0.1",
+ "port" => 9295,
+ "check-local" => "disable",
+ "docroot" => "/",
+ )
+ ),
+)
+
+alias.url = (
+ "/media/" => "%(media)/",
+ "/admin/media/" => "/usr/lib/python%(version)/site-packages/django/contrib/admin/media/",
+)
+
+url.rewrite-once = (
+ "^(/media.*)$" => "$1",
+ "^(/admin/media.*)$" => "$1",
+ "^/favicon\.ico$" => "/media/img/favicon.ico",
+ "^(/pyload.fcgi.*)$" => "$1",
+ "^(/.*)$" => "/pyload.fcgi$1",
+)
diff --git a/module/web/locale/de/LC_MESSAGES/django.po b/module/web/locale/de/LC_MESSAGES/django.po
index 8a086dff1..3056c2b1d 100644
--- a/module/web/locale/de/LC_MESSAGES/django.po
+++ b/module/web/locale/de/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-02-04 15:16+0000\n"
+"POT-Creation-Date: 2010-02-06 11:06+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -26,11 +26,11 @@ msgstr ""
msgid "You don't have permission to view this page."
msgstr ""
-#: pyload/views.py:88
+#: pyload/views.py:86
msgid "Download directory not found."
msgstr ""
-#: templates/default/base.html:21 templates/default/base.html.py:185
+#: templates/default/base.html:21 templates/default/base.html.py:193
msgid "Webinterface"
msgstr ""
@@ -50,62 +50,108 @@ msgstr ""
msgid "Please Login!"
msgstr ""
-#: templates/default/base.html:147 templates/default/queue.html:79
+#: templates/default/base.html:147 templates/default/collector.html:90
+#: templates/default/downloads.html:8 templates/default/logs.html:9
+#: templates/default/queue.html:80 templates/default/settings.html:9
msgid "Home"
msgstr ""
-#: templates/default/base.html:150 templates/default/queue.html:75
-#: templates/default/queue.html.py:76 templates/default/queue.html:80
+#: templates/default/base.html:150 templates/default/collector.html:93
+#: templates/default/downloads.html:11 templates/default/logs.html:12
+#: templates/default/queue.html:75 templates/default/queue.html.py:76
+#: templates/default/queue.html:83 templates/default/settings.html:12
msgid "Queue"
msgstr ""
-#: templates/default/base.html:152 templates/default/downloads.html:20
-#: templates/default/queue.html:81
+#: templates/default/base.html:153 templates/default/collector.html:85
+#: templates/default/collector.html:86 templates/default/collector.html:96
+#: templates/default/downloads.html:14 templates/default/logs.html:15
+#: templates/default/queue.html:86 templates/default/settings.html:15
+msgid "Collector"
+msgstr ""
+
+#: templates/default/base.html:156 templates/default/collector.html:99
+#: templates/default/downloads.html:17 templates/default/downloads.html:28
+#: templates/default/logs.html:18 templates/default/queue.html:89
+#: templates/default/settings.html:18
msgid "Downloads"
msgstr ""
-#: templates/default/base.html:154 templates/default/logs.html:4
-#: templates/default/logs.html.py:5 templates/default/queue.html:82
+#: templates/default/base.html:159 templates/default/collector.html:102
+#: templates/default/downloads.html:20 templates/default/logs.html:4
+#: templates/default/logs.html.py:5 templates/default/logs.html:21
+#: templates/default/queue.html:92 templates/default/settings.html:21
msgid "Logs"
msgstr ""
-#: templates/default/base.html:166
+#: templates/default/base.html:162 templates/default/collector.html:105
+#: templates/default/downloads.html:23 templates/default/logs.html:24
+#: templates/default/queue.html:95 templates/default/settings.html:4
+#: templates/default/settings.html.py:5 templates/default/settings.html:24
+msgid "Config"
+msgstr ""
+
+#: templates/default/base.html:174
msgid "Play"
msgstr ""
-#: templates/default/base.html:167
+#: templates/default/base.html:175
msgid "Cancel"
msgstr ""
-#: templates/default/base.html:168
+#: templates/default/base.html:176
msgid "Stop"
msgstr ""
-#: templates/default/base.html:169
+#: templates/default/base.html:177
msgid "Add"
msgstr ""
-#: templates/default/base.html:175
+#: templates/default/base.html:183
msgid "Speed:"
msgstr ""
-#: templates/default/base.html:176
+#: templates/default/base.html:184
msgid "Active:"
msgstr ""
-#: templates/default/base.html:177
+#: templates/default/base.html:185
msgid "Reload page"
msgstr ""
-#: templates/default/base.html:205
+#: templates/default/base.html:213
msgid "© 2008-2010 the pyLoad Team"
msgstr "© 2008-2010 das pyLoad Team"
-#: templates/default/base.html:207
+#: templates/default/base.html:215
msgid "Back to top"
msgstr ""
-#: templates/default/downloads.html:25
+#: templates/default/collector.html:114 templates/default/queue.html:104
+msgid "Delete Package"
+msgstr ""
+
+#: templates/default/collector.html:116
+msgid "Reset Package"
+msgstr ""
+
+#: templates/default/collector.html:118
+msgid "Push Package to Queue"
+msgstr ""
+
+#: templates/default/collector.html:131 templates/default/queue.html:119
+msgid "Folder:"
+msgstr ""
+
+#: templates/default/collector.html:133 templates/default/queue.html:121
+msgid "Delete Link"
+msgstr ""
+
+#: templates/default/collector.html:135 templates/default/queue.html:123
+msgid "Restart Link"
+msgstr ""
+
+#: templates/default/downloads.html:33
msgid "It's recommend not to download Files bigger than ~10MB from here."
msgstr ""
@@ -153,20 +199,20 @@ msgstr ""
msgid "You were successfully logged out."
msgstr ""
-#: templates/default/logs.html:26
+#: templates/default/logs.html:34
msgid "Start"
msgstr ""
-#: templates/default/logs.html:26
+#: templates/default/logs.html:34
msgid "prev"
msgstr ""
-#: templates/default/logs.html:26
+#: templates/default/logs.html:34
msgid "next"
msgstr ""
#: templates/default/queue.html:106
-msgid "Folder:"
+msgid "Restart Package"
msgstr ""
#: templates/default/window.html:9 templates/default/window.html.py:26
diff --git a/module/web/locale/en/LC_MESSAGES/django.po b/module/web/locale/en/LC_MESSAGES/django.po
index 3676a800a..647768811 100644
--- a/module/web/locale/en/LC_MESSAGES/django.po
+++ b/module/web/locale/en/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-02-04 15:16+0000\n"
+"POT-Creation-Date: 2010-02-06 11:06+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -26,11 +26,11 @@ msgstr ""
msgid "You don't have permission to view this page."
msgstr ""
-#: pyload/views.py:88
+#: pyload/views.py:86
msgid "Download directory not found."
msgstr ""
-#: templates/default/base.html:21 templates/default/base.html.py:185
+#: templates/default/base.html:21 templates/default/base.html.py:193
msgid "Webinterface"
msgstr ""
@@ -50,62 +50,108 @@ msgstr ""
msgid "Please Login!"
msgstr ""
-#: templates/default/base.html:147 templates/default/queue.html:79
+#: templates/default/base.html:147 templates/default/collector.html:90
+#: templates/default/downloads.html:8 templates/default/logs.html:9
+#: templates/default/queue.html:80 templates/default/settings.html:9
msgid "Home"
msgstr ""
-#: templates/default/base.html:150 templates/default/queue.html:75
-#: templates/default/queue.html.py:76 templates/default/queue.html:80
+#: templates/default/base.html:150 templates/default/collector.html:93
+#: templates/default/downloads.html:11 templates/default/logs.html:12
+#: templates/default/queue.html:75 templates/default/queue.html.py:76
+#: templates/default/queue.html:83 templates/default/settings.html:12
msgid "Queue"
msgstr ""
-#: templates/default/base.html:152 templates/default/downloads.html:20
-#: templates/default/queue.html:81
+#: templates/default/base.html:153 templates/default/collector.html:85
+#: templates/default/collector.html:86 templates/default/collector.html:96
+#: templates/default/downloads.html:14 templates/default/logs.html:15
+#: templates/default/queue.html:86 templates/default/settings.html:15
+msgid "Collector"
+msgstr ""
+
+#: templates/default/base.html:156 templates/default/collector.html:99
+#: templates/default/downloads.html:17 templates/default/downloads.html:28
+#: templates/default/logs.html:18 templates/default/queue.html:89
+#: templates/default/settings.html:18
msgid "Downloads"
msgstr ""
-#: templates/default/base.html:154 templates/default/logs.html:4
-#: templates/default/logs.html.py:5 templates/default/queue.html:82
+#: templates/default/base.html:159 templates/default/collector.html:102
+#: templates/default/downloads.html:20 templates/default/logs.html:4
+#: templates/default/logs.html.py:5 templates/default/logs.html:21
+#: templates/default/queue.html:92 templates/default/settings.html:21
msgid "Logs"
msgstr ""
-#: templates/default/base.html:166
+#: templates/default/base.html:162 templates/default/collector.html:105
+#: templates/default/downloads.html:23 templates/default/logs.html:24
+#: templates/default/queue.html:95 templates/default/settings.html:4
+#: templates/default/settings.html.py:5 templates/default/settings.html:24
+msgid "Config"
+msgstr ""
+
+#: templates/default/base.html:174
msgid "Play"
msgstr ""
-#: templates/default/base.html:167
+#: templates/default/base.html:175
msgid "Cancel"
msgstr ""
-#: templates/default/base.html:168
+#: templates/default/base.html:176
msgid "Stop"
msgstr ""
-#: templates/default/base.html:169
+#: templates/default/base.html:177
msgid "Add"
msgstr ""
-#: templates/default/base.html:175
+#: templates/default/base.html:183
msgid "Speed:"
msgstr ""
-#: templates/default/base.html:176
+#: templates/default/base.html:184
msgid "Active:"
msgstr ""
-#: templates/default/base.html:177
+#: templates/default/base.html:185
msgid "Reload page"
msgstr ""
-#: templates/default/base.html:205
+#: templates/default/base.html:213
msgid "© 2008-2010 the pyLoad Team"
msgstr ""
-#: templates/default/base.html:207
+#: templates/default/base.html:215
msgid "Back to top"
msgstr ""
-#: templates/default/downloads.html:25
+#: templates/default/collector.html:114 templates/default/queue.html:104
+msgid "Delete Package"
+msgstr ""
+
+#: templates/default/collector.html:116
+msgid "Reset Package"
+msgstr ""
+
+#: templates/default/collector.html:118
+msgid "Push Package to Queue"
+msgstr ""
+
+#: templates/default/collector.html:131 templates/default/queue.html:119
+msgid "Folder:"
+msgstr ""
+
+#: templates/default/collector.html:133 templates/default/queue.html:121
+msgid "Delete Link"
+msgstr ""
+
+#: templates/default/collector.html:135 templates/default/queue.html:123
+msgid "Restart Link"
+msgstr ""
+
+#: templates/default/downloads.html:33
msgid "It's recommend not to download Files bigger than ~10MB from here."
msgstr ""
@@ -153,20 +199,20 @@ msgstr ""
msgid "You were successfully logged out."
msgstr ""
-#: templates/default/logs.html:26
+#: templates/default/logs.html:34
msgid "Start"
msgstr ""
-#: templates/default/logs.html:26
+#: templates/default/logs.html:34
msgid "prev"
msgstr ""
-#: templates/default/logs.html:26
+#: templates/default/logs.html:34
msgid "next"
msgstr ""
#: templates/default/queue.html:106
-msgid "Folder:"
+msgid "Restart Package"
msgstr ""
#: templates/default/window.html:9 templates/default/window.html.py:26
diff --git a/module/web/pyload/urls.py b/module/web/pyload/urls.py
index 34c3aee18..420bc8ce1 100644
--- a/module/web/pyload/urls.py
+++ b/module/web/pyload/urls.py
@@ -9,7 +9,7 @@ from django.conf.urls.defaults import *
urlpatterns = patterns('pyload',
(r'^home/$', 'views.home'),
(r'^downloads/$', 'views.downloads',{},'downloads'),
- (r'^download/(?P<path>[a-zA-z\.0-9\-/_%]+)$', 'views.download',{},'download'),
+ (r'^download/(?P<path>[a-zA-z\.0-9\-/_% "\\]+)$', 'views.download',{},'download'),
(r'^queue/$', 'views.queue',{}, 'queue'),
(r'^collector/$', 'views.collector',{}, 'collector'),
(r'^settings/$', 'views.config',{}, 'config'),
diff --git a/module/web/pyload/views.py b/module/web/pyload/views.py
index 2891b373d..e8df50596 100644
--- a/module/web/pyload/views.py
+++ b/module/web/pyload/views.py
@@ -7,6 +7,7 @@ from os import stat
from os.path import isdir
from os.path import isfile
from os.path import join
+from urllib import unquote
from django.conf import settings
from django.contrib.auth.decorators import login_required
@@ -16,7 +17,6 @@ from django.shortcuts import render_to_response
from django.template import RequestContext
from django.utils.translation import ugettext as _
-
def check_server(function):
def _dec(view_func):
def _view(request, * args, ** kwargs):
@@ -110,14 +110,14 @@ def downloads(request):
@permission('pyload.can_download')
@check_server
def download(request, path):
+ path = unquote(path)
path = path.split("/")
-
+
dir = join(settings.DL_ROOT, path[1].replace('..', ''))
if isdir(dir) or isfile(dir):
if isdir(dir): filepath = join(dir, path[2])
elif isfile(dir): filepath = dir
- print filepath
if isfile(filepath):
try:
type, encoding = mimetypes.guess_type(filepath)
diff --git a/module/web/settings.py b/module/web/settings.py
index 11224faf4..0e67e3674 100644
--- a/module/web/settings.py
+++ b/module/web/settings.py
@@ -90,7 +90,7 @@ LOGIN_REDIRECT_URL = "/"
# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "http://foo.com/media/", "/media/".
-ADMIN_MEDIA_PREFIX = '/media/admin/'
+ADMIN_MEDIA_PREFIX = '/admin/media/'
# Make this unique, and don't share it with anybody.
SECRET_KEY = '+u%%1t&c7!e$0$*gu%w2$@to)h0!&x-r*9e+-=wa4*zxat%x^t'
@@ -129,9 +129,9 @@ INSTALLED_APPS = (
'django.contrib.admin',
'pyload',
'ajax',
- 'cnl'
+ 'cnl',
)
AUTH_PROFILE_MODULE = 'pyload.UserProfile'
-LOGIN_URL = '/login'
+LOGIN_URL = '/login/'
diff --git a/module/web/templates/default/downloads.html b/module/web/templates/default/downloads.html
index b9cffa955..9ab5a2ea4 100644
--- a/module/web/templates/default/downloads.html
+++ b/module/web/templates/default/downloads.html
@@ -38,14 +38,14 @@
{{ folder.name }}
<ul>
{% for file in folder.files %}
- <li><a href='{% url download 'get/' %}{{ folder.name }}/{{ file }}'>{{ file }}</a></li>
+ <li><a href='{% url download 'get/' %}{{ folder.path|urlencode }}/{{ file|urlencode }}'>{{file}}</a></li>
{% endfor %}
</ul>
</li>
{% endfor %}
{% for file in files.files %}
- <li> <a href={% url download 'get/' %}{{ file }}>{{ file }}</a></li>
+ <li> <a href={% url download 'get/' %}{{ file|urlencode }}>{{ file }}</a></li>
{% endfor %}
</ul>