Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
					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)
Ejemplo n.º 4
0
        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()
Ejemplo n.º 5
0
                    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):