Exemple #1
0
def __check_login__(token):
    """
    platform兼容各平台
    统计总平台与各平台设备hgetall,
    通过placeholder来限制各平台设备数
    备注:映射关系 {email + platform + place --> ssid}无法设置过期时间,
    当APP内用户量庞大时需要定时清理ssid为None的epp映射关系,一期暂时不做清理
    :return:
    """
    key_pix = r.get(token)
    if key_pix:
        # 是否注销登录
        no_valid_token = jwt.decode(
            token,
            signers=[jws.HmacSha(bits=256, key=web['token_key'] + key_pix)])
        # 校验token是否有效
        if no_valid_token['valid']:
            now_timestamp = time.time()
            if no_valid_token['payload']['exp'] > now_timestamp:
                return no_valid_token['payload']['username']
            else:
                r.delete(token)
                return False
        else:
            r.delete(token)
            return False
    else:
        return False
Exemple #2
0
    def __init__(self, dm=None, phone=None, options=None,
                 config_file=None, chunk=1, repos=[]):
        PhoneTest.__init__(self, dm=dm, phone=phone, options=options,
                           config_file=config_file, chunk=chunk, repos=repos)
        self._result_server = None
        self._resulturl = None
        self.perfherder_artifact = None
        if options.phonedash_url:
            self._resulturl = urlparse.urljoin(options.phonedash_url, '/api/s1s2/')
            self.loggerdeco.debug('PerfTest._resulturl: %s' % self._resulturl)

        # [signature]
        self._signer = None
        self._jwt = {'id': options.phonedash_user, 'key': options.phonedash_password}
        # phonedash requires both an id and a key.
        if self._jwt['id'] and self._jwt['key']:
            self._signer = jws.HmacSha(key=self._jwt['key'],
                                       key_id=self._jwt['id'])
        # [settings]
        try:
            self._iterations = self.cfg.getint('settings', 'iterations')
        except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
            self._iterations = 1
        try:
            self.stderrp_accept = self.cfg.getfloat('settings', 'stderrp_accept')
        except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
            self.stderrp_accept = 0
        try:
            self.stderrp_reject = self.cfg.getfloat('settings', 'stderrp_reject')
        except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
            self.stderrp_reject = 100
        try:
            self.stderrp_attempts = self.cfg.getint('settings', 'stderrp_attempts')
        except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
            self.stderrp_attempts = 1
        self.perfherder_options = {}
        try:
            self.perfherder_options['alert_threshold'] = self.cfg.getint('perfherder',
                                                                         'alert_threshold')
        except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
            pass
        try:
            self.perfherder_options['min_back_window'] = self.cfg.getint('perfherder',
                                                                         'min_back_window')
        except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
            pass
        try:
            self.perfherder_options['max_back_window'] = self.cfg.getint('perfherder',
                                                                         'max_back_window')
        except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
            pass
        try:
            self.perfherder_options['fore_window'] = self.cfg.getint('perfherder', 'fore_window')
        except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
            pass
        self._resultfile = None
        self._resultwriter = None

        self.loggerdeco.debug('PerfTest: %s', self.__dict__)
Exemple #3
0
def generate_token(username):
    iat = time.time()
    exp = iat + web['session_timeout']
    payload = {'username': username, 'iat': iat, 'exp': exp}
    key_pix = token_key()
    token = jwt.encode(payload,
                       signer=jws.HmacSha(bits=256,
                                          key=web['token_key'] + key_pix))
    r.set(token, key_pix)
    return token
Exemple #4
0
def de_token(token):
    if token is None:
        return None
    token = str(token)
    token_key_pix = redis_service.get(token)
    if token_key_pix is None:
        return None
    token_keys = web['token_key'] + token_key_pix
    no_valid_token = jwt.decode(
        token, signers=[jws.HmacSha(bits=256, key=token_keys)])
    if no_valid_token['valid']:
        return no_valid_token['payload']
    else:
        return None
Exemple #5
0
def en_token(telephone, user_id):
    iat = time.time()
    exp = iat + ex_time['token_ex']
    payload = {
        'telephone': str(telephone),
        'user_id': str(user_id),
        'iat': iat,
        'exp': exp
    }
    key_pix = generate_key()
    token = jwt.encode(payload,
                       signer=jws.HmacSha(bits=256,
                                          key=web['token_key'] + key_pix))
    redis_service.set(token, key_pix)
    return token