Example #1
0
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)
Example #2
0
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()
Example #3
0
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"
Example #4
0
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)
Example #5
0
    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)
Example #6
0
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)
Example #7
0
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
Example #8
0
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)
Example #9
0
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()
Example #10
0
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)
Example #11
0
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)
Example #12
0
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)
Example #13
0
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)
Example #14
0
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)
Example #15
0
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