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