123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import time
- import requests
- from flask import make_response, request, abort
- from flask_restful import Resource
- from app.configs import config
- def verify_token(token, servertype):
- if token not in config.built_in_token or token not in config.token_dict: # 不是内置token请求oauth或不在字记录典里请求oauth
- # token ,记录token,token为key,时间错为value
- validate_token_rep = requests.post('http://%s/oauth/api/user/getUserByToken' % config.OAUTH_HOST,
- headers={'token': token},
- data={'strUrl': servertype, 'serviceId': 8})
- elif time.time() > config.token_dict.get(token) + 172800:
- # token在字典里,判断token是否超过48小时,超过删除token请求oauth。记录token,token为key,时间错为value
- config.token_dict.pop(token)
- validate_token_rep = requests.post('http://%s/oauth/api/user/getUserByToken' % config.OAUTH_HOST,
- headers={'token': token},
- data={'strUrl': servertype, 'serviceId': 8}
- )
- return validate_token_rep.json()
- class AgentApi(Resource):
- def get(self, path):
- args = request.args.to_dict()
- try:
- token = args.pop('token')
- servertype = args.pop('servertype')
- validate_token_rep = verify_token(token, servertype)
- if validate_token_rep.get('code') != 200:
- return validate_token_rep
- config.token_dict[token] = time.time()
- # 替换ip转发请求
- rep = requests.get('{server}/{path}'.format(server=config.ServerConfig.get(servertype), path=path),
- params=args)
- response = make_response(rep.content)
- response.headers['Content-Type'] = rep.headers.get('Content-Type')
- return response
- except KeyError:
- abort(418)
- class MapServer(Resource):
- def get(self):
- args = request.args.to_dict()
- try:
- token = args.pop('token')
- servertype = args.pop('servertype')
- validate_token_rep = verify_token(token, servertype)
- if validate_token_rep.get('code') != 200:
- return validate_token_rep
- # 替换ip转发请求
- rep = requests.get(config.ServerConfig.get(servertype), params=args)
- response = make_response(rep.text)
- response.headers['Content-Type'] = 'application/javascript;charset=UTF-8'
- return response
- except KeyError:
- abort(418)
|