import os
from os.path import dirname
from os.path import exists
from os.path import join
import subprocess
import sys

from module import InitHomeDir

def main():
    print "#####   System Information   #####"
    print ""
    print "Platform:", sys.platform
    print "Operating System:", os.name
    print "Python:", sys.version.replace("\n", "")
    print ""

    try:
        import pycurl
        print "pycurl:", pycurl.version
    except:
        print "pycurl:", "missing"

    try:
        import Crypto
        print "py-crypto:", Crypto.__version__
    except:
        print "py-crypto:", "missing"


    try:
        import OpenSSL
        print "OpenSSL:", OpenSSL.version.__version__
    except:
        print "OpenSSL:", "missing"

    try:
        import Image
        print "image libary:", Image.VERSION
    except:
        print "image libary:", "missing"

    try:
        import django
        print "django:", django.get_version()
    except:
        print "django:", "missing"

    try:
        import PyQt4.QtCore
        print "pyqt:", PyQt4.QtCore.PYQT_VERSION_STR
    except:
        print "pyqt:", "missing"

    print ""
    print ""
    print "#####   System Status   #####"
    print ""
    print "##  pyLoadCore  ##"

    core_err = []
    core_info = []

    if sys.version_info > (2, 8):
        core_err.append("Your python version is to new, Please use Python 2.6/2.7")

    if sys.version_info < (2, 5):
        core_err.append("Your python version is to old, Please use at least Python 2.5")

    try:
        import pycurl
    except:
        core_err.append("Please install py-curl to use pyLoad.")


    try:
        from pycurl import AUTOREFERER
    except:
        core_err.append("Your py-curl version is to old, please upgrade!")

    try:
        import Image
    except:
        core_err.append("Please install py-imaging/pil to use Hoster, which uses captchas.")

    pipe = subprocess.PIPE
    try:
        p = subprocess.call(["tesseract"], stdout=pipe, stderr=pipe)
    except:
        core_err.append("Please install tesseract to use Hoster, which uses captchas.")

    try:
        import OpenSSL
    except:
        core_info.append("Install OpenSSL if you want to create a secure connection to the core.")

    if core_err:
        print "The system check has detected some errors:"
        print ""
        for err in core_err:
            print err
    else:
        print "No Problems detected, pyLoadCore should work fine."

    if core_info:
        print ""
        print "Possible improvements for pyload:"
        print ""
        for line in core_info:
            print line


    print ""
    print "##  pyLoadGui  ##"

    gui_err = []

    try:
        import PyQt4
    except:
        gui_err.append("GUI won't work without pyqt4 !!")

    if gui_err:
        print "The system check has detected some errors:"
        print ""
        for err in gui_err:
            print err
    else:
        print "No Problems detected, pyLoadGui should work fine."

    print ""
    print "##  Webinterface  ##"

    web_err = []
    web_info = []

    try:
        import django

        if django.VERSION < (1, 1):
            web_err.append("Your django version is to old, please upgrade to django 1.1")
        elif django.VERSION > (1, 3):
            web_err.append("Your django version is to new, please use django 1.2")

    except:
        web_err.append("Webinterface won't work without django !!")

    if not exists("pyload.db"):
        web_err.append("You dont have created database yet.")
        web_err.append("Please run: python %s syncdb" % join(dirname(__file__), "module", "web", "manage.py"))

    try:
        import flup
    except:
        web_info.append("Install Flup to use FastCGI or optional webservers.")

    try:
        p = subprocess.call(["lighttpd", "-v"], stdout=pipe, stderr=pipe)
    except:
        web_info.append("Install lighttpd as optional webserver.")

    try:
        p = subprocess.call(["nginx", "-v"], stdout=pipe, stderr=pipe)
    except:
        web_info.append("Install nginx as optional webserver.")

    if web_err:
        print "The system check has detected some errors:"
        print ""
        for err in web_err:
            print err
    else:
        print "No Problems detected, Webinterface should work fine."

    if web_info:
        print ""
        print "Possible improvements for webinterface:"
        print ""
        for line in web_info:
            print line
        

if __name__ == "__main__":
    main()

    raw_input("Press Enter to Exit.")