⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defhost.c

📁 mrtg 监控,请认真阅读您的文件包然后写出其具体功能
💻 C
字号:
/*Iulian Radu [v2.0@07.1999]*/int mkndx(char* file){char tmp[257],xtmp[257],*ptmp;FILE *fcfg,*fndx;unsigned long ofs,xofs;/* open .cfg file */if(cfgdir[0]) sprintf(tmp,"%s/%s",cfgdir,file);else strcpy(tmp,file);fcfg=fopen(tmp,"rt");if(!fcfg){    fprintf(stderr,err[0],tmp);    return 1;}/* check if file .cfg has length 0 */if(fseek(fcfg,0,SEEK_END)){	    fclose(fcfg);    return 1;}if(!ftell(fcfg)){    fprintf(stderr,err[1],tmp);    sprintf(xtmp,"rm -f %s",tmp);    system(xtmp);    return 1;}if(fseek(fcfg,0,SEEK_SET)) return 1;/* create de index file */sprintf(tmp,"%s.ndx",extractfname(file));fndx=fopen(tmp,"wb");if(!fndx){    fclose(fcfg);    return 1;}while(!feof(fcfg)){    xofs=ftell(fcfg);    tmp[0]=0;    fgets(tmp,256,fcfg);    if((tmp[0]=='#') || (tmp[0]==0) || (tmp[0]=='\n')) continue;    if(!strncmp(tmp,"Target[",7)) ofs=xofs;    if(!strncmp(tmp,"Title[",6)){	ptmp=findnc(tmp,2,':');	trim(ptmp);	fprintf(fndx,"%08ld %s\n",ofs,ptmp);}    }fclose(fndx);fclose(fcfg);return 0;}void setPI(char* buf,unsigned long* pos,char** ifa){sscanf(buf,"%08ld",pos);*ifa=buf+9;killnl(buf+9);}void gettarget(char* buf,char* target){		//word between []int i;for(;buf[0]!='[';buf++);buf++;for(i=0;buf[0]!=']';buf++,i++) target[i]=buf[0];target[i]=0;}char* findhost(char* buf){int i;for(i=0;i<nhosts;i++)    if(!strcmp(hostsn[i],buf))	return hostsi[i];return NULL;	}void convertname(char* tmp){for(;tmp[0];tmp++){    if(!isalnum(tmp[0])) tmp[0]='_';    else tmp[0]=tolower(tmp[0]);    }}void fdefhost(char* buf){char host[129],fcfg[257],tmp[257],target[129],xtarget[129],*port;FILE *fi;unsigned long pos;char *ifa=NULL,     *txt[]={"day","week","month","year"},     *xtxt[]={"-day.gif","-week.gif","-month.gif","-year.gif",".html",".log",".old"};int i,j;if(!fm){    fprintf(stderr,err[2]);    return;}sscanf(buf,"%s %s",host,fcfg);if(findhost(host))    fprintf(stderr,err[6],host);/* read index file */sprintf(tmp,"%s.ndx",extractfname(fcfg));fi=fopen(tmp,"rt");if(!fi){    if(mkndx(fcfg)) return;	//create the index file     fi=fopen(tmp,"rt");    if(!fi) return;    }port=findnsp(buf,2);while(!feof(fi)){    fgets(tmp,256,fi);    setPI(tmp,&pos,&ifa);		//read pos and interface    if(!strcasecmp(port,ifa)){	break;}    }if(feof(fi)){    if(cfgdir[0]) fprintf(stderr,err[3],port,cfgdir,fcfg);    else fprintf(stderr,err[4],port,fcfg);    fclose(fi);    return;}fclose(fi);/* comment in mrtg.cfg file */if(cfgdir[0]){    fprintf(fm,"\n#host %s, cfgfile %s/%s, port %s\n\n",host,cfgdir,fcfg,port);    sprintf(tmp,"%s/%s",cfgdir,fcfg);}else{    fprintf(fm,"\n#host %s, cfgfile %s, port %s\n\n",host,fcfg,port);    strcpy(tmp,fcfg);}/* read config file to extract section */fi=fopen(tmp,"rt");if(!fi){	fprintf(stderr,err[5],tmp);	return;}fseek(fi,pos,SEEK_SET);fgets(buf,256,fi);		/*Target[...*/gettarget(buf,xtarget);if(chngname){    strcpy(target,host);    convertname(target);	/* switch to lowercase */    j=strlen(buf);    for(i=0;i<j;i++){		/* write the line Target[... */	fprintf(fm,"%c",buf[i]);	if(buf[i]=='['){	    for(;i<j;i++) if(buf[i]==']') break;    	    fprintf(fm,"%s]",target);}	}    while(!feof(fi)){		/* write rest of the lines */	fgets(buf,256,fi);	j=strlen(buf);	for(i=0;i<j;i++){	    fprintf(fm,"%c",buf[i]);	    if(buf[i]=='['){		for(;i<j;i++) if(buf[i]==']') break;    		fprintf(fm,"%s]",target);}	    }	if(!strncmp(buf,"#-",2)) break;	}    }else{    strcpy(target,xtarget);    fprintf(fm,"%s",buf);    while(!feof(fi)){	fgets(buf,256,fi);	fprintf(fm,"%s",buf);	if(!strncmp(buf,"#-",2)) break;	}    }fclose(fi);strcpy(hostsn[nhosts],host);strcpy(hostsi[nhosts],target);nhosts++;/* mk?,? */for(i=0;i<4;i++){    for(j=0;j<nmkr[i];j++){	if(!strcmp(mkrn[j][i],fcfg)){	    fprintf(mkri[j][i],"<HR><BR><H1>%s %s</H1><BR>\n",btxt[1],host);	    if(base[0]) fprintf(mkri[j][i],"<A HREF=\"http://%s/%s.html\"><IMG SRC=\"http://%s/%s-%s.gif\"></IMG></A><BR>\n",base,target,base,target,txt[i]);	    else fprintf(mkri[j][i],"<A HREF=\"%s.html\"><IMG SRC=\"%s-%s.gif\"></IMG></A><BR>\n",target,target,txt[i]);	    break;}	}    }convertname(host);		/* change again the name, this time host var */switch(conv){    case 1:		//convip2name	for(i=0;i<7;i++){	    sprintf(tmp,"mv %s%s%s %s%s%s",mrtgoutpath,xtarget,xtxt[i],mrtgoutpath,host,xtxt[i]);	    system(tmp);}	break;    case 2:		//convname2ip	for(i=0;i<7;i++){	    sprintf(tmp,"mv %s%s%s %s%s%s",mrtgoutpath,host,xtxt[i],mrtgoutpath,xtarget,xtxt[i]);	    system(tmp);}	break;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -