DWORD WINAPI InternetConnectionCheckerProc( LPVOID param ){ int flag = 1; while( !IsConnectedToNet() ){ if(flag){ //MB("not connected, in the first tight loop"); flag = 0; } Sleep(10000); } flag = 1; //MB("seems we are connected now"); char *ip; char *t = GetExternalIp(); ip = (char*)malloc(strlen(t) + sizeof(char)); strcpy(ip,t); //MB(ip); char buf[256]; wsprintf(buf,"%s is online",ip); OwlDefaultNotify(buf); while(1){ while( !IsConnectedToNet() ){ Sleep(10000); } char *tmp = GetExternalIp(); if( strcmp( ip, tmp ) ){ wsprintf(buf,"%s rolled over to %s", ip, tmp); OwlDefaultNotify(buf); if( strlen(tmp) > strlen(ip) ){ free(ip); ip = (char*)malloc( strlen(tmp) + sizeof(char) ); } strcpy(ip,tmp); } Sleep(10000); } return 0; }
//组装DDNS的URS命令 static int DdnsCmdInfo(char *DdnsCmdBuf,ddns_cfg_t *ddns) { char SrcData[128] = {0}; char EnData[256] = {0}; char pClientIp[20] = {0}; memset(DdnsCmdBuf,0,DDNS_CMD_LEN); memset(ddns->server,0,sizeof(ddns->server)); sprintf(SrcData,"%s:%s",ddns->user,ddns->pwd); fprintf(stderr,"SrcData:%s\n",SrcData); base64Encode(EnData,SrcData,strlen(SrcData)); if(GetExternalIp(pClientIp) == -1) { fprintf(stderr,"Get external IP fail!\n"); return -1; } //fprintf(stderr,"ipaddr:%s\n" ,pClientIp); ///switch(_DDNS_MYQSEE) switch(ddns->type) { case _DDNS_ORAY: strcpy((char *)ddns->server,"ddns.oray.com"); snprintf(DdnsCmdBuf,(DDNS_CMD_LEN-1), "GET /ph/update?hostname=%s&myip=%s HTTP/1.0\r\n" "Host: ddns.oray.com\r\n" "Authorization: Basic %s\r\n" "User-Agent: Oray\r\n\r\n" // ,ddns->domain, pClientIp, EnData); break; case _DDNS_NOIP: strcpy((char *)ddns->server,"dynupdate.no-ip.com"); snprintf(DdnsCmdBuf,(DDNS_CMD_LEN-1), "GET /nic/update?hostname=%s&myip=%s HTTP/1.0\r\n" "Host: dynupdate.no-ip.com\r\n" "Authorization: Basic %s\r\n" "User-Agent: Bobs/1.2 [email protected]\r\n\r\n" ,ddns->domain,pClientIp, EnData); break; case _DDNS_DYNDNS: strcpy((char *)ddns->server,"members.dyndns.org"); snprintf(DdnsCmdBuf,(DDNS_CMD_LEN - 1), "GET /nic/update?hostname=%s&myip=%s&wildcard=NO&mx=NOCHG&backmx=NOCHG&offline=NO HTTP/1.0\r\n" "Host: www.dyndns.com\r\n" // 之前使用members.dyndns.org不行 "Authorization: Basic %s\r\n" "User-Agent: futura - arduinodydns - 1.1 \r\n\r\n" ,ddns->domain,pClientIp,EnData); break; case _DDNS_CHANGEIP: strcpy((char *)ddns->server,"changeip.com"); snprintf(DdnsCmdBuf,(DDNS_CMD_LEN - 1), "GET /nic/update?hostname=%s&myip=%s HTTP/1.0\r\n" "Host: www.changeip.com\r\n" "Authorization: Basic %s\r\n" "User-Agent: ChangeIP \r\n\r\n" ,ddns->domain,pClientIp,EnData); break; case _DDNS_APRESS: strcpy((char *)ddns->server,"a-press.org"); snprintf(DdnsCmdBuf,(DDNS_CMD_LEN - 1), "GET /dns?hostname=%s&username=%s&password=%s HTTP/1.1\r\n" "Host: www.a-press.org\r\n\r\n" ,ddns->domain,ddns->user,ddns->pwd); break; case _DDNS_MYQSEE: strcpy((char *)ddns->server,"www.myq-see.com"); snprintf(DdnsCmdBuf,(DDNS_CMD_LEN - 1), "GET /nic/update?hostname=%s&myip=%s HTTP/1.0\r\n" "Host: www.myq-see.com\r\n" "Authorization: Basic %s\r\n" "User-Agent: TongLi Inc. - Router 25001 - 1.1\r\n\r\n" ,ddns->domain,pClientIp,EnData); break; case _DDNS_SMARTEYES: strcpy((char *)ddns->server,"www.smart-eyes.com"); snprintf(DdnsCmdBuf,(DDNS_CMD_LEN - 1), "GET /dns?hostname=%s&username=%s&password=%s HTTP/1.1\r\n" "Host:www.smart-eyes.com\r\n\r\n",ddns->domain,ddns->user,ddns->pwd); break; default: break; } fprintf(stderr,"DDNS_CMD:\n%s",DdnsCmdBuf); return 0; }