#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # #------------------------------------------------------------------------------- # #from Common import mylog from DBCommon import GlobalFunctions import traceback import ConfigParser import os from DBCommon import error #mylog = __import__('Common.mylog') from Common import mylog #DBÅäÖÃ×Öµä #¸ñʽ£ºkeyname:[defvalue, secionname,¿ÉÑ¡ÊÇ·ñeval]£¬ÐÂÔöÅäÖÃÖ»ÒªÔÚÏÂÃæ×ֵ䶨ÒåÖÐÐÂÔöÒ»Ðм´¿É #Ó÷¨£¬importÄ£¿éºó£¬Ö±½ÓDBConfig.¿ª¹ØÃû³Æ ¼´¿É ###PyMongoDataServer.ini### #ÔËά±ØÐëÐ޸ĵÄÅäÖÃÏî BaseConfig ={ #connect section #"PyMongoDBPort":[16899, "connect"], #PyMongoDBServer¶Ë¿Ú CenterGate ÓÃµÄ¶Ë¿Ú #"PyMongoDBPort_CreateRole":[16900, "connect"], #PyMongoDBServer¶Ë¿Ú CreateRole ÓÃµÄ¶Ë¿Ú #"PyMongoDBPort_GMTool":[16901, "connect"], #PyMongoDBServer¶Ë¿Ú GMTool ÓÃµÄ¶Ë¿Ú #"USER_DB_PORT":[27017, "connect"], #MongoDB¶Ë¿Ú "USER_DB_IP":["localhost", "connect"], #MongoDB IP "USER_DB_NAME":["GameUser", "connect"], #MongoDB Name# #"SYS_DB_PORT":[27017, "connect"],#MongoDB¶Ë¿Ú "SYS_DB_IP":["localhost", "connect"], #MongoDB IP "SYS_DB_NAME":["GameSys", "connect"], #MongoDB Name #"LOG_DB_PORT":[27017, "connect"],#MongoDB¶Ë¿Ú "LOG_DB_IP":["localhost", "connect"], #MongoDB IP "LOG_DB_NAME":["GameLog", "connect"], #MongoDB Name #platform section "PlatformName":["", "platform"], #ƽ̨ "ServerID":["", "platform"], #Çø·þID "GroupID":["", "platform"], #×éID #ID ·ÖÅä·þÎñÆ÷ÉèÖà "UseIDDispatchServer":[0, "IDDispatch"], #ÆôÓÃID·ÖÅä·þÎñÆ÷¿ª¹Ø "IDDispatchServerIP":["localhost", "IDDispatch"], #ID·ÖÅä·þÎñÆ÷ ÓòÃû "IDDispatchServerPort":[8001, "IDDispatch"], #ID·ÖÅä·þÎñÆ÷ ¶Ë¿Ú "IDDispatchPlayeIDLimit":[100, "IDDispatch"], #PlayerIDÔ¤·ÖÅäÊýÁ¿ÏÂÏÞ #"IDDispatchFamilyIDLimit":[30, "IDDispatch"], #FamilyIDÔ¤·ÖÅäÊýÁ¿ÏÂÏÞ---ÔÚGameServerÅжÏ֪ͨ #Õ˺ÅÑéÖ¤ "CheckTokenUrl":["", "CheckAccID"], #±¸µµ "PlayerBakRoot":["", "Backup"], "PlayerBakFileType":[".pdbak", "Backup"], #ʼþ»Ø±¨ºÍ¶¨Ê±´¦Àí "OpenErrLogReport":[0,"OpenErrLogReport"], #¿ªÆô»Ø±¨´íÎóÊýÁ¿ "PlatformName":["9377","platform"], #ZoneName "ServerID":["s1","platform"], #OperatorID "AppId":["AppId1","EventReport"], #AppId "Key":["7ded96779343f198de9b95a05a0704c9","EventReport"], #Secret "SessionGUID":["sid1","EventReport"], #SessionID "ProductID":["pid1","EventReport"], #ProductID "ErrLogReportEventID":[22222,"EventReport"], #»Ø±¨´íÎóÊýÁ¿Ê¼þID "ErrLogReportInterval":[60000,"EventReport"], #»Ø±¨´íÎóÊýÁ¿¼ä¸ô "ReportUrl":["","EventReport"], # Êý¾Ý»ã±¨µØÖ· "NotReportIDListInDB":["[]","EventReport",True], # ²»ÐèÒª»ã±¨µÄʼþIDÁÐ±í£¬½ö¹ÜÀídbÖÐµÄ "OpenStateUrl":["","EventReport"], # ·þ-»ã±¨µØÖ· "LoginKey":["","SPGame"], # ˼è±ÓÎÏ·µÇ¼key "IsMergeServer":[0, "Merge"], #±¾»úÊÇ·ñ¿ç·þ·þÎñÆ÷ "MergeServerPort":[0, "Merge"], #¿ç·þ½Ó¿Ú¶Ë¿Ú } ###config\\config.ini### dbconfig = { #auth section "userdb_user":['', "auth"], "userdb_pwd":['', 'auth'], "sysdb_user":['', "auth"], "sysdb_pwd":['', 'auth'], "logdb_user":['', "auth"], "logdb_pwd":['', 'auth'], "USER_DB_PORT":[27017, "connect"], #MongoDB¶Ë¿Ú #"USER_DB_IP":["localhost", "connect"], #MongoDB IP #"USER_DB_NAME":["GameUser", "connect"], #MongoDB Name # "SYS_DB_PORT":[27017, "connect"],#MongoDB¶Ë¿Ú #"SYS_DB_IP":["localhost", "connect"], #MongoDB IP #"SYS_DB_NAME":["GameSys", "connect"], #MongoDB Name # "LOG_DB_PORT":[27017, "connect"],#MongoDB¶Ë¿Ú #"LOG_DB_IP":["localhost", "connect"], #MongoDB IP #"LOG_DB_NAME":["GameLog", "connect"], #MongoDB Name #encoding "base64":[1, "encoding"], #ÊÇ·ñ¶Ô×Ö·û´®½øÐÐBASE64±àÂë "encoding":['gbk', "encoding"], #×Ö·û´®±àÂ룬ÔÚbase64ΪFalseʱÓÐЧ #config section "checkSID":[False, "config"], #ÊÇ·ñ½øÐÐSIDУÑé "TryCntOnWriteFail":[3, 'config'], #´æ´¢Ê§°Üºó£¬³¢ÊÔ´ÎÊý, ĬÈÏ3´Î "PackSave":[True, 'config'], #ÊÇ·ñ´ò¿ª´ò°ü±£´æ #env section "Python_Ver":["2.7.2", "environment"], "PyMongo_Ver":["2.5.1", "environment"], "MongoDB_Ver":["2.4.3", "environment"], "MongoDB_Bits":[64, "environment"], #InnerParam "PLAYERID_FEED":[10000, "InnerParam"], "PLAYERID_STEP":[1, 'InnerParam'], "LOGINDEX_FEED":[0, "InnerParam"], #tagDBMapServerInfoÈÕÖ¾Ë÷ÒýÖÖ×ÓÆðʼ "LOGINDEX_STEP":[1, 'InnerParam'], #tagDBMapServerInfoÈÕÖ¾Ë÷ÒýÔöÁ¿ "tagExpiation_ExpiationIndex_FEED":[0, 'InnerParam'], #tagExpiation Ë÷ÒýÖÖ×ÓÆðʼ "tagExpiation_ExpiationIndex_STEP":[1, 'InnerParam'], #tagExpiation Ë÷ÒýÔöÁ¿ "tagPetExpiation_ExpiationIndex_FEED":[0, 'InnerParam'], #tagPetExpiation Ë÷ÒýÖÖ×ÓÆðʼ "tagPetExpiation_ExpiationIndex_STEP":[1, 'InnerParam'], #tagPetExpiation Ë÷ÒýÔöÁ¿ "tagDBImpeach_ImpeachIndex_FEED":[0, 'InnerParam'], #tagDBImpeach Ë÷ÒýÖÖ×ÓÆðʼ "tagDBImpeach_ImpeachIndex_STEP":[1, 'InnerParam'], #tagDBImpeach Ë÷ÒýÔöÁ¿ } def ReadCongfigValue(config, secname, keyname, defvalue): try: if config.has_option(secname, keyname): value = config.get(secname, keyname) # if type(defvalue) == str: # value = type(defvalue)(value) if type(defvalue) == bool: value = type(defvalue)(int(value)) else: value = type(defvalue)(value) else:return defvalue except: msg = error.formatMsg('error', error.ERROR_NO_18, 'config = %s, secname = %s, keyname = %s, defvalue = %s\n%s'%(config, secname, keyname, defvalue, traceback.format_exc())) mylog.error(msg) return None # print value return value def ReadDBConfig(): try: self_module = __import__(__name__) config = ConfigParser.ConfigParser() #¶ÁÈ¡Êý¾Ý¿âÅäÖÃÎļþconfig\\config.ini config.read(os.path.join(GlobalFunctions.getServerConfigPath(), 'config.ini')) for k, v in dbconfig.items(): value = ReadCongfigValue(config, v[1], k, v[0]) if value == None:return False setattr(self_module, k, value) #¶ÁÈ¡Êý¾Ý¿âÅäÖÃÎļþPyMongoDataServer.ini config.read(os.path.join(GlobalFunctions.getServerConfigPath(), 'PyMongoDataServer.ini')) for k, v in BaseConfig.items(): value = ReadCongfigValue(config, v[1], k, v[0]) if value == None:return False if len(v) > 2 and v[2]: value = eval(value) setattr(self_module, k, value) #¶¯Ì¬¼ÓÔØÓÐÅäÖÃÆ½Ì¨ºÏ·þÖ÷·þµÄƽ̨Ö÷·þID sectionName = "platform" if config.has_section(sectionName): optionsList = config.options(sectionName) # ×¢Òâoptions ÒѾ­ÊÇСд µ÷ÓÃÒ²Ö»ÄÜÓÃСд for k in optionsList: if "mainserverid" in k: value = ReadCongfigValue(config, sectionName, k, 0) if value: setattr(self_module, k, value) elif "loginkey" in k: value = ReadCongfigValue(config, sectionName, k, "") if value: setattr(self_module, k, value) #¼ì²é²¢½âÃÜmongodbµÄµÇ¼Óû§ÃûºÍÃÜÂë #userdb if not self_module.userdb_user: msg = error.formatMsg('DeployError', error.ERROR_NO_19, "user db mongodb longin user name is empty!") mylog.DeployError(msg, True) return False if self_module.userdb_pwd: ret, self_module.userdb_pwd = GlobalFunctions.GetEncodePsw(self_module.userdb_pwd) if not ret: msg = error.formatMsg('DeployError', error.ERROR_NO_20, "Decrypt userdb_pwd faied.") mylog.DeployError(msg, True) return False else: msg = error.formatMsg('DeployError', error.ERROR_NO_21, "user db mongodb longin pwd is empty!") mylog.DeployError(msg, True) return False except: msg = error.formatMsg('error', error.ERROR_NO_28, '%s'%traceback.format_exc()) mylog.error(msg) return False return True dbconfig_init = False if not dbconfig_init: if not ReadDBConfig(): msg = error.formatMsg('fatal', error.ERROR_NO_29, "Init config failed.") mylog.fatal(msg) dbconfig_init = True