📄 defhost.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 + -