示例#1
0
文件: owl.cpp 项目: v1ka5/Owl_zwei
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;
}
示例#2
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;
}