def output_json(data, code, headers=None): """Makes a Flask response with a JSON encoded body""" # 如果是app接口,且不是支付回调,加密后返回 Logger.log("请求id:%s 响应\n返回JSON:%s\n" % (session['requestId'], data)) resp = make_response(json.dumps(data), code) resp.headers.extend(headers or {}) return resp
def handle(self): parser = reqparse.RequestParser() parser.add_argument('type') args = parser.parse_args() usage = '' if args.type is None: return CommonUtil.json_response(-1, '缺少参数:type') elif args.type == '0': usage = 'regAccount' # 注册账号 elif args.type == '1': usage = 'findPassword' # 找回密码 elif args.type == '2': usage = 'adminLogin' # 管理台登录 else: return CommonUtil.json_response(-1, 'type参数格式错误') # 用客户端ip来作为sendId是为了使频繁请求时可以替换这个key下面原来的验证码 md5 = hashlib.md5() md5.update("validimage_{}_{}".format(request.environ['REMOTE_ADDR'], usage).encode('utf-8')) sendId = md5.hexdigest() validImage = ValidImage.create() Redis.setex(sendId, 60, validImage['code']) data = {"img": validImage['img'], "sendId": sendId} Logger.log("生成图片验证码 ip:{} sendId:{} code:{}".format( request.environ['REMOTE_ADDR'], sendId, validImage['code'])) return CommonUtil.json_response(0, "success", data)
def __init__(self): md5 = hashlib.md5() md5.update(os.urandom(24)) session['requestId'] = md5.hexdigest() Logger.log("请求 请求id:%s\n来源IP:%s\n请求方法:%s\n请求路径:%s\n请求参数:%s" % (session['requestId'], request.environ['REMOTE_ADDR'], request.environ['REQUEST_METHOD'], request.url, json.dumps(request.form))) Resource.__init__(self)
def __init__(self): md5 = hashlib.md5() md5.update(os.urandom(24)) session['requestId'] = md5.hexdigest() Logger.log( ">>>>>>>>>>>>>>>>>>>>>>> 请求 请求id:%s >>>>>>>>>>>>>>>>>>>>>>>\n%s|%s|%s|%s|%s" % (session['requestId'], time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), request.environ['REMOTE_ADDR'], request.environ['REQUEST_METHOD'], request.url, request.get_data())) Resource.__init__(self)
def real_time_recognize( self, width=640, height=360, resize=1.0, detector="mtcnn", flip=False, graphics=True, socket=None, mtcnn_stride=1, ): """Real-time facial recognition :param width: width of frame (default: 640) :param height: height of frame (default: 360) :param resize: resize scale (default: 1. = no resize) :param detector: face detector type (default: "mtcnn") :param flip: whether to flip horizontally or not (default: False) :param graphics: whether or not to use graphics (default: True) :param socket: socket (dev) (default: None) :param mtcnn_stride: stride frame stride (default: 1) """ assert self._db, "data must be provided" assert 0.0 <= resize <= 1.0, "resize must be in [0., 1.]" graphics_controller = GraphicsRenderer(width, height, resize) logger = Logger(frame_limit=10, frame_threshold=5) pbar = ProgressBar(logger, ws=socket) cap = Camera() detector = FaceDetector(detector, self.img_shape, min_face_size=240, stride=mtcnn_stride) while True: _, frame = cap.read() cframe = frame.copy() # resize frame if resize != 1: frame = cv2.resize(frame, (0, 0), fx=resize, fy=resize) # facial detection and recognition info = self.recognize(frame, detector, flip=flip) face, is_recognized, best_match, elapsed = info # logging and socket if is_recognized and is_looking(face): log_result = logger.log(best_match) pbar.update(end=log_result is not None) if log_result and socket: socket.send(json.dumps({"best_match": best_match})) # graphics if graphics: graphics_controller.add_graphics(cframe, *info) cv2.imshow("AI Security v2021.0.1", cframe) if cv2.waitKey(1) & 0xFF == ord("q"): break cap.release() cv2.destroyAllWindows()
def json_response(cls, code, msg, data={}): res = {"code": code, "message": msg, "data": data} Logger.log("响应 请求id:%s\n返回内容:%s" % (session['requestId'], json.dumps(res))) return res