From 4c62fe0c6d065b4052041305c95c478636d1c51f Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期六, 25 三月 2017 15:40:05 +0800 Subject: [PATCH] bug fix --- ProxyConsole/proxyconsole-hc.cpp | 76 +++++++++++++++++++++++++++++-------- 1 files changed, 59 insertions(+), 17 deletions(-) diff --git a/ProxyConsole/proxyconsole-hc.cpp b/ProxyConsole/proxyconsole-hc.cpp index 00f9506..57907dd 100644 --- a/ProxyConsole/proxyconsole-hc.cpp +++ b/ProxyConsole/proxyconsole-hc.cpp @@ -615,7 +615,7 @@ if (hcnetsdk_user < 0) { printf("hcnetsdk_user < 0"); - exit(EXIT_FAILURE); + exit(EXIT_FAILURE);//#todo if debug equipment(analizer), remove this } /*Install timer_handler as th siganl handler for SIGVTALRM */ @@ -653,7 +653,7 @@ int length=0; char buff[102400]; - //puts("Step.1 ========>Server Thread is strarted......"); + puts("Step.1 ========>Server Thread is strarted......"); unsigned char data[4096]; //=======================================equipment data================================ int idx=0; @@ -693,7 +693,7 @@ // length-=3; // if(length<=0) continue; //} - + if(buff[0]==0x68 && buff[1]==0x03 ) { @@ -809,7 +809,7 @@ void* MyEquipmentthread(void* arg) { int eidx = (int)arg; - //printf("Step.3 ===%d=====>RealTimeEvent Thread is strarted......\n",eidx); + printf("Step.3 ===%d=====>RealTimeEvent Thread is strarted......\n",eidx); int length=0; char buff[102400]; @@ -824,12 +824,13 @@ } else if(length>0) { + std::cout << "buff: " << buff<<std::endl; + bool isDisalarm = false; if (strstr(buff, "ViqEventNotificationAlert") == NULL) // <urn continue; if (strstr(buff, "startTime") == NULL) // <urn isDisalarm = true; - //std::cout << buff<<std::endl; int channel = -1; { @@ -886,16 +887,16 @@ int lUserData = hcnetsdk_get_userid(ip); if (camConfig != NULL && equipConfig != NULL && lUserData >= 0) { - std::cout << "alarm begin k=" << k << std::endl; + std::cout << "......alarm begin k=" << k << std::endl; if (equipConfig->m_type == ET_HCNET_DECODER_ALARMOUT && !isDisalarm) hcnetsdk_alarm_alarmout(lUserData, *camConfig); else if (equipConfig->m_type == ET_HCNET_DECODER_LOGO) hcnetsdk_alarm_logo(lUserData, *camConfig, ip, channel, isDisalarm); - std::cout << "alarm end k=" << k << std::endl; + std::cout << "......alarm end k=" << k << std::endl; } else { - //std::cout << "alarm lost k=" << k << std::endl; + std::cout << "alarm lost k=" << k << std::endl; } } } @@ -1356,7 +1357,7 @@ return n; } //for real event -void MakeAuthorizedPacketReal(char* buff,int length, char* Method,char* uri,int Idx) +void MakeAuthorizedPacketReal_Digest(char* buff,int length, char* Method,char* uri,int Idx) { char Device[150] ; char Realm_buf1[512] ; @@ -1369,7 +1370,7 @@ memset(domain_buf4,0,512); CharToByte((char*)buff, Device, length,Realm_buf1,nonce_buf2,auth_buf3,domain_buf4, len); - const char* cnonce_buf="163acd0e58793a190f29ee879d4b224f";//"08a9d86c1b5e45963cf82f43dca59c51"; + const char* cnonce_buf="1oBAAAqkwXP9q9MorVCzgw5LNPc";//"08a9d86c1b5e45963cf82f43dca59c51"; Realm_buf1[len[0]]=0; nonce_buf2[len[1]]=0; auth_buf3[len[2]]=0; @@ -1418,7 +1419,32 @@ byte_array[iidx]=0; } + +void MakeAuthorizedPacketReal_Basic(char* buff,int length, char* Method,char* uri,int Idx) +{ + /* +POST /PSIA/VIQ/System/sessions HTTP/1.1 +Content-Length: 0 +Host: 192.168.1.5:80 +Connection: Keep-Alive +Authorization: Basic c3VwZXJ2aXNvcjpzdXBlcnZpc29y + */ + int i = 0; + sprintf(byte_array, + "%s %s HTTP/1.1\r\n" + "Content-Length: 0\r\n" + "Host: %s:80\r\n" + "Connection: Keep-Alive\r\n" + "Authorization: Basic %s\r\n" + "\r\n", + Method, + uri, + equipments[Idx].ip, + "c3VwZXJ2aXNvcjpzdXBlcnZpc29y" // base64(supervisor:supervisor) + ); +} + //// 鍔熻兘锛氬紑濮嬫煡鐪嬪疄鏃剁洃鎺� //// 杈撳叆锛氬垎鏋愬櫒IP,鐢ㄦ埛,瀵嗙爜 //// 杈撳嚭锛�0锛堟垚鍔燂級, -1(鍒濆鍖栧け璐�),-2(杩炴帴澶辫触) @@ -1460,6 +1486,7 @@ sigset(SIGALRM, u_alarm_handler);//add 2016.11.22 alarm(2); length=read(rsock_down[Idx],&buff,sizeof(buff)); + //printf("RESPONSE: %s\n",&buff); alarm(0); sigrelse(SIGALRM); //printf("Myequipment connect ==================length =%d:\n",length); @@ -1471,14 +1498,23 @@ if(memorycmp((unsigned char*)buff,length, "WWW-Authenticate:",17)>0 && bbbb==0) { // analyse reception - MakeAuthorizedPacketReal(buff,length,"POST","/PSIA/VIQ/System/sessions/permanent",Idx); - zclock_sleep(100); - write(rsock_down[Idx],byte_array,strlen(byte_array)); -// printf("%s\n",(char*)byte_array); + MakeAuthorizedPacketReal_Basic(buff,length,"POST","/PSIA/VIQ/System/sessions/permanent",Idx); + //for(int ii=0;ii<4;ii++) + //{ + zclock_sleep(100); + write(rsock_down[Idx],byte_array,strlen(byte_array)); + //} + printf("%s\n",(char*)byte_array); bbbb=1; - continue; + continue;//#todo 20170325 + //break; } if(bbbb==1){ + //if (strstr((char*)buff,"Unauthorized") != NULL) + //{ + // bbbb=0; + //} + int sidx = stringcmp((char*)buff,"<urn:id>",8); if(sidx >=0){//<urn:ViqDateTimeInterval urn:version="1.0" xmlns:urn="urn:videoiq-com"><urn:startTime urn:version="1.0"><urn:date>2016-08-18T01:07:20.749</urn:date><urn:offset>0</urn:offset></urn:startTime><urn:endTime urn:version="1.0"><urn:date>2016-08-29T08:33:48.231</urn:date><urn:offset>0</urn:offset></urn:endTime></urn:ViqDateTimeInterval> int eidx = stringcmp((char*)buff,"</urn:id>",9); @@ -1513,6 +1549,8 @@ } char uri[200]; sprintf(uri,"/PSIA/Custom/Event/notification/notificationStream?sessionId=%s",sessions[Idx]); + //sprintf(uri,"/PSIA/Custom/Event/notification/notificationStream?sessionId=5"); + printf("/PSIA/Custom/Event/notification/notificationStream?sessionId=%s\n",sessions[Idx]); length = sprintf(byte_array,"GET %s HTTP/1.1\r\nContent-Type: text/xml\r\nHost: %s\r\nContent-Length: 0\r\nConnection: Keep-Alive\r\n\r\n",uri,equipments[Idx].ip); write(rsock_down[Idx],byte_array,strlen(byte_array)); while(1){ @@ -1531,9 +1569,13 @@ { char uri[200]; sprintf(uri,"/PSIA/Custom/Event/notification/notificationStream?sessionId=%s",sessions[Idx]); - MakeAuthorizedPacketReal(buff,length,"GET",uri,Idx); + MakeAuthorizedPacketReal_Basic(buff,length,"GET",uri,Idx); + //for(int ii=0;ii<4;ii++) + //{ + zclock_sleep(100); write(rsock_down[Idx],byte_array,strlen(byte_array)); -// printf("%s\n",(char*)byte_array); + //} + printf("%s\n",(char*)byte_array); bbbb=3; continue; } -- Gitblit v1.8.0