Example #1
0
    def new_func(request,*args,**argw):
        # 用户在进行账号绑定时,需要与开放平台进行验证,主要验证access_token以及openid
        access_token = request.REQUEST.get('access_token','')
        openid = request.REQUEST.get('openid','')
        platform = request.REQUEST.get('platform','')
        bind_access_token = request.REQUEST.get('bind_access_token','')
        bind_openid = request.REQUEST.get('bind_openid','')

        if not access_token or not openid or not platform or not bind_access_token or not bind_openid:
            data = {'rc':6,'data':{'msg':get_msg('login','platform_overdue'),'server_now':int(time.time())}}
            return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
        if platform == 'qq':
            result,pid,msg = auth_bind_for_qq(request,access_token,openid,bind_access_token,bind_openid)
        elif platform == 'fb':
            result,pid,msg = auth_bind_for_fb(request,access_token,openid,bind_access_token,bind_openid)
        else:
            result,pid,msg = auth_bind_for_sina(request,access_token,openid,bind_access_token,bind_openid)
        if not result:
            data = {'rc':11,'data':{'msg':msg,'server_now':int(time.time())}}
            return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
        else:
            Session.set(platform, pid)
        result = func(request,*args,**argw)
        return result
Example #2
0
    def new_func(request,*args,**argw):
        pid = request.REQUEST.get("pid")
        platform = request.REQUEST.get("platform")
        subarea = request.REQUEST.get("subarea", "1")

        if pid and platform:
            request.rk_user = UserBase._install(pid, platform, subarea=subarea)
            frozen_msg = get_frozen_msg(request.rk_user)
            if frozen_msg:
                data = {
                    'rc': 10,
                    'data': {
                        'msg': frozen_msg,
                        'server_now': int(time.time())
                    }
                }
                return HttpResponse(
                    json.dumps(data, indent=1),
                    content_type='application/x-javascript',
                )
        else:
            #print '#### set_user, rc: 6'
            data = {
                'rc': 6,
                'data': {
                    'msg': get_msg('login', 'platform_overdue'),
                    'server_now': int(time.time())
                }
            }
            return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
        return func(request, *args, **argw)
Example #3
0
    def new_func(request, *args, **argw):
        pid = request.REQUEST.get("pid")
        platform = request.REQUEST.get("platform")
        subarea = request.REQUEST.get("subarea", "1")

        if pid and platform:
            request.rk_user = UserBase._install(pid, platform, subarea=subarea)
            frozen_msg = get_frozen_msg(request.rk_user)
            if frozen_msg:
                data = {
                    'rc': 10,
                    'data': {
                        'msg': frozen_msg,
                        'server_now': int(time.time())
                    }
                }
                return HttpResponse(
                    json.dumps(data, indent=1),
                    content_type='application/x-javascript',
                )
        else:
            #print '#### set_user, rc: 6'
            data = {
                'rc': 6,
                'data': {
                    'msg': get_msg('login', 'platform_overdue'),
                    'server_now': int(time.time())
                }
            }
            return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
        return func(request, *args, **argw)
Example #4
0
def get_access_token(request):
    #用于刷新access_token用的refresh token
    data = {
            'rc':0,
            'data':{}
            }
    para_pid = request.REQUEST.get('pid',None)
    para_platform = request.REQUEST.get('platform',None)
    session_dic = Session.new_get(para_platform+':'+para_pid)
    pid = session_dic['pid']
    access_token = session_dic['access_token']
    refresh_token = session_dic['refresh_token']
    expires_time = session_dic['expires_time']
    if not pid and not access_token and not refresh_token and not expires_time:
        data = {
                'rc':8,
                'data':{
                      'msg':get_msg('login','server_exception'),
                      'server_now':int(time.time()),
                      }
                }
        return HttpResponse(
            json.dumps(data, indent=1),
            content_type='application/x-javascript',
        )

    else:
        if expires_time > time.time():
            data['data']['access_token'] = access_token
            data['data']['pid'] = request.rk_user.account.openid
            data['data']['uid'] = request.rk_user.uid
            data['data']['nickname'] = request.rk_user.baseinfo['username']
        else:
            client_id = settings.APP_KEY_360
            client_secret = settings.APP_SECRET_KEY_360
            oauth2_url = "https://openapi.360.cn/oauth2/access_token?grant_type=refresh_token&refresh_token=%s&client_id=%s&client_secret=%s&scope=basic" %(refresh_token, client_id, client_secret)
            url_request = urllib2.urlopen(oauth2_url, timeout=12)
            code, res = url_request.code, url_request.read()
            if code == 200:
                res_dict = json.loads(res)
                data['data']['access_token'] = str(res_dict['access_token'])
                data['data']['pid'] = request.rk_user.account.openid
                data['data']['uid'] = request.rk_user.uid
                data['data']['nickname'] = request.rk_user.baseinfo['username']
                expires_time = time.time() + float(res_dict['expires_in'])
                Session.set(para_platform, pid, str(res_dict['access_token']), str(res_dict['refresh_token']), expires_time)
            else:
                data = {
                        'rc':8,
                        'data':{
                              'msg':get_msg('login','server_exception'),
                              'server_now':int(time.time()),
                              }
                        }
    data['data']['server_now'] = int(time.time())
    return HttpResponse(
        json.dumps(data, indent=1),
        content_type='application/x-javascript',
    )
Example #5
0
    def new_func(request, *args, **argw):
        para_pid = request.REQUEST.get('pid', None)
        para_platform = request.REQUEST.get('platform', None)

        session_overdue = False
        if para_platform is None or para_pid is None:
            session_overdue = True
        else:
            platform, pid = Session.get("{}:{}".format(para_platform, para_pid))
            if not platform or not pid or platform != para_platform or para_pid != pid:
                session_overdue = True

        #session过期
        if session_overdue:
            data = {
                'rc': 8,
                'data': {
                    'msg': get_msg('login', 'server_exception'),
                    'server_now': int(time.time())
                }
            }
            return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
        result = func(request, *args, **argw)
        return result
Example #6
0
 def new_func(request, *args, **argw):
     try:
         params = request.REQUEST
         oid = params.get('oid', '')
         signature = params.get('sign', '')
         key = RSA.importKey(_pub_rsa_key)
         h = SHA.new(str(oid))
         verifier = PKCS1_v1_5.new(key)
         if verifier.verify(h, b64decode(signature)):
             result = func(request, *args, **argw)
             return result
     except:
         send_exception_mail(request)
         print_err()
         #清空storage
         app.pier.clear()
     return HttpResponse(
         json.dumps(
             {
                 'rc': 8,
                 'data': {
                     'msg': get_msg('login', 'server_exception'),
                     'server_now': int(time.time())
                 }
             },
             indent=1),
         content_type='application/x-javascript',
     )
Example #7
0
def index(request):
    """ 应用首页,输出top page"""
    
    data = {
        'rc':0,
        'data':{
         'server_now':int(time.time()),
         'pid':request.rk_user.pid,
         'uid':request.rk_user.uid,
         # 'newbie': False,
         # 'newbie_step': 10,
         'username':request.rk_user.username,
        }
    }
    if request.rk_user.is_new:
#        invite_code = request.REQUEST.get('invite_code')
#        _record_invite_code(request.rk_user,invite_code)
        if request.rk_user.platform == 'oc':
            data['data']['oc_openid'] = request.rk_user.account.openid
            data['data']['oc_access_token'] = request.rk_user.account.access_token
#    #设备唯一标识
#    mac_addr = request.REQUEST.get("uuid", "")
#    if mac_addr and mac_addr not in request.rk_user.client_macaddr:
#        request.rk_user.add_client_macaddr(mac_addr)
#    #下载渠道标识
#    mktid = request.REQUEST.get("mktid", "")
#    if mktid and mktid not in request.rk_user.mktids:
#        request.rk_user.add_mktid(mktid)
    data_log_mod.set_log('LoginRecord', request.rk_user, **{'version': request.REQUEST.get('version', '')})
    return HttpResponse(
        json.dumps(data, indent=1),
        content_type='application/x-javascript',
    )
Example #8
0
    def new_func(request, *args, **argw):
        para_pid = request.REQUEST.get('pid', None)
        para_platform = request.REQUEST.get('platform', None)

        session_overdue = False
        if para_platform is None or para_pid is None:
            session_overdue = True
        else:
            platform, pid = Session.get("{}:{}".format(para_platform,
                                                       para_pid))
            if not platform or not pid or platform != para_platform or para_pid != pid:
                session_overdue = True

        #session过期
        if session_overdue:
            data = {
                'rc': 8,
                'data': {
                    'msg': get_msg('login', 'server_exception'),
                    'server_now': int(time.time())
                }
            }
            return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
        result = func(request, *args, **argw)
        return result
Example #9
0
    def new_func(request, *args, **argw):
        # 用户在进行账号绑定时,需要与开放平台进行验证,主要验证access_token以及openid
        access_token = request.REQUEST.get('access_token', '')
        openid = request.REQUEST.get('openid', '')
        platform = request.REQUEST.get('platform', '')
        bind_access_token = request.REQUEST.get('bind_access_token', '')
        bind_openid = request.REQUEST.get('bind_openid', '')

        if not access_token or not openid or not platform or not bind_access_token or not bind_openid:
            data = {
                'rc': 6,
                'data': {
                    'msg': get_msg('login', 'platform_overdue'),
                    'server_now': int(time.time())
                }
            }
            return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
        if platform == 'qq':
            result, pid, msg = auth_bind_for_qq(request, access_token, openid,
                                                bind_access_token, bind_openid)
        elif platform == 'fb':
            result, pid, msg = auth_bind_for_fb(request, access_token, openid,
                                                bind_access_token, bind_openid)
        else:
            result, pid, msg = auth_bind_for_sina(request, access_token,
                                                  openid, bind_access_token,
                                                  bind_openid)
        if not result:
            data = {
                'rc': 11,
                'data': {
                    'msg': msg,
                    'server_now': int(time.time())
                }
            }
            return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
        else:
            Session.set(platform, pid)
        result = func(request, *args, **argw)
        return result
Example #10
0
 def new_func(request, *args, **argw):
     try:
         if game_config.system_config['maintenance']:
             pid = request.REQUEST.get('pid', '')
             platform = request.REQUEST.get('platform', '')
             openid = request.REQUEST.get('openid', '')
             subarea = request.REQUEST.get('subarea', '1')
             allow = False
             if platform and (pid or openid):
                 uid = __get_uid(platform, openid, pid, subarea)
                 if uid and uid in game_config.system_config.get(
                         'allow_uids', []):
                     allow = True
             if not allow:
                 data = {
                     'rc': 9,
                     'data': {
                         'msg': get_msg('login', 'maintenance'),
                         'server_now': int(time.time()),
                     }
                 }
                 return HttpResponse(
                     json.dumps(data, indent=1),
                     content_type='application/x-javascript',
                 )
         result = func(request, *args, **argw)
         return result
     except:
         print_err()
         app.pier.clear()
         #send mail
         send_exception_mail(request)
         data = {
             'rc': 8,
             'data': {
                 'msg': get_msg('login', 'server_exception'),
                 'server_now': int(time.time())
             }
         }
         return HttpResponse(
             json.dumps(data, indent=1),
             content_type='application/x-javascript',
         )
Example #11
0
 def new_func(request, *args, **argw):
     try:
         if game_config.system_config['maintenance']:
             pid = request.REQUEST.get('pid', '')
             platform = request.REQUEST.get('platform', '')
             openid = request.REQUEST.get('openid', '')
             subarea = request.REQUEST.get('subarea', '1')
             allow = False
             if platform and (pid or openid):
                 uid = __get_uid(platform, openid, pid, subarea)
                 if uid and uid in game_config.system_config.get('allow_uids', []):
                     allow = True
             if not allow:
                 data = {
                     'rc': 9,
                     'data': {
                         'msg': get_msg('login', 'maintenance'),
                         'server_now': int(time.time()),
                     }
                 }
                 return HttpResponse(
                     json.dumps(data, indent=1),
                     content_type='application/x-javascript',
                 )
         result = func(request, *args, **argw)
         return result
     except:
         print_err()
         app.pier.clear()
         #send mail
         send_exception_mail(request)
         data = {
             'rc': 8,
             'data': {
                 'msg': get_msg('login', 'server_exception'),
                 'server_now': int(time.time())
             }
         }
         return HttpResponse(
             json.dumps(data, indent=1),
             content_type='application/x-javascript',
         )
Example #12
0
def get_skill_desc_config(request):
    #"""获得技能的描述配置
    #"""
    
    data = {
            'rc':0,
            'data':game_config.skill_desc_config,
          }
    return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
Example #13
0
def language_version(request):
    """
    返回当前语言包信息
    """
    
    data = {
        'rc':0,
        'data':game_config.language_config
        }
    return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
Example #14
0
def get_material_item_desc_config(request):
    #"""获得材料道具的描述配置
    #"""
    
    data = {
              'rc':0,
              'data':copy.deepcopy(game_config.material_desc_config),
           }
    # data['data'].update(game_config.item_desc_config)
    data['data'].update(game_config.props_desc_config)
    return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
Example #15
0
 def new_func(request,*args,**argw):
     if game_config.system_config.get('server_close'):
         uid = request.rk_user.uid
         
         data = {'rc':14,'data':{'msg':get_msg('login','server_close'),'server_now':int(time.time())}}
         gift_code = user_gift_record.get(uid,[])
         if gift_code:
             data['data']['gift_code'] = gift_code
         return HttpResponse(
             json.dumps(data, indent=1),
             content_type='application/x-javascript',
         )
     else:
         return func(request,*args,**argw)
Example #16
0
def api(request):
    data = {}
    
    now = int(time.time())
    data['data'] = {
                    'server_now':now,
                    'cag':create_sig(str(now)),
                    'cog':md5.new(str(now) + 'random_kk').hexdigest()
                    }
    rc,func_data = process_api(request)

    data['data'].update(func_data)
    data['rc'] = rc
    print "~" *10 + "use_time", request.REQUEST.get("method", None), time.time() - now
    return HttpResponse(
        json.dumps(data, indent=1),
        content_type='application/x-javascript',
    )
Example #17
0
 def new_func(request,*args,**argw):
     try:
         params = request.REQUEST
         oid = params.get('oid','')
         signature = params.get('sign','')
         key = RSA.importKey(_pub_rsa_key)
         h = SHA.new(str(oid))
         verifier = PKCS1_v1_5.new(key)
         if verifier.verify(h, b64decode(signature)):
             result = func(request,*args,**argw)
             return result
     except:
         send_exception_mail(request)
         print_err()
         #清空storage
         app.pier.clear()
     return HttpResponse(
           json.dumps({'rc':8,'data':{'msg':get_msg('login','server_exception'),'server_now':int(time.time())}}, indent=1),
           content_type='application/x-javascript',)
Example #18
0
def account_bind(request):
    """

    # TODO(GuoChen) 未知的功能,前端有此接口的代码,待确认
    """
    
    data = {
        'rc': 0,
        'data': {
            'server_now': int(time.time()),
            'pid': request.rk_user.pid,
            'msg': '',
        }
    }
    # 是否有绑定帐号奖励
    request.rk_user.user_property.get_bind_weibo_award()
    return HttpResponse(
        json.dumps(data, indent=1),
        content_type='application/x-javascript',
    )
Example #19
0
    def new_func(request, *args, **argw):
        if game_config.system_config.get('server_close'):
            uid = request.rk_user.uid

            data = {
                'rc': 14,
                'data': {
                    'msg': get_msg('login', 'server_close'),
                    'server_now': int(time.time())
                }
            }
            gift_code = user_gift_record.get(uid, [])
            if gift_code:
                data['data']['gift_code'] = gift_code
            return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
        else:
            return func(request, *args, **argw)
Example #20
0
def info(request):
    """获取一些不重要的系统信息,和配置版本号

    获取当前游戏版本号、一些是否可以通过平台登入的开关、
    一些常用配置和各语言包的最后更新时间,前端可以比较这些
    时间判断是否需要发请求更新本地的一些配置
    
    """
    
    params = request.REQUEST
    subarea = params.get("subarea", "1") or '1'
    game_config.set_subarea(subarea)
    # config_update_time = get_config_version(subarea, 'config')
    # if not config_update_time:
    #     up_value = int(time.time())
    # else:
    #     up_value = int(config_update_time)
    update_time_records = setConfigUpdateTime(subarea)

    data = {
        'openid': get_uuid(),
        'version':game_config.system_config['version'],
        'app_url':game_config.system_config['app_url'],
        'server_now':int(time.time()),

        #False for now -- 2014/10/22 Xu Changsen
        'qq_account':game_config.system_config.get('qq_account',False),
        'sina_account':game_config.system_config.get('sina_account',False),

        'fb_account':game_config.system_config.get('fb_account',False),
        'oc_account':game_config.system_config.get('account_assign_switch',False),
        #added 2014/10/22 Xu Changsen
        'qihoo360_account':game_config.system_config.get('qihoo360_account',False),
        'baidu91_account':game_config.system_config.get('baidu91_account',False),


        'christmas':game_config.system_config.get('christmas',False),
        'open_invite':game_config.invite_config.get('open_invite',False),
        'skin_type': game_config.system_config.get('skin_type', ''),#皮肤的样子

        "up_value": update_time_records["config"],
        
        "cup_value": update_time_records["card_config"],
        "mup_value": update_time_records["monster_config"],
        "sup_value": update_time_records["system_config"],
        # "cityup_value": update_time_records["city_config"],
        "equp_value": update_time_records["equip_config"],
        "skill_params_value": update_time_records["skill_params_config"],
        "materialup_value": update_time_records["material_config"],

        'card_desc_version': str(update_time_records["card_desc_config"]),
        'skill_desc_version': str(update_time_records["skill_desc_config"]),
        'equip_desc_version': str(update_time_records["equip_desc_config"]),
        # 'dungeon_desc_version': str(update_time_records["dungeon_desc_config"]),
        'mat_item_desc_version': str(update_time_records["material_desc_config"]),
        "props_desc_config": str(update_time_records["props_desc_config"]),

        'language_version': str(update_time_records["language_config"]),


        'share_image_version':game_config.system_config.get('share_image_version', '100'),
    }
    res_version = params.get('ver', '')
    if res_version:
        res_url, res_ver = get_res_url(res_version, game_config)
        data["res_url"] = res_url
        data["res_ver"] = res_ver
        # 安卓的fb登录标识
        if 'fb_account' in game_config.android_config:
            data['fb_account'] = game_config.android_config['fb_account']
    return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
Example #21
0
    def new_func(request, *args, **argw):
        access_token = request.REQUEST.get('access_token', '')
        openid = request.REQUEST.get('openid', '')
        platform = request.REQUEST.get('platform', '')
        uuid = request.REQUEST.get("uuid", "")
        mktid = request.REQUEST.get("mktid", "")
        version = request.REQUEST.get("version", "1.0")
        client_type = request.REQUEST.get("client_type", "")
        # ios5以前用mac地址,ios6以后的用idfa
        macaddr = request.REQUEST.get("macaddr", "")
        idfa = request.REQUEST.get("idfa", "")
        ios_ver = request.REQUEST.get("ios_ver", "")

        if platform == 'oc':
            result,pid,msg = auth_token_for_oc(request, access_token, openid, uuid,
                                               mktid, version, client_type,macaddr,
                                               idfa, ios_ver)
            if not result:
                #print '##### failed to auth_token_for_oc, result, pid, msg=', result, pid, msg
                data = {
                    'rc': 3,
                    'data': {
                        'msg': msg,
                        'server_now': int(time.time())
                    }
                }
                return HttpResponse(
                    json.dumps(data, indent=1),
                    content_type='application/x-javascript',
                )
        else:
            result = False

            # 除360外, 必须需要 access_token, openid, platform
            # 2014/10/22: 现在 360, 只给 access_token ?
            if platform != '360' and (not access_token or not openid or not platform):
                #print '#### platform_auth, rc: 6'
                data = {
                    'rc': 6,    #缺参数
                    'data': {
                        'msg': get_msg('login', 'platform_overdue'),
                        'server_now': int(time.time())
                    }
                }
                return HttpResponse(
                    json.dumps(data, indent=1),
                    content_type='application/x-javascript',
                )
            
            auth_function = globals().get("auth_token_for_" + platform)

            if auth_function:
                result,pid = auth_function(request, access_token, openid, uuid,
                                           mktid, version, client_type,
                                           macaddr, idfa, ios_ver)

        if not result:
            #print '##### failed to auth_function, result, pid=', result, pid
            data = {
                'rc': 3,
                'data': {
                    'msg': get_msg('login', 'platform_overdue'),
                    'server_now': int(time.time())
                }
            }
            return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
        # 验证成功
        else:
            #检查用户是否处于冻结状态
            frozen_msg = get_frozen_msg(request.rk_user)
            if frozen_msg:
                data = {
                    'rc': 10,
                    'data': {
                        'msg': frozen_msg,
                        'server_now': int(time.time())
                    }
                }
                return HttpResponse(
                    json.dumps(data, indent=1),
                    content_type='application/x-javascript',
                )

            if platform != '360':
                Session.set(platform, pid)

        result = func(request, *args, **argw)
        return result
Example #22
0
def subareas_conf(request):
    return HttpResponse(
        json.dumps(game_config.subareas_conf(),
                   indent=1),
        content_type='application/x-javascript',
    )
Example #23
0
    def new_func(request, *args, **argw):
        try:
            timestamp = request.REQUEST.get('timestamp')
            if not timestamp:
                data = {
                    'rc':6,
                    'data': {
                        'msg': get_msg('login', 'refresh'),
                        'server_now': int(time.time()),
                    }
                }
                return HttpResponse(
                    json.dumps(data, indent=1),
                    content_type='application/x-javascript',
                )
            # all_post_data  是 QueryDict 类型,详见:https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.QueryDict
            all_post_data = request.POST.copy()
            if 'signature' in all_post_data:
                all_post_data['signature'] = all_post_data['signature'].replace(' ', '+')

            debug_print('all_post_datas>>>>>>>>>>>>>>' + str(all_post_data))
            
            # 检查时间  时间戳超过一定时间后,视为过期请求
            if (time.time() - int(timestamp)) > settings.AUTH_AGE:
                data = {
                    'rc':1,
                    'data': {
                        'msg': get_msg('login', 'refresh'),
                        'server_now': int(time.time()),
                    }
                }
                print 'timestamp auth failed!', request.REQUEST.get('pid', 'none')
                return HttpResponse(
                    json.dumps(data, indent=1),
                    content_type='application/x-javascript',
                )

            # 检查验证码
            arg = all_post_data.pop('arg')[0]
            all_string = ''
            all_args = []
            for key, value in sorted(all_post_data.items()):
                all_args.append('%s=%s&' % (key, value))
            all_string = ''.join(all_args)

            local_arg = md5.md5(all_string.encode('utf-8') + settings.SIG_SECRET_KEY).hexdigest()[:10]
            # 签名认证不通过
            if False: #local_arg != arg:
                signature_fail = True
                if 'method' in request.REQUEST and request.REQUEST['method'] in ['main.set_name', 'pack.rename']:
                    signature_fail = False
                if signature_fail:
                    print 'signature auth failed!', request.REQUEST.get('pid', 'none')
                    data = {
                        'rc':1,
                        'data': {
                            'msg': get_msg('login', 'refresh'),
                            'server_now': int(time.time())
                        }
                    }
                    return HttpResponse(
                        json.dumps(data, indent=1),
                        content_type='application/x-javascript',
                    )
            # 认证通过
            result = func(request, *args, **argw)
            return result
        except:
            print_err()
            # 清空storage
            app.pier.clear()
            # send mail
            send_exception_mail(request)

            data = {
                'rc': 8,
                'data': {
                    'msg': get_msg('login', 'server_exception'),
                    'server_now': int(time.time())
                }
            }
            return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
Example #24
0
    def new_func(request, *args, **argw):
        try:
            timestamp = request.REQUEST.get('timestamp')
            if not timestamp:
                data = {
                    'rc': 6,
                    'data': {
                        'msg': get_msg('login', 'refresh'),
                        'server_now': int(time.time()),
                    }
                }
                return HttpResponse(
                    json.dumps(data, indent=1),
                    content_type='application/x-javascript',
                )
            # all_post_data  是 QueryDict 类型,详见:https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.QueryDict
            all_post_data = request.POST.copy()
            if 'signature' in all_post_data:
                all_post_data['signature'] = all_post_data[
                    'signature'].replace(' ', '+')

            debug_print('all_post_datas>>>>>>>>>>>>>>' + str(all_post_data))

            # 检查时间  时间戳超过一定时间后,视为过期请求
            if (time.time() - int(timestamp)) > settings.AUTH_AGE:
                data = {
                    'rc': 1,
                    'data': {
                        'msg': get_msg('login', 'refresh'),
                        'server_now': int(time.time()),
                    }
                }
                print 'timestamp auth failed!', request.REQUEST.get(
                    'pid', 'none')
                return HttpResponse(
                    json.dumps(data, indent=1),
                    content_type='application/x-javascript',
                )

            # 检查验证码
            arg = all_post_data.pop('arg')[0]
            all_string = ''
            all_args = []
            for key, value in sorted(all_post_data.items()):
                all_args.append('%s=%s&' % (key, value))
            all_string = ''.join(all_args)

            local_arg = md5.md5(
                all_string.encode('utf-8') +
                settings.SIG_SECRET_KEY).hexdigest()[:10]
            # 签名认证不通过
            if False:  #local_arg != arg:
                signature_fail = True
                if 'method' in request.REQUEST and request.REQUEST[
                        'method'] in ['main.set_name', 'pack.rename']:
                    signature_fail = False
                if signature_fail:
                    print 'signature auth failed!', request.REQUEST.get(
                        'pid', 'none')
                    data = {
                        'rc': 1,
                        'data': {
                            'msg': get_msg('login', 'refresh'),
                            'server_now': int(time.time())
                        }
                    }
                    return HttpResponse(
                        json.dumps(data, indent=1),
                        content_type='application/x-javascript',
                    )
            # 认证通过
            result = func(request, *args, **argw)
            return result
        except:
            print_err()
            # 清空storage
            app.pier.clear()
            # send mail
            send_exception_mail(request)

            data = {
                'rc': 8,
                'data': {
                    'msg': get_msg('login', 'server_exception'),
                    'server_now': int(time.time())
                }
            }
            return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
Example #25
0
    def new_func(request, *args, **argw):
        access_token = request.REQUEST.get('access_token', '')
        openid = request.REQUEST.get('openid', '')
        platform = request.REQUEST.get('platform', '')
        uuid = request.REQUEST.get("uuid", "")
        mktid = request.REQUEST.get("mktid", "")
        version = request.REQUEST.get("version", "1.0")
        client_type = request.REQUEST.get("client_type", "")
        # ios5以前用mac地址,ios6以后的用idfa
        macaddr = request.REQUEST.get("macaddr", "")
        idfa = request.REQUEST.get("idfa", "")
        ios_ver = request.REQUEST.get("ios_ver", "")

        if platform == 'oc':
            result, pid, msg = auth_token_for_oc(request, access_token, openid,
                                                 uuid, mktid, version,
                                                 client_type, macaddr, idfa,
                                                 ios_ver)
            if not result:
                #print '##### failed to auth_token_for_oc, result, pid, msg=', result, pid, msg
                data = {
                    'rc': 3,
                    'data': {
                        'msg': msg,
                        'server_now': int(time.time())
                    }
                }
                return HttpResponse(
                    json.dumps(data, indent=1),
                    content_type='application/x-javascript',
                )
        else:
            result = False

            # 除360外, 必须需要 access_token, openid, platform
            # 2014/10/22: 现在 360, 只给 access_token ?
            if platform != '360' and (not access_token or not openid
                                      or not platform):
                #print '#### platform_auth, rc: 6'
                data = {
                    'rc': 6,  #缺参数
                    'data': {
                        'msg': get_msg('login', 'platform_overdue'),
                        'server_now': int(time.time())
                    }
                }
                return HttpResponse(
                    json.dumps(data, indent=1),
                    content_type='application/x-javascript',
                )

            auth_function = globals().get("auth_token_for_" + platform)

            if auth_function:
                result, pid = auth_function(request, access_token, openid,
                                            uuid, mktid, version, client_type,
                                            macaddr, idfa, ios_ver)

        if not result:
            #print '##### failed to auth_function, result, pid=', result, pid
            data = {
                'rc': 3,
                'data': {
                    'msg': get_msg('login', 'platform_overdue'),
                    'server_now': int(time.time())
                }
            }
            return HttpResponse(
                json.dumps(data, indent=1),
                content_type='application/x-javascript',
            )
        # 验证成功
        else:
            #检查用户是否处于冻结状态
            frozen_msg = get_frozen_msg(request.rk_user)
            if frozen_msg:
                data = {
                    'rc': 10,
                    'data': {
                        'msg': frozen_msg,
                        'server_now': int(time.time())
                    }
                }
                return HttpResponse(
                    json.dumps(data, indent=1),
                    content_type='application/x-javascript',
                )

            if platform != '360':
                Session.set(platform, pid)

        result = func(request, *args, **argw)
        return result