| | |
| | | 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 */ |
| | |
| | | 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; |
| | |
| | | // length-=3; |
| | | // if(length<=0) continue; |
| | | //} |
| | | |
| | | |
| | | if(buff[0]==0x68 && buff[1]==0x03 ) |
| | | { |
| | | |
| | |
| | | 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]; |
| | |
| | | } |
| | | 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; |
| | | { |
| | |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | |
| | | 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] ; |
| | |
| | | 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; |
| | |
| | | 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(连接失败) |
| | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | } |
| | | 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){ |
| | |
| | | { |
| | | 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; |
| | | } |