Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
                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: