def post(self): args = log_post_parser.parse_args() log = Log(**args) try: log.add() except IntegrityError: return max_res('', code=401, errmsg='名称重复') return max_res(marshal(log, log_fields))
def add(cls, client_msg: ClientMessage, course: str): with session_maker() as session: heartbeat = cls() heartbeat.student_code = client_msg.student_code heartbeat.course = course heartbeat.device = client_msg.device.dumps() heartbeat.device_id = client_msg.auth_license calc_device_id = Core.machine_code_auth( stu_code=client_msg.student_code, mac_addr=client_msg.device.mac_addr, c_volume_serial_number=client_msg.device. c_volume_serial_number, hostname=client_msg.device.hostname) if calc_device_id != client_msg.auth_license: Log.add(client_msg) heartbeat.created_time = datetime.datetime.now() session.add(heartbeat)
def verification(self, request, context): """ 解析请求: plain_request.context.body: 消息主体; plain_request.device: 设备信息 """ plain_request = ResponseParser.parse(request=request.key) body = plain_request.context.body context_type = plain_request.context.context_type message = plain_request.context.message code = plain_request.context.code device = plain_request.device student_code = plain_request.student_code auth_logger.info("{} - [{}] | {} | {} | Device: [{}]".format( TimeUtils.datetime(), student_code, message, body, device)) if context_type == MessageType.Verify: # 网络验证 User.modify(plain_request, datetime.datetime.now(), datetime.datetime.now()) Log.add(plain_request, "Login") return self.easy_response( {"success": True if code >= 0 else False}) elif context_type == MessageType.Heartbeat: # 心跳 User.modify(plain_request, None, datetime.datetime.now()) Heartbeat.add(plain_request, body['course']) return self.easy_response( {"success": True if code >= 0 else False}) elif context_type == MessageType.Logging: # 日志 Log.add(plain_request, "ClientLog") return self.easy_response( {"success": True if code >= 0 else False}) elif context_type == MessageType.Control: # 控制频率 delay_time = User.get_delay_time(student_code, body['course']) return self.easy_response({ "message": { 'delay_time': delay_time }, "success": True }) return self.easy_response({})
def add(cls, client_msg: ClientMessage): with session_maker() as session: device = cls() stu_codes = session.query(Devices.student_codes).filter( Devices.device_id == client_msg.device.device_id).first() if stu_codes: stu_codes = json.loads(stu_codes[0]) if stu_codes else [] stu_codes = list(set([client_msg.student_code] + stu_codes)) stu_codes = json.dumps(stu_codes, ensure_ascii=False, separators=(',', ':')) session.query(Devices).filter( Devices.device_id == client_msg.device.device_id).update( {Devices.student_codes: stu_codes}) else: stu_codes = json.dumps([client_msg.student_code], ensure_ascii=False, separators=(',', ':')) device.student_codes = stu_codes device.hostname = client_msg.device.hostname device.mac_addr = client_msg.device.mac_addr device.c_volume_serial_number = client_msg.device.c_volume_serial_number device.device_id = client_msg.device.device_id device.created_time = datetime.datetime.now() session.add(device) calc_auth_license = Core.machine_code_auth( stu_code=client_msg.student_code, mac_addr=client_msg.device.mac_addr, c_volume_serial_number=client_msg.device. c_volume_serial_number, hostname=client_msg.device.hostname) if calc_auth_license != client_msg.auth_license: Log.add(client_msg)