From a2e3b63feb8b2c7cca675ca9225cef728ab85b8f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 17 Jun 2020 10:39:56 +0800 Subject: [PATCH] remove robot.py --- server/tools/robot/virtualclient/robot.py | 195 ---------------------- 1 file changed, 195 deletions(-) delete mode 100644 server/tools/robot/virtualclient/robot.py diff --git a/server/tools/robot/virtualclient/robot.py b/server/tools/robot/virtualclient/robot.py deleted file mode 100644 index 4f65c3a..0000000 --- a/server/tools/robot/virtualclient/robot.py +++ /dev/null @@ -1,195 +0,0 @@ -# -*- coding: utf-8 -*- -import websocket -import sys -import ssl -import json -import datetime -import urllib.request - -import cs_proto_pb2 -import cs_msgid_pb2 - -#from google.protobuf import json_format -import pprint - -try: - import thread -except ImportError: - import _thread as thread -import time - -def getSession(account_id): - url = 'https://login-test.kingsome.cn/webapp/index.php?c=Login&a=auth&' - params = { - 'openid': sys.argv[2], - 'token': sys.argv[2], - 'gameid': 1008, - 'channel': '6000' - } - real_url = url + urllib.parse.urlencode(params) - print(real_url) - req = urllib.request.Request(real_url) - data = urllib.request.urlopen(req).read() - print(data) - return json.loads(data.decode('utf-8'))['session_id'] - -def inputCommand(ws): - cmdline= input('') - idx = cmdline.find(' ') - if idx <= 0: - cmdline += '()' - else: - cmdline = cmdline[:idx] + '(' + cmdline[idx + 1:] + ')' - msg = eval('cs_proto_pb2.' + cmdline) - sendMsg(ws, msg) - inputCommand(ws) - -def getSMMsgEnum(sm_msgid): - sm_e = cs_msgid_pb2._SMMESSAGEID_E - for e in sm_e.values: - if e.number == sm_msgid: - return e - return None - -def getSMMsg(sm_msgid): - sm_e = getSMMsgEnum(sm_msgid) - msg = eval('cs_proto_pb2.' + sm_e.name[1:] + '()') - return msg - -#g_remote_ip = "ws://127.0.0.1:" + sys.argv[1] -g_remote_ip = sys.argv[1] -g_account_id = '6000_2001_' + sys.argv[2] -g_session_id = getSession(g_account_id) -g_server_id = sys.argv[4] -g_seqid = 1000 -g_login_time = time.time() -g_active_player_id = 0 - -recv_buf = bytearray() - -def sendMsg(ws, msg): -# print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')) - global g_seqid - ++g_seqid - msgid = eval('cs_msgid_pb2._' + msg.DESCRIPTOR.name) - - enmsg = msg.SerializeToString() - pktlen_str = bytes([(len(enmsg) & 0xFF) , (len(enmsg) >> 8 & 0xFF)]) - msgid_str = bytes([(msgid & 0xFF) , (msgid >> 8 & 0xFF)]) - seqid_str = bytes([(g_seqid & 0xFF) , (g_seqid >> 8 & 0xFF) , \ - (g_seqid >> 16 & 0xFF) , (g_seqid >> 24 & 0xFF)]) - sign_str = bytes([ord('K'), ord('S')]) - reserved_str = bytes([0, 0]) - buff = pktlen_str + msgid_str + seqid_str + sign_str + reserved_str + enmsg - - ws.send (buff, 2) -# print(time.time(), time.strftime('[%H:%M:%S]'), msg.DESCRIPTOR.name + '{') -# print(str(msg),) -# print('}') -# print('') - -def sendCMMove(ws): - msg = cs_proto_pb2.CMMove() - msg.spectate = True - sendMsg(ws, msg) - -def onMessage(ws, message): - global recv_buf - -# print('onMessage', len(message)) - data = bytearray(message) - recv_buf += data - parserPacket(ws) - -def parserPacket(ws): - global recv_buf - while len(recv_buf) >= 8: - pktlen = recv_buf[0] + (recv_buf[1] << 8) - msgid = recv_buf[2] + (recv_buf[3] << 8) - seqid = recv_buf[4] + \ - (recv_buf[5] << 8) + \ - (recv_buf[6] << 16) + \ - (recv_buf[7] << 24) - sign = recv_buf[8] + (recv_buf[9] << 8) - resv = recv_buf[10] + (recv_buf[11] << 8) - if len(recv_buf) >= 12 + pktlen: - msgbody = recv_buf[12 : 12 + pktlen] - onUserPacket(ws, msgid, msgbody) - recv_buf = recv_buf[12 + pktlen:] - -def procSMUpdate(msg): - global g_active_player_id - if msg.active_player_id != 0: - g_active_player_id = msg.active_player_id - print(g_active_player_id) - for part_obj in msg.part_objects: - if part_obj.object_type == 1 and part_obj.union_obj_1.obj_uniid == g_active_player_id: - pass -# print(part_obj) - for full_obj in msg.full_objects: - if full_obj.object_type == 1 and full_obj.union_obj_1.obj_uniid == g_active_player_id: - if full_obj.union_obj_1.dead: - print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')) - print(full_obj) - -def onUserPacket(ws, msgid, msgbody): - print('onUserPacket') - global g_login_time - if time.time() - g_login_time > 30: - sendCMMove(ws) - try: - if msgid == 1004: - msg = getSMMsg(msgid) - ret = msg.ParseFromString(msgbody) - procSMUpdate(msg) - if msgid != 1009 and msgid != 1005: - return - print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')) - msg = getSMMsg(msgid) - ret = msg.ParseFromString(msgbody) - print(len(msgbody)) - print(time.time(), time.strftime('[%H:%M:%S]'), msg.DESCRIPTOR.name + '{') - print(str(msg),) - print('}') - print('') - except Exception as e: - print('onUserPacket', e) - -def onError (ws, error): - print (error) - -def onClose (ws): - print ("### closed ###") - -def opOpen (ws): - print('opOpen', time.time()) - def run (*args): - global g_remote_ip - global g_account_id - global g_session_id - global g_server_id - msg = cs_proto_pb2.CMJoin() - msg.server_id = int(g_server_id) - msg.account_id = g_account_id - msg.name = "aozhwei12345678" - print(msg.DESCRIPTOR.name, 'zzzzz') - sendMsg(ws, msg) - while True: - inputCommand(ws) - time.sleep(500) - ws.close () - print ("thread terminating...") - thread.start_new_thread (run, ()) - -print(time.time()) -print(g_remote_ip) - -if __name__ == "__main__": -# websocket.enableTrace(True) - ws = websocket.WebSocketApp (g_remote_ip, - on_message = onMessage, - on_error = onError, - on_close = onClose - ) - ws.on_open = opOpen - ws.run_forever ()