New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | # ä¿®æ¹è´¦å·åç¼
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | # ä¿®æ¹è¡¨
|
| | | # GameLog: tagDBPlayerInfoLog
|
| | | # GameUser: tagDSAccount tagDBPlayer tagDBBillboard
|
| | | # å¯è½ä¼ä½¿ç¨å·²å¤ç tagAccIDSendPrize tagDBGMIP tagGameWorldEvent
|
| | | # åæ®µä¸ç¡®å®æ æ³å¤çç tagUniversalGameRec éè¦ç å人åé
å |
| | | # ä¸ä¼ä½¿ç¨çä¸å¤ç tagDBMailList tagExpiation tagPetExpiation tagAccCoins
|
| | | #-------------------------------------------------------------------------------
|
| | | # ver=1.2
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import pymongo
|
| | | from Collections import (DataServerPlayerData, )
|
| | | DBConfig = __import__('Config.DBConfig')
|
| | |
|
| | |
|
| | | def changeAccID(accID, spid, serverid):
|
| | | accpeice = accID.split("@")
|
| | | if len(accpeice) < 3:
|
| | | return ""
|
| | | |
| | | if not spid:
|
| | | spid = accpeice[-2]
|
| | | |
| | | if not serverid:
|
| | | serverid = accpeice[-1]
|
| | | |
| | | accID = accID.replace("@%s@%s"%(accpeice[-2], accpeice[-1]), "@%s@%s"%(spid, serverid))
|
| | | return accID
|
| | |
|
| | | def main():
|
| | |
|
| | | print "Connect %s:%s "%(DBConfig.USER_DB_IP, DBConfig.USER_DB_PORT)
|
| | | con = pymongo.Connection(DBConfig.USER_DB_IP, DBConfig.USER_DB_PORT)
|
| | | |
| | | db = con.admin |
| | |
|
| | | if not db.authenticate(DBConfig.userdb_user, DBConfig.userdb_pwd):
|
| | | print "name(%s) or password(%s) error!, Plz try input them to continue again!"%(DBConfig.userdb_user, DBConfig.userdb_pwd)
|
| | | return
|
| | | |
| | | db = con[DBConfig.USER_DB_NAME]
|
| | | # ä¿®æ¹ç©å®¶è¡¨åè´¦å·è¡¨ä¸çç©å®¶è´¦å·
|
| | | col = db['tagDSAccount']
|
| | | |
| | | cnt = 0
|
| | | for rec in col.find():
|
| | | accID = rec["ACCID"]
|
| | | accountObj = DataServerPlayerData.tagDSAccount()
|
| | | accountObj.ACCID = accID
|
| | | # å è½½æ°æ®
|
| | | if not accountObj.adoLoad(col):
|
| | | print 'accid %s not found!'%accID
|
| | | continue
|
| | | |
| | | newAccID = changeAccID(accID, DBConfig.Spid, DBConfig.Serverid)
|
| | | if not newAccID:
|
| | | continue
|
| | | # è½½å
¥æ°è´¦å·
|
| | | accountObj.ACCID = newAccID
|
| | | rec = accountObj.getRecord()
|
| | | col.update({'ACCID':accID}, {'$set':rec}, False, False, True, True)
|
| | | cnt += 1
|
| | | print 'table:tagDSAccount update successfully! cnt=%s changeto %s-%s'%(cnt, DBConfig.Spid, DBConfig.Serverid)
|
| | | |
| | | |
| | | for table in ['tagDBPlayer', 'tagAccIDSendPrize', 'tagDBGMIP', 'tagGameWorldEvent']:
|
| | | # ä¿®æ¹ç©å®¶è¡¨åè´¦å·è¡¨ä¸çç©å®¶è´¦å·
|
| | | colPlayer = db[table]
|
| | | cnt = 0
|
| | | keyName = "AccID"
|
| | | for rec in colPlayer.find():
|
| | | accID = rec[keyName]
|
| | | |
| | | newAccID = changeAccID(accID, DBConfig.Spid, DBConfig.Serverid)
|
| | | if not newAccID:
|
| | | continue
|
| | | # è½½å
¥æ°è´¦å·
|
| | | rec[keyName]=newAccID
|
| | | del rec["_id"]
|
| | | colPlayer.update({keyName:accID}, {'$set':rec}, False, False, True, True)
|
| | | cnt += 1
|
| | | print 'table:%s update successfully! cnt=%s changeto %s-%s'%(table, cnt, DBConfig.Spid, DBConfig.Serverid)
|
| | | |
| | | # æè¡æ¦
|
| | | # ä¿®æ¹ç©å®¶è¡¨åè´¦å·è¡¨ä¸çç©å®¶è´¦å·
|
| | | colPlayer = db['tagDBBillboard']
|
| | | cnt = 0
|
| | | keyName = "Name2"
|
| | | for rec in colPlayer.find():
|
| | | accID = rec[keyName]
|
| | | |
| | | newAccID = changeAccID(accID, DBConfig.Spid, DBConfig.Serverid)
|
| | | if not newAccID:
|
| | | continue
|
| | | # è½½å
¥æ°è´¦å·
|
| | | rec[keyName]=newAccID
|
| | | del rec["_id"]
|
| | | colPlayer.update({keyName:accID, 'Type':rec['Type']}, {'$set':rec}, False, False, True, True)
|
| | | cnt += 1
|
| | | print 'table:tagDBBillboard update successfully! cnt=%s changeto %s-%s'%(cnt, DBConfig.Spid, DBConfig.Serverid)
|
| | |
|
| | | |
| | | |
| | | db = con[DBConfig.USER_DB_Log]
|
| | | # ä¿®æ¹ç©å®¶è¡¨åè´¦å·è¡¨ä¸çç©å®¶è´¦å·
|
| | | colPlayer = db['tagDBPlayerInfoLog']
|
| | | cnt = 0
|
| | | for rec in colPlayer.find():
|
| | | accID = rec["AccID"]
|
| | | |
| | | newAccID = changeAccID(accID, DBConfig.Spid, DBConfig.Serverid)
|
| | | if not newAccID:
|
| | | continue
|
| | | # è½½å
¥æ°è´¦å·
|
| | | rec['AccID']=newAccID
|
| | | del rec["_id"]
|
| | | colPlayer.update({'AccID':accID}, {'$set':rec}, False, False, True, True)
|
| | | cnt += 1
|
| | | print 'table:tagDBPlayerInfoLog update successfully! cnt=%s changeto %s-%s'%(cnt, DBConfig.Spid, DBConfig.Serverid)
|
| | | |
| | | |
| | | |
| | | con.disconnect()
|
| | | |
| | |
|
| | |
|
| | | if __name__ == "__main__":
|
| | | main() |
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | ######################
|
| | | #åæ¾éæ ¡éªSIDçè¡¨çæ¬å·ï¼ç¨äºå¿½ç¥å ä¸ºè¡¨ç»æåæ´å¯¼è´çSIDæ ¡éªé误
|
| | | #%TableName%_VersionNO
|
| | |
|
| | | tagDBPlayer_VersionNO = 3
|
| | | tagDSAccount_VersionNO = 3
|
| | | tagRoleItem_VersionNO = 1
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #
|
| | | #
|
| | | ##@package CommFunc.py
|
| | | # @todo: å
Œ
±è°ç¨å½æ°é
|
| | | # @author:eggxp
|
| | | # @date 2010-01-01 00:00
|
| | | # @version 1.6
|
| | | #
|
| | | # ä¿®æ¹æ¶é´ ä¿®æ¹äºº ä¿®æ¹å
容
|
| | | # @change: "2010-01-19 16:35" zb ä¿®æ¹å
Œ
±å½æ°çä¸ä¸ªé误,è§£å³å°ååè¾å
¥'ç¾'åä¼å¯¼è´å®¢æ·ç«¯å¼¹æ¡çé®é¢
|
| | | # @change: "2010-01-29 11:45" chenxuewei ä¿®æ¹å
Œ
±å½æ°ReplaceBig5AppointSign(srcStr,sign,desSign)çä¸ä¸ªé误,è§£å³å符串srcStræåä¸ä¸ªåèçåç¬¦æ¿æ¢é®é¢
|
| | | # @change: "2010-04-02 17:45" zb æ·»å å
Œ
±å½æ°ToDWORD()
|
| | | # @change: "2010-04-02 20:30" zb å°ReadBYTE()/ReadDWORD()/ReadDWORD(),æ¹ææ ç¬¦å·æ°è¯»å
|
| | | # @change: "2010-09-27 15:55" chenxuewei å°WriteBYTE()/WriteDWORD()/WriteDWORD(),æ¹æèªå¨è½¬åææ ç¬¦å·æ°åå
¥
|
| | | #
|
| | | # @change: "2011-03-15 17:20" Alee ä¸GameWorldä¸ç彿°éå¤
|
| | | #
|
| | | #---------------------------------------------------------------------
|
| | | #导å
¥
|
| | | import os
|
| | | import struct
|
| | | import string
|
| | | import math
|
| | | import datetime
|
| | | import subprocess
|
| | | #---------------------------------------------------------------------
|
| | | #å
¨å±åé
|
| | |
|
| | | MODULE_NAME = "cmd_mail"
|
| | |
|
| | | VER = "2011-03-15 17:20"
|
| | |
|
| | |
|
| | | ## ç¨äºåå
ï¼å½å°å
æ¯DWORDçæ¶å
|
| | | # @param num æ°å
|
| | | # @return æç¬¦å·æ°å
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼ç¨äºåå
ï¼å½å°å
æ¯DWORDçæ¶åï¼è½¬æ¢ä¸ºæç¬¦å·æ°
|
| | | def ToDWORD( num ):
|
| | | if num >= 0:
|
| | | return num
|
| | | return num + 4294967296
|
| | |
|
| | | ## å°hex转åæäºè¿å¶å¯¹åºçå符串ï¼ç¨äºåå
|
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼å°hex转åæäºè¿å¶å¯¹åºçå符串ï¼ç¨äºåå
|
| | | def HexToBin (hexStr):
|
| | | returnStr = ''
|
| | | hexStrLen = len(hexStr)
|
| | | for i in [j for j in range(hexStrLen) if j%2==0]:
|
| | | returnStr += chr(string.atoi(hexStr[i:i+2],16))
|
| | | return returnStr
|
| | |
|
| | | #è·åå¼å¸¸ä¿¡æ¯#ï¼try:...except:..GetExceptionInfo()ï¼
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def GetExceptionInfo():
|
| | | import traceback
|
| | | return traceback.format_exc()
|
| | |
|
| | |
|
| | | #æ§è¡cmdæä»¤
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def RunCmd(curCmd):
|
| | | pipe = subprocess.Popen(['cmd', ""], shell = False,
|
| | | stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
|
| | | pipe.stdin.write('%s\n'%curCmd)
|
| | | pipe.stdin.close()
|
| | | retStr = pipe.stdout.read()
|
| | | retStr += pipe.stderr.read()
|
| | | print retStr
|
| | | return retStr
|
| | |
|
| | |
|
| | | #åå¾ä»£ç ä¸çå®çå符串ï¼å¦åæ°srcStræ¯'\n',ä¼å¾å°å车符ï¼
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def GetCodeStr(srcStr):
|
| | | desStr = srcStr.replace("'", "\\'")
|
| | | cmd = "desStr='" + desStr + "'"
|
| | | exec(cmd)
|
| | | return desStr |
| | |
|
| | |
|
| | | #pythonåæä»¶:
|
| | | # f = file('c:\\fuck.txt', 'a')
|
| | | # f.write(mapObsData)
|
| | |
|
| | | #çå¾
è¾å
¥: raw_input()
|
| | |
|
| | | #å建Socket
|
| | | #s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
|
| | | #s.bind(('192.168.0.81', 6112))
|
| | | #s.listen(1)
|
| | |
|
| | | #è·å¾åç®å½:
|
| | | #os.path.abspath
|
| | |
|
| | | #çå¾
è¾å
¥:
|
| | | #raw_input()
|
| | |
|
| | | #å¾å°æ¬ç®å½:
|
| | | #os.getcwd()
|
| | |
|
| | | #å¾å°åæ°:
|
| | | #os.sys.argv
|
| | |
|
| | | #å¾å°pythonè·¯å¾
|
| | | #os.sys.executable
|
| | |
|
| | | #è¿è¡å¤é¨æä»¶/ç»æå¤é¨æä»¶
|
| | | #processID = os.spawnl(os.P_NOWAIT, pythonPath, '-p', os.path.join(curPath, 'test.py'))
|
| | | #win32api.TerminateProcess(processID, 0)
|
| | |
|
| | |
|
| | | #pythonç读å/åå
¥åº
|
| | |
|
| | | #------------------------读å |
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def ReadBYTE(buf, pos):
|
| | | curValue = struct.unpack_from('B', buf, pos)
|
| | | pos += 1
|
| | | return curValue[0], pos
|
| | |
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def ReadWORD(buf, pos):
|
| | | curValue = struct.unpack_from('H', buf, pos)
|
| | | pos += 2 |
| | | return curValue[0], pos
|
| | |
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def ReadDWORD(buf, pos):
|
| | | curValue = struct.unpack_from('I', buf, pos) |
| | | pos += 4
|
| | | return curValue[0], pos
|
| | |
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def ReadFloat(buf, pos):
|
| | | curValue = struct.unpack_from('f', buf, pos) |
| | | pos += 4
|
| | | return curValue[0], pos
|
| | |
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def ReadDouble(buf, pos):
|
| | | curValue = struct.unpack_from('d', buf, pos) |
| | | pos += 8
|
| | | return curValue[0], pos
|
| | |
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def ReadString(buf, pos, _len):
|
| | | curValue = struct.unpack_from('%ds'%_len, buf, pos)
|
| | | pos += _len |
| | | return curValue[0], pos
|
| | |
|
| | |
|
| | | #----------------------åå
¥
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def Pack(sign, value):
|
| | | |
| | | if value < 0:
|
| | | sign = sign.lower()
|
| | | else:
|
| | | sign = sign.upper()
|
| | | |
| | | return struct.pack(sign, value)
|
| | | |
| | | |
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def WriteBYTE(buf, value):
|
| | | buf += Pack('B', value)
|
| | | return buf
|
| | |
|
| | |
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def WriteWORD(buf, value):
|
| | | buf += Pack('H', value)
|
| | | return buf
|
| | |
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def WriteDWORD(buf, value):
|
| | | buf += Pack('I', value)
|
| | | return buf
|
| | |
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def WriteFloat(buf, value):
|
| | | buf += struct.pack('f', value)
|
| | | return buf
|
| | |
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def WriteDouble(buf, value):
|
| | | buf += struct.pack('d', value)
|
| | | return buf
|
| | |
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def WriteString(buf, len, value):
|
| | | buf += struct.pack('%ds'%len, value)
|
| | | return buf
|
| | |
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def GetDistance(srcX, srcY, destX, destY):
|
| | | return math.sqrt(pow(srcX - destX, 2) + pow(srcY - destY, 2))
|
| | | |
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def MovePos(srcX, srcY, destX, destY, curMoveDist):
|
| | | if curMoveDist == 0:
|
| | | return srcX, srcY
|
| | | |
| | | totalDist = GetDistance(srcX, srcY, destX, destY)
|
| | | if totalDist == 0:
|
| | | return srcX, srcY
|
| | | |
| | | resultX = curMoveDist / float(totalDist) * (destX - srcX) + srcX
|
| | | resultY = curMoveDist / float(totalDist) * (destY - srcY) + srcY
|
| | | return resultX, resultY |
| | | |
| | |
|
| | | ##æµè¯ä»£ç :
|
| | | #strs = 'ç¾é¦æ¯çª'
|
| | | #buf = ''
|
| | | #buf = WriteString(buf, len(strs), strs)
|
| | | #value, pos = ReadString(buf, 0, len(strs))
|
| | | #print value
|
| | |
|
| | | #è·å¾å½åç³»ç»æ¶é´
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def GetCurrentDataTimeStr():
|
| | | curTime = datetime.datetime.today()
|
| | | curTimeStr = str(curTime)
|
| | | curTimeStr = curTimeStr.split(".")[0]
|
| | | return curTimeStr
|
| | |
|
| | |
|
| | | #å符串转æ¢ä¸ºæ´å, 妿ä¸è½è½¬æ¢, è¿åé»è®¤å¼
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def ToIntDef(input, defValue = 0):
|
| | | try:
|
| | | result = int(input)
|
| | | return result
|
| | | except ValueError:
|
| | | return defValue
|
| | | |
| | | #16è¿å¶é¢è²è½¬æ¢
|
| | | #"#FFFFFF"--"255,255,255"
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def HcToSc(h):
|
| | | h="0x"+h[1:7]
|
| | | red=string.atoi(h[:2]+h[2:4], base=16)
|
| | | green=string.atoi(h[:2]+h[4:6], base=16)
|
| | | blue=string.atoi(h[:2]+h[6:8], base=16)
|
| | | cStr=str(red)+","+str(green)+","+str(blue)
|
| | | return cStr
|
| | |
|
| | | #"255,255,255"--"#FFFFFF"
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def ScToHc(s):
|
| | | red=hex(string.atoi(s.split(",")[0]))[2:]
|
| | | green=hex(string.atoi(s.split(",")[1]))[2:]
|
| | | blue=hex(string.atoi(s.split(",")[2]))[2:]
|
| | | hStr="#"+str(red+green+blue)
|
| | | return hStr
|
| | |
|
| | | #16è¿å¶è½¬æ¢
|
| | | #"0xFFFFFF"--"255,255,255"
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def HdToSd(h):
|
| | | red=string.atoi(h[0:2]+h[2:4], base=16)
|
| | | green=string.atoi(h[0:2]+h[4:6], base=16)
|
| | | blue=string.atoi(h[0:2]+h[6:8], base=16)
|
| | | cStr=str(red)+","+str(green)+","+str(blue)
|
| | | return cStr
|
| | |
|
| | | #"255,255,255"--"0xFFFFFF"
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def SdToHd(s):
|
| | | red=hex(string.atoi(s.split(",")[0]))[2:]
|
| | | green=hex(string.atoi(s.split(",")[1]))[2:]
|
| | | blue=hex(string.atoi(s.split(",")[2]))[2:]
|
| | | hStr="0x"+str(red+green+blue)
|
| | | return hStr
|
| | |
|
| | | #æç¤ºé¤é¶é误çEVAL
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def SafeEval(value):
|
| | | try:
|
| | | return eval(value)
|
| | | except ZeroDivisionError:
|
| | | return "Division is Zero"
|
| | |
|
| | | ##çææå®æä»¶ï¼å¦parï¼r'E:\å¼åçæ¬\Data\logo\formName1.log'ï¼
|
| | | #def MakeAppointFile(par):
|
| | | # dir = os.path.dirname(par) # è·å¾æä»¶ç®å½
|
| | | # os.makedirs(dir) # å建å¤çº§ç®å½
|
| | | # file = open(os.path.basename(par),'w')
|
| | | # file.close()
|
| | | #
|
| | | ##卿å®ç®å½æ ¹æ®å½åæ¶é´çææ°ç®å½ï¼å¦parï¼r'E:\å¼åçæ¬\Data\logo'ï¼
|
| | | #def MakeCurTimeDir(par):
|
| | | # if not os.path.exists(par): # ä¼ è¿æ¥çç®å½ä¸åå¨
|
| | | # return
|
| | | # path=par+'\\'+str(datetime.datetime.today()).split()[0]
|
| | | # if not os.path.exists(path): # æä»¶å¤¹æ¯å¦åå¨ï¼ä¸åå¨åå建
|
| | | # os.mkdir(path) # å建æä»¶å¤¹
|
| | | |
| | | #çææå®ç®å½ï¼å¦parï¼r'E:\å¼åçæ¬\Data\logo'ï¼
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def MakeAppointDir(par):
|
| | | if not isinstance(par,str):
|
| | | return
|
| | | pathList=par.split('\\')
|
| | | path=pathList[0]
|
| | | for i in range(1,len(pathList)):
|
| | | path+='\\'+pathList[i]
|
| | | if not os.path.exists(path): # æä»¶å¤¹æ¯å¦åå¨ï¼ä¸åå¨åå建
|
| | | os.mkdir(path) # å建æä»¶å¤¹
|
| | | |
| | | #çææå®æä»¶ï¼å¦parï¼r'E:\å¼åçæ¬\Data\logo\formName1.log'ï¼
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def MakeAppointFile(par):
|
| | | if not isinstance(par,str):
|
| | | return
|
| | | pathList=par.split('\\')
|
| | | path=pathList[0]
|
| | | for i in range(1,len(pathList)):
|
| | | path+='\\'+pathList[i]
|
| | | if i==len(pathList)-1:
|
| | | file=open(path,'w')
|
| | | file.close()
|
| | | else:
|
| | | if not os.path.exists(path): # æä»¶å¤¹æ¯å¦åå¨ï¼ä¸åå¨åå建
|
| | | os.mkdir(path) # å建æä»¶å¤¹
|
| | |
|
| | | #卿å®ç®å½æ ¹æ®å½åæ¶é´çææ°ç®å½ï¼å¦parï¼r'E:\å¼åçæ¬\Data\logo'ï¼
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def MakeCurTimeDir(par):
|
| | | if not os.path.exists(par): # ä¼ è¿æ¥çç®å½ä¸åå¨
|
| | | return
|
| | | path=par+'\\'+str(datetime.datetime.today()).split()[0]
|
| | | if not os.path.exists(path): # æä»¶å¤¹æ¯å¦åå¨ï¼ä¸åå¨åå建
|
| | | os.mkdir(path) # å建æä»¶å¤¹
|
| | |
|
| | |
|
| | | #å¾å°æ¿æ¢åçå符串ï¼åæ°ï¼stringæ¯éè¦æ¿æ¢çå符串ï¼varlist为ä¸å®åï¼ä¸ºæ¿æ¢å
容ï¼
|
| | | #å¦GetReplaceString('str%s%s','str1','str2','str3','str4'),returnç»æä¸º'strstr1str2'
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def GetReplaceString(string,*varlist):
|
| | | if '%' not in string:
|
| | | return string
|
| | | repalceCount = len(varlist) # æ¿æ¢æ¬¡æ°
|
| | | newStr = string
|
| | | if '%%' in string:
|
| | | newStr = string.replace('%%','') # å»é¤å符串strå
ç'%%'
|
| | | needReplaceCount = newStr.count('%') # å符串newStrå
ç'%'个æ°,å³éè¦æ¿æ¢ç次æ°
|
| | | if repalceCount < needReplaceCount:
|
| | | tempList = list(varlist)
|
| | | for i in range(needReplaceCount-repalceCount):
|
| | | tempList.append(0)
|
| | | replaceTuple= tuple(tempList)
|
| | | #åè¯è°ç¨è
ï¼åæ°ä¼ å°äº
|
| | | return 'func:GetReplaceString();error:the parameter lack'
|
| | | # return string%replaceTuple
|
| | | |
| | | replaceTuple = tuple(varlist[:needReplaceCount])
|
| | | return string%replaceTuple
|
| | |
|
| | |
|
| | | #å°unicodeç¼ç è½¬æ¢æä¸æå符(åæ°ï¼"#19968"-"#40869"ä¹é´)
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def UnicodeStrToGBKStr(U_STR):#å¦è¾å
¥"#23435",è·å¾è¿åå¼"å®"
|
| | | import re
|
| | | RegularExpression="#[0-9]+"
|
| | | if not re.match(RegularExpression,U_STR):
|
| | | return U_STR
|
| | | UnicodeNum=int(U_STR[1:])
|
| | | CODEC="GBK"
|
| | | try:
|
| | | unicode_string=eval("u'\u%s'"%((hex(UnicodeNum))[2:]))
|
| | | GBK_str=unicode_string.encode(CODEC)
|
| | | except:
|
| | | return U_STR
|
| | | return GBK_str
|
| | | |
| | | |
| | | #ç¨æå®å符desSignæ¿æ¢ç¹ä½å符串srcStrçæå®ååèå符sign
|
| | | ## |
| | | # @param åæ°
|
| | | # @return è¿åå¼
|
| | | # @remarks 彿°è¯¦ç»è¯´æï¼
|
| | | def ReplaceBig5AppointSign(srcStr,sign,desSign):
|
| | | |
| | | isContinue = False
|
| | | desStr = ''
|
| | | |
| | | for i in range( len(srcStr) ):
|
| | | |
| | | if isContinue:
|
| | | #妿æå两个åèå好æ¯ä¸ä¸ªç¹ä½åï¼ååæ°ç¬¬äºä¸ªåèæ¶ä¼å¤å®ï¼æåä¸ä¸ªåèå卿¤è·³è¿
|
| | | isContinue = False
|
| | | continue
|
| | | |
| | | #å·²å°å符串æåä¸ä¸ªåèï¼æä½å®è·³åºå¾ªç¯
|
| | | if i == len(srcStr)-1:
|
| | | |
| | | if srcStr[i] == sign:
|
| | | #æ¿æ¢
|
| | | desStr = desStr + desSign
|
| | | else:
|
| | | desStr = desStr + srcStr[i]
|
| | | |
| | | break # è·³åºå¾ªç¯
|
| | | |
| | | if 129 <= ord(srcStr[i]) <= 254: # 夿æ¯å¦å¨Big5é«ä½åèèå´å
|
| | | |
| | | if 64 <= ord(srcStr[i+1]) <= 126 or 161 <= ord(srcStr[i+1]) <= 254: # 夿æ¯å¦Big5ä½ä½åèèå´å
|
| | | isContinue = True # 䏿¬¡å¤æé«åèæ¶ï¼å¯è·³è¿ä¸æ¬¡å¾ªç¯
|
| | | desStr = desStr + srcStr[i:i+2]
|
| | | else:
|
| | | #ä¸å¨Big5ä½ä½åèèå´å
|
| | | if srcStr[i] == sign:
|
| | | #æ¿æ¢
|
| | | desStr = desStr + desSign
|
| | | else:
|
| | | desStr = desStr + srcStr[i]
|
| | | else:
|
| | | #ä¸å¨Big5é«ä½åèèå´å
|
| | | if srcStr[i] == sign:
|
| | | #æ¿æ¢
|
| | | desStr = desStr + desSign
|
| | | else:
|
| | | desStr = desStr + srcStr[i]
|
| | | |
| | | return desStr
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | |
|
| | | import mylog
|
| | | from DBCommon import error
|
| | |
|
| | | def EncodingToUnicode(srcEncoding, input):
|
| | | try:
|
| | | result = unicode(input, srcEncoding) #translate to utf-8
|
| | | except:
|
| | | msg = error.formatMsg('error', error.ERROR_NO_5, 'encode error!srcEncoding = %s input = %s'%(srcEncoding, repr(input)))
|
| | | mylog.error(msg)
|
| | | return False, None
|
| | | return True, result
|
| | |
|
| | | def UnicodeToEncoding(dstEncoding, input):
|
| | | try:
|
| | | result = input.encode(dstEncoding)
|
| | | except:
|
| | | msg = error.formatMsg('error', error.ERROR_NO_6, 'encode error!dstEncoding = %s input = %s'%(dstEncoding, repr(input))) |
| | | mylog.error(msg)
|
| | | return False, None
|
| | | return True, result
|
| | |
|
| | | crcTable = (
|
| | | 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,
|
| | | 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L,
|
| | | 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L,
|
| | | 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL,
|
| | | 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L,
|
| | | 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L,
|
| | | 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L,
|
| | | 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
|
| | | 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L,
|
| | | 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL,
|
| | | 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L,
|
| | | 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L,
|
| | | 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L,
|
| | | 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL,
|
| | | 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL,
|
| | | 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
|
| | | 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL,
|
| | | 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L,
|
| | | 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L,
|
| | | 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L,
|
| | | 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL,
|
| | | 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L,
|
| | | 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L,
|
| | | 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
|
| | | 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L,
|
| | | 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L,
|
| | | 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L,
|
| | | 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L,
|
| | | 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L,
|
| | | 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL,
|
| | | 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL,
|
| | | 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
|
| | | 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L,
|
| | | 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL,
|
| | | 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL,
|
| | | 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L,
|
| | | 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL,
|
| | | 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L,
|
| | | 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL,
|
| | | 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
|
| | | 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL,
|
| | | 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L,
|
| | | 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L,
|
| | | 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL,
|
| | | 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L,
|
| | | 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L,
|
| | | 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L,
|
| | | 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
|
| | | 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L,
|
| | | 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L,
|
| | | 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL,
|
| | | 0x2d02ef8dL
|
| | | )
|
| | |
|
| | | def DO1(crc, buf, pos):
|
| | | global crcTable
|
| | | # crcTable[crc ^ ord(buf[pos]) & 0xFF]
|
| | | crc = crcTable[(crc ^ ord(buf[pos])) & 0xFF] ^ (crc >> 8)
|
| | | pos += 1
|
| | | return crc, pos
|
| | |
|
| | | def DO(n, crc, buf, pos):
|
| | | for i in xrange(n):
|
| | | crc, pos = DO1(crc, buf, pos)
|
| | | return crc, pos
|
| | |
|
| | | def GetCrc32(crc, buf):
|
| | | if not buf:
|
| | | return 0
|
| | | crc = crc ^ 0xffffffffL
|
| | | length = len(buf)
|
| | | pos = 0
|
| | | |
| | | while length >= 8:
|
| | | stepLen = 8
|
| | | crc, pos = DO(stepLen, crc, buf, pos)
|
| | | length -= stepLen
|
| | | |
| | | while length > 0:
|
| | | crc, pos = DO1(crc, buf, pos)
|
| | | length -= 1
|
| | | |
| | | return crc ^ 0xffffffffL |
| | | |
| | | def LoadLibraryEx(DllName):
|
| | | "DLL Load ,return the handle of the dll or None"
|
| | | from ctypes import windll
|
| | | try:
|
| | | return windll.LoadLibrary(DllName)
|
| | | except WindowsError:
|
| | | return None
|
| | | return None |
| | |
|
| | | #å¼¹æ¡ç±»å
|
| | | MB_OK = 0
|
| | | MB_OKCANCEL = 1
|
| | | MB_ABORTRETRYIGNORE = 2
|
| | | MB_YESNOCANCEL = 3
|
| | | MB_YESNO = 4
|
| | | MB_RETRYCANCEL = 5
|
| | | MB_ICONHAND = 16
|
| | | MB_ICONQUESTION = 32
|
| | | MB_ICONEXCLAMATION = 48
|
| | | MB_ICONASTERISK = 64
|
| | | MB_ICONWARNING = MB_ICONEXCLAMATION
|
| | | MB_ICONERROR = MB_ICONHAND
|
| | | MB_ICONINFORMATION = MB_ICONASTERISK
|
| | | MB_ICONSTOP = MB_ICONHAND
|
| | | MB_DEFBUTTON1 = 0
|
| | | MB_DEFBUTTON2 = 256
|
| | | MB_DEFBUTTON3 = 512
|
| | | MB_DEFBUTTON4 = 768
|
| | | MB_APPLMODAL = 0
|
| | | MB_SYSTEMMODAL = 4096
|
| | | MB_TASKMODAL = 8192
|
| | | MB_HELP = 16384
|
| | | MB_NOFOCUS = 32768
|
| | | MB_SETFOREGROUND = 65536
|
| | | MB_DEFAULT_DESKTOP_ONLY = 131072
|
| | | MB_TOPMOST = 262144
|
| | | MB_RIGHT = 524288
|
| | | MB_RTLREADING = 1048576
|
| | | MB_SERVICE_NOTIFICATION = 2097152
|
| | | MB_TYPEMASK = 15
|
| | | MB_USERICON = 128
|
| | | MB_ICONMASK = 240
|
| | | MB_DEFMASK = 3840
|
| | | MB_MODEMASK = 12288
|
| | | MB_MISCMASK = 49152
|
| | | def MessageBox(title,msg,stype):
|
| | | # import win32api,win32gui
|
| | | # import win32con,winerror,win32event,pywintypes
|
| | | # ct = win32api.GetConsoleTitle()
|
| | | # hd = win32gui.FindWindow(0,ct)
|
| | | # win32api.MessageBox(hd,msg,title,win32con.MB_OK)
|
| | | hd = LoadLibraryEx("user32.dll")
|
| | | if hd is not None:
|
| | | hd.MessageBoxA(0,msg,title,stype)
|
| | | |
| | | #å°DelphiçTDateTimeæµ®ç¹æ°è½¬åæåç¬¦ä¸²æ ¼å¼ |
| | | g_dllTDateTimeFunc = None
|
| | | def TDateTimeToString(dTime,default = "1900-01-01 00:00:00"):
|
| | | global g_dllTDateTimeFunc
|
| | | from ctypes import (c_char_p,c_double)
|
| | | strTime = default#é»è®¤å¼
|
| | | try:
|
| | | if g_dllTDateTimeFunc == None:
|
| | | g_dllTDateTimeFunc = LoadLibraryEx("TDateTimeFunc.dll")
|
| | | if g_dllTDateTimeFunc == None:
|
| | | msg=error.formatMsg('DeployError', error.ERROR_NO_162, 'TDateTimeFunc.dll Load fail!!')
|
| | | mylog.DeployError(msg,False)
|
| | | return strTime
|
| | | strTime = c_char_p(g_dllTDateTimeFunc.TDateTimeToString(c_double(dTime))).value
|
| | | except:
|
| | | msg=error.formatMsg('error', error.ERROR_NO_162, ' Call TDateTimeToString fail!!')
|
| | | mylog.error(msg)
|
| | | return strTime |
| | | return strTime
|
| | | |
| | | if __name__ == '__main__':
|
| | | print '0x%x'%GetCrc32(0, 'hello')
|
New file |
| | |
| | | #-*- coding: GBK -*-
|
| | | #LOGå®ä¹æ¨¡å
|
| | | import logging
|
| | | from time import localtime
|
| | | import traceback
|
| | |
|
| | | __console = None
|
| | |
|
| | | #æ¥éç¨å¼¹æ¡
|
| | | def ErrorBox(title,msg):
|
| | | from CommFuncEx import (MessageBox, MB_ICONERROR, MB_TOPMOST)
|
| | | MessageBox("MongoDBServer:%s"%title.upper(),msg,MB_ICONERROR|MB_TOPMOST)
|
| | | |
| | |
|
| | |
|
| | | def InitMyLog( LogName, isDebug ):
|
| | | global __console
|
| | | # set up logging to file - see previous section for more details
|
| | | now = localtime()
|
| | | file = "%s-%d-%d-%d.log" % ( LogName, now.tm_year, now.tm_mon, now.tm_mday )
|
| | | openMode = 'a'
|
| | | logLevel = logging.INFO
|
| | | if isDebug:
|
| | | openMode = 'w'
|
| | | logLevel = logging.DEBUG
|
| | | logging.basicConfig(level=logLevel,
|
| | | # format='%(name)-12s %(asctime)s %(name)-12s %(levelname)-8s %(message)s',
|
| | | # format='%(name)-12s %(asctime)s %(levelname)-8s %(threadName)s %(module)s %(funcName)s %(lineno)d %(message)s',
|
| | | format='%(levelname)-8s %(asctime)s %(threadName)s %(module)s %(funcName)s %(lineno)d: %(message)s',
|
| | | datefmt='%Y-%m-%dT%H:%M:%S',
|
| | | filename=file,
|
| | | filemode=openMode)
|
| | | #æ¥å¿ç»ä¸ä¸åå°æ§å¶å°ï¼æ§å¶å°ç¨æ¥æ¾ç¤ºç¶æ
|
| | | # define a Handler which writes INFO messages or higher to the sys.stderr
|
| | | __console = logging.StreamHandler()
|
| | | __console.setLevel(logging.INFO)
|
| | | # set a format which is simpler for console use
|
| | | formatter = logging.Formatter('%(name)-12s %(asctime)s %(name)-12s %(levelname)-8s %(message)s')
|
| | | # tell the handler to use this format
|
| | | __console.setFormatter(formatter)
|
| | | # add the handler to the root logger
|
| | | logging.getLogger('').addHandler(__console)
|
| | |
|
| | | def removeConsoleHandler():
|
| | | __console.close()
|
| | | logging.getLogger('').removeHandler(__console)
|
| | | |
| | | #-----------------------------------------------------------------------------------------------------------------------------------------
|
| | | #ä¸ç´æ¥è°ç¨logging模åç彿°ï¼èè°ç¨ä»¥ä¸å½æ°ä»¥ä¾¿è¿è¡åºéç»è®¡
|
| | | #-----------------------------------------------------------------------------------------------------------------------------------------
|
| | | #CRITICAL = 50
|
| | | #FATAL = CRITICAL
|
| | | #ERROR = 40
|
| | | #WARNING = 30
|
| | | #WARN = WARNING
|
| | | #INFO = 20
|
| | | #DEBUG = 10
|
| | | #NOTSET = 0
|
| | |
|
| | | try:
|
| | | import threading
|
| | | except ImportError:
|
| | | import dummy_threading as threading |
| | | |
| | | _fatalCntLock = threading.Lock()
|
| | | _fatalCnt = 0
|
| | | def fatal(msg, showError = True):
|
| | | global _fatalCntLock
|
| | | global _fatalCnt
|
| | | _fatalCntLock.acquire()
|
| | | _fatalCnt += 1
|
| | | _fatalCntLock.release()
|
| | | |
| | | # logging.info(traceback.format_stack())
|
| | | logging.critical("\ncallstack:\n%smsg:%s"%("".join(traceback.format_stack()), msg))
|
| | | if showError:
|
| | | ErrorBox("fatal",msg)
|
| | | return
|
| | | |
| | | _errorCntLock = threading.Lock()
|
| | | _errorCnt = 0
|
| | | def error(msg, showError = False):
|
| | | global _errorCntLock
|
| | | global _errorCnt |
| | | _errorCntLock.acquire()
|
| | | _errorCnt += 1
|
| | | _errorCntLock.release()
|
| | | |
| | | logging.error("\ncallstack:\n%smsg:%s"%("".join(traceback.format_stack()), msg))
|
| | | if showError:
|
| | | ErrorBox("error",msg)
|
| | | return
|
| | | |
| | | _designErrorCntLock = threading.Lock()
|
| | | _designErrorCnt = 0
|
| | | def DesignError(msg, showError = True):
|
| | | global _designErrorCnt
|
| | | global _designErrorCntLock |
| | | _designErrorCntLock.acquire()
|
| | | _designErrorCnt += 1
|
| | | _designErrorCntLock.release()
|
| | | |
| | | logging.error("To Design:%s"%msg)
|
| | | #è°è¯çå¼¹æ¡æç¤º
|
| | | if showError:
|
| | | ErrorBox("Design Error",msg)
|
| | | return
|
| | | |
| | | _DeployErrorCntLock = threading.Lock()
|
| | | _DeployErrorCnt = 0
|
| | | def DeployError(msg, showError):
|
| | | global _DeployErrorCntLock
|
| | | global _DeployErrorCnt
|
| | | _DeployErrorCntLock.acquire()
|
| | | _DeployErrorCnt += 1
|
| | | _DeployErrorCntLock.release()
|
| | | |
| | | logging.error("To Deployer:%s"%msg)
|
| | | if showError:
|
| | | ErrorBox("Deploy Error", msg)
|
| | | |
| | | _warningCntLock = threading.Lock()
|
| | | _warningCnt = 0
|
| | | def warning(msg):
|
| | | global _warningCntLock
|
| | | global _warningCnt
|
| | | _warningCntLock.acquire()
|
| | | _warningCnt += 1
|
| | | _warningCntLock.release()
|
| | | |
| | | logging.warning(msg)
|
| | | |
| | | def info(msg):
|
| | | logging.info(msg)
|
| | |
|
| | | def debug(msg):
|
| | | logging.debug(msg)
|
| | | |
| | | def getLogStaticDict():
|
| | | dict = {}
|
| | | dict['fatal'] = _fatalCnt
|
| | | dict['error'] = _errorCnt
|
| | | dict['designError'] = _designErrorCnt
|
| | | dict['warning'] = _warningCnt
|
| | | return dict |
| | |
|
| | | def test_override_funcs():
|
| | | InitMyLog('test1.log')
|
| | | # info('test')
|
| | | # error('err')
|
| | |
|
| | | def test():
|
| | | InitMyLog("test.log")
|
| | | # Now, we can log to the root logger, or any other logger. First the root...
|
| | | error('Jackdaws love my big sphinx of quartz.')
|
| | | logging.error('Jackdaws love my big sphinx of quartz.')
|
| | |
|
| | | # Now, define a couple of other loggers which might represent areas in your
|
| | | # application:
|
| | |
|
| | | logger1 = logging.getLogger('myapp.area1')
|
| | | logger2 = logging.getLogger('myapp.area2')
|
| | |
|
| | | logger1.debug('Quick zephyrs blow, vexing daft Jim.')
|
| | | logger1.info('How quickly daft jumping zebras vex.')
|
| | | logger2.warning('Jail zesty vixen who grabbed pay from quack.')
|
| | | logger2.error('The five boxing wizards jump quickly.')
|
| | |
|
| | | if __name__ == '__main__':
|
| | | # test_override_funcs()
|
| | | import os
|
| | | print os.getcwd()
|
| | | test()
|
| | |
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | |
|
| | | from DBCommon import GlobalFunctions
|
| | | import traceback
|
| | | import ConfigParser
|
| | | import os
|
| | |
|
| | | from DBCommon import error
|
| | | from Common import mylog
|
| | |
|
| | | #é
ç½®åå
¸
|
| | | #æ ¼å¼ï¼keyname:[defvalue, secionname]ï¼æ°å¢é
ç½®åªè¦å¨ä¸é¢åå
¸å®ä¹ä¸æ°å¢ä¸è¡å³å¯
|
| | | #ç¨æ³ï¼import模ååï¼ç´æ¥DBConfig.å¼å
³åç§° å³å¯
|
| | | dbconfig = {
|
| | | #auth section
|
| | | "userdb_user":['', "auth"],
|
| | | "userdb_pwd":['', 'auth'], |
| | | |
| | | #connect section
|
| | | "USER_DB_PORT":[27017, "connect"], #MongoDB端å£
|
| | | "USER_DB_IP":["localhost", "connect"], #MongoDB IP
|
| | | "USER_DB_NAME":["GameUser", "connect"], #MongoDB Name
|
| | | "USER_DB_Log":["GameLog", "connect"], #MongoDB Name
|
| | |
|
| | | #update
|
| | | "Spid":["test", "update"], |
| | | "Serverid":["s1", "update"], |
| | |
|
| | | } |
| | |
|
| | |
|
| | | 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))
|
| | | elif type(defvalue) in (dict, list, tuple):
|
| | | value = eval(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:
|
| | | config = ConfigParser.ConfigParser()
|
| | | config.read(os.path.join(GlobalFunctions.getAppPath(), 'config\\config.ini'))
|
| | | |
| | | self_module = __import__(__name__)
|
| | | |
| | | #è¯»åæ°æ®åºé
ç½®æä»¶ |
| | | for k, v in dbconfig.items(): |
| | | value = ReadCongfigValue(config, v[1], k, v[0])
|
| | | if value == None:return False
|
| | | |
| | | setattr(self_module, k, value)
|
| | | |
| | | 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
|
| | | |
| | |
|
New file |
| | |
| | | ;mongodb ç¨æ·ææå¸å·å¯ç é
ç½®
|
| | | [connect]
|
| | | USER_DB_PORT=27017
|
| | | USER_DB_IP=127.0.0.1
|
| | | USER_DB_NAME=GameUser
|
| | | USER_DB_Log=GameLog
|
| | |
|
| | | [auth]
|
| | | userdb_user=sa
|
| | | userdb_pwd=sa
|
| | |
|
| | | [update]
|
| | | Spid=test
|
| | | Serverid=s15 |
| | |
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | |
|
| | | #æ¯å¦è°è¯çæ¬
|
| | | import os
|
| | | isDebugVersion = -1
|
| | | def IsDebug():
|
| | | global isDebugVersion
|
| | | if isDebugVersion == -1:
|
| | | isDebugVersion = os.path.exists("BBF84B34-357E-435B-B3FF-D60370AAA6ED")
|
| | | return isDebugVersion
|
| | |
|
| | |
|
| | | DATASAVE_MARK = 0xFF88
|
| | |
|
| | | #éå¼åºé
ç½®
|
| | | #è°è¯ç¨
|
| | |
|
| | | class ShortBuf(Exception):
|
| | | "Exception raised by readData method when src buf is too shourt."
|
| | | def __init__(self, msg):
|
| | | Exception.__init__(self)
|
| | | self.msg = msg
|
| | |
|
| | | DUMPPACKET = False
|
| | |
|
| | | MAX_RECV = 1024
|
| | | MAX_PACK_LEN = 100 * 1024 * 1024
|
| | |
|
| | | MAX_PACK_POOL_SIZE = 10000
|
| | | PACK_POOL_INCREASE_SIZE = 1000
|
| | |
|
| | | CLIENT_POOL_SIZE = 100
|
| | | CLIENT_POOL_INC_SIZE = 10
|
| | |
|
| | | VERSION_FILE_NAME = 'Version.chver'
|
| | |
|
| | | SYSDB_PATH = 'SysDB'
|
| | | PY_SYS_DB_PATH = 'PySysDB'
|
| | | CFG_PATH = 'Config'
|
| | | DUMP_PATH = 'UserLogs'
|
| | |
|
| | | #ç¼ç
|
| | | ENCODING = 'gbk'
|
| | |
|
| | | #ASCIIå符串é¿åº¦
|
| | | ACCIDLEN = 65
|
| | | PSWLEN = 33
|
| | | PSWLV2LEN = 33
|
| | | IPLEN = 20
|
| | | USERNAMELEN = 9
|
| | | SEXLEN = 3
|
| | | BIRTHDAYLEN = 21
|
| | | QQLEN = 41
|
| | | MAILLEN = 41
|
| | | PROVINCELEN = 31
|
| | | CITYLEN = 31
|
| | |
|
| | | ########################### TGMOper define #############################
|
| | | gmForbidFight = 0 #/<ç¦æ¢ææ
|
| | | gmForbidAcc = 1 #/<ç¦æ¢å¸å·
|
| | | gmForbidVisible = 2 #/<é身
|
| | | gmForbidTalk = 3 #/<ç¦è¨
|
| | |
|
| | | ########################### TPlayerState define #############################
|
| | | #主è§å¸å·ç¶æ
|
| | | #0: æªå建, 1: å建OK,æ£å¸¸ç»å½ 2:å°å·
|
| | | pysUnCreated = 0 #/<æªå建
|
| | | pysNormal = 1 #/<å建OK
|
| | | pysForbidden = 2 #/<GMå°å·
|
| | | pysSIDCheckErrorForbidden = 3 #/<ç³»ç»å°å·
|
| | | pysServerMerge = 4 #/<åæä¹åçç¶æ
|
| | |
|
| | | def isAccStateForbidden(accState):
|
| | | return (accState >= pysForbidden and accState <= pysSIDCheckErrorForbidden)
|
| | | ########################### TMapServserState define #############################
|
| | | #å°å¾æå¡å¨ç¶æ#TMapServserState
|
| | | mssNone = 0 #/<ä¸åå¨
|
| | | mssConnecting = 1 #/<è¿æ¥ä¸
|
| | | mssIniting = 2 #/<åå§åä¹ä¸
|
| | | mssRunning = 3 #/<è¿è¡ä¸
|
| | | mssPyError = 4 #/<pythoné误
|
| | | mssCError = 5 #/<c++é误
|
| | | mssDisconnect = 6 #/<æå¼è¿æ¥äº
|
| | | mssCppWarn = 7 #/<C++è¦å(è¿ç±»é误éè¦ç¥éï¼ä½ä¸éè¦é©¬ä¸å¤ç)
|
| | | mssMax = 8
|
| | |
|
| | | ##define GAMESERVER_DATA_VERSION_NO ((WORD)((sizeof(tagDBPlayer) + sizeof(tagRoleItem)\
|
| | | # + sizeof(tagFamilyInfo) + sizeof(tagPlayerFamily))%100) + 5)
|
| | | #GAMESERVER_DATA_VERSION_NO = 0x3B#ç¬ç«æ¾ä¸ä¸ªæä»¶ï¼C++ç¼è¯æ¶çæ
|
| | | ########################### ActionType define #############################
|
| | | # å°å
ç±»å#ActionType.æ¹å¨æ¤æä¸¾ï¼éä¿®æ¹RouteServerInfo.py
|
| | | atMin = 0
|
| | | atNormal = 1 #æ®éå°å
|
| | | atInner = 2 #å
é¨ç½é讯å°å
|
| | | atKickOutPlayer = 3 #æå¡å¨è¸¢åºäººç©
|
| | | atPlayerLogin = 4 #人ç©ç»å½
|
| | | atDisconnect = 5 #æå¡å¨æçº¿å°å
|
| | | atWorldLogic = 6 #ä¸çé»è¾å°å
|
| | | atHeart = 7 #æå¡å¨é´å¿è·³å
|
| | | atConnect = 8 # æå¡å¨è¿æ¥æå
|
| | | atMapServerPlayerLogin = 9 # éç¥å°å¾æå¡å¨ç©å®¶ç»å½
|
| | | atMapServerSaveOut = 10 # éç¥å°å¾æå¡å¨ç©å®¶ä¸çº¿
|
| | | atRunGateKickOutPlayer = 11
|
| | | atMax = 12 #æ è¯å°å
çæå¤§æ°ç®,ä¸è¦å¾åæ·»å æä¸¾
|
| | |
|
| | | ########################### TBalanceServerToDataServer define #############################
|
| | | #RouteServeråéå°DataServerçå°å
ç±»å#TBalanceServerToDataServer
|
| | | gstPlayerLogin = 1
|
| | | gstPlayerDetail = 2
|
| | | gstCreatePlayer = 3 #å建ç©å®¶
|
| | | gstCheckPlayerExist = 4 #æ£æ¥ç©å®¶æ¯å¦åå¨
|
| | | gstQueryCanSendMail = 5 #æ¥è¯¢ç©å®¶æ¯å¦è½åéé®ä»¶
|
| | | gstGetPlayerMail = 6 #å¾å°ç©å®¶é®ä»¶å表
|
| | | gstGetMailDetail = 7 #å¾å°ä¸å°é®ä»¶
|
| | | gstUpdateMail = 8 #æ´æ°é®ä»¶ä¿¡æ¯
|
| | | gstDeleteMail = 9 #å é¤é®ä»¶
|
| | | gstOnDay = 10 #OnDayäºä»¶
|
| | | gstFamilyVS = 11 #å®¶æå¯¹æè¡¨
|
| | | gstGetPlayerMailState = 12 #å¾å°ç©å®¶é®ä»¶ç¶æ(已满, æ°ä¿¡ä»¶)
|
| | | gstGetCoin = 13 #åå¾ç¹å¸æ°ç®
|
| | | gstCoinChange = 14 #ç¹å¸å
æ¢éå
|
| | | gstPlayerBillboardLV = 15
|
| | | gstAccIDSendPrize = 16
|
| | | gstInsertAcc = 17 #æå
¥å¸å·
|
| | | gstGMCommandListReq = 18 #GMå½ä»¤å表请æ±
|
| | | gstAddAccItem = 19 #æå
¥èå®ç©å
|
| | | gstCheckItemPrize = 20 #æ£æ¥æ¯å¦æå¥å±
|
| | | gstCheckLoadAcc = 21 #[ç½é¾æ¥å£] 卿°æ®åºçAccountè¡¨ä¸æå
¥æ°æ®.
|
| | | gstUpdatePswLV2 = 22 #æ´æ°äºçº§å¯ç
|
| | | gstGetExpiationCount = 23 #å¾å°å¥å±ä¸ªæ°
|
| | | gstGetExpiation = 24 #å¾å°å¥å±
|
| | | gstAddExpiation = 25 #æ·»å å¥å±
|
| | | gstAddPlayerMailByAccID = 26 #æ ¹æ®å¸å·IDåå¨ç©å®¶é®ä»¶
|
| | | gstServerMergeDeleteRole = 27 #å åæå é¤ç©å®¶
|
| | | gstServerMergeChangeName = 28 #å åæèéå½å
|
| | | gstServerMergeUpdatePlayer = 29 #å åæèæ´æ°ç©å®¶
|
| | | gstQueryIsFamilyLeader = 30 #æ¥è¯¢æ¯å¦æ¯å®¶æé¿
|
| | | gstServerMergeUpdateAccState = 31 #æ´æ°è´¦æ·ç¶æ
|
| | | gstMapServerInfo = 32 #å°å¾æå¡å¨ä¿¡æ¯
|
| | | gstServerVersion = 33 #æå¡å¨çæ¬å·ä¿¡æ¯
|
| | | #/< åå»ºå® ç©
|
| | | #/////////////////////以䏿¯æ¥å¿è®°å½
|
| | | gstCreatePet = 34
|
| | | gstSavePlayerLog = 35 #ä¿åç©å®¶æ¥å¿
|
| | | gstSaveServerState = 36 #æå¡å¨ç¶æä¿å
|
| | | gstRefreshGateServerIP = 37 #弿æ¶å·æ°GateServerå¤ç½IP
|
| | | gstDelLineInfoByLineID = 38 #/< å é¤åæµä¿¡æ¯
|
| | | gstRefreshRunGateServerState = 39 #宿¶å·æ°RunGate æå¡å¨ç¶æ
|
| | | gstRefreshRouteServerState = 40 # 宿¶å·æ°RouteServerç¶æ
|
| | | gstRefreshDataServerState = 41 # å·æ°DataServerç¶æ
|
| | | gstAddPlayerTalkLog = 42 #æ·»å 对è¯ä¿¡æ¯
|
| | | gstItemTransactionLog = 43 #ä¿åäº¤ææ¥å¿
|
| | | gstGMCommandResult = 44 #GMå½ä»¤æ§è¡ç»æ
|
| | | gstGMCommandListLog = 45 #GMå½ä»¤æ¥å¿
|
| | | gstInsertImpeach = 46 #æå
¥ä¸¾æ¥ä¿¡æ¯
|
| | | gstGetExpiationLog = 47 #æå
¥è¡¥å¿æ¥å¿
|
| | | gstCoinChangeLog = 48 #ç¹å¸å
æ¢è®°å½
|
| | | gstAccForbiddenLog = 49 #该表ç¨äºè®°å½ç©å®¶è¢«å°ååè§£å°çææä¿¡æ¯
|
| | | gstHugeTrade = 50 #大é¢äº¤æè®°å½æ¥å¿
|
| | | gstAccTransactionLog = 51 #该表ç¨äºè®°å½ææè®¢åè®°å½
|
| | | gstPlayerSaveCoinLog = 52 #ç©å®¶å¨å¼è®°å½
|
| | | gstSavePlayerInfoLogOnCreate = 53 #æ¥å¿ç©å®¶_å建è§è²æ´æ°#tagDBPlayerInfoLogCreateRole
|
| | | gstSavePlayerInfoLogOnLogin = 54 #æ¥å¿ç©å®¶_ç»å½æ´æ°#tagDBPlayerInfoLogRoleLogin
|
| | | gstSavePlayerInfoLogOnForbidden = 55 #æ¥å¿ç©å®¶_å°åæ´æ°#tagDBPlayerInfoLogForbidden
|
| | | gstSavePlayerInfoLogOnLogOff = 56 #æ¥å¿ç©å®¶_ä¸çº¿æ´æ°#tagDBPlayerLogInfoOnLogOff
|
| | | gstSavePlayerInfoClearLoginSign = 57 #æ¥å¿ç©å®¶_ä¸çº¿ç½®0
|
| | | gstSavePlayerInfoLogOnOnCoinChange = 58 #æ¥å¿ç©å®¶ç¹å¸ä¿®æ¹æ´æ°
|
| | | gstFunctionGrade = 59 #æ¥å¿ åè½ç»è®¡
|
| | | gstSaveMapServerBalance = 60 #å°å¾è´è½½æ¥å¿
|
| | | gstDataServerInit = 61 # DataServeråå§å
|
| | | gstGetPetExpiationLog = 62 #æå
¥å® ç©è¡¥å¿æ¥å¿
|
| | | gstIOCPParamsLog = 63 #GateSeverIOCPå¼å¸¸æçº¿è®¡æ°æ¥å¿tagDBGateServerIOCPParamsLog
|
| | | gstCashRecLog = 64 #ç¹å¸å
æ¢è®¢åæ¥å¿è¡¨tagCashRecLog
|
| | | #æ¥å¿ç©å®¶_ä¸çº¿æ å¿æ´æ°#tagDBPlayerLogInfoOnLogInOff//æ°å¢æ¥å¿å¨è¿æ¡ä¸é¢æå
¥
|
| | | #/////////////以ä¸ä¼ä»é«ä½å¼å§
|
| | | gstSavePlayerInfoLogOnLogInOff = 65
|
| | | gstUpdate = 80
|
| | | gstSaveMapServerCrashData = 81 #ä¿åå°å¾æå¡å¨æåçç©å®¶ä¿¡æ¯(æ¢å¤ç¨)
|
| | | gstSavePlayerGMOPer = 82 # ä¿æå¯¹ç©å®¶çGMæä½
|
| | | gstSaveRunGataInfo = 83
|
| | | gstPlayerIDMarkDeleted = 84
|
| | | gstGetGameData = 85
|
| | | gstGetMapServerPlayerData = 86
|
| | | gstGetGameServerSysData = 87 #å¾å°GameServerç³»ç»è¡¨
|
| | | gstGetGameServerPlayerData = 88 #å¾å°ç©å®¶æå±è¡¨(ç»é表,å½å®¶è¡¨ç, æ¾GameServerä¸)
|
| | | gstSaveGameServerData = 89
|
| | | gstSaveGameServerPlayerSaveData = 90 #GameServerçç©å®¶ä¿åæ°æ®
|
| | | gstSaveGameServerCrashData = 91 #ä¿åä¸çæå¡å¨ä¿åçç©å®¶ä¿¡æ¯(æ¢å¤ç¨)
|
| | | gstGetBillboardInfo = 92 #åå¾æè¡æ¦ä¿¡æ¯
|
| | | gstGetGameServerPlayerLoginData = 93 #å¾å°GameServerç©å®¶ç»å½æ°æ®
|
| | | gstQuerySysDBVersion = 94 #æ¥è¯¢ç³»ç»åºçæ¬å·
|
| | | gstUpdateSysDB = 95 #æ´æ°ChinSysåº
|
| | | gstReloadGameData = 96 #é读GameData
|
| | | gstUpdateServerDataVersionNO = 97 #æ´æ°æå¡ç«¯æ°æ®åºçæ¬
|
| | | gstGetServerLanguageVersion = 98 # è·åæå¡å¨è¯è¨çæ¬
|
| | | gstGetServerVersions = 99 # è·åæå¡å¨ææçæ¬å·
|
| | | gstUpdateTelLockState = 100 #éç¥æ°æ®åºä¿®æ¹é讯éåè½å¼éç¶æ
|
| | | gstGetPetExpiation = 101 #å¾å°å® ç©è¡¥å¿
|
| | | gstGetPetExpiationCount = 102 #å¾å°å® ç©è¡¥å¿æ°é
|
| | | gstAddPetExpiation = 103 #æ·»å å® ç©è¡¥å¿
|
| | | gstUpdateTotalSavePoint = 104 #æ´æ°ç´¯è®¡å¨å¼
|
| | | gstSavePlayerInfo = 105 # ä¿åç©å®¶èµæ
|
| | | gstUpdateMTTUID = 106 # ä¿åç©å®¶èµæ
|
| | | gstUpdateAccAdult = 107 #æ´æ°å¸å·è¡¨æ¯å¦æå¹´å段
|
| | | gstCreateRoleServerRequestCreateRole = 108 #åè§æå¡å¨è¯·æ±åè§
|
| | | gstCreateRoleServerCheckPlayerExist = 109 #åè§æå¡å¨è¯·æ±ç©å®¶æ¯å¦åå¨
|
| | | gstCreateRoleServerCheckIsHaveRole = 110 # åè§æå¡å¨è¯·æ±æ¥è¯¢å¸å·æ¯å¦åå¨è§è²
|
| | | gstMax = 111 #ä¸é¢çæ°å¼ éè¦ä¿æä¸º gstMax + 1
|
| | |
|
| | | ########################### ELoginServerToDataServer define #############################
|
| | | #LoginServeråéå°DataServerçå°å
ç±»å
|
| | | # è¯¢é®æ°æ®åºæå¡å¨æ¯å¦åå¤å°±ç»ª
|
| | | # lsdUpdateAccoutTotalSavePoin, // æ´æ°è´¦å·ç´¯è®¡å¨å¼éé¢
|
| | | lsdDataServerPreparedAsk = 112
|
| | | lsdMax = 113
|
| | |
|
| | | #-----------------------------------------------------------------------------------------------------
|
| | | # æ°æ®åºååºç±»å
|
| | | # é¾ä»¥åæ¥ï¼å¯è½è¦åçæå¨
|
| | | #-----------------------------------------------------------------------------------------------------
|
| | | ########################### TDataServerToBalanceServer define #############################
|
| | | #DataServeråéçå°å
ç±»å#TDataServerToBalanceServer
|
| | | dgPlayerLogin = 1
|
| | | dgPlayerInit = 2
|
| | | dgCreatePlayer = 3
|
| | | dgCheckPlayerExist = 4 #æ£æ¥ç©å®¶æ¯å¦åå¨çååº
|
| | | dgQueryCanSendMail = 5 #æ¥è¯¢ç©å®¶æ¯å¦è½å¤åéé®ä»¶
|
| | | dgMailList = 6 #é®ä»¶å表
|
| | | dgMailDetail = 7 #ä¸å°é®ä»¶
|
| | | dgCoin = 8 #ç¹å¸æ°ç®å·æ°
|
| | | dgCoinChangeResult = 9 #ç¹å»å
æ¢éå
|
| | | dgPlayerBillboardLV = 10 #ç©å®¶æè¡æ¦ç级
|
| | | dgAccIDSendPrize = 11 #éåºå¥å±
|
| | | dgInsertAcc = 12 #æå
¥å¸å·
|
| | | dgPlayerCountryCount = 13 #æç
§å½ç±å¾å°ç人æ°å¤å°
|
| | | dgGMCommandList = 14
|
| | | dgAddAccItemOK = 15 #æ·»å ç©åæå
|
| | | dgCheckItemPrizeResult = 16 #æ¯å¦æå¥å±éåºçç»æ
|
| | | dgPlayerAccLoad = 17 #ç©å®¶è¯»åè´¦æ·è®°å½
|
| | | dgChangePswLV2 = 18 #æ´æ°äºçº§å¯ç
|
| | | dgGetExpiationCount = 19 #å¾å°å¥å±ä¸ªæ°
|
| | | dgGetExpiation = 20 #å¾å°å¥å±
|
| | | dgAddExpiationOK = 21 #æ·»å å¥å±ç©å
|
| | | dgAddPlayerMailByAccID = 22 #ç»å¸å·éä¿¡
|
| | | dgServerMerge = 23 #åæä¿¡æ¯
|
| | | dgServerMergeDeleteRole = 24 #å åæèå é¤è§è²
|
| | | dgServerMergeChangeName = 25 #å åæèéå½å
|
| | | dgQueryIsFamilyLeader = 26 #æ¥è¯¢æ¯å¦æ¯å®¶æé¿
|
| | | dgServerMergeUpdateAccState = 27 #æ´æ°è´¦æ·ç¶æ
|
| | | dgReloadGameData = 28 #é读GameData
|
| | | dgDataServerPrepareOK = 29 #æ°æ®åºå夿å
|
| | | #/< åå»ºå® ç©
|
| | | #/////////////////以ä¸ä¼ä»é«ä½å¼å§
|
| | | dgCreatePet = 30
|
| | | dgUpDate = 0x50
|
| | | dgUpdateMapServerCrashData = 0x50 + 1
|
| | | dgUpGMOper = 0x50 + 2 # æ´æ°GMæä½æ°æ®
|
| | | dgGameData = 0x60 #以åè¦å æ¸¸ææ°æ®å°å
çè¯,
|
| | | # dgGameDataNPCRefresh,
|
| | | # dgGameDataSkill, //è¦å¨DataServerProcesserå¤å ä¸è½¬å
|
| | | # dgGameExp, //游æç»éªå¼è¡¨
|
| | | # dgGameItem, //游æç©å表
|
| | | # dgGameTransport, //游æä¼ éç¹
|
| | | #// dgGameEvent, //游æäºä»¶è¡¨
|
| | | #// dgGameMission, //游æä»»å¡è¡¨
|
| | | #// dgGameEventTrigger, //游æä»»å¡è§¦å表
|
| | | # dgGameShopItem, //ååºç©å
|
| | | # dgGameBornRefresh, //åºçç¹å·æ°
|
| | | # dgGameMixItem, //ç©ååæè¡¨
|
| | | # dgRepeatEvent, //éå¤äºä»¶è¡¨
|
| | | # dgGameMapEffect, //å°å¾åºæ¯ææè¡¨
|
| | | # dgGameMap, //å°å¾ä¿¡æ¯è¡¨
|
| | | # dgTitleMix, //ç§°å·åæè¡¨
|
| | | dgPyGameData = 0x60 + 1
|
| | | #å®¶æå¯¹æè¡¨
|
| | | # dgGameDataOK,
|
| | | # dgPlayerTeam, //ç©å®¶ç»é表
|
| | | # dgTeamMember, //é伿å表
|
| | | # dgFamilyInfo, //ç©å®¶å®¶æè¡¨
|
| | | # dgFamilyMember, //å®¶ææå表
|
| | | # dgPlayerFriend, //ç©å®¶å¥½å表
|
| | | # dgGMGameEvent, //GMæ´»å¨è¡¨
|
| | | dgFamilyVS = 0x60 + 2
|
| | | dgGameServerData = 0x60 + 3 #åéç»GameServerçäºä»¶å®å
¨ç»æ
|
| | | dgGameServerSysData = 0x60 + 4 #GameServerç³»ç»è¡¨æ°æ®
|
| | | dgPlayerGameServerLoginData = 0x60 + 5 #ç©å®¶å¨GameServerä¸çç»å½æ°æ®
|
| | | dgPlayerMailList = 0x60 + 6 #é®ä»¶å表
|
| | | dgPlayerMailItemList = 0x60 + 7 #é®ä»¶ç©åå表
|
| | | dgBillboard = 0x60 + 8 #æè¡æ¦æ°æ®
|
| | | dgPlayerMailState = 0x60 + 9 #ç©å®¶é®ä»¶ç¶æ(已满, æªè¯»)
|
| | | dgGameServerCrashData = 0x60 + 10 #ä¸çæå¡å¨å´©æºæ°æ®
|
| | | dgPlayerSaveGameServerData = 0x60 + 11 #ç©å®¶ä¿åä¸çæå¡å¨æ°æ®
|
| | | dgGetServerLanguageVersion = 0x60 + 12 # ååºæå¡å¨è¯è¨çæ¬è¯·æ±
|
| | | dgGetServerVersions = 0x60 + 13 # ååºææçæ¬è¯·æ±
|
| | | dgServerVersion = 0x60 + 14 # ååºMapServerçæ¬è¯·æ±
|
| | | dgGetPetExpiation = 0x60 + 15 #å¾å°å® ç©è¡¥å¿
|
| | | dgGetPetExpiationCount = 0x60 + 16 #å¾å°å® ç©è¡¥å¿æ°é
|
| | | dgAddPetExpiationOK = 0x60 + 17 #æ·»å å® ç©è¡¥å¿
|
| | |
|
| | | ########################### TMoneyType define #############################
|
| | | TYPE_Price_Gold_Money = 1 #/<éå
|
| | | TYPE_Price_Gold_Paper = 2 #/<é票
|
| | | TYPE_Price_Silver_Money = 3 #/<é¶å
|
| | | TYPE_Price_Silver_Paper = 4 #/<é¶ç¥¨
|
| | |
|
| | |
|
| | | ########################### TBalanceServerToGameServer define #############################
|
| | | bgPlayerTotal = 1 #/< ç©å®¶æå¤§æ°ç®
|
| | | bgRegisterLineNO = 2 #/< 注åç©çåæµç¼å·
|
| | | bgPlayerCreateRole = 3 #/< ç©å®¶ç»å½
|
| | | bgPlayerCanStartInit = 4 #/< ç©å®¶å¨æå¡å¨ç»å½æå, å¼å§åå§å
|
| | | bgQueryCanSendMail = 5 #/< æ¥è¯¢æ¯å¦è½å¤åéé®ä»¶
|
| | | bgGameDataSaveOK = 6 #/< GameDataå卿å
|
| | | bgAllMapServerInitOK = 7 #/< ææå°å¾æå¡å¨åå§åæå
|
| | | bgMapServerInfo = 8 #/< å°å¾æå¡å¨ä¿¡æ¯
|
| | | bgServerVersion = 9 #/< æå¡å¨çæ¬
|
| | | bgPlayerCountryCount = 10 #/< æç
§å½ç±å¾å°çç©å®¶æ°é
|
| | | bgGMCommandList = 11 #/< GMå½ä»¤å表
|
| | | bgDeleteFamily = 12 #/< å é¤å®¶æ
|
| | | bgChangeNameCheck = 13 #/< æ£æ¥æ¯å¦å¯ä»¥æ¹å
|
| | | bgRenamePlayer = 14 #/< ç©å®¶æ¹å
|
| | | bgIsFamilyLeader = 15 #/< æ¯å¦æ¯å®¶æé¿
|
| | | # å é¤ç©å®¶
|
| | | # bgGetPlayerMail, //å¾å°ç©å®¶é®ä»¶å表
|
| | | # bgGetMailDetail, //å¾å°ä¸å°é®ä»¶
|
| | | #///////////////////////以ä¸ä¼ä»é«ä½å¼å§
|
| | | # bgPlayerTeam = dgPlayerTeam, //ç©å®¶ç»é表
|
| | | # bgTeamMember = dgTeamMember, //é伿å表
|
| | | # bgFamilyInfo = dgFamilyInfo, //ç©å®¶å®¶æè¡¨
|
| | | # bgFamilyMember = dgFamilyMember, //å®¶ææå表
|
| | | # bgGameServerOK = dgGameServerOK,
|
| | | # bgPlayerFriend = dgPlayerFriend, //ç©å®¶å¥½å表
|
| | | # bgPlayerEnemy = dgPlayerEnemy, //ç©å®¶ä»äºº
|
| | | # bgPlayerMailList = dgPlayerMailList, //é®ä»¶å表
|
| | | # bgPlayerMailItemList = dgPlayerMailItemList, //é®ä»¶ç©å表
|
| | | # bgGameServerPlayerLoginDataOK = dgGameServerPlayerLoginDataOK, //GameServerç©å®¶æ°æ®è¯»åæå
|
| | | bgDeletePlayer = 16
|
| | |
|
| | |
|
| | | ########################### DATA_SAVE_ID define #############################
|
| | | DSI_tagRoleItem = 1
|
| | | DSI_tagRoleMission = 2
|
| | | DSI_tagRoleMissionDict = 3
|
| | | DSI_tagRoleSkill = 4
|
| | | DSI_tagRoleBuff = 5
|
| | | DSI_tagRoleRepeatTime = 6
|
| | | DSI_tagPlayerHorseTable = 7
|
| | | DSI_tagGMOper = 8
|
| | | DSI_tagRolePet = 9 #/< ç©å®¶å® ç©
|
| | | DSI_tagPetSkill = 10 #/< å® ç©æè½
|
| | | DSI_tagRoleNomalDict = 11 #/<ç©å®¶åå
¸
|
| | | DSI_tagPlayerDienstgrad = 12 #/<æ°ç§°å·å¤´è¡
|
| | | DSI_Max = 13 #/< æ¤æä¸¾ç±»åæä¸¾å¼çæ°é
|
| | |
|
| | | ########################### TWatchMailType define #############################
|
| | | #**æ¥çé®ä»¶ç±»å*/
|
| | | wmtUnReaded = 0 #/<æªè¯»
|
| | | wmtReaded = 1 #/<已读
|
| | | wmtSave = 2 #/<å·²ä¿å
|
| | | wmtGM = 3 #/<GMä¿¡ä»¶
|
| | |
|
| | |
|
| | | MAX_PLAYER_MAIL_COUNT = 30
|
| | |
|
| | |
|
| | | ########################### TPlayerMailInfo define #############################
|
| | | pmiNull = 0 #/<空
|
| | | pmiNewLetter = 1 #/<æ°é®ä»¶
|
| | | pmiFull = 2 #/<é®ç®±å·²æ»¡
|
| | |
|
| | |
|
| | | MailExistTime = 30 # é®ä»¶å卿¶é´ 30天
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | |
|
| | | import os.path
|
| | | import sys
|
| | | from Common import mylog
|
| | | import CommonDefine
|
| | | from datetime import datetime
|
| | | from uuid import uuid1
|
| | | import pymongo
|
| | | import traceback
|
| | | #from Config import DBConfig
|
| | | import base64
|
| | | from DBCommon import error
|
| | |
|
| | |
|
| | | __state = CommonDefine.mssNone
|
| | | __appPath = ''
|
| | |
|
| | | def setServerState(newState):
|
| | | global __state
|
| | | __state = newState
|
| | | |
| | | def getServerState():
|
| | | global __state
|
| | | return __state
|
| | |
|
| | | def getAppPath():
|
| | | global __appPath
|
| | | if not __appPath == '':
|
| | | return __appPath
|
| | | if len(sys.argv) < 1:
|
| | | msg = error.formatMsg('fatal', error.ERROR_NO_39, 'cmd line param error!')
|
| | | mylog.fatal(msg)
|
| | | return ''
|
| | | __appPath = os.path.dirname(sys.argv[0])
|
| | | return __appPath
|
| | |
|
| | |
|
| | | def GetTransactionIDStr(len):
|
| | | nowtime = datetime.today()
|
| | | return ("%04d%02d%02d%02d%02d%02d%03d%X-%X-%X-%X%X%X"%(nowtime.timetuple()[:6] + tuple([nowtime.microsecond/1000]) + uuid1().fields))[:len]
|
| | |
|
| | |
|
| | | BASE64_ENCODE_CNT = 3
|
| | | XOR_KEY = 151
|
| | | def GetEncodePsw(psw):
|
| | | ret = ""
|
| | | try:
|
| | | for i in range(BASE64_ENCODE_CNT):
|
| | | psw = base64.decodestring(psw)
|
| | | except:
|
| | | msg = error.formatMsg('error', error.ERROR_NO_40, '%s'%traceback.format_exc())
|
| | | mylog.error(msg) |
| | | return False,ret
|
| | | |
| | | for i in psw:
|
| | | ret += chr(ord(i)^XOR_KEY)
|
| | | return True, ret
|
| | |
|
| | |
|
| | | #ç»å½æ°æ®åºéªè¯
|
| | | def LoginMongoDB(user, pwd, ip = '', port = '', connection = None ):
|
| | | try:
|
| | | if not connection:
|
| | | connection = pymongo.Connection(ip, port)
|
| | | db = connection.admin
|
| | | return db.authenticate(user, pwd) |
| | | except:
|
| | | mylog.info('Login mongodb failed:user = %s,pwd = %s'%(user, pwd))
|
| | | msg = error.formatMsg('error', error.ERROR_NO_41, '%s'%traceback.format_exc())
|
| | | mylog.error(msg) |
| | | return False |
| | | |
| | | |
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | |
|
| | | from Common import mylog
|
| | | import CommonDefine
|
| | |
|
| | | ERROR_NO_1 = 1
|
| | | ERROR_NO_2 = 2
|
| | | ERROR_NO_3 = 3
|
| | | ERROR_NO_4 = 4
|
| | | ERROR_NO_5 = 5
|
| | | ERROR_NO_6 = 6
|
| | | ERROR_NO_7 = 7
|
| | | ERROR_NO_8 = 8
|
| | | ERROR_NO_9 = 9
|
| | | ERROR_NO_10 = 10
|
| | | ERROR_NO_11 = 11
|
| | | ERROR_NO_12 = 12
|
| | | ERROR_NO_13 = 13
|
| | | ERROR_NO_14 = 14
|
| | | ERROR_NO_15 = 15
|
| | | ERROR_NO_16 = 16
|
| | | ERROR_NO_17 = 17
|
| | | ERROR_NO_18 = 18
|
| | | ERROR_NO_19 = 19
|
| | | ERROR_NO_20 = 20
|
| | | ERROR_NO_21 = 21
|
| | | ERROR_NO_22 = 22
|
| | | ERROR_NO_23 = 23
|
| | | ERROR_NO_24 = 24
|
| | | ERROR_NO_25 = 25
|
| | | ERROR_NO_26 = 26
|
| | | ERROR_NO_27 = 27
|
| | | ERROR_NO_28 = 28
|
| | | ERROR_NO_29 = 29
|
| | | ERROR_NO_30 = 30
|
| | | ERROR_NO_31 = 31
|
| | | ERROR_NO_32 = 32
|
| | | ERROR_NO_33 = 33
|
| | | ERROR_NO_34 = 34
|
| | | ERROR_NO_35 = 35
|
| | | ERROR_NO_36 = 36
|
| | | ERROR_NO_37 = 37
|
| | | ERROR_NO_38 = 38
|
| | | ERROR_NO_39 = 39
|
| | | ERROR_NO_40 = 40
|
| | | ERROR_NO_41 = 41
|
| | | ERROR_NO_42 = 42
|
| | | ERROR_NO_43 = 43
|
| | | ERROR_NO_44 = 44
|
| | | ERROR_NO_45 = 45
|
| | | ERROR_NO_46 = 46
|
| | | ERROR_NO_47 = 47
|
| | | ERROR_NO_48 = 48
|
| | | ERROR_NO_49 = 49
|
| | | ERROR_NO_50 = 50
|
| | | ERROR_NO_51 = 51
|
| | | ERROR_NO_52 = 52
|
| | | ERROR_NO_53 = 53
|
| | | ERROR_NO_54 = 54
|
| | | ERROR_NO_55 = 55
|
| | | ERROR_NO_56 = 56
|
| | | ERROR_NO_57 = 57
|
| | | ERROR_NO_58 = 58
|
| | | ERROR_NO_59 = 59
|
| | | ERROR_NO_60 = 60
|
| | | ERROR_NO_61 = 61
|
| | | ERROR_NO_62 = 62
|
| | | ERROR_NO_63 = 63
|
| | | ERROR_NO_64 = 64
|
| | | ERROR_NO_65 = 65
|
| | | ERROR_NO_66 = 66
|
| | | ERROR_NO_67 = 67
|
| | | ERROR_NO_68 = 68
|
| | | ERROR_NO_69 = 69
|
| | | ERROR_NO_70 = 70
|
| | | ERROR_NO_71 = 71
|
| | | ERROR_NO_72 = 72
|
| | | ERROR_NO_73 = 73
|
| | | ERROR_NO_74 = 74
|
| | | ERROR_NO_75 = 75
|
| | | ERROR_NO_76 = 76
|
| | | ERROR_NO_77 = 77
|
| | | ERROR_NO_78 = 78
|
| | | ERROR_NO_79 = 79
|
| | | ERROR_NO_80 = 80
|
| | | ERROR_NO_81 = 81
|
| | | ERROR_NO_82 = 82
|
| | | ERROR_NO_83 = 83
|
| | | ERROR_NO_84 = 84
|
| | | ERROR_NO_85 = 85
|
| | | ERROR_NO_86 = 86
|
| | | ERROR_NO_87 = 87
|
| | | ERROR_NO_88 = 88
|
| | | ERROR_NO_89 = 89
|
| | | ERROR_NO_90 = 90
|
| | | ERROR_NO_91 = 91
|
| | | ERROR_NO_92 = 92
|
| | | ERROR_NO_93 = 93
|
| | | ERROR_NO_94 = 94
|
| | | ERROR_NO_95 = 95
|
| | | ERROR_NO_96 = 96
|
| | | ERROR_NO_97 = 97
|
| | | ERROR_NO_98 = 98
|
| | | ERROR_NO_99 = 99
|
| | | ERROR_NO_100 = 100
|
| | | ERROR_NO_101 = 101
|
| | | ERROR_NO_102 = 102
|
| | | ERROR_NO_103 = 103
|
| | | ERROR_NO_104 = 104
|
| | | ERROR_NO_105 = 105
|
| | | ERROR_NO_106 = 106
|
| | | ERROR_NO_107 = 107
|
| | | ERROR_NO_108 = 108
|
| | | ERROR_NO_109 = 109
|
| | | ERROR_NO_110 = 110
|
| | | ERROR_NO_111 = 111
|
| | | ERROR_NO_112 = 112
|
| | | ERROR_NO_113 = 113
|
| | | ERROR_NO_114 = 114
|
| | | ERROR_NO_115 = 115
|
| | | ERROR_NO_116 = 116
|
| | | ERROR_NO_117 = 117
|
| | | ERROR_NO_118 = 118
|
| | | ERROR_NO_119 = 119
|
| | | ERROR_NO_120 = 120
|
| | | ERROR_NO_121 = 121
|
| | | ERROR_NO_122 = 122
|
| | | ERROR_NO_123 = 123
|
| | | ERROR_NO_124 = 124
|
| | | ERROR_NO_125 = 125
|
| | | ERROR_NO_126 = 126
|
| | | ERROR_NO_127 = 127
|
| | | ERROR_NO_128 = 128
|
| | | ERROR_NO_129 = 129
|
| | | ERROR_NO_130 = 130
|
| | | ERROR_NO_131 = 131
|
| | | ERROR_NO_132 = 132
|
| | | ERROR_NO_133 = 133
|
| | | ERROR_NO_134 = 134
|
| | | ERROR_NO_135 = 135
|
| | | ERROR_NO_136 = 136
|
| | | ERROR_NO_137 = 137
|
| | | ERROR_NO_138 = 138
|
| | | ERROR_NO_139 = 139
|
| | | ERROR_NO_140 = 140
|
| | | ERROR_NO_141 = 141
|
| | | ERROR_NO_142 = 142
|
| | | ERROR_NO_143 = 143
|
| | | ERROR_NO_144 = 144
|
| | | ERROR_NO_145 = 145
|
| | | ERROR_NO_146 = 146
|
| | | ERROR_NO_147 = 147
|
| | | ERROR_NO_148 = 148
|
| | | ERROR_NO_149 = 149
|
| | | ERROR_NO_150 = 150
|
| | | ERROR_NO_151 = 151
|
| | | ERROR_NO_152 = 152
|
| | | ERROR_NO_153 = 153
|
| | | ERROR_NO_154 = 154
|
| | | ERROR_NO_155 = 155
|
| | | ERROR_NO_156 = 156
|
| | | ERROR_NO_157 = 157
|
| | | ERROR_NO_158 = 158
|
| | | ERROR_NO_159 = 159
|
| | | ERROR_NO_160 = 160
|
| | | ERROR_NO_161 = 161
|
| | | ERROR_NO_162 = 162
|
| | | ERROR_NO_163 = 163
|
| | | ERROR_NO_164 = 164
|
| | | ERROR_NO_165 = 165
|
| | |
|
| | | __errorDict = \
|
| | | {
|
| | | "fatal_1":(ERROR_NO_1, 'python version error!'),
|
| | | "fatal_2":(ERROR_NO_2, 'pymongo version error!'),
|
| | | "fatal_3":(ERROR_NO_3, 'mongodb version error!'),
|
| | | "fatal_4":(ERROR_NO_4, 'mongodb version error!'), |
| | | "error_5":(ERROR_NO_5, 'encode error'),
|
| | | "error_6":(ERROR_NO_6, 'encode error'), |
| | | "error_7":(ERROR_NO_7, 'python coding error'),
|
| | | "error_8":(ERROR_NO_8, 'python coding error'),
|
| | | "error_9":(ERROR_NO_9, 'python coding error'),
|
| | | "error_10":(ERROR_NO_10, 'invalid pos'), |
| | | "error_11":(ERROR_NO_11, 'lack of data'), |
| | | "fatal_12":(ERROR_NO_12, 'invalid resource version no'), |
| | | "DeployError_13":(ERROR_NO_13, 'user db password is not correct!'), |
| | | "DeployError_14":(ERROR_NO_14, 'sys db password is not correct!'), |
| | | "DeployError_15":(ERROR_NO_15, 'log db password is not correct!'), |
| | | "fatal_16":(ERROR_NO_16, 'socket error'), |
| | | "fatal_17":(ERROR_NO_17, 'unknown error'), |
| | | "error_18":(ERROR_NO_18, 'read config error'), |
| | | "DeployError_19":(ERROR_NO_19, 'user db mongodb longin user name is empty'), |
| | | "DeployError_20":(ERROR_NO_20, 'decrypt userdb password error'), |
| | | "DeployError_21":(ERROR_NO_21, 'user db mongodb longin pwd is empty'), |
| | | "DeployError_22":(ERROR_NO_22, 'sys db mongodb longin user name is empty'),
|
| | | "DeployError_23":(ERROR_NO_23, 'Decrypt sysdb_pwd faied'), |
| | | "DeployError_24":(ERROR_NO_24, 'sys db mongodb longin pwd is empty'), |
| | | "DeployError_25":(ERROR_NO_25, 'log db mongodb longin user name is empty'),
|
| | | "DeployError_26":(ERROR_NO_26, 'Decrypt logdb_pwd faied'), |
| | | "DeployError_27":(ERROR_NO_27, 'log db mongodb longin pwd is empty'), |
| | | "error_28":(ERROR_NO_28, 'unknown error'), |
| | | "fatal_29":(ERROR_NO_29, 'Init config failed'),
|
| | | "DesignError_30":(ERROR_NO_30, 'read sysdb table failed'), |
| | | "fatal_31":(ERROR_NO_31, 'read sysdb table failed'), |
| | | "DesignError_32":(ERROR_NO_32, 'open sysdb table file failed'), |
| | | "DesignError_33":(ERROR_NO_33, 'read sysdb table failed'), |
| | | "DesignError_34":(ERROR_NO_34, 'open sysdb table file failed'), |
| | | "error_35":(ERROR_NO_35, 'seq fail'), |
| | | "error_36":(ERROR_NO_36, 'unknown error'), |
| | | "error_37":(ERROR_NO_37, 'DumpData:write data to file fail'), |
| | | "error_38":(ERROR_NO_38, 'DumpData:unknown error'), |
| | | "fatal_39":(ERROR_NO_39, 'unexpceted param error'), |
| | | "error_40":(ERROR_NO_40, 'GetEncodePswï¼unknown error'), |
| | | "error_41":(ERROR_NO_41, 'LoginMongoDBï¼unknown error'),
|
| | | "error_42":(ERROR_NO_42, 'requestType error'), |
| | | "error_43":(ERROR_NO_43, 'pack not processed'), |
| | | "fatal_44":(ERROR_NO_44, 'fail to reconnect mongod'), |
| | | "fatal_45":(ERROR_NO_45, '__requestProcessï¼unknown error'), |
| | | "error_46":(ERROR_NO_46, 'pack is none, program logic error'), |
| | | "error_47":(ERROR_NO_47, 'pack is too short'), |
| | | "error_48":(ERROR_NO_48, 'pack is not processed'), |
| | | "error_49":(ERROR_NO_49, 'insert SvrStatus failed'), |
| | | "error_50":(ERROR_NO_50, 'onCoinChangeLog!unknown error'), |
| | | "fatal_51":(ERROR_NO_51, 'unexpceted param error'), |
| | | "DesignError_52":(ERROR_NO_52, 'resource version file not found'), |
| | | "fatal_53":(ERROR_NO_53, 'OnGetGameData!unknown error'), |
| | | "DesignError_54":(ERROR_NO_54, 'load PyReadData.dll failed, may be not exist'), |
| | | "DesignError_55":(ERROR_NO_55, 'load py sysdb data, may be not exist'), |
| | | "DeployError_56":(ERROR_NO_56, 'mapServer SaveServer switch may be not open'), |
| | | "error_57":(ERROR_NO_57, 'load tagDSAccount failed'), |
| | | "error_58":(ERROR_NO_58, 'OnSavePlayerInfo handle the dismatch type'), |
| | | "error_59":(ERROR_NO_59, 'Player save data failed!'), |
| | | "error_60":(ERROR_NO_60, 'Player data crc error'), |
| | | "error_61":(ERROR_NO_61, 'updatePlayerAccState!pymongo.errors.OperationFailure'),
|
| | | "error_62":(ERROR_NO_62, 'onCreateRoleServerCheckIsHaveRole!unexpetcted exception'),
|
| | | "error_63":(ERROR_NO_63, 'onCreateRoleServerCheckPlayerExist!unexpetcted exception'), |
| | | "error_64":(ERROR_NO_64, 'onCreateRoleServerRequestCreateRole!unexpetcted exception'),
|
| | | "error_65":(ERROR_NO_65, 'insert tagDBPlayer failed'), |
| | | "error_66":(ERROR_NO_66, 'insert player failed'), |
| | | "error_67":(ERROR_NO_67, 'onGetPlayerDetail:unknown error'), |
| | | "error_68":(ERROR_NO_68, 'onGetPlayerDetail:unknown error'), |
| | | "error_69":(ERROR_NO_69, 'Player should not be leader of two familys'), |
| | | "error_70":(ERROR_NO_70, 'onGetPlayerDetail:KeyError'), |
| | | "fatal_71":(ERROR_NO_71, 'SERVER_DATA_VERSION_NO mismatch'), |
| | | "error_72":(ERROR_NO_72, 'crash data crc mismatch'), |
| | | "error_73":(ERROR_NO_73, 'crash data crc mismatch'),
|
| | | "error_74":(ERROR_NO_74, 'lack of gmcmd data'),
|
| | | "fatal_75":(ERROR_NO_75, 'Compress gameserver player data error'), |
| | | "fatal_76":(ERROR_NO_76, 'GAMESERVER_DATA_VERSION_NO mismatch'), |
| | | "error_77":(ERROR_NO_77, 'discompress gameserver data fail'), |
| | | "error_78":(ERROR_NO_78, 'short of gameServerWorldData'), |
| | | "error_79":(ERROR_NO_79, 'short of GameServerPlayerData'), |
| | | "error_80":(ERROR_NO_80, 'discompress gameserver data fail'), |
| | | "error_81":(ERROR_NO_81, 'short of gameServerWorldData'), |
| | | "error_82":(ERROR_NO_82, 'invalid player mail data'), |
| | | "error_83":(ERROR_NO_83, 'OnInsertAcc!unknown error'), |
| | | "error_84":(ERROR_NO_84, 'OnPlayerIDMarkDeleted!unknown error'), |
| | | "error_85":(ERROR_NO_85, 'OnGetCoin!unknown error'), |
| | | "error_86":(ERROR_NO_86, 'CheckUpdateC tagDSAccount failed!'),
|
| | | "error_87":(ERROR_NO_87, 'insert tagAccCoins failed'), |
| | | "error_88":(ERROR_NO_88, 'OnCoinChange!unknown error'), |
| | | "error_89":(ERROR_NO_89, 'OnCheckPlayerExist!unknown error'),
|
| | | "error_90":(ERROR_NO_90, 'save tagGMOper failed'), |
| | | "error_91":(ERROR_NO_91, 'lack of pack data'), |
| | | "error_92":(ERROR_NO_92, 'insert tagServerDataVersionNO failed'), |
| | | "error_93":(ERROR_NO_93, 'lack of pack data'), |
| | | "error_94":(ERROR_NO_94, 'tagDBMapServerInfo adoCheckUpdateEx failed'), |
| | | "error_95":(ERROR_NO_95, 'tagDBPlayerSaveCoinLog:lack of pack data'),
|
| | | "fatal_96":(ERROR_NO_96, 'OnUpdateTotalSavePoint!unknown error'), |
| | | "error_97":(ERROR_NO_97, 'OnGetPlayerMailState!unknown error'), |
| | | "error_98":(ERROR_NO_98, 'OnGetMailDetail!unknown error'), |
| | | "error_99":(ERROR_NO_99, 'OnGetPlayerMail!unknown error'),
|
| | | "error_100":(ERROR_NO_100, 'tagDBMailList_SaveSysMail lack of pack data'), |
| | | "error_101":(ERROR_NO_101, "OnAddPlayerMailByAccID: exist a same mailid"), |
| | | "error_102":(ERROR_NO_102, "OnAddPlayerMailByAccID!unknown error"), |
| | | "error_103":(ERROR_NO_103, "DeleteMail fail"), |
| | | "error_104":(ERROR_NO_104, "Delete Mail Item fail"), |
| | | "error_105":(ERROR_NO_105, "OnDeleteMail!unknown error"), |
| | | "error_106":(ERROR_NO_106, "load mail fail"), |
| | | "error_107":(ERROR_NO_107, "update mail fail"), |
| | | "error_108":(ERROR_NO_108, "OnUpdateMail!adoDeleteByIndex failed"), |
| | | "error_109":(ERROR_NO_109, "OnUpdateMail!unknown error"), |
| | | "error_110":(ERROR_NO_110, "OnQueryCanSendMail!unknown error"), |
| | | "error_111":(ERROR_NO_111, "update tagAccIDSendPrize failed"),
|
| | | "error_112":(ERROR_NO_112, "update tagAccIDSendPrize failed"), |
| | | "error_113":(ERROR_NO_113, "OnAccIDSendPrize!unknown error"), |
| | | "error_114":(ERROR_NO_114, "OnCheckItemPrize!unknown error"), |
| | | "error_115":(ERROR_NO_115, "OnCheckLoadAcc!unknown error"), |
| | | "error_116":(ERROR_NO_116, "OnAddAccItem!unknown error"), |
| | | "error_117":(ERROR_NO_117, "UpdateTelLockState failed"),
|
| | | "error_118":(ERROR_NO_118, "OnUpdateTelLockState!unknown error"),
|
| | | "error_119":(ERROR_NO_119, "OnUpdateMTTUID failed"), |
| | | "error_120":(ERROR_NO_120, "OnUpdateMTTUID!unknown error"), |
| | | "error_121":(ERROR_NO_121, "OnUpdateAccAdult failed"),
|
| | | "error_122":(ERROR_NO_122, "OnUpdateAccAdult!unknown error"), |
| | | "error_123":(ERROR_NO_123, "OnAddExpiation!unknown error"), |
| | | "error_124":(ERROR_NO_124, "OnAddPetExpiation!unknown error"), |
| | | "error_125":(ERROR_NO_125, "lack of pack data"),
|
| | | "error_125":(ERROR_NO_126, "ServerMergeDeleteRole failed"),
|
| | | "error_127":(ERROR_NO_127, "OnServerMergeDeleteRole failed"), |
| | | "error_128":(ERROR_NO_128, "OnServerMergeUpdateAccState failed"),
|
| | | "error_129":(ERROR_NO_129, "OnServerMergeUpdateAccState!unknown error"), |
| | | "error_130":(ERROR_NO_130, "insert tagDBPlayerChangeNameLog failed"), |
| | | "error_131":(ERROR_NO_131, "OnServerMergeChangeName update failed"), |
| | | "error_132":(ERROR_NO_132, "OnServerMergeChangeName!unknown error"), |
| | | "error_133":(ERROR_NO_133, "Insert tagDBImpeach failed"), |
| | | "error_134":(ERROR_NO_134, "OnServerMergeChangeName!unknown error"), |
| | | "error_135":(ERROR_NO_135, "Invalid pack data"),
|
| | | "error_136":(ERROR_NO_136, "PackSign Error"), |
| | | "error_137":(ERROR_NO_137, "Pack too big"),
|
| | | "error_138":(ERROR_NO_138, "getVersionByIndex!IndexError"),
|
| | | "error_139":(ERROR_NO_139, "getMinorVersionByIndex!IndexError"), |
| | | "error_140":(ERROR_NO_140, "getLanguageVersionByIndex!IndexError"), |
| | | "DesignError_141":(ERROR_NO_141, "LoadVersionFile!IOError.Version file may be not exist"), |
| | | "fatal_142":(ERROR_NO_142, "LoadVersionFile!unknown error."), |
| | | "DesignError_143":(ERROR_NO_143, "not version in Version.chver file"), |
| | | "DesignError_144":(ERROR_NO_144, "version format error!"),
|
| | | "fatal_145":(ERROR_NO_145, "LoadVersions!unknown error"),
|
| | | "error_146":(ERROR_NO_146, "Insert failed"),
|
| | | "error_147":(ERROR_NO_147, "Lack of data"), |
| | | "error_148":(ERROR_NO_148, "ReadData!invalid data pos"), |
| | | "error_149":(ERROR_NO_149, "lack of data"), |
| | | "error_150":(ERROR_NO_150, "ReadData!invalid data pos"), |
| | | "error_151":(ERROR_NO_151, "lack of data"),
|
| | | "error_152":(ERROR_NO_152, "Insert failed"), |
| | | "error_153":(ERROR_NO_153, "Update failed"), |
| | | "error_154":(ERROR_NO_154, "UpdateEx failed"), |
| | | "error_155":(ERROR_NO_155, "adoDeleteByIndex failed"), |
| | | "DeployError_156":(ERROR_NO_156, 'Log4Me.dll not found!'), |
| | | "warning_157":(ERROR_NO_157, "PyReadData.dll not found!"), |
| | | "error_158":(ERROR_NO_158, "CEventShellProxy InitDll Fail!"), |
| | | "warning_159":(ERROR_NO_159, "CEventShellProxy SendEvent Fail!"),
|
| | | "error_160":(ERROR_NO_160, "CEventShellProxy DeInitDll Fail!"), |
| | | "error_161":(ERROR_NO_161, "#PythonError#Call EventProcess.OnDayProcess() Fail!!"), |
| | | "DeployError_162":(ERROR_NO_162, "TDateTimeFunc.dll not found!!"), |
| | | }
|
| | |
|
| | | SHOW_ERROR_IF_DEBUG = 1
|
| | | SHOW_ERROR_IF_RELEASE = 2
|
| | | SHOW_ERROR_ALL = 3
|
| | |
|
| | | def formatMsg(type, ID, info):
|
| | | global __errorDict
|
| | | error = __errorDict.get('%s_%s'%(type, ID))
|
| | | if len(error) < 2:
|
| | | return 'Unknown Error'
|
| | | return 'ID :#%s\r\nMsg :%s\r\nDetail:%s'%(error[0], error[1], info) |
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | |
|
| | | import sys
|
| | | import binascii
|
| | | try:
|
| | | import threading
|
| | | except ImportError:
|
| | | import dummy_threading as threading |
| | | from Common import (CommFuncEx, CommFunc, mylog)
|
| | | from DBCommon import (CommonDefine, error)
|
| | | import traceback
|
| | |
|
| | |
|
| | | SIDErrorCnt = 0
|
| | | MAGIC_SID = 2266520
|
| | |
|
| | | SIDErrorCounterLock = threading.Lock()
|
| | |
|
| | | ADOExceptionCnt = 0
|
| | | AdoExceptionCounterLock = threading.Lock()
|
| | |
|
| | | #éè¦å¤çº¿ç¨ä¿æ¤
|
| | | def addADOExceptionCount():
|
| | | global ADOExceptionCnt
|
| | | global AdoExceptionCounterLock
|
| | | AdoExceptionCounterLock.acquire()
|
| | | ADOExceptionCnt += 1
|
| | | AdoExceptionCounterLock.release()
|
| | | return ADOExceptionCnt
|
| | |
|
| | | def getADOExceptionCount():
|
| | | return ADOExceptionCnt
|
| | | |
| | | def fix_outgoingText(text):
|
| | | if isinstance(text, unicode):
|
| | | return CommFuncEx.UnicodeToEncoding(CommonDefine.ENCODING, text)[1]
|
| | | #䏿¯unicode,ä¸å¤ç
|
| | | return text
|
| | |
|
| | | def fix_incomingText(text):
|
| | | if isinstance(text, str):
|
| | | return CommFuncEx.EncodingToUnicode(CommonDefine.ENCODING, text)[1]
|
| | | #䏿¯å符串ï¼ä¸å¤ç
|
| | | return text
|
| | |
|
| | | def fix_incoming(dictObj):
|
| | | for k, v in dictObj.iteritems():
|
| | | if isinstance(v, str):
|
| | | result, convertText = CommFuncEx.EncodingToUnicode(CommonDefine.ENCODING, v)
|
| | | if result:
|
| | | dictObj[k] = convertText
|
| | | |
| | | def fix_outgoing(dictObj):
|
| | | for k, v in dictObj.iteritems():
|
| | | if isinstance(v, unicode):
|
| | | result, convertText = CommFuncEx.UnicodeToEncoding(CommonDefine.ENCODING, v)
|
| | | if result:
|
| | | dictObj[k] = convertText
|
| | |
|
| | | def addSIDErrorCnt():
|
| | | global SIDErrorCnt
|
| | | global SIDErrorCounterLock
|
| | | SIDErrorCounterLock.acquire()
|
| | | SIDErrorCnt += 1
|
| | | SIDErrorCounterLock.release()
|
| | | return SIDErrorCnt
|
| | |
|
| | | def getSIDErrorCnt():
|
| | | global SIDErrorCnt
|
| | | return SIDErrorCnt
|
| | | |
| | | def makeSID(data):
|
| | | #mylog.debug('makeSID(%s) = %s'%(data, binascii.crc32(data)))
|
| | | return binascii.crc32(data)
|
| | |
|
| | | def checkSID(data, expectSID):
|
| | | global MAGIC_SID
|
| | | if expectSID == MAGIC_SID:
|
| | | return True
|
| | | calcSID = makeSID(data)
|
| | | if expectSID == calcSID:
|
| | | return True
|
| | | mylog.debug('expectSID = %s calcSID = %s'%(expectSID, calcSID))
|
| | | return False
|
| | |
|
| | | SPLITCHAR = '\t'
|
| | |
|
| | | def sysDBLoadFromFile(className, fileName):
|
| | | data = ''
|
| | | try:
|
| | | fileObj = open(fileName, 'rb', 0)
|
| | | mylog.info('Loading %s...'%fileName)
|
| | | try:
|
| | | rowObj = className()
|
| | | rowCnt = 0
|
| | | for line in fileObj:
|
| | | rowCnt += 1
|
| | | if rowCnt == 1:
|
| | | continue #skip header
|
| | | # logging.getLogger('sysDBLoadFromFile').debug('line %d = %s'%(rowCnt,line))
|
| | | rowObj.readLine(line)
|
| | | data += rowObj.getBuffer()
|
| | | except IOError,(readErrNo, readStdErr):
|
| | | msg = error.formatMsg('DesignError', error.ERROR_NO_30, 'Read file "%s" failed! errno = %s stdErr = %s'%(fileName, readErrNo, readStdErr))
|
| | | mylog.DesignError(msg, True)
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, 0)
|
| | | return data
|
| | | except:
|
| | | msg = error.formatMsg('fatal', error.ERROR_NO_31, 'Read file"%s" failed! Exception = %s'%(fileName, traceback.format_exc()))
|
| | | mylog.fatal(msg)
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, 0)
|
| | | return data
|
| | | else:
|
| | | fileObj.close()
|
| | | # logging.getLogger('sysDBLoadFromFile').debug('data = %s'%binascii.b2a_hex(data))
|
| | | mylog.info('Load %s cnt = %s'%(fileName, rowCnt - 1))
|
| | | |
| | | buf = ''
|
| | | buf = CommFunc.WriteDWORD(buf, rowCnt - 1)
|
| | | buf = CommFunc.WriteString(buf, len(data), data)
|
| | | return buf
|
| | | except IOError, (errno, stderr):
|
| | | msg = error.formatMsg('DesignError', error.ERROR_NO_32, 'Can not open %s!errno = %s stderr = %s'%(fileName, errno, stderr))
|
| | | mylog.DesignError(msg)
|
| | | |
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, 0)
|
| | | return data
|
| | | |
| | | def SysDBUpdate(className, collection, fileName):
|
| | | collection.drop()
|
| | | try:
|
| | | fileObj = open(fileName,'rb', 0)
|
| | | try:
|
| | | rowObj = className()
|
| | | row = 0
|
| | | for line in fileObj:
|
| | | row += 1
|
| | | if row == 1:
|
| | | continue #skip header
|
| | | # print 'line_%d=%s'%(Col,line)
|
| | | rowObj.readLine(line)
|
| | | rowObj.adoInsert(collection)
|
| | | except IOError,(readErrNo, readStdErr):
|
| | | msg = error.formatMsg('DesignError', error.ERROR_NO_33, 'Read %s failed!errno = %s stderr = %s'%(fileName, readErrNo, readStdErr))
|
| | | mylog.DesignError(msg)
|
| | | finally:
|
| | | fileObj.close()
|
| | | except IOError,(errno, stderr):
|
| | | msg = error.formatMsg('DesignError', error.ERROR_NO_34, 'Can not open %s! errno = %s stderr = %s'%(fileName, errno, stderr))
|
| | | mylog.DesignError(msg)
|
| | | |
| | | def seq(db, collectionName, fieldName, feed, increment):
|
| | | try:
|
| | | result = 0
|
| | | collection = db['%s_seq'%collectionName]
|
| | | resultObj = collection.find_and_modify(query={'_id':fieldName}, update={'$inc':{'seq':increment}}, new=True)
|
| | | if resultObj:
|
| | | result = resultObj['seq']
|
| | | else:
|
| | | resultObj = collection.find_and_modify(query={'_id':fieldName}, update={'$set':{'seq':feed}}, new=True,
|
| | | upsert=True)
|
| | | if resultObj:
|
| | | result = resultObj['seq']
|
| | | else:
|
| | | msg = error.formatMsg('error', error.ERROR_NO_35, 'seq failed!')
|
| | | mylog.error(msg)
|
| | | return 0
|
| | | except:
|
| | | msg = error.formatMsg('error', error.ERROR_NO_36, "seq failed, colname = %s, fieldname = %s, feed = %d, increment = %d, error = %s"%(collectionName, fieldName, feed, increment, traceback.format_exc()))
|
| | | mylog.error(msg)
|
| | | return result
|
| | | |
| | |
|
| | | |
New file |
| | |
| | | cd /d c:\mongo\bin
|
| | | mongorestore -u sa -p sa --drop D:\2018-09-09 |