void do_config() { char tmp[ITEM_WIDTH+1]; memset(tmp,0,sizeof(tmp)); const char *value; // config m_config; sprintf(tmp,"%s%s",conf.path,CONFIG_FILE); printf("Try to read config file:%s ...\n",tmp); LoadDefault(); if(m_config.open(tmp)!=1){ printf("File:%s not exist, read default conf...\n",tmp); if (m_config.create(m_config.GetDefaultKingateConf()) != 1) { printf("Read config file:%s error\n",tmp); exit(0); } } printf("success!!\n"); fflush(stdout); /* value=m_config.GetValue("locale"); sprintf(tmp,"%s../etc/kingate_locale.%s",conf.path,value); if(m_locale.open(tmp)!=1){ printf("Read locale file:%s error\n",tmp); exit(0); } printf("Read config file success.\n"); */ value=m_config.GetValue("http"); if(value!=NULL && strcasecmp(value,"on")==0) conf.state[HTTP]=1; value=m_config.GetValue("ftp"); if(value!=NULL && strcasecmp(value,"on")==0) conf.state[FTP]=1; value=m_config.GetValue("telnet"); if(value!=NULL && strcasecmp(value,"on")==0) conf.state[TELNET]=1; value=m_config.GetValue("pop3"); if(value!=NULL && strcasecmp(value,"on")==0) conf.state[POP3]=1; value=m_config.GetValue("smtp"); if(value!=NULL && strcasecmp(value,"on")==0) conf.state[SMTP]=1; value=m_config.GetValue("socks"); if(value!=NULL && strcasecmp(value,"on")==0) conf.state[SOCKS]=1; value=m_config.GetValue("mms"); if(value!=NULL && strcasecmp(value,"on")==0) conf.state[MMS]=1; value=m_config.GetValue("rtsp"); if(value!=NULL && strcasecmp(value,"on")==0) conf.state[RTSP]=1; value=m_config.GetValue("manage"); if(value!=NULL && strcasecmp(value,"on")==0) conf.state[MANAGE]=1; if((value=m_config.GetValue("http_port"))==NULL) conf.port[HTTP]=8082; else conf.port[HTTP]=atoi(value); if((value=m_config.GetValue("ftp_port"))==NULL) conf.port[FTP]=2121; else conf.port[FTP]=atoi(value); if((value=m_config.GetValue("telnet_port"))==NULL) conf.port[TELNET]=2323; else conf.port[TELNET]=atoi(value); if((value=m_config.GetValue("pop3_port"))==NULL) conf.port[POP3]=1100; else conf.port[POP3]=atoi(value); if((value=m_config.GetValue("smtp_port"))==NULL) conf.port[SMTP]=2525; else conf.port[SMTP]=atoi(value); if((value=m_config.GetValue("socks_port"))==NULL) conf.port[SOCKS]=1082; else conf.port[SOCKS]=atoi(value); if((value=m_config.GetValue("mms_port"))==NULL) conf.port[MMS]=1755; else conf.port[MMS]=atoi(value); if((value=m_config.GetValue("rtsp_port"))==NULL) conf.port[RTSP]=5540; else conf.port[RTSP]=atoi(value); if((value=m_config.GetValue("manage_port"))==NULL) conf.port[MANAGE]=8880; else conf.port[MANAGE]=atoi(value); if((value=m_config.GetValue("max"))!=NULL) conf.max=atoi(value); if((value=m_config.GetValue("max_per_ip"))!=NULL) conf.max_per_ip=atoi(value); conf.min_free_thread=3; if((value=m_config.GetValue("min_free_thread"))!=NULL) conf.min_free_thread=atoi(value); if((value=m_config.GetValue("http_time_out"))!=NULL) conf.time_out[HTTP]=atoi(value); if((value=m_config.GetValue("ftp_time_out"))!=NULL) conf.time_out[FTP]=atoi(value); if((value=m_config.GetValue("telnet_time_out"))!=NULL) conf.time_out[TELNET]=atoi(value); if((value=m_config.GetValue("pop3_time_out"))!=NULL) conf.time_out[POP3]=atoi(value); if((value=m_config.GetValue("smtp_time_out"))!=NULL) conf.time_out[SMTP]=atoi(value); if((value=m_config.GetValue("socks_time_out"))!=NULL) conf.time_out[SOCKS]=atoi(value); if((value=m_config.GetValue("mms_time_out"))!=NULL) conf.time_out[MMS]=atoi(value); if((value=m_config.GetValue("rtsp_time_out"))!=NULL) conf.time_out[RTSP]=atoi(value); if((value=m_config.GetValue("manage_time_out"))!=NULL) conf.time_out[MANAGE]=atoi(value); conf.user_time_out=0; if((value=m_config.GetValue("user_time_out"))!=NULL) conf.user_time_out=atoi(value); /* value=m_config.GetValue("dns_server"); if(value!=NULL && strcasecmp(conf.dns_server,"local")==0) get_dns_server_from_local(conf.dns_server); else strncpy(conf.dns_server,value,sizeof(conf.dns_server)); */ //获取log模式配置 conf.log_close_msg=true; if(!m_debug){ value=m_config.GetValue("log_model"); if(value==NULL) conf.log_model=LOG_SYSTEM_MODEL; else if(strcasecmp(value,"user")==0) conf.log_model=LOG_USER_MODEL; else if(strcasecmp(value,"debug")==0) conf.log_model=LOG_DEBUG_MODEL; else conf.log_model=LOG_NONE_MODEL; if(conf.log_level==-1){ value=m_config.GetValue("log_level"); if(value==NULL) conf.log_level=1; else conf.log_level=atoi(value); } value=m_config.GetValue("log_close_msg"); if(strcasecmp(value,"off")==0) conf.log_close_msg=false; } /* value=m_config.GetValue("log_file"); if(value==NULL) strcpy(conf.log_file,"./kingate.log"); else strncpy(conf.log_file,value,sizeof(conf.log_file)); #ifdef _WIN32 while(str_replace(conf.log_file,"/","\\",sizeof(conf.log_file))); #endif */ value=m_config.GetValue("log_rotate"); memset(conf.log_rotate,0,sizeof(conf.log_rotate)); if(strlen(value)==0) strcpy(conf.log_rotate,"0 0 * * *"); else strncpy(conf.log_rotate,value,sizeof(conf.log_rotate)-1); value=m_config.GetValue("bind_addr"); if(strlen(value)==0) strcpy(conf.bind_addr,"*"); else{ bool allnum=true; for(int i=0;i<strlen(value);i++){ if(value[i]!='.' && (value[i]<'0' || value[i]>'9')){ allnum=false; break; } } memset(conf.bind_addr,0,sizeof(conf.bind_addr)); if(allnum) strncpy(conf.bind_addr,value,sizeof(conf.bind_addr)-1); else strcpy(conf.bind_addr,"*"); } ////////////////////////////////// conf.run_user=NULL; value=m_config.GetValue("run_user"); if(strlen(value)>0) conf.run_user=strdup(value); ////////////////////////////////// value=m_config.GetValue("user_model"); memset(conf.user_model,0,sizeof(conf.user_model)); if(strlen(value)>0) strncpy(conf.user_model,value,sizeof(conf.user_model)-1); /* value=m_config.GetValue("access"); if(value[0]==0){ printf("warning no access file.kingate will deny all connection.\n"); }else{ */ string access_file=conf.path; access_file+="/etc/access.conf"; // conf.filter_type=FILTER_FILE; conf.m_kfilter.LoadConfig(access_file.c_str()); // import_filter(conf.m_kfilter,value); // } create_redirect(m_config,conf.redirect); create_http_redirect(m_config,conf.m_http_redirects); conf.use_disk_cache=true; if(strcmp(m_config.GetValue("use_disk_cache"),"off")==0){ conf.use_disk_cache=false; } // create_smtp_server(m_config,conf.smtp_host);//创建smtp服务器列表 /***************************************************** cache config ********************************************************/ value=m_config.GetValue("mem_min_cache"); if(value[0]==0) conf.mem_min_cache=32*1024*1024; else conf.mem_min_cache=get_cache(value); conf.mem_max_cache=get_cache(m_config.GetValue("mem_max_cache")); conf.disk_min_cache=get_cache(m_config.GetValue("disk_min_cache")); conf.disk_max_cache=get_cache(m_config.GetValue("disk_max_cache")); if(!(conf.disk_max_cache>=conf.disk_min_cache && conf.disk_min_cache>=conf.mem_max_cache && conf.mem_max_cache>=conf.mem_min_cache)){ fprintf(stderr,"Warning It be must disk_max_cache>=disk_min_cache>=mem_max_cache>=mem_min_cache."); } value=m_config.GetValue("refresh"); if(value[0]!=0){ if(strcasecmp(value,"auto")) conf.refresh=REFRESH_AUTO; else if(strcasecmp(value,"never")) conf.refresh=REFRESH_NEVER; else if(strcasecmp(value,"any")) conf.refresh=REFRESH_ANY; else klog(ERR_LOG,"refresh value (%s) error,it must be auto,never or any.kingate will use auto",value); } value=m_config.GetValue("refresh_time"); if(value[0]!=0) conf.refresh_time=atoi(value); conf.socks5_user=false; value=m_config.GetValue("socks5_user"); if(value[0]!=0){ if(strcasecmp(value,"on")==0){ conf.socks5_user=true; } } conf.http_accelerate=false; value=m_config.GetValue("http_accelerate"); if(value[0]!=0){ if(strcasecmp(value,"on")==0){ conf.http_accelerate=true; } } conf.x_forwarded_for=false; value=m_config.GetValue("x_forwarded_for"); if(value[0]!=0){ if(strcasecmp(value,"on")==0){ conf.x_forwarded_for=true; } } conf.insert_via=true; value=m_config.GetValue("insert_via"); if(value[0]!=0){ if(strcasecmp(value,"off")==0){ conf.insert_via=false; } } value=m_config.GetValue("ftp_redirect"); conf.ftp_redirect=NULL; if(value[0]!=0){ conf.ftp_redirect=strdup(value); conf.ftp_redirect_port=split_host_port(conf.ftp_redirect,':'); } /******************************************************* remote manage config *****************************************************/ // m_config.SaveFile("./test.conf"); }