
#from tim_tools import *
import MySQLdb
from mod_python import apache
import settings
import time



# db=TimSQL()
#db=MySQLdb.connect(host="ron.provu.co.uk",user=settings.dbuser, passwd=settings.dbpass,db="provu",reconnect=True)
#db=MySQLdb.connect(host="man-mysql.provu.co.uk",user=settings.dbuser, passwd=setttings.dbpass,db="provu")
#db_date=time.time()


def getDB():
    return MySQLdb.connect(host = "man-mysql.provu.co.uk", user = settings.dbuser, passwd = settings.dbpass, db = "provu")
    


def getDBH():
    return getDB()


def index (req,mac='',ac=''):
    out="There is nothing for you here "

    return out



def application(environ, start_response):
    output = []
    path = environ.get('PATH_INFO', '')
    environ['status'] = '200 OK'
    sys.stderr.write("Path: {}\n".format(path))
    sys.stderr.write("querystring: {}\n".format(parse_qs(environ['QUERY_STRING'])))
    d = parse_qs(unescape(environ['QUERY_STRING']))
    func_to_call = path.lstrip('/')
    #sys.stderr.write("func {}\n".format(func_to_call))
    
    if func_to_call == "bootup":
        mac = escape(d.get('mac', [None])[0])
        ip = escape(d.get('ip', [None])[0])
        user_name1 = escape(d.get('user_name1', [None])[0])
        acode = escape(d.get('acode', [None])[0])
        user_name2 = escape(d.get('user_name2', [None])[0])
        user_host1 = escape(d.get('user_host1', [None])[0])
        user_outbound1 = escape(d.get('user_outbound1', [None])[0])
        c1 = escape(d.get('c1', [None])[0])
        c2 = escape(d.get('c2', [None])[0])
        h = escape(d.get('h', [None])[0])
        results = bootup(environ, mac, ip, user_name1, acode, user_name2, user_host1, user_outbound1, c1, c2, h)
    elif func_to_call == "reg_failed":
        mac = escape(d.get('mac', [None])[0])
        ip = escape(d.get('ip', [None])[0])
        user_name1 = escape(d.get('user_name1', [None])[0])
        acode = escape(d.get('acode', [None])[0])
        user_name2 = escape(d.get('user_name2', [None])[0])
        user_host1 = escape(d.get('user_host1', [None])[0])
        url = escape(d.get('url', [None])[0])
        user_outbound1 = escape(d.get('user_outbound1', [None])[0])
        results = reg_failed(environ, mac, ip, user_name1, acode, user_name2, user_host1, url, user_outbound1)

    try:
        output.append(results.encode())
    except AttributeError:
        output.append(results)
    #sys.stderr.write("output {}\n".format(output))
    response_headers = environ.get('response_headers', [])
    start_response(environ['status'], response_headers)
    return output



def bootup(req,mac=None,ip=None,user_name1=None,acode=None,user_name2=None,user_host1=None,user_outbound1=None,c1=None, c2=None, h=None):
    
    ext_ip=req.get_remote_host(apache.REMOTE_NOLOOKUP)
    ##ext_ip = req.get('REMOTE_ADDR', '')
    dbh =getDBH()
    dbh.ping()
    """h is for phone_name / hostname """
    if (dbh and mac):
#        query="replace into known set serialnumber='"+serialnumber+"', item='" + item + "', version='"+version+"', mac='"+mac+"'"
#        print query
#        dbh.query(query)
        c=dbh.cursor()
        try:
            c.execute("""replace into snomin set mac=%s, ip=%s,user_name1=%s,user_host1=%s,user_outbound1=%s, ext_ip=%s, c1=%s, c2=%s, reboot='yes', phone_name=%s         """
                      , (mac,ip,user_name1,user_host1,user_outbound1,ext_ip,c1,c2, h))
            c.execute("""replace into snomin_last set mac=%s, ip=%s,user_name1=%s,user_host1=%s,user_outbound1=%s, ext_ip=%s, c1=%s, c2=%s, reboot='yes', phone_name=%s          """, 
                      (mac,ip,user_name1,user_host1,user_outbound1,ext_ip,c1,c2, h))
            c.execute("""replace into snomin_last_reboot set mac=%s, ip=%s,user_name1=%s,user_host1=%s,user_outbound1=%s, ext_ip=%s, c1=%s, c2=%s, phone_name=%s""", 
                      (mac,ip,user_name1,user_host1,user_outbound1,ext_ip,c1,c2, h))
        except:
            pass

        c.close()
        dbh.commit()
        print 'hi'
    else:

        print 'there was a problem'
        return 'smell';
        

    return 'I can so be php' + user_name1


def reg_failed(req,mac=None,ip='',user_name1='',acode=None,user_name2=None,user_host1=None,url=None,user_outbound1=None):


#    return ''
#    dbh =db
    dbh =getDBH()
    dbh.ping()
    if (dbh and mac):
#        query="replace into known set serialnumber='"+serialnumber+"', item='" + item + "', version='"+version+"', mac='"+mac+"'"
#        print query
#        dbh.query(query)
        c=dbh.cursor()
        try:
            c.execute("""insert into snomin_reg_failed set mac=%s, ip=%s,user_name1=%s,user_host1=%s,url=%s,user_outbound1=%s""",
                      (mac,ip,user_name1,user_host1,url,user_outbound1))
        except:
            pass
        c.close()
        dbh.commit()
        print 'hi'
    else:
        print 'there was a problem'
        return 'smell';
        

    return 'I can so be php' + user_name1



#def tim(req):
#    return str(req.get_remote_host(apache.REMOTE_NOLOOKUP))
