Ejemplo n.º 1
0
void DetectNetworkSetupThread::on(Complete, HttpConnection*, const string&) throw() {
	debug_log(AUTODETECT, "parsing response {%s}", m_buffer.c_str());
	try {
		SimpleXML xml;
		xml.fromXML(m_buffer);
		if (xml.findChild("response")) {
			debug_log(AUTODETECT, "found <response>");
			xml.stepIn();
			if (xml.findChild("mode")) {
				string mode = xml.getChildData();
				info_log(AUTODETECT, "mode={%s}", mode.c_str());
				xml.resetCurrentChild();
				string address;
				if (xml.findChild("address")) {
					string address = xml.getChildData();
					info_log(AUTODETECT, "address={%s}", address.c_str());
					if (!address.empty()) {
						SettingsManager::getInstance()->set(SettingsManager::EXTERNAL_IP, address);
					}
				}
				else {
					warn_log(AUTODETECT, "<address> not found");
				}
				debug_log(AUTODETECT, "local address={%s}", connection.m_localIp.c_str());
				if (Util::stricmp(mode, "active") == 0) {
					SettingsManager::getInstance()->set(SettingsManager::INCOMING_CONNECTIONS, SettingsManager::INCOMING_FIREWALL_NAT);
					debug_log(AUTODETECT, "setting ACTIVE mode");
				}
				else if (Util::stricmp(mode, "passive") == 0) {
					SettingsManager::getInstance()->set(SettingsManager::INCOMING_CONNECTIONS, SettingsManager::INCOMING_FIREWALL_PASSIVE);
				}
				else {
					throw Exception("Wrong mode '" + mode + "'");
				}
			}
			else {
				warn_log(AUTODETECT, "<mode> not found");
			}
		}
		else {
			warn_log(AUTODETECT, "<response> not found");
		}
	} 
	catch (const Exception &e) {
		error_log(AUTODETECT, "Error parsing response: %s", e.getError().c_str());
	}
	finalize();
}
Ejemplo n.º 2
0
void DetectNetworkSetupThread::wait() {
	for (int i = 0; i < 20; ++i) {
		if (isDone()) {
			debug_log(AUTODETECT, "*** Completed");
			return;
		}
		Sleep(100);
	}
	warn_log(AUTODETECT, "*** Not completed in expected time");
}
Ejemplo n.º 3
0
int log::write_log(const char * msg, int len){

	if(!m_file){
		error_log("file is not open\n");
		return -1;
	}
	
	time_t cur = time(NULL);
	struct tm tm_cur ;
	localtime_r(&cur, &tm_cur);	
	int cur_size = (int)ftell(m_file);
	
	if(cur_size > m_max_size || m_logbegin.tm_mday != tm_cur.tm_mday){
		
		fprintf(m_file, "file log %d-%d day end write %d/%d bytes\n", 
		m_logbegin.tm_mday , tm_cur.tm_mday, cur_size, m_max_size);

		fclose(m_file);
		
		if(m_logbegin.tm_mday != tm_cur.tm_mday){
			tm_cur.tm_hour = 24;
			tm_cur.tm_min = 0; 
			tm_cur.tm_sec = 0;
		}
	
		char newfilename[max_path_len] = {0};
		snprintf(newfilename ,sizeof(newfilename),
			"%s-%d%02d%02d-%02d%02d%02d.log", 
			m_pathname,
			m_logbegin.tm_year+1900, 
			m_logbegin.tm_mon+1,
			m_logbegin.tm_mday,
			tm_cur.tm_hour,
			tm_cur.tm_min, 
			tm_cur.tm_sec);
	
		rename(m_filename, newfilename);
		
		if(open_log() < 0){
			return -1;
		}
	}
	
	int ret = fwrite(msg, 1, len, m_file);
	
	if(ret < len){
		warn_log("write %d/%d bytes error(%d)\n", ret, len, errno);
	}
	
	if(m_immediate_flush){	
		fflush(m_file);
	}	
	
	return 0;
}
Ejemplo n.º 4
0
int test_hello()
{
	LOG		*g = NULL ;
	
	char		buffer[ 64 + 1 ] = "" ;
	long		buflen = sizeof(buffer) - 1 ;
	
	g = create_log_handle() ;
	if( g == NULL )
	{
		printf( "create log handle failed , errno[%d]\n" , errno );
		return -1;
	}
	
	printf( "create log handle ok\n" );
	
	set_log_output( g , LOG_OUTPUT_FILE , "$HOME$/log/test_hello.log" , LOG_NO_OUTPUTFUNC );
	set_log_level( g , LOG_LEVEL_INFO );
	set_log_styles( g , LOG_STYLES_HELLO , LOG_NO_STYLEFUNC );
	
	debug_log( g , __FILE__ , __LINE__ , "hello DEBUG" );
	info_log( g , __FILE__ , __LINE__ , "hello INFO" );
	warn_log( g , __FILE__ , __LINE__ , "hello WARN" );
	error_log( g , __FILE__ , __LINE__ , "hello ERROR" );
	fatal_log( g , __FILE__ , __LINE__ , "hello FATAL" );
	
	debug_hex_log( g , __FILE__ , __LINE__ , buffer , buflen , "buflen[%ld]" , buflen );
	info_hex_log( g , __FILE__ , __LINE__ , buffer , buflen , "buflen[%ld]" , buflen );
	warn_hex_log( g , __FILE__ , __LINE__ , buffer , buflen , "buflen[%ld]" , buflen );
	error_hex_log( g , __FILE__ , __LINE__ , buffer , buflen , "buflen[%ld]" , buflen );
	fatal_hex_log( g , __FILE__ , __LINE__ , buffer , buflen , "buflen[%ld]" , buflen );
	
	destroy_log_handle( g );
	printf( "destroy log handle\n" );
	
	return 0;
}
Ejemplo n.º 5
0
int listen_thread(struct server_conf *srv){
	struct sockaddr_in server;
	struct sockaddr_in client;
	//struct con_stack *connections=NULL;
	int client_len;
	int newsock=-1;
	int sock;
	char logstr[1024];
	server.sin_family=AF_INET;    ///init server addr
	//struct con_stack *connections;
	sprintf(logstr,"listen thread create %u",pthread_self());
	debug_log(logstr);
	connections=(struct con_stack*)malloc(sizeof(struct con_stack));
	if(!connections){
		error_log("malloc for connection stack error");
		exit(-1);
	}
	debug_log("malloc for connection stack OK");
	stack_init(connections);
	if(!srv->ip)
    		server.sin_addr.s_addr=htonl(INADDR_ANY);
	else
		inet_pton(AF_INET,srv->ip,&server.sin_addr.s_addr);
   	if(!srv->port)
		server.sin_port=htons(80);
	else
		server.sin_port=htons(srv->port);
   	memset(server.sin_zero,0,8);

	if((sock=socket(AF_INET,SOCK_STREAM,0))<0){
		error_log("create sock failed");
		exit(-1);
	}
	debug_log("create sock sucessful");
	//listen_sock=sock;
	if(bind(sock,(struct sockaddr*)&server,sizeof(server))<0){
		error_log("bind sock error");
		exit(-1);
	}
	debug_log("bind sock sucessful");
	if(!srv->maxfds){
		listen(sock,10);
		error_log("read server config maxfds error,listen 10");
	}
	else{
		listen(sock,srv->maxfds);
		debug_log("listen sucessful");
	}
	while(1){
		if((int)(connections->top)>128){
			//printf("top is %d\n",connections->top);
			warn_log("listen stack > 128,sleep 1s");
			sleep(1);
			continue;
		}
		if((newsock=accept(sock,(struct sockaddr*)&client,&client_len))<0){
			sprintf(logstr,"accept error,accept sock %d",newsock);
			warn_log(logstr);
			continue;
		}
		sprintf(logstr,"accept OK,accept sock %d",newsock);
		warn_log(logstr);
		con_push(connections,newsock);

	}
}