def login():
    """Login DMM from login form

    :return: rv
    """
    post = request.form
    login_id = post.get('login_id', None)
    password = post.get('password', None)
    mode = int(post.get('mode', 1))

    # Test mode for local debug
    test_mode = post.get('testMode', False)
    if test_mode:
        test_mode = True
    session['test_mode'] = test_mode
    session['mode'] = mode

    if app.config['ENV'] == 'development' and test_mode:
        return debug_login(login_id, password, mode)

    if mode == 5 and test_mode:  # enable test mode in ios mode even in production environment
        return debug_login(login_id, password, mode)

    if login_id and password:
        kancolle_auth = KancolleAuth(login_id, password)
        if mode in (1, 2, 3, 5):
            try:
                kancolle_auth.get_entry()
                session['api_token'] = kancolle_auth.api_token
                session['api_starttime'] = kancolle_auth.api_starttime
                session['world_ip'] = kancolle_auth.world_ip
                if mode == 2:
                    return redirect('/kcv')
                elif mode == 3:
                    return redirect('/poi')
                elif mode == 5:
                    return redirect('/ios')
                else:
                    return redirect('/browser')
            except OOIAuthException as e:
                return render_minify_template('form.html',
                                              errmsg=e.message,
                                              mode=mode)
        elif mode == 4:
            try:
                osapi_url = kancolle_auth.get_osapi()
                session['osapi_url'] = osapi_url
                return redirect('/connector')
            except OOIAuthException as e:
                return render_minify_template('form.html',
                                              errmsg=e.message,
                                              mode=mode)
        else:
            return BadResponse("Invalid mode")
    else:
        return render_minify_template(
            'form.html',
            errmsg='Please input your username and password.',
            mode=mode)
Example #2
0
    def login(self, request):
        """接受登录表单提交的数据,登录后跳转或登录失败后展示错误信息。

        :param request: aiohttp.web.Request
        :return: aiohttp.web.HTTPFound or aiohttp.web.Response
        """
        post = yield from request.post()
        session = yield from get_session(request)

        login_id = post.get('login_id', None)
        password = post.get('password', None)
        mode = int(post.get('mode', 1))

        session['mode'] = mode

        dbc = DbConnect(localhost, 3306, username, password, db)

        if login_id and password and dbc.query(login_id):
            kancolle = KancolleAuth(login_id, password)
            dbc.update(login_id)
            dbc.close()
            del dbc
            if mode in (1, 2, 3):
                try:
                    yield from kancolle.get_flash()
                    session['api_token'] = kancolle.api_token
                    session['api_starttime'] = kancolle.api_starttime
                    session['world_ip'] = kancolle.world_ip
                    if mode == 2:
                        return aiohttp.web.HTTPFound('/kcv')
                    elif mode == 3:
                        return aiohttp.web.HTTPFound('/poi')
                    else:
                        return aiohttp.web.HTTPFound('/kancolle')

                except OOIAuthException as e:
                    context = {'errmsg': e.message, 'mode': mode}
                    return aiohttp_jinja2.render_template(
                        'form.html', request, context)
            elif mode == 4:
                try:
                    osapi_url = yield from kancolle.get_osapi()
                    session['osapi_url'] = osapi_url
                    return aiohttp.web.HTTPFound('/connector')
                except OOIAuthException as e:
                    context = {'errmsg': e.message, 'mode': mode}
                    return aiohttp_jinja2.render_template(
                        'form.html', request, context)
            else:
                raise aiohttp.web.HTTPBadRequest()
        else:
            context = {'errmsg': '请输入完整的有效的ID和密码', 'mode': mode}
            dbc.close()
            del dbc
            return aiohttp_jinja2.render_template('form.html', request,
                                                  context)
Example #3
0
    def login(self, request):
        """接受登录表单提交的数据,登录后跳转或登录失败后展示错误信息。

        :param request: aiohttp.web.Request
        :return: aiohttp.web.HTTPFound or aiohttp.web.Response
        """
        post = yield from request.post()
        session = yield from get_session(request)

        login_id = post.get('login_id', None)
        password = post.get('password', None)
        mode = int(post.get('mode', 1))
        session['mode'] = mode

        f = open(config.white_list, encoding='utf-8')  
        WhiteList = f.readlines()
        isre = False
        for item in WhiteList:
            if login_id.strip().upper() == item.upper().strip():
                isre = True
                break
        if isre:
            if login_id and password:
                kancolle = KancolleAuth(login_id, password)
                if mode in (1, 2, 3):
                    try:
                        yield from kancolle.get_flash()
                        session['api_token'] = kancolle.api_token
                        session['api_starttime'] = kancolle.api_starttime
                        session['world_ip'] = kancolle.world_ip
                        if mode == 2:
                            return aiohttp.web.HTTPFound('/kcv')
                        elif mode == 3:
                            return aiohttp.web.HTTPFound('/poi')
                        else:
                            return aiohttp.web.HTTPFound('/kancolle')

                    except OOIAuthException as e:
                        context = {'errmsg': e.message, 'mode': mode}
                        return aiohttp_jinja2.render_template('form.html', request, context)
                elif mode == 4:
                    try:
                        osapi_url = yield from kancolle.get_osapi()
                        session['osapi_url'] = osapi_url
                        return aiohttp.web.HTTPFound('/connector')
                    except OOIAuthException as e:
                        context = {'errmsg': e.message, 'mode': mode}
                        return aiohttp_jinja2.render_template('form.html', request, context)
                else:
                    raise aiohttp.web.HTTPBadRequest()
            else:
                context = {'errmsg': '请输入完整的登录ID和密码', 'mode': mode}
                return aiohttp_jinja2.render_template('form.html', request, context)
        else:
            context = {'errmsg': 'ID不在白名单', 'mode': mode}
            return aiohttp_jinja2.render_template('form.html', request, context)
Example #4
0
    def login(self, request):
        """接受登录表单提交的数据,登录后跳转或登录失败后展示错误信息。

        :param request: aiohttp.web.Request
        :return: aiohttp.web.HTTPFound or aiohttp.web.Response
        """
        post = yield from request.post()
        session = yield from get_session(request)

        login_id = post.get('login_id', None)
        password = post.get('password', None)
        mode = int(post.get('mode', 1))

        session['mode'] = mode

        if login_id and password:
            kancolle = KancolleAuth(login_id, password)
            if mode in (1, 2, 3):
                try:
                    yield from kancolle.get_flash()
                    session['api_token'] = kancolle.api_token
                    session['api_starttime'] = kancolle.api_starttime
                    session['world_ip'] = kancolle.world_ip
                    if mode == 2:
                        return aiohttp.web.HTTPFound('/kcv')
                    elif mode == 3:
                        return aiohttp.web.HTTPFound('/poi')
                    else:
                        return aiohttp.web.HTTPFound('/kancolle')

                except OOIAuthException as e:
                    context = {'errmsg': e.message, 'mode': mode}
                    return aiohttp_jinja2.render_template('form.html', request, context)
            elif mode == 4:
                try:
                    osapi_url = yield from kancolle.get_osapi()
                    session['osapi_url'] = osapi_url
                    return aiohttp.web.HTTPFound('/connector')
                except OOIAuthException as e:
                    context = {'errmsg': e.message, 'mode': mode}
                    return aiohttp_jinja2.render_template('form.html', request, context)
            else:
                raise aiohttp.web.HTTPBadRequest()
        else:
            context = {'errmsg': '请输入完整的登录ID和密码', 'mode': mode}
            return aiohttp_jinja2.render_template('form.html', request, context)
def get_flash():
    """获取用户的游戏FLASH地址,返回一个JSON格式的字典。
    结果中`status`键值为1时获取成功,`flash_url`键值为游戏FLASH地址;`status`为0时获取失败,`message`键值提供了错误信息。

    :return: flask.Response
    """
    data = request.form
    login_id = data.get('login_id', None)
    password = data.get('password', None)
    if login_id and password:
        headers = {'Content-Type': 'application/json'}
        kancolle = KancolleAuth(login_id, password)
        try:
            entry_url = kancolle.get_entry()
            result = {'status': 1, 'flash_url': entry_url}
        except OOIAuthException as e:
            result = {'status': 0, 'message': e.message}
        return Response(result, headers=headers)
    else:
        return BadResponse('Both username and password is required.')
Example #6
0
    def get_flash(self, request):
        """获取用户的游戏FLASH地址,返回一个JSON格式的字典。
        结果中`status`键值为1时获取成功,`flash_url`键值为游戏FLASH地址;`status`为0时获取失败,`message`键值提供了错误信息。

        :param request: aiohttp.web.Request
        :return: aiohttp.web.Response or aiohttp.web.HTTPBadRequest
        """
        data = yield from request.post()
        login_id = data.get('login_id', None)
        password = data.get('password', None)
        if login_id and password:
            headers = aiohttp.MultiDict({'Content-Type': 'application/json'})
            kancolle = KancolleAuth(login_id, password)
            try:
                flash_url = yield from kancolle.get_flash()
                result = {'status': 1, 'flash_url': flash_url}
            except OOIAuthException as e:
                result = {'status': 0, 'message': e.message}
            return aiohttp.web.Response(body=json.dumps(result).encode(),
                                        headers=headers)
        else:
            return aiohttp.web.HTTPBadRequest()
Example #7
0
    def get_flash(self, request):
        """获取用户的游戏FLASH地址,返回一个JSON格式的字典。
        结果中`status`键值为1时获取成功,`flash_url`键值为游戏FLASH地址;`status`为0时获取失败,`message`键值提供了错误信息。

        :param request: aiohttp.web.Request
        :return: aiohttp.web.Response or aiohttp.web.HTTPBadRequest
        """
        data = yield from request.post()
        login_id = data.get('login_id', None)
        password = data.get('password', None)
        if login_id and password:
            headers = aiohttp.MultiDict({'Content-Type': 'application/json'})
            kancolle = KancolleAuth(login_id, password)
            try:
                flash_url = yield from kancolle.get_flash()
                result = {'status': 1,
                          'flash_url': flash_url}
            except OOIAuthException as e:
                result = {'status': 0,
                          'message': e.message}
            return aiohttp.web.Response(body=json.dumps(result).encode(), headers=headers)
        else:
            return aiohttp.web.HTTPBadRequest()