def getreq(request): ''' http://xxx/getrequest 设备读取服务器上存储的命令 ''' network_monitor(request) try: resp = "" #---要直接发送的内容 device = check_device(request, True) #---检测、验证当前发出请求的设备 if device is None: return unknown_device_response() else: if request.method == 'GET': if SYNC_MODEL: return sync_getreq_get(request, device) else: return getreq_get(request, device) elif request.method == 'POST': pass else: return unknown_data_response(device) # 自动升级固件功能 # ...... except Exception, e: import traceback traceback.print_exc() resp = u"%s" % e return device_response_write(resp)
def devpost(request): ''' http://xxx/devicecmd 设备返回设备命令执行结果的请求 ''' from commen_utils import parse_posts network_monitor(request) device = check_device(request) #---检测、验证当前发出请求的设备 if device is None: return unknown_device_response() else: if request.method == 'GET': pass elif request.method == 'POST': try: rd = request.raw_post_data if settings.ENCRYPT: #---解密 try: import lzo rawData = lzo.bufferDecrypt(rd, device.sn) except: rawData = rd else: rawData = rd try: data0 = rawData.decode("gb18030") #---解码 except: data0 = rawData rets = {} pdata = parse_posts(data0) #---解析,结果为字典的数组 for apost in pdata: #[CMD,ID,Return] id = int(apost["ID"]) # 命令ID ret = apost["Return"] #命令执行返回值 if apost["CMD"] == "INFO":#更新设备信息 parse_dev_info(device, apost['Content']) device.save() rets[id] = ret elif (apost["CMD"] == "GetFile" or apost["CMD"] == "Shell") and ret > 0: check_upload_file(request, apost) rets[id] = ret elif apost["CMD"] == "VERIFY SUM" and ret > 0: #考勤校对 check_att_sum(apost,device) rets[id] = ret elif apost["CMD"] == "PutFile": check_upgradefile(id,apost,device,ret) post_check_update(device,[ret]) #立即单独更新此处理的开始指针 #rets[id] = ret else:#默认情况下CMD为DATA rets[id] = ret if len(rets) > 0: update_cmds(device, rets) return device_response_write("OK") except: device_response_write("") else: return unknown_data_response(device)
def cdata(request): ''' 设备向服务器的http:://xxx/cdata请求 ''' from protocol_content import POSDEVICE network_monitor(request) try: device_type = request.REQUEST.get('devicetype') #设备类型参数 pos_device_type = request.REQUEST.get('device_type', None) #兼容ID消费固件,后期统一使用devicetype if (device_type == POSDEVICE or pos_device_type == POSDEVICE): #ID消费机 from mysite.pos.pos_id.posdevview import pos_cdata if get_option("POS_ID"): resp = pos_cdata(request) else: #防止IC消费软件,连接ID消费机 from protocol_content import pos_return resp = pos_return() return device_response_write(resp) else: device = check_device(request, True, True) #---检测、验证当前发出请求的设备 if device is None: return unknown_device_response() else: if device.deviceType in ['ACP', 'ACD']: #控制器or一体机: from mysite.iaccess.push_comm_center import acc_cdata ret = acc_cdata(request) return device_response_write(ret) if request.REQUEST.has_key('action'): return ok_response(device) elif request.method == 'GET': return cdata_get(request, device) elif request.method == 'POST': try: return cdata_post(request, device) # resp =cdata_post(request, device) # return device_response_write(resp) except Exception, e: return erro_response(e) else: return unknown_data_response(device)
def getreq(request): ''' http://xxx/getrequest 设备读取服务器上存储的命令 ''' network_monitor(request) try: resp = "" #---要直接发送的内容 device = check_device(request, True) #---检测、验证当前发出请求的设备 if device is None: return unknown_device_response() else: if request.method == 'GET': return getreq_get(request,device) elif request.method == 'POST': pass else: return unknown_data_response(device) # 自动升级固件功能 # ...... except Exception, e: import traceback;traceback.print_exc() resp = u"%s" % e return device_response_write(resp)
ret = acc_cdata(request) return device_response_write(ret) if request.REQUEST.has_key('action'): return ok_response(device) elif request.method == 'GET': return cdata_get(request,device) elif request.method == 'POST': try: return cdata_post(request, device) # resp =cdata_post(request, device) # return device_response_write(resp) except Exception, e: return erro_response(e) else: return unknown_data_response(device) check_and_save_cache(device) #----暂为空函数 except Exception, e: return erro_response(e) def update_device_info(device,info): ''' 更新设备信息 ''' info = info.split(",") device.fw_version=info[0] #---主版本号 device.user_count=int(info[1]) #---注册用户数 device.fp_count=int(info[2]) #---注册指纹数 device.fp_count=int(info[2]) device.transaction_count=int(info[3]) #---考勤记录数 if len(info)>4: