예제 #1
0
 def log(self, uid, name, msg_type, msg, *args):
     """ 记录 """
     msg = RoleLog(msg_type=msg_type, msg=msg % args)
     msg.role_name = uid
     msg.name = name
     log.warn(msg.message)
     self._game.store.save(msg)
예제 #2
0
파일: main.py 프로젝트: soulsharepj/zdzl
    def start(self):
        self.stoped = False
        self.svr = grpc.RpcServer()
        self.svr.bind(self.addr)
        self.svr.register(self)
        self.svr.start()

        # 用来阻塞住主协程
        self._waiter = gevent.event.Event()
        self._waiter_stoped = gevent.event.Event()
        try:
            while 1:
                #检查父进程是否已经关闭
                if not self._exist_pid():
                    self._wait_game_stop()
                    log.warn(u'主进程(%s)已经退出,子进程(%s)将自动关闭', self.pid, os.getpid())
                    os.environ['PARENT_STOPED'] = '1'
                    break
                try:
                    if self._waiter.wait(2):
                        break
                except KeyboardInterrupt:
                    pass
        except Exception as e:
            log.info('subgame app error:%s', e)
        try:
            self._stop()
        finally:
            self._waiter_stoped.set()
        sleep(2)
        self._svr_stop()
        sleep(0.5)
예제 #3
0
파일: pp.py 프로젝트: soulsharepj/zdzl
    def GET(cls, sdk, data):
        """ 收到回调,处理数据 """
        #校验
#        log.info('[pp]PayCallBack:%s', data)
        for fn in cls.FIELDS:
            if fn not in data:
                log.warn('[pp]Param not found:%s', fn)
                return CODE_PARAM, ''

        #rsa验证
        sign = data['sign']
        sdata = sdk.decode_sign(sign)
        for k,v in sdata.iteritems():
            if k == cls.F_STATUS:
                if int(data[k]) != int(v):
                    return CODE_SIGN, 'sign data error'
            elif data[k] != v:
                return CODE_SIGN, 'sign data error'

        if cls.pay_exist(data[cls.F_TORDER]):
            return CODE_SUCC, ''
        #保存
        try:
            if cls.save_data(data[cls.F_PORDER],
                data[cls.F_TORDER],
                cls.is_ok(data),
                data[cls.F_PRICE],
                data):
                return CODE_SUCC, 'save'
        except:
            log.log_except()
        return CODE_FAIL, 'systemError'
예제 #4
0
파일: uc.py 프로젝트: soulsharepj/zdzl
    def GET(cls, sdk, data):
        """ 收到回调,处理数据 """
        #校验
        rs = cls.check_attr(cls.FIELDS, data)
        if not rs:
            return CODE_PARAM, ''
        #rsa验证
        sign = data['sign']
        data = data['data']
        sdata = sdk.get_sign(data)
        if sdata != sign:
            log.warn('[uc]sign data error, sign(%s) sdata(%s)', sign, sdata)
            return CODE_SIGN, 'sign data error'

        if cls.pay_exist(data[cls.F_TORDER]):
            return CODE_SUCC, 'payExistError'
            #保存
        try:
            if cls.save_data(
                data[cls.F_PORDER],
                data[cls.F_TORDER],
                cls.is_ok(data),
                data[cls.F_PRICE],
                data):
                return CODE_SUCC, 'save'
        except:
            log.log_except()
        return CODE_FAIL, 'systemError'
예제 #5
0
    def GET(cls, sdk, data):
        """ 收到回调,处理数据 """
        #校验
        #        log.info('[pp]PayCallBack:%s', data)
        for fn in cls.FIELDS:
            if fn not in data:
                log.warn('[pp]Param not found:%s', fn)
                return CODE_PARAM, ''

        #rsa验证
        sign = data['sign']
        sdata = sdk.decode_sign(sign)
        for k, v in sdata.iteritems():
            if k == cls.F_STATUS:
                if int(data[k]) != int(v):
                    return CODE_SIGN, 'sign data error'
            elif data[k] != v:
                return CODE_SIGN, 'sign data error'

        if cls.pay_exist(data[cls.F_TORDER]):
            return CODE_SUCC, ''
        #保存
        try:
            if cls.save_data(data[cls.F_PORDER], data[cls.F_TORDER],
                             cls.is_ok(data), data[cls.F_PRICE], data):
                return CODE_SUCC, 'save'
        except:
            log.log_except()
        return CODE_FAIL, 'systemError'
예제 #6
0
파일: sdk91.py 프로젝트: hw233/twisted_zdzl
 def GET(cls, sdk, data):
     """ 收到回调,处理数据 """
     #校验
     #        log.info('[sdk91Pay]PayCallBack:%s', data)
     for fn in cls.FIELDS:
         if fn not in data:
             log.warn('[sdk91Pay]Param not found:%s', fn)
             return CODE_PARAM, ''
     #算md5需要用utf8编码
     data_utf8 = dict([(k, v.encode('utf8')) for k, v in data.iteritems()])
     sign = data['Sign']
     sign_t = ''.join(['%%(%s)s' % fn for fn in cls.FIELDS[:-1]])
     sign_str = '%s%s' % (sign_t % data_utf8, sdk.app_key)
     md5_str = md5(sign_str).hexdigest()
     if sign != md5_str:
         log.warn('[sdk91Pay]sign error:%s != %s (%s)', sign, md5_str,
                  sign_str)
         return CODE_SIGN, ''
     if cls.pay_exist(data[cls.F_TORDER]):
         return CODE_SUCC, ''
     #保存
     try:
         if cls.save_data(data[cls.F_PORDER], data[cls.F_TORDER],
                          cls.is_ok(data), data[cls.F_PRICE], data):
             return CODE_SUCC, 'save'
     except:
         log.log_except()
     return CODE_FAIL, 'systemError'
예제 #7
0
파일: dpay.py 프로젝트: soulsharepj/zdzl
    def GET(cls, sdk, data):
        """ 收到回调,处理数据 """
        #校验
#        log.info('[dpay]PayCallBack:%s', data)
        for fn in cls.FIELDS:
            if fn not in data:
                log.warn('[dpay]Param not found:%s', fn)
                return CODE_PARAM, ''
        #算md5需要用utf8编码
        data_utf8 = dict([(k,v.encode('utf8')) for k,v in data.iteritems()])
        sign = data['Sign']
        sign_t = '&'.join(['%s=%%(%s)s' % (fn, fn) for fn in cls.FIELDS[:-1]])
        sign_str = '%s%s' % (sign_t % data_utf8, sdk.app_key)
        if isinstance(sign_str, unicode):
            sign_str = sign_str.encode('ascii')
        md5_str = md5(sign_str).hexdigest()
        if sign != md5_str:
            log.warn('[dpay]sign error:%s != %s (%s)', sign, md5_str, sign_str)
            return CODE_SIGN, ''
        if cls.pay_exist(data[cls.F_TORDER]):
            return CODE_SUCC, ''
            #保存
        try:
            if cls.save_data(data[cls.F_PORDER],
                data[cls.F_TORDER],
                cls.is_ok(data),
                data[cls.F_PRICE],
                data):
                return CODE_SUCC, 'save'
        except:
            log.log_except()
        return CODE_FAIL, 'systemError'
예제 #8
0
파일: ids.py 프로젝트: soulsharepj/zdzl
    def GET(cls, sdk, data):
        """ 收到回调,处理数据 """
        #校验
        for fn in cls.FIELDS:
            if fn not in data:
                log.warn('[idsc]callback Param not found:%s', fn)
                return CODE_PARAM, ''

        #rsa验证
        sign = data['sign']
        sdata = sdk.get_pay_sign(data)
        if sdata != sign:
            log.warn('[idsc]callback sign data error, sign(%s) sdata(%s)', sign, sdata)
            return CODE_SIGN, 'sign data error'

        #保存
        try:
            if cls.save_data(data[cls.F_PORDER],
                data[cls.F_TORDER],
                cls.is_ok(data),
                data[cls.F_PRICE],
                data):
                return CODE_SUCC, 'save'
        except:
            log.log_except()
        return CODE_FAIL, 'systemError'
예제 #9
0
파일: main.py 프로젝트: hw233/twisted_zdzl
    def start(self):
        self.stoped = False
        self.svr = grpc.RpcServer()
        self.svr.bind(self.addr)
        self.svr.register(self)
        self.svr.start()

        # 用来阻塞住主协程
        self._waiter = gevent.event.Event()
        self._waiter_stoped = gevent.event.Event()
        try:
            while 1:
                #检查父进程是否已经关闭
                if not self._exist_pid():
                    self._wait_game_stop()
                    log.warn(u'主进程(%s)已经退出,子进程(%s)将自动关闭', self.pid,
                             os.getpid())
                    os.environ['PARENT_STOPED'] = '1'
                    break
                try:
                    if self._waiter.wait(2):
                        break
                except KeyboardInterrupt:
                    pass
        except Exception as e:
            log.info('subgame app error:%s', e)
        try:
            self._stop()
        finally:
            self._waiter_stoped.set()
        sleep(2)
        self._svr_stop()
        sleep(0.5)
예제 #10
0
파일: glog.py 프로젝트: soulsharepj/zdzl
	def log(self, uid, name, msg_type, msg, *args):
		""" 记录 """
		msg = RoleLog(msg_type=msg_type, msg=msg % args)
		msg.role_name = uid
		msg.name = name
		log.warn(msg.message)
		self._game.store.save(msg)
예제 #11
0
파일: tb.py 프로젝트: hw233/twisted_zdzl
    def GET(cls, sdk, data):
        """ 收到回调,处理数据 """
        #校验
        for attr in cls.FIELDS:
            if attr not in data:
                log.warn('[TongBu]Param not found:%s, data:%s', attr, data)
                return CODE_PARAM, ''

        #rsa验证
        sign = data['sign']
        sdata = sdk.get_sign(data)
        if sdata != sign:
            log.warn('[TongBu]sign data error, sign(%s) sdata(%s)', sign,
                     sdata)
            return CODE_SIGN, 'sign data error'

        if cls.pay_exist(data[cls.F_TORDER]):
            return CODE_SUCC, 'payExistError'
            #保存
        try:
            if cls.save_data(data[cls.F_PORDER], data[cls.F_TORDER],
                             cls.is_ok(data),
                             int(data[cls.F_PRICE]) / 100, data):
                return CODE_SUCC, 'save'
        except:
            log.log_except()
        return CODE_FAIL, 'systemError'
예제 #12
0
파일: tb.py 프로젝트: soulsharepj/zdzl
    def GET(cls, sdk, data):
        """ 收到回调,处理数据 """
        #校验
        for attr in cls.FIELDS:
            if attr not in data:
                log.warn('[TongBu]Param not found:%s, data:%s', attr, data)
                return CODE_PARAM, ''

        #rsa验证
        sign = data['sign']
        sdata = sdk.get_sign(data)
        if sdata != sign:
            log.warn('[TongBu]sign data error, sign(%s) sdata(%s)', sign, sdata)
            return CODE_SIGN, 'sign data error'

        if cls.pay_exist(data[cls.F_TORDER]):
            return CODE_SUCC, 'payExistError'
            #保存
        try:
            if cls.save_data(
                data[cls.F_PORDER],
                data[cls.F_TORDER],
                cls.is_ok(data),
                int(data[cls.F_PRICE])/100,
                data):
                return CODE_SUCC, 'save'
        except:
            log.log_except()
        return CODE_FAIL, 'systemError'
예제 #13
0
파일: store.py 프로젝트: hw233/twisted_zdzl
 def _inc_pool(self, pool, num):
     """ inc pool size """
     if pool.size >= self.MAX_SIZE:
         return
     log.warn('[StorePool]pool inc:+%d / %d', num, pool.size)
     pool.size += num
     for i in xrange(num):
         pool._semaphore.release()
예제 #14
0
파일: store.py 프로젝트: soulsharepj/zdzl
 def _inc_pool(self, pool, num):
     """ inc pool size """
     if pool.size >= self.MAX_SIZE:
         return
     log.warn('[StorePool]pool inc:+%d / %d', num, pool.size)
     pool.size += num
     for i in xrange(num):
         pool._semaphore.release()
예제 #15
0
 def _loop(self):
     while 1:
         sleep(config.report_times)
         try:
             self.update_report()
         except socket.error as err:
             log.warn('socket error:%s', err)
         except:
             log.log_except()
예제 #16
0
 def _on_close(self, app):
     if app not in self.apps:
         return
     pid, key, addr, names = self.apps.pop(app)
     log.warn('close app:pid=%s, key=%s, addr=%s', pid, key, addr)
     self.names.pop(key, None)
     if self.free_addrs is not None and key not in self.key_addrs:
         self.free_addrs.append(addr)
     spawn_later(5, self.proc_mgr.kill_process, pid)
예제 #17
0
파일: subgame.py 프로젝트: soulsharepj/zdzl
 def _on_close(self, app):
     if app not in self.apps:
         return
     pid, key, addr, names = self.apps.pop(app)
     log.warn('close app:pid=%s, key=%s, addr=%s', pid, key, addr)
     self.names.pop(key, None)
     if self.free_addrs is not None and key not in self.key_addrs:
         self.free_addrs.append(addr)
     spawn_later(5, self.proc_mgr.kill_process, pid)
예제 #18
0
 def _loop(self):
     while 1:
         sleep(config.report_times)
         try:
             self.update_report()
         except socket.error as err:
             log.warn('socket error:%s', err)
         except:
             log.log_except()
예제 #19
0
파일: uc.py 프로젝트: soulsharepj/zdzl
 def check_attr(cls, adict, data):
     for k, v in adict.iteritems():
         if k not in data:
             log.warn('[uc]Param not found:%s, data:%s', k, data)
             return False
         if isinstance(v, dict):
             rs = cls.check_attr(v, data[k])
             if not rs:
                 return False
     return True
예제 #20
0
 def check_attr(cls, adict, data):
     for k, v in adict.iteritems():
         if k not in data:
             log.warn('[uc]Param not found:%s, data:%s', k, data)
             return False
         if isinstance(v, dict):
             rs = cls.check_attr(v, data[k])
             if not rs:
                 return False
     return True
예제 #21
0
파일: main.py 프로젝트: soulsharepj/zdzl
 def stop(self):
     if self.stoped:
         return
     self.stoped = True
     log.warn(u'管理进程开始退出')
     try:
         self.sub_mgr.stop()
         self.rpc_svr.stop()
         self.web_svr.stop()
     except:
         log.log_except()
     finally:
         self._waiter.set()
예제 #22
0
 def set(self, key, value, timeout=None):
     """ timeout:过期时间(单位秒),如果为0,不过期 """
     if timeout is None or timeout < 0:
         timeout = self.default_timeout
     if timeout > 0:
         timeout = time.time() + abs(timeout)
         self._times[key] = timeout
     self._caches[key] = (value, timeout)
     if len(self._caches) > self.size and \
         self._gc_time + self.gc_time < time.time():
         log.warn(u'TimeMemCache缓存(%s-%s)不足,开始清理缓存', self.name, len(self._caches))
         spawn(self.gc)
         #sleep(0.01)
     return value
예제 #23
0
 def set(self, key, value, timeout=None):
     """ timeout:过期时间(单位秒),如果为0,不过期 """
     if timeout is None or timeout < 0:
         timeout = self.default_timeout
     if timeout > 0:
         timeout = time.time() + abs(timeout)
         self._times[key] = timeout
     self._caches[key] = (value, timeout)
     if len(self._caches) > self.size and \
         self._gc_time + self.gc_time < time.time():
         log.warn(u'TimeMemCache缓存(%s-%s)不足,开始清理缓存', self.name,
                  len(self._caches))
         spawn(self.gc)
         #sleep(0.01)
     return value
예제 #24
0
 def area_legal(self):
     """登陆时区域是不是合法"""
     if not self._area_url or not self._area_legal:
         #未配置则所有人合法登陆
         return True
     rpc = client_rpc.get_cur_rpc()
     data = urllib.urlencode({'ip':rpc.addr[0], 'check':str(0)})
     host, port, url = self._area_url
     try:
         area = tools.http_post_ex(host, port, url, params=data, timeout=GPlayerMgr.TIME_OUT)
         area = json.loads(area)
         country = area['country']
         log.debug('area_legal:%s in %s', rpc.addr[0], country)
         return not country or country in self._area_legal
     except BaseException as e:
         log.warn("area_legal error:%s", e)
         return True
예제 #25
0
    def load(self):
        """ 加载数据(执行中的任务) """
        store = self.player._game.rpc_store
        end_tasks = self.player.play_attr.setdefault(PLAYER_ATTR_TASKS, '')
        self.tid_bm.from_base64(end_tasks)

        querys = dict(pid=self.player.data.id, status=1)
        tasks = store.query_loads(TN_P_TASK, querys)
        for data in tasks:
            tid = data['tid']
            if tid in self.tids:  #重复记录...
                log.warn('[task]player(%s) task(%s) repeat',
                         self.player.data.id, tid)
                spawn(store.delete, TN_P_TASK, data['id'])
                continue

            task = Task.new_by_dict(data)
            if not task:
                log.warn('[task]res_task not found:%s', tid)
                continue
            if tid in self.tid_bm:  #记录异常
                self.player.log_task(tid, data['id'], t=PL_ERROR)

            self.tasks[data['id']] = task
            self.tids[tid] = task
            if task.data.isRun:
                self.run_task = task

        if not end_tasks:  #新玩家
            #log.debug(u'new player accept_tasks')
            def _fun():
                if not (self.player and self.player.logined):
                    return
                self.accept_tasks(TUL_LEVEL, 1)

            spawn_later(2, _fun)

        init_data = {
            TASK_BFTASK_FINISH: 0,
            TASK_ZXTASK_FINISH: 0,
            TASK_YCTASK_FINISH: 0
        }
        self.p_attr_task = self.player.play_attr.setdefault(
            PLAYER_ATTR_TASK, init_data)
        if not self.p_attr_task:
            self.p_attr_task = init_data
예제 #26
0
파일: ids.py 프로젝트: soulsharepj/zdzl
    def ChenckPay(cls, sdk, data):
        #校验
        for fn in cls.CHECK_FILEDS:
            if fn not in data:
                log.warn('[idsc]ChenckPay Param not found:%s', fn)
                return CODE_PARAM, 'Param not found:%s' % fn

        #rsa验证
        sign = data['sign']
        sdata = sdk.get_check_pay_sign(data)
        if sdata != sign:
            log.warn('[idsc]ChenckPay sign data error, sign(%s) sdata(%s)', sign, sdata)
            return CODE_SIGN, 'sign data error'

        rs, desc = cls.check_pay(data)
        if rs:
            return CODE_SUCC, desc
        return CODE_FAIL, desc
예제 #27
0
파일: ids.py 프로젝트: hw233/twisted_zdzl
    def ChenckPay(cls, sdk, data):
        #校验
        for fn in cls.CHECK_FILEDS:
            if fn not in data:
                log.warn('[idsc]ChenckPay Param not found:%s', fn)
                return CODE_PARAM, 'Param not found:%s' % fn

        #rsa验证
        sign = data['sign']
        sdata = sdk.get_check_pay_sign(data)
        if sdata != sign:
            log.warn('[idsc]ChenckPay sign data error, sign(%s) sdata(%s)',
                     sign, sdata)
            return CODE_SIGN, 'sign data error'

        rs, desc = cls.check_pay(data)
        if rs:
            return CODE_SUCC, desc
        return CODE_FAIL, desc
예제 #28
0
    def login(self, sid, session_id):
        """ 登陆检查 """
        ltoken = len(session_id)
        l = LEN_UINT32 + LEN_UINT32 + ltoken
        d = struct.pack('<II%ds' % ltoken, l, CMD_LOGIN, session_id)

        data = None
        with self.pool as sock:
            sock.sendall(d)
            data = self.recv_pack(sock)

        if not data:
            return 0, webapi.EC_VALUE

        #解释返回数据
        lname = len(data) - LEN_UINT32 + LEN_UINT32 + LEN_UINT64
        cmd, status, name, uid = struct.unpack('<II%dsQ' % lname, data)
        if status != PAY_STATUS_SUCC:
            log.warn('[pp]login fail:%s', (cmd, status, name, uid))
            return 0, webapi.EC_NET_ERR
        return 1, uid
예제 #29
0
 def area_legal(self):
     """登陆时区域是不是合法"""
     if not self._area_url or not self._area_legal:
         #未配置则所有人合法登陆
         return True
     rpc = client_rpc.get_cur_rpc()
     data = urllib.urlencode({'ip': rpc.addr[0], 'check': str(0)})
     host, port, url = self._area_url
     try:
         area = tools.http_post_ex(host,
                                   port,
                                   url,
                                   params=data,
                                   timeout=GPlayerMgr.TIME_OUT)
         area = json.loads(area)
         country = area['country']
         log.debug('area_legal:%s in %s', rpc.addr[0], country)
         return not country or country in self._area_legal
     except BaseException as e:
         log.warn("area_legal error:%s", e)
         return True
예제 #30
0
파일: arena.py 프로젝트: hw233/twisted_zdzl
    def init(self):
        """ 初始化竞技场数据:根据30级以上的玩家战斗力排名,得到竞技场排名 """
        log.warn(u"初始化竞技场")
        self.clear()
        #删除记录
        Game.rpc_store.deletes(TN_ARENA_RANKS)
        Game.rpc_store.deletes(TN_P_ARENA)
        #Game.rpc_store.insert(TN_ARENA_RANK, {FN_ID:0, FN_NEXT:END})
        #根据30级以上玩家战斗力排名
        CBEs = [(i[FN_P_ATTR_PID], i.get(FN_P_ATTR_CBE, index))
                for index, i in enumerate(PlayerAttr.get_CBE_ranks())]
        levels = PlayerData.get_players_levels(None)
        #插入机器人
        for i in xrange(self.BOT_RANK):
            self.update_rank(END, END - (i + 1))

        #真实玩家
        for pid, CBE in CBEs:
            if pid not in levels or levels[pid] < arena_level:
                continue
            self.update_rank(END, pid)
예제 #31
0
파일: pp.py 프로젝트: soulsharepj/zdzl
    def login(self, sid, session_id):
        """ 登陆检查 """
        ltoken = len(session_id)
        l = LEN_UINT32 + LEN_UINT32 + ltoken
        d = struct.pack('<II%ds' % ltoken, l, CMD_LOGIN, session_id)

        data = None
        with self.pool as sock:
            sock.sendall(d)
            data = self.recv_pack(sock)

        if not data:
            return 0, webapi.EC_VALUE

        #解释返回数据
        lname = len(data) - LEN_UINT32 + LEN_UINT32 + LEN_UINT64
        cmd, status, name, uid = struct.unpack('<II%dsQ' % lname, data)
        if status != PAY_STATUS_SUCC:
            log.warn('[pp]login fail:%s', (cmd, status, name, uid))
            return 0, webapi.EC_NET_ERR
        return 1, uid
예제 #32
0
파일: task.py 프로젝트: soulsharepj/zdzl
    def load(self):
        """ 加载数据(执行中的任务) """
        store = self.player._game.rpc_store
        end_tasks = self.player.play_attr.setdefault(PLAYER_ATTR_TASKS, '')
        self.tid_bm.from_base64(end_tasks)

        querys = dict(pid=self.player.data.id, status=1)
        tasks = store.query_loads(TN_P_TASK, querys)
        for data in tasks:
            tid = data['tid']
            if tid in self.tids:#重复记录...
                log.warn('[task]player(%s) task(%s) repeat', self.player.data.id, tid)
                spawn(store.delete, TN_P_TASK, data['id'])
                continue

            task = Task.new_by_dict(data)
            if not task:
                log.warn('[task]res_task not found:%s', tid)
                continue
            if tid in self.tid_bm:#记录异常
                self.player.log_task(tid, data['id'], t=PL_ERROR)

            self.tasks[data['id']] = task
            self.tids[tid] = task
            if task.data.isRun:
                self.run_task = task

        if not end_tasks:#新玩家
            #log.debug(u'new player accept_tasks')
            def _fun():
                if not (self.player and self.player.logined):
                    return
                self.accept_tasks(TUL_LEVEL, 1)
            spawn_later(2, _fun)


        init_data = {TASK_BFTASK_FINISH:0, TASK_ZXTASK_FINISH:0, TASK_YCTASK_FINISH:0}
        self.p_attr_task = self.player.play_attr.setdefault(PLAYER_ATTR_TASK, init_data)
        if not self.p_attr_task:
            self.p_attr_task = init_data
예제 #33
0
파일: main.py 프로젝트: soulsharepj/zdzl
    def _save_servers(self, ver, params):
        name = 'servers'
        json_data = json_dumps(params, ensure_ascii=True)
        is_same = json_data == self.servers_json
        self.servers_json = json_data

        if not os.path.exists(config.web_config_path):
            log.warn(u'web_config_path(%s) not existed!',
                    config.web_config_path)
            return

        try:
            if self.pre_ver != ver:
                #旧版本json更新client_ver数据,提示玩家更新程序
                if self.pre_ver is not None:
                    self._save_file(self.pre_ver, name, json_data, False)
                self._save_file(ver, name, json_data, False)
                self.pre_ver = ver
            else:
                self._save_file(ver, name, json_data, is_same)
        except:
            log.log_except()
예제 #34
0
파일: ids.py 프로젝트: hw233/twisted_zdzl
    def GET(cls, sdk, data):
        """ 收到回调,处理数据 """
        #校验
        for fn in cls.FIELDS:
            if fn not in data:
                log.warn('[idsc]callback Param not found:%s', fn)
                return CODE_PARAM, ''

        #rsa验证
        sign = data['sign']
        sdata = sdk.get_pay_sign(data)
        if sdata != sign:
            log.warn('[idsc]callback sign data error, sign(%s) sdata(%s)',
                     sign, sdata)
            return CODE_SIGN, 'sign data error'

        #保存
        try:
            if cls.save_data(data[cls.F_PORDER], data[cls.F_TORDER],
                             cls.is_ok(data), data[cls.F_PRICE], data):
                return CODE_SUCC, 'save'
        except:
            log.log_except()
        return CODE_FAIL, 'systemError'
예제 #35
0
    def GET(cls, sdk, data):
        """ 收到回调,处理数据 """
        #校验
        rs = cls.check_attr(cls.FIELDS, data)
        if not rs:
            return CODE_PARAM, ''
        #rsa验证
        sign = data['sign']
        data = data['data']
        sdata = sdk.get_sign(data)
        if sdata != sign:
            log.warn('[uc]sign data error, sign(%s) sdata(%s)', sign, sdata)
            return CODE_SIGN, 'sign data error'

        if cls.pay_exist(data[cls.F_TORDER]):
            return CODE_SUCC, 'payExistError'
            #保存
        try:
            if cls.save_data(data[cls.F_PORDER], data[cls.F_TORDER],
                             cls.is_ok(data), data[cls.F_PRICE], data):
                return CODE_SUCC, 'save'
        except:
            log.log_except()
        return CODE_FAIL, 'systemError'
예제 #36
0
파일: res_mgr.py 프로젝트: soulsharepj/zdzl
 def _loop(self):
     """ 定时判断资源库版本号,更新资源 """
     import app
     while not app.stoped:
         sleep(30)
         db_ver = self._get_db_ver()
         if db_ver != self.db_ver:
             log.warn(u'更新资源库(%s)', db_ver)
             if self.load(app):
                 log.warn(u'更新资源库(%s)完成', db_ver)
                 self.pub(MSG_RES_RELOAD)
             else:
                 log.warn(u'更新资源库(%s)失败', db_ver)
예제 #37
0
 def _loop(self):
     """ 定时判断资源库版本号,更新资源 """
     import app
     while not app.stoped:
         sleep(30)
         db_ver = self._get_db_ver()
         if db_ver != self.db_ver:
             log.warn(u'更新资源库(%s)', db_ver)
             if self.load(app):
                 log.warn(u'更新资源库(%s)完成', db_ver)
                 self.pub(MSG_RES_RELOAD)
             else:
                 log.warn(u'更新资源库(%s)失败', db_ver)
예제 #38
0
파일: main.py 프로젝트: soulsharepj/zdzl
 def run(self):
     log.warn('run...')
     import manage
     #manage.run(config.SERVER_HOST_PORT)
     manage.start(config.SERVER_HOST_PORT)
예제 #39
0
 def overload(self, m):
     """ 启动压力测试m分钟 """
     self.overload_time = time.time() + m * 60
     log.warn('overload start to %s',
             datetime.datetime.fromtimestamp(self.overload_time))
예제 #40
0
 def overload(self, m):
     """ 启动压力测试m分钟 """
     self.overload_time = time.time() + m * 60
     log.warn('overload start to %s',
              datetime.datetime.fromtimestamp(self.overload_time))
예제 #41
0
파일: main.py 프로젝트: hw233/twisted_zdzl
 def run(self):
     log.warn('run...')
     import manage
     #manage.run(config.SERVER_HOST_PORT)
     manage.start(config.SERVER_HOST_PORT)
예제 #42
0
 def log_role(self, role, msg_type, msg, *args):
     """ 记录角色重要资源信息 """
     msg = RoleLog(role, msg_type=msg_type, msg=msg % args)
     log.warn(msg.message)
     old_spawn(self._game.store.save, msg)
예제 #43
0
파일: glog.py 프로젝트: soulsharepj/zdzl
	def log_role(self, role, msg_type, msg, *args):
		""" 记录角色重要资源信息 """
		msg = RoleLog(role, msg_type=msg_type, msg=msg % args)
		log.warn(msg.message)
		old_spawn(self._game.store.save, msg)