summaryrefslogtreecommitdiffstats
path: root/pyload/setup/System_Checks.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyload/setup/System_Checks.py')
-rw-r--r--pyload/setup/System_Checks.py126
1 files changed, 126 insertions, 0 deletions
diff --git a/pyload/setup/System_Checks.py b/pyload/setup/System_Checks.py
new file mode 100644
index 000000000..cef46956b
--- /dev/null
+++ b/pyload/setup/System_Checks.py
@@ -0,0 +1,126 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License,
+ or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+ @author: RaNaN
+"""
+from getpass import getpass
+import module.common.pylgettext as gettext
+import os
+from os import makedirs
+from os.path import abspath, dirname, exists, join
+from subprocess import PIPE, call
+import sys
+from sys import exit
+from module.utils import get_console_encoding
+
+class System_Checks():
+ def __init__(self):
+ self.result = ""
+
+ def print_str(self, text, translate = True):
+ if translate:
+ self.result += _(text) + "\n"
+ else:
+ self.result += text + "\n"
+
+ def print_dep(self, name, value):
+ """Print Status of dependency"""
+ if value:
+ self.print_str(name + ": OK", False)
+ else:
+ self.print_str(name + ": missing", False)
+
+ def check_basic(self):
+ self.result = "" #clear result
+ python = False
+ if sys.version_info[:2] > (2, 7):
+ self.print_str("Your python version is to new, Please use Python 2.6/2.7")
+ elif sys.version_info[:2] < (2, 5):
+ self.print_str("Your python version is to old, Please use at least Python 2.5")
+ else:
+ self.print_str("Python Version: OK")
+ python = True
+
+ curl = self.check_module("pycurl")
+ self.print_dep("pycurl", curl)
+
+ sqlite = self.check_module("sqlite3")
+ self.print_dep("sqlite3", sqlite)
+
+ beaker = self.check_module("beaker")
+ self.print_dep("beaker", beaker)
+
+ 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"):
+ self.print_str("Your installed jinja2 version %s seems too old.") % jinja2.__version__
+ self.print_str("You can safely continue but if the webinterface is not working,")
+ self.print_str("please upgrade or deinstall it, pyLoad includes a sufficient jinja2 library.")
+ jinja = False
+ except:
+ pass
+ self.print_dep("jinja2", jinja)
+
+ return self.result, (python and curl and sqlite and (beaker or jinja))
+
+ def check_ssl(self):
+ self.result = "" #clear result
+ ssl = self.check_module("OpenSSL")
+ self.print_dep("py-OpenSSL", ssl)
+ return self.result, ssl
+
+ def check_crypto(self):
+ self.result = "" #clear result
+ crypto = self.check_module("Crypto")
+ self.print_dep("pycrypto", crypto)
+ return self.result, crypto
+
+ def check_captcha(self):
+ self.result = "" #clear result
+ pil = self.check_module("Image")
+ self.print_dep("py-imaging", pil)
+ if os.name == "nt":
+ tesser = self.check_prog([join(pypath, "tesseract", "tesseract.exe"), "-v"])
+ else:
+ tesser = self.check_prog(["tesseract", "-v"])
+ self.print_dep("tesseract", tesser)
+ return self.result, pil and tesser
+
+ def check_js(self):
+ self.result = "" #clear result
+ from module.common import JsEngine
+ js = True if JsEngine.ENGINE else False
+ self.print_dep(_("JS engine"), js)
+ return self.result, pil and tesser
+
+ def check_module(self, module):
+ try:
+ __import__(module)
+ return True
+ except:
+ return False
+
+ def check_prog(self, command):
+ pipe = PIPE
+ try:
+ call(command, stdout=pipe, stderr=pipe)
+ return True
+ except:
+ return False
+