def getreq_get(request,device): ''' 获取设备命令 处理请求中带有设备INFO信息 ''' info = request.GET.get("INFO", "") if info: update_device_info(device,info) resp = fetch_cmds(device) print 'getting cmds=============',resp deal_device_active(device) if settings.ENCRYPT: import lzo resp = lzo.bufferEncrypt(resp + "\n", device.sn) return device_response_write(resp)
def sync_getreq_get(request, device): ''' 获取设备命令 处理请求中带有设备INFO信息 ''' dt_now = datetime.datetime.now() str_now = dt_now.strftime(time_fmt) device.last_activity = str_now device.set('last_activity') # 设备每次请求命令时更新最后访问时间 info = request.GET.get("INFO", "") if info: update_device_info(device, info) resp = device.fetch_cmds() if develop_model: print 'Getting cmds=============\n', resp if ENCRYPT: import lzo resp = lzo.bufferEncrypt(resp + "\n", device.sn) return device_response_write(resp)
if acmd.CmdTransTime: #如果是上次已经传送过的命令,则本次少送10条,因为以前的传送可能是因为数据太大而传送失败 maxRet -= 10 acmd.CmdTransTime = datetime.datetime.now() acmd.save() c = c + 1; if (c > maxRet) or (len(resp) > maxRetSize): break; if acmd.CmdContent in ["REBOOT", "RESTART"]: break; #重新启动命令只能是最后一条指令 if c == 0: resp += "OK" checkAndSave(device) except Exception, e: resp = "%s" % e errorLog(request) if settings.ENCRYPT: import lzo resp = lzo.bufferEncrypt(resp + "\n", device.SN) response["Content-Length"] = len(resp) response.write(resp) return response def getValueFrom(data, key): for l in data: if l.find(key + "=") == 0: return l[len(key) + 1:] return "" def saveDevInfo(device, pdata):#用详细的字段代替INFO info_list = ['FWVersion', 'FPCount', 'TransactionCount', 'UserCount', 'MainTime', '~MaxFingerCount', '~LockFunOn', '~MaxAttLogCount', '~DeviceName', '~AlgVer', 'FlashSize', 'FreeFlashSize', 'Language', 'VOLUME', 'DtFmt', 'IPAddress', 'IsTFT', '~Platform', 'Brightness', 'BackupDev', '~OEMVendor', 'FPVersion'] pd = setValueDic(pdata)
elif db_select == 3: excsql("update iclock set last_activity=to_date('" + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "','yyyy-mm-dd hh24:mi:ss') where id=" + str(device.pk)) else: excsql("update iclock set last_activity='" + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "' where id=" + str(device.pk)) if c == 0: #没有发送任何命令时,简单向设备返回 "OK" 即可 resp += "OK" except Exception, e: resp = u"%s" % e errorLog(request) if settings.ENCRYPT: #---如果要加密 import lzo resp = lzo.bufferEncrypt(resp + "\n", device.sn) response["Content-Length"] = len(resp) #----向设备发送数据 response.write(resp) return response def check_upgrade_fw(device, cmdobj): ''' 固件升级相关 ''' if cmdobj.CmdContent.find( "PutFile file/fw/") == 0 and cmdobj.CmdContent.find( "main.") > 0: #it is an upgrade firmware command if hasattr(device, "is_updating_fw"): del device.is_updating_fw url, fname = getFW(device) q_server = check_and_start_queqe_server()
c = c + 1 if c > maxRet or len(resp) > maxRetSize: break if acmd.CmdContent in ('REBOOT', 'RESTART'): break if c == 0: resp += 'OK' checkAndSave(device) except Exception, e: resp = '%s' % e errorLog(request) else: if settings.ENCRYPT: import lzo resp = lzo.bufferEncrypt(resp + '\n', device.SN) response['Content-Length'] = len(resp) response.write(resp) return response def getValueFrom(data, key): for l in data: if l.find(key + '=') == 0: return l[len(key) + 1:] return '' def saveDevInfo(device, pdata):