Blame contrib/mrtgmk/src/defhost.c

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