#!/usr/bin/python2 # -*- coding: utf-8 -*- # import MySQL module #used to import the zipcode/timezone/nfs info fromMBE import MySQLdb import sys import getopt import socket import urllib2 socket.setdefaulttimeout(10) try: from json import loads as jsonparse nojson = False except ImportError: try: from simplejson import loads as jsonparse nojson = False except ImportError: def jsonparse(js): if unsafe: return eval(js) raise RuntimeError("Neither the json or simplejson module is available.\nUse the --unsafe option to use python eval() as an ad-hoc json decoder") def usage(): print " -h --help" print " -d --installdb" print " -m --masterdb" print " -n --hostname of current machine" def latlong2_olsen(lat,lng): olsenttz = '' geo_url = "http://api.geonames.org/timezoneJSON?lat=%s&lng=%s&username=linhes_timezone" %(lat,lng) try: json_stream = urllib2.urlopen(geo_url,timeout=10) json_dict = jsonparse(json_stream.read().replace("\r\n","")) olsenttz = json_dict['timezoneId'] except: print "error with geonames" return olsenttz def geo_locate(): print " Trying to geo locate in timezip.py" gtz = '' gtz_region = '' gtz_subregion = '' #get long/lat from ip try: geo_url = "http://www.geobytes.com/IpLocator.htm?GetLocation&template=json.txt" json_stream = urllib2.urlopen(geo_url,timeout=10) json_dict = jsonparse(json_stream.read().replace("\r\n",""))['geobytes'] latitude = json_dict['latitude'] longitude = json_dict['longitude'] except: print "error with geobytes/geolocate" latitude = '' longitude = '' if latitude != '': try: olsenttz = latlong2_olsen (latitude,longitude) gtz = olsenttz gtz_region , gtz_subregion = olsenttz.split("/") except: print "error with geolocate" return gtz, gtz_region , gtz_subregion def printvars(): print "masterdb: " + masterdb print "installdb:" + installdb print "hostname: " + thishostname print "BEhostname:" + BEhostname print "zipcode:" + zipcode print "timezone:" + tz print "timezone region:" + tz_region print "timezone subregion:" + tz_subregion print "nfsip:" + nfsip print "nfstoggle:" + nfstoggle print "nfsmount:" + nfsmount print "hobbitclient:" + hobbitclient print "windowmanager:" + windowmanager print "windowmanager style:" + wmstyle # connect def selectvars(): global BEhostname global zipcode global tz global tz_region global tz_subregion global nfsip global nfstoggle global nfsmount global hobbitclient global windowmanager global wmstyle db = MySQLdb.connect(host=masterdb, user="mythtv", passwd="mythtv", db="mythconverg") # create a cursor cursor = db.cursor() # execute SQL statement cursor.execute("select hostname from settings where value='BackendServerIP' and data=(%s)",(masterdb)) result = cursor.fetchone() try: BEhostname=result[0] except TypeError: BEhostname="" cursor.execute("select data from settings where value='HostZipcode' and hostname=(%s)",(BEhostname)) result = cursor.fetchone() try: zipcode = result[0] except TypeError: zipcode="" cursor.execute("select data from settings where value='HostCentralNFSIP' and hostname=(%s)",(BEhostname)) result = cursor.fetchone() try: nfsip=result[0] except TypeError: nfsip="" cursor.execute("select data from settings where value='HostHaveCentralNFS' and hostname=(%s)",(BEhostname)) result = cursor.fetchone() try: nfstoggle=result[0] except TypeError: nfstoggle="" cursor.execute("select data from settings where value='HostNFSmountpoint' and hostname=(%s)",(BEhostname)) result = cursor.fetchone() try: nfsmount=result[0] except TypeError: nfsmount="" cursor.execute("select data from settings where value='HostTimeZonetemp' and hostname=(%s)",(BEhostname)) #cursor.execute("select data from settings where value='HostTimeZone' and hostname=(%s)",(BEhostname)) result = cursor.fetchone() try: tz=result[0] except TypeError: tz="" if tz == "": tz,tz_region, tz_subregion = geo_locate() else: cursor.execute("select data from settings where value='HostTimeZoneRegion' and hostname=(%s)",(BEhostname)) result = cursor.fetchone() try: tz_region=result[0] except TypeError: tz_region="" tempsubregion="HostTimeZoneRegion_" + tz_region cursor.execute("select data from settings where value=%s and hostname=(%s)",(tempsubregion,BEhostname)) result = cursor.fetchone() try: tz_subregion=result[0] except TypeError: tz_subregion="" ############### if ( thishostname != BEhostname ): cursor.execute("select data from settings where value='GlobalServiceHobbitserver'") result = cursor.fetchone() try: hobbitclient=result[0] except: hobbitclient="1" else: hobbitclient="1" cursor.execute("select data from settings where value='HostWindowManager' and hostname=(%s)",(BEhostname)) result = cursor.fetchone() try: windowmanager=result[0] except TypeError: windowmanager="default" cursor.execute("select data from settings where value='HostEnhancedWMStyle' and hostname=(%s)",(BEhostname)) result = cursor.fetchone() try: wmstyle=result[0] except TypeError: wmstyle="0" def insertvars(): db = MySQLdb.connect(host=installdb, user="mythtv", passwd="mythtv", db="mythconverg") cursor = db.cursor() #inserting the zipcode cursor.execute("select * from settings where value='HostZipcode' and hostname=(%s)",(thishostname)) result = cursor.fetchone() if ( zipcode!="" ): if (result == None): cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostZipcode',(%s),(%s))",(zipcode,thishostname)) print "inserting zipcode" else: cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostZipcode'",(zipcode,thishostname)) print "updating zipcode" #inserting the timezone cursor.execute("select * from settings where value='HostTimeZone' and hostname=(%s)",(thishostname)) result = cursor.fetchone() if ( tz != ""): if (result == None): cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostTimeZone',(%s),(%s))",(tz,thishostname)) print "inserting timezone" else: cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostTimeZone'",(tz,thishostname)) print "updating timezone" cursor.execute("select * from settings where value='HostTimeZoneRegion' and hostname=(%s)",(thishostname)) result = cursor.fetchone() if ( tz != ""): if (result == None): cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostTimeZoneRegion',(%s),(%s))",(tz_region,thishostname)) print "inserting timezone region" else: cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostTimeZoneRegion'",(tz_region,thishostname)) print "updating timezone region" tempsubregion="HostTimeZoneRegion_" + tz_region cursor.execute("select * from settings where value=%s and hostname=(%s)",(tempsubregion,thishostname)) result = cursor.fetchone() if ( tz != ""): if (result == None): cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ((%s),(%s),(%s))",(tempsubregion,tz_subregion,thishostname)) print "inserting timezone subregion" else: cursor.execute("update settings set data=(%s) where hostname=(%s) and value=(%s)",(tempsubregion,tz_subregion,thishostname)) print "updating timezone subregion" #start of NFSIP cursor.execute("select data from settings where value='HostCentralNFSIP' and hostname=(%s)",(thishostname)) result = cursor.fetchone() if ( nfsip != ""): if (result == None): cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostCentralNFSIP',(%s),(%s))",(nfsip,thishostname)) print "inserting nfsip" if (nfstoggle != ""): cursor.execute("select data from settings where value='HostHaveCentralNFS' and hostname=(%s)",(thishostname)) result = cursor.fetchone() if (result == None): cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostHaveCentralNFS',(%s),(%s))",(nfstoggle,thishostname)) print "inserting nfstoggle" if ( nfsmount !="") : cursor.execute("select data from settings where value='HostNFSmountpoint' and hostname=(%s)",(thishostname)) result = cursor.fetchone() if (result == None): cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostNFSmountpoint',(%s),(%s))",(nfsmount,thishostname)) print "inserting nfsmountpoint" #hobbitclient cursor.execute("select * from settings where value='HostServiceHobbitclient' and hostname=(%s)",(thishostname)) result = cursor.fetchone() if ( hobbitclient != ""): if (result == None): cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostServiceHobbitclient',(%s),(%s))",(hobbitclient,thishostname)) print "inserting hobbitcleint" else: cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostServiceHobbitclient'",(hobbitclient,thishostname)) print "updating hobbitclient" #windowmanager cursor.execute("select * from settings where value='HostWindowManager' and hostname=(%s)",(thishostname)) result = cursor.fetchone() if (result == None): cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostWindowManager',(%s),(%s))",(windowmanager,thishostname)) print "inserting windowmanager" else: cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostWindowManager'",(windowmanager,thishostname)) print "updating windowmanager" cursor.execute("select * from settings where value='HostEnhancedWMStyle' and hostname=(%s)",(thishostname)) result = cursor.fetchone() if (result == None): cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostEnhancedWMStyle',(%s),(%s))",(wmstyle,thishostname)) print "inserting windowmanager style" else: cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostEnhancedWMStyle'",(wmstyle,thishostname)) print "updating windowmanager style" def main(argv): global masterdb global installdb global thishostname thishostname="" global BEhostname global zipcode global tz global tz_region global tz_subregion global nfsip global hobbitclient try: opts, args = getopt.getopt(argv, "hm:d:n:", ["help", "masterdb=", "installdb=" , "hostname=" ] ) except getopt.GetoptError: sys.exit(2) for opt, arg in opts: if opt in ("-h", "--help"): usage() sys.exit() elif opt in ( "-d" , "--installdb"): installdb = arg elif opt in ("-m", "--masterdb"): masterdb = arg elif opt in ("-n", "--hostname"): thishostname = arg if ( thishostname == "" ): thishostname = socket.gethostname() selectvars() printvars() insertvars() if __name__ == "__main__": main(sys.argv[1:])