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