def api_character_modify(server_id, char_id, name, value): # 获取角色基本信息 s = make_servers()[server_id] data = {'char_id': char_id, 'name': name, 'value': value} url = u'https://{0}:{1}/api/character/modify/'.format(s['host'], s['port_https']) return apicall(data=data, cmd=url)
def run(signum): connection.close() mails = ModelMail.objects.filter(Q(status=1) & Q(send_at__lte=timezone.now())) logger = Logger('send_mail.log') logger.write('Send Mail Start. mails amount: {0}'.format(mails.count())) servers = make_servers(is_test=False) available_server_ids = [k for k, v in servers.items() if v['status'] != 4] for m in mails: m.status = 2 m.save() logger.write("send {0}...".format(m.id)) try: send_one_mail(m, available_server_ids) except Exception as e: logger.write("==== ERROR ====") logger.write("mail: {0}".format(m.id)) logger.write(str(e)) m.status = 1 else: m.status = 3 m.save() logger.write("Send Mail Complete") logger.close()
def send_test_mail(): servers = make_servers(is_test=False) available_server_ids = [k for k, v in servers.items() if v['status'] != 4] data = {'mode': 'test'} for s in available_server_ids: print "send to {0}".format(s), api_send_mail(s, json.dumps(data)) print "done"
def api_purchase_aiyingyong_done(server_id, char_id, goods_id): s = make_servers()[server_id] data = { 'char_id': char_id, 'goods_id': goods_id } url = u'https://{0}:{1}/api/purchase/aiyingyong/done/'.format(s['host'], s['port_https']) apicall(data=data, cmd=url)
def _cmd_status(self): from core.server import make_servers servers = make_servers() self.stdout.write("Total {0} servers".format(len(servers))) for s in servers.values(): text = "%3d: host: %s, port: %d, port_https: %d, status: %d, name: %s" % ( s['id'], s['host'], s['port'], s['port_https'], s['status'], s['name'] ) self.stdout.write(text)
def api_purchase_jodoplay_done(server_id, char_id, goods_id, price): s = make_servers()[server_id] data = { 'char_id': char_id, 'goods_id': goods_id, 'price': price, } url = u'https://{0}:{1}/api/purchase/jodoplay/done/'.format(s['host'], s['port_https']) apicall(data=data, cmd=url)
def api_send_checkin_data(data): error_servers = [] for s in make_servers().values(): url = u'https://{0}:{1}/api/checkin/send/'.format(s['host'], s['port_https']) try: apicall(data=data, cmd=url) except: error_servers.append(s['id']) return error_servers
def api_purchase_self(server_id, char_id, goods_id, amount): s = make_servers()[server_id] data = { 'char_id': char_id, 'goods_id': goods_id, 'amount': amount } url = u'https://{0}:{1}/api/purchase/self/'.format(s['host'], s['port_https']) apicall(data=data, cmd=url)
def run(signum): connection.close() logger = Logger('check_server.log') servers = make_servers(is_test=False) for s in servers.keys(): try: res = api_check_server(s) except: import traceback logger.write('---- ERROR ----') logger.write(traceback.format_exc()) active_amount = 0 else: active_amount = res['data']['active_amount'] pong_from_server(s, active_amount) logger.write("server {0} active amount {1}".format(s, active_amount)) logger.write("server check complete!") logger.close()
def api_server_change_feedback(server_id, status): s = make_servers()[server_id] url = u'https://{0}:{1}/api/server/feedback/'.format(s['host'], s['port_https']) apicall(data={'status': status}, cmd=url)
def api_check_server(server_id): s = make_servers()[server_id] url = u'https://{0}:{1}/api/ping/'.format(s['host'], s['port_https']) return apicall(data={}, cmd=url)
def api_send_mail(server_id, data): s = make_servers()[server_id] url = u'https://{0}:{1}/api/mail/send/'.format(s['host'], s['port_https']) return apicall(data=data, cmd=url)
def api_character_union(server_id, char_id): # 获取角色工会信息 s = make_servers()[server_id] data = {'char_id': char_id} url = u'https://{0}:{1}/api/character/union/'.format(s['host'], s['port_https']) return apicall(data=data, cmd=url)
def api_character_initialize(server_id, data): s = make_servers()[server_id] url = u'https://{0}:{1}/api/character/initialize/'.format(s['host'], s['port_https']) return apicall(data=data, cmd=url)
def account_login(data): try: data = get_login_request_data(data) except (KeyError, ValueError, GateException): return {'ret': errormsg.BAD_MESSAGE} try: check_allowed_account(data) except GateException: return {'ret': errormsg.INVALID_OPERATE} servers = make_servers() if data['server_id'] not in servers: return {'ret': errormsg.SERVER_NOT_EXIST} new_token = 0 if data['method'] == 'noaccount': # 建立游客帐号 try: with transaction.atomic(): account = AccountAnonymous.objects.create() new_token = account.id except IntegrityError: return {'ret': errormsg.ACCOUNT_LOGIN_FAILURE} elif data['method'] == 'anonymous': # 游客登录 try: account = AccountAnonymous.objects.select_related('account').get(id=data['token']) except AccountAnonymous.DoesNotExist: return {'ret': errormsg.ACCOUNT_NOT_EXSIT} elif data['method'] == 'regular': # 自有帐号登录 try: account = AccountRegular.objects.select_related('account').get(name=data['name']) except AccountRegular.DoesNotExist: return {'ret': errormsg.ACCOUNT_NOT_EXSIT} if account.passwd != data['password']: return {'ret': errormsg.WRONG_PASSWORD} else: # 第三方帐号登录 if data['platform'] == '91': try: verify_91(data['uid'], data['param']) except: traceback.print_exc() return {'ret': errormsg.ACCOUNT_LOGIN_FAILURE} elif data['platform'] == 'jodo' or data['platform'] == 'jodoplay': try: verify_jodoplay(data['uid'], data['param']) except: traceback.print_exc() return {'ret': errormsg.ACCOUNT_LOGIN_FAILURE} try: account = AccountThird.objects.select_related('account').get(platform=data['platform'], uid=data['uid']) except AccountThird.DoesNotExist: try: with transaction.atomic(): account = AccountThird.objects.create(platform=data['platform'], uid=data['uid']) except IntegrityError: return {'ret': errormsg.ACCOUNT_LOGIN_FAILURE} # TODO account ban account.account.last_server_id = data['server_id'] account.account.save() try: char = Character.objects.get(account_id=account.account.id, server_id=data['server_id']) char_id = char.id except Character.DoesNotExist: char_id = 0 res = { 'ret': 0, 'data': { 'account_id': account.account.id, 'char_id': char_id, 'new_token': new_token, } } return res