Пример #1
0
void fly_to_analyse(char *path, char *config)
{
	char *p = ReadLines(config);
	char *last=p;
	char title[128],description[512],reference[512],match[1024],relevance[512];	
	int result=0,sz=0;

	
	while(!result && strlen(last)>16)
	{
		switch (parse_eggs(&p, &last)) 
		{
			case TITLE:
					sz = p - last;
					memset(title,0,127);
					snprintf(title,127,"%.*s", sz, last);
					strcpy(title,ClearStr(title,10));
				break;

			case DESCRIPTION:
				
 					sz = p - last;
					memset(description,0,511);
					snprintf(description,511,"%.*s", sz, last);
					strcpy(description,ClearStr(description,16));
				break;

			case REFERENCE:

					sz = p - last - 1;
					memset(reference,0,511);
					snprintf(reference,511,"%.*s", sz, last);
					strcpy(reference,ClearStr(reference,14));
				break;


			case RELEVANCE:

					sz = p - last;
					memset(relevance,0,511);
					snprintf(relevance,511,"%.*s", sz, last);
					strcpy(relevance,ClearStr(relevance,14));
				break;

			case MATCH:
					sz = p - last;
					memset(match,0,1023);
					snprintf(match,1023,"%.*s", sz, last);
					strcpy(match,ClearStr(match,10));


					char *result2=Search_for(path,match);

// TODO* need validate before print out
					if(result2!=NULL)
					if(strlen(result2)>8)
					{
						fprintf(stdout,"\n-------------------\n %sTitle:%s  %s  \n %sDescription:%s %s \n %sRelevance:%s %s \n %sReference:%s %s \n %sMatch:%s %s  \n%s%s%s\n",YELLOW,LAST,title,YELLOW,LAST,description,YELLOW,LAST,relevance,YELLOW,LAST,reference,YELLOW,LAST,match,CYAN,result2,LAST);

						if(log_file != NULL)
						{
							FILE *arq;
 
							arq=fopen(log_file,"a"); 

							if ( arq == NULL ) 
							{
								DEBUG("error in XML file %s",log_file); 
								perror("Error ");
								exit(-1);
							}

							fprintf(arq,"<report_mosca>\n <Path>%s</Path>\n <Module>%s</Module>\n <Title>%s</Title>\n <Description>%s</Description>\n <Level>%s</Level>\n <Reference>%s</Reference>\n <Match>%s</Match>\n <Result>%s</Result>\n</report_mosca>\n\n",path,config,title,description,relevance,reference,match,result2); 

							if( fclose(arq) == EOF )
							{
								DEBUG("error in Write() file %s",log_file);
								perror("Error ");
								exit(-1);
							}
							arq=NULL;
		 
						}
					}
					xfree((void **)&result2);
				break;


			case END:
				result=1;	
				break;
    		}
		
	}
				
}
Пример #2
0
void fly_to_analyse(char *path, char *config)
{
	char *p = ReadLines(config);
	char *last=p;
	char *result2=NULL;
	char title[128],description[512],reference[512],match[128],relevance[512];	
	int result=0,sz=0;



	while(!result)
		switch (parse_eggs(&p, &last)) 
		{
			case TITLE:
					sz = p - last;
					memset(title,0,127);
					snprintf(title,127,"%.*s", sz, last);
// DEBUG("%s\n",title);
					strcpy(title,ClearStr(title,10));
				break;

			case DESCRIPTION:
				
 					sz = p - last;
					memset(description,0,511);
					snprintf(description,511,"%.*s", sz, last);
					strcpy(description,ClearStr(description,16));
				break;

			case REFERENCE:

					sz = p - last - 1;
					memset(reference,0,511);
					snprintf(reference,511,"%.*s", sz, last);
					strcpy(reference,ClearStr(reference,14));
				break;


			case RELEVANCE:

					sz = p - last;
					memset(relevance,0,511);
					snprintf(relevance,511,"%.*s", sz, last);
					strcpy(relevance,ClearStr(relevance,14));
				break;
/*
TODO* fix bug when test first rule of egg file

*/
			case MATCH:
					sz = p - last;
					memset(match,0,127);
					snprintf(match,127,"%.*s", sz, last);
					strcpy(match,ClearStr(match,10));


					result2=Search_for(path,match);

// TODO* need validate before print out
					if(strlen(result2)>8)
					{
						fprintf(stdout,"\n-------------------\n %sTitle:%s  %s  \n %sDescription:%s %s \n %sRelevance:%s %s \n %sReference:%s %s \n %sMatch:%s %s  \n%s%s%s\n",YELLOW,LAST,title,YELLOW,LAST,description,YELLOW,LAST,relevance,YELLOW,LAST,reference,YELLOW,LAST,match,CYAN,result2,LAST);

						if(log_file != NULL)
						{
// TODO* call one time write()... optimize
							WriteFile(log_file," Path: ");
							WriteFile(log_file,path);
							WriteFile(log_file,"\n Module: ");
							WriteFile(log_file,config);
							WriteFile(log_file,"\n Title: ");
							WriteFile(log_file,title);
							WriteFile(log_file,"\n Description: ");
							WriteFile(log_file,description);
							WriteFile(log_file,"\n reference: ");
							WriteFile(log_file,reference);
							WriteFile(log_file,"\n Match: ");
							WriteFile(log_file,match);
							WriteFile(log_file,"\n Result: \n");
							WriteFile(log_file,result2);
		 
						}
					}
				break;


			case END:
				result=1;	
				break;
    		}


}