summaryrefslogtreecommitdiffstats
path: root/module
diff options
context:
space:
mode:
authorGravatar Walter Purcaro <vuolter@gmail.com> 2014-07-19 02:52:52 +0200
committerGravatar Walter Purcaro <vuolter@gmail.com> 2014-07-19 02:52:52 +0200
commit5928607eff937ece331bf64cd3b8c42975067df4 (patch)
tree826632449764d414cddd6bc0baa5f272f2bbaf5d /module
parent[README] Fix typo (diff)
downloadpyload-5928607eff937ece331bf64cd3b8c42975067df4.tar.xz
Improve Setup
Diffstat (limited to 'module')
-rw-r--r--module/setup.py138
-rw-r--r--module/utils.py14
2 files changed, 95 insertions, 57 deletions
diff --git a/module/setup.py b/module/setup.py
index ffe2a01ef..7848359a6 100644
--- a/module/setup.py
+++ b/module/setup.py
@@ -10,7 +10,7 @@ from os import makedirs
from os.path import abspath, dirname, exists, join
from subprocess import PIPE, call
-from module.utils import get_console_encoding
+from module.utils import get_console_encoding, versiontuple
class Setup:
@@ -24,7 +24,7 @@ class Setup:
def start(self):
langs = self.config.getMetaData("general", "language")["type"].split(";")
- lang = self.ask(u"Choose your Language", "en", langs)
+ lang = self.ask(u"Choose setup language", "en", langs)
gettext.setpaths([join(os.sep, "usr", "share", "pyload", "locale"), None])
translation = gettext.translation("setup", join(self.path, "locale"), languages=[lang, "en"], fallback=True)
translation.install(True)
@@ -50,6 +50,7 @@ class Setup:
# print "Falling back to commandline setup."
print
+ print
print _("Welcome to the pyLoad Configuration Assistant.")
print _("It will check your system and make a basic setup in order to run pyLoad.")
print
@@ -60,18 +61,23 @@ class Setup:
print _("If you have any problems with this assistant hit STRG-C,")
print _("to abort and don't let him start with pyload.py automatically anymore.")
print
- print _("When you are ready for system check, hit enter.")
- raw_input()
+ print
+ raw_input(_("When you are ready for system check, hit enter."))
+ print
print
basic, ssl, captcha, web, js = self.system_check()
print
+ print
if not basic:
print _("You need pycurl, sqlite and python 2.5, 2.6 or 2.7 to run pyLoad.")
print _("Please correct this and re-run pyLoad.")
+ print
print _("Setup will now close.")
- raw_input()
+ print
+ print
+ raw_input(_("Press Enter to exit."))
return False
raw_input(_("System check finished, hit enter to see your status report."))
@@ -88,7 +94,7 @@ class Setup:
if captcha:
avail.append(_("automatic captcha decryption"))
if web:
- avail.append(_("Webinterface"))
+ avail.append(_("webinterface"))
if js:
avail.append(_("extended Click'N'Load"))
@@ -97,50 +103,50 @@ class Setup:
for av in avail:
string += ", " + av
- print _("Features available:")
- print
- print string[1:]
- print
+ print _("AVAILABLE FEATURES:") + string[1:]
print
if len(avail) < 5:
- print _("Featues missing: ")
- print
+ print _("MISSING FEATURES: ")
if not self.check_module("Crypto"):
- print _("no py-crypto available")
+ print _("- no py-crypto available")
print _("You need this if you want to decrypt container files.")
print
if not ssl:
- print _("no SSL available")
+ print _("- no SSL available")
print _("This is needed if you want to establish a secure connection to core or webinterface.")
print _("If you only want to access locally to pyLoad ssl is not usefull.")
print
if not captcha:
- print _("no Captcha Recognition available")
+ print _("- no Captcha Recognition available")
print _("Only needed for some hosters and as freeuser.")
print
if not js:
- print _("no JavaScript engine found")
+ print _("- no JavaScript engine found")
print _("You will need this for some Click'N'Load links. Install Spidermonkey, ossp-js, pyv8 or rhino")
+ print
+ print
print _("You can abort the setup now and fix some dependicies if you want.")
+ print
con = self.ask(_("Continue with setup?"), self.yes, bool=True)
if not con:
return False
print
- print _("Do you want to change the config path?")
+ print
print _("CURRENT CONFIG PATH: %s") % abspath("")
- print _(
- "If you use pyLoad on a server or the home partition lives on an iternal flash it may be a good idea to change it.")
- path = self.ask(_("Change config path?"), self.no, bool=True)
+ print
+ print _("NOTE: If you use pyLoad on a server or the home partition lives on an iternal flash it may be a good idea to change it.")
+ path = self.ask(_("Do you want to change the config path?"), self.no, bool=True)
if path:
+ print
self.conf_path()
#calls exit when changed
@@ -150,6 +156,8 @@ class Setup:
con = self.ask(_("Make basic setup?"), self.yes, bool=True)
if con:
+ print
+ print
self.conf_basic()
if ssl:
@@ -158,6 +166,7 @@ class Setup:
ssl = self.ask(_("Configure ssl?"), self.no, bool=True)
if ssl:
print
+ print
self.conf_ssl()
if web:
@@ -165,17 +174,30 @@ class Setup:
print _("Do you want to configure webinterface?")
web = self.ask(_("Configure webinterface?"), self.yes, bool=True)
if web:
+ print
+ print
self.conf_web()
print
- print _("Setup finished successfully.")
- print _("Hit enter to exit and restart pyLoad")
- raw_input()
+ print
+ print _("Setup finished successfully!")
+ print
+ print
+ raw_input(_("Hit enter to exit and restart pyLoad."))
return True
def system_check(self):
""" make a systemcheck and return the results"""
+
+ print _("## System Information ##")
+ print
+ print _("Platform: %s") % sys.platform
+ print _("Operating System: %s") % os.name
+ print _("Python: %s") % sys.version.replace("\n", "")
+ print
+ print
+
print _("## System Check ##")
print
@@ -221,49 +243,53 @@ class Setup:
print
- jinja = True
-
try:
import jinja2
v = jinja2.__version__
- if v and "unknown" not in v:
- if not v.startswith("2.5") and not v.startswith("2.6"):
- print _("Your installed jinja2 version %s seems too old.") % jinja2.__version__
- print _("You can safely continue but if the webinterface is not working,")
- print _("please upgrade or deinstall it, pyLoad includes a sufficient jinja2 libary.")
- print
- jinja = False
+ if v and versiontuple(v) < (2, 5, 0):
+ jinja = False
+ else:
+ jinja = True
except:
- pass
+ jinja = False
+
+ jinja = self.print_dep("jinja2", jinja)
- self.print_dep("jinja2", jinja)
beaker = self.check_module("beaker")
self.print_dep("beaker", beaker)
+
bjoern = self.check_module("bjoern")
self.print_dep("bjoern", bjoern)
web = sqlite and beaker
from module.common import JsEngine
-
js = True if JsEngine.ENGINE else False
self.print_dep(_("JS engine"), js)
+ if not jinja:
+ print
+ print
+ print _("WARNING: Your installed jinja2 version %s seems too old.") % jinja2.__version__
+ print _("You can safely continue but if the webinterface is not working,")
+ print _("please upgrade or uninstall it, because pyLoad self-includes jinja2 libary.")
+
return basic, ssl, captcha, web, js
def conf_basic(self):
- print
print _("## Basic Setup ##")
print
print _("The following logindata is valid for CLI and webinterface.")
-
+
from module.database import DatabaseBackend
db = DatabaseBackend(None)
db.setup()
+ print _("NOTE: Consider a password of 10 or more symbols if you expect to access from outside your local network (ex. internet).")
+ print
username = self.ask(_("Username"), "User")
password = self.ask("", "", password=True)
db.addUser(username, password)
@@ -276,13 +302,13 @@ class Setup:
print
langs = self.config.getMetaData("general", "language")
- self.config["general"]["language"] = self.ask(_("Language"), "en", langs["type"].split(";"))
+ self.config["general"]["language"] = self.ask(_("Choose pyLoad language"), "en", langs["type"].split(";"))
- self.config["general"]["download_folder"] = self.ask(_("Downloadfolder"), "Downloads")
+ print
+ self.config["general"]["download_folder"] = self.ask(_("Download folder"), "Downloads")
+ print
self.config["download"]["max_downloads"] = self.ask(_("Max parallel downloads"), "3")
- #print _("You should disable checksum proofing, if you have low hardware requirements.")
- #self.config["general"]["checksum"] = self.ask(_("Proof checksum?"), "y", bool=True)
-
+ print
reconnect = self.ask(_("Use Reconnect?"), self.no, bool=True)
self.config["reconnect"]["activated"] = reconnect
if reconnect:
@@ -290,7 +316,6 @@ class Setup:
def conf_web(self):
- print
print _("## Webinterface Setup ##")
print
@@ -301,16 +326,15 @@ class Setup:
self.config["webinterface"]["port"] = self.ask(_("Port"), "8000")
print
print _("pyLoad offers several server backends, now following a short explanation.")
- print "builtin:", _("Default server; best choice if you plan to use pyLoad just for you.")
- print "threaded:", _("Support SSL connection and can serve simultaneously more client flawlessly.")
- print "fastcgi:", _(
+ print "- builtin:", _("Default server; best choice if you plan to use pyLoad just for you.")
+ print "- threaded:", _("Support SSL connection and can serve simultaneously more client flawlessly.")
+ print "- fastcgi:", _(
"Can be used by apache, lighttpd, etc.; needs to be properly configured before.")
if os.name != "nt":
- print "lightweight:", _("Very fast alternative to builtin; requires libev and bjoern packages.")
+ print "- lightweight:", _("Very fast alternative to builtin; requires libev and bjoern packages.")
print
- print _(
- "Attention: In some rare cases the builtin server is not working, if you notice problems with the webinterface")
+ print _("NOTE: In some rare cases the builtin server is not working, if you notice problems with the webinterface")
print _("come back here and change the builtin server to the threaded one here.")
if os.name == "nt":
@@ -395,8 +419,8 @@ class Setup:
languages=[self.config["general"]["language"], "en"], fallback=True)
translation.install(True)
- print _("Setting new configpath, current configuration will not be transfered!")
- path = self.ask(_("Configpath"), abspath(""))
+ print _("Setting new config path, current configuration will not be transfered!")
+ path = self.ask(_("CONFIG PATH"), abspath(""))
try:
path = join(pypath, path)
if not exists(path):
@@ -404,9 +428,12 @@ class Setup:
f = open(join(pypath, "module", "config", "configdir"), "wb")
f.write(path)
f.close()
- print _("Configpath changed, setup will now close, please restart to go on.")
- print _("Press Enter to exit.")
- raw_input()
+ print
+ print
+ print _("pyLoad config path changed, setup will now close!")
+ print
+ print
+ raw_input(_("Press Enter to exit."))
sys.exit()
except Exception, e:
print _("Setting config path failed: %s") % str(e)
@@ -417,7 +444,7 @@ class Setup:
if value:
print _("%s: OK") % name
else:
- print _("%s: missing") % name
+ print _("%s: MISSING") % name
def check_module(self, module):
@@ -460,7 +487,6 @@ class Setup:
pwlen = 8
while p1 != p2:
# getpass(_("Password: ")) will crash on systems with broken locales (Win, NAS)
- print _("Warning: Consider a password of 10 or more symbols if you expect to access from outside your local network (ex. internet).")
sys.stdout.write(_("Password: "))
p1 = getpass("")
diff --git a/module/utils.py b/module/utils.py
index 93ff14a46..039f64c3a 100644
--- a/module/utils.py
+++ b/module/utils.py
@@ -40,7 +40,7 @@ def remove_chars(string, repl):
def safe_path(name):
- #remove some chars
+ """ remove bad chars """
name = name.encode('ascii', 'replace') # Non-ASCII chars usually breaks file saving. Replacing.
if os.name == 'nt':
return remove_chars(name, u'\00\01\02\03\04\05\06\07\10\11\12\13\14\15\16\17\20\21\22\23\24\25\26\27\30\31\32'
@@ -48,11 +48,19 @@ def safe_path(name):
else:
return remove_chars(name, u'\0/\\"')
+#: Deprecated method
+def save_path(name):
+ return safe_path(name)
+
def safe_join(*args):
""" joins a path, encoding aware """
return fs_encode(join(*[x if type(x) == unicode else decode(x) for x in args]))
+#: Deprecated method
+def save_join(*args):
+ return safe_join(*args)
+
# File System Encoding functions:
# Use fs_encode before accesing files on disk, it will encode the string properly
@@ -213,3 +221,7 @@ def fixup(m):
def html_unescape(text):
"""Removes HTML or XML character references and entities from a text string"""
return re.sub("&#?\w+;", fixup, text)
+
+
+def versiontuple(v): #: By kindall (http://stackoverflow.com/a/11887825)
+ return tuple(map(int, (v.split("."))))