#!/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.getAppPath(), 'config\\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.getAppPath(), '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
|
|