1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
int startDeamon()
{
struct stat mystat;
char *IP=NULL, *date_search=NULL, *date_lastModif=NULL, *date_lastScan=NULL, *SRCip={"SRC"}, *buff_file=NULL;
FILE *file_ulog=NULL, *file_out=NULL, *file_tmp=NULL;
int nbSec, cpt=0;
time_t t;
//récupère l'heure courante
t=time(NULL);
file_ulog=fopen(FILE_ULOG,"r");
if (file_ulog == NULL ) exit(1);
date_search=scalloc(24);
date_lastScan=scalloc(24);
date_lastModif=scalloc(24);
//On recupère la date de la derniere modification du fichier de log d'ulog
if ( stat(FILE_ULOG, &mystat) == -1) { perror("stat"); exit(EXIT_FAILURE);}
strftime(date_lastModif, 25, "%c", localtime(&mystat.st_mtime));
//on test si le fichier existe
if ( ( file_tmp=fopen(FILE_OUT,"r") ) == NULL )
{
syslog(LOG_INFO, "Le fichier survUlog.out n'existe pas, creation..." );
//On créé le fichier puis on ecrit la date du dernier accès
umask(UMASK_FILE_OUT);
file_out=fopen(FILE_OUT,"w+");
if ( fwrite(date_lastModif, strlen(date_lastModif), 1, file_out) < 1 ) perror ("Erreur fwrite 1");
if(file_out != NULL)
fclose(file_out);
//On copie la date dans la seconde variable
strcpy(date_lastScan, date_lastModif);
}
else
{
//Le fichier existe on lit la date
file_out=fopen(FILE_OUT,"r");
fread(date_lastScan, 24, 1, file_out);
if(file_out != NULL)
fclose(file_out);
}
fclose(file_tmp);
printf("date_lastScan %s, date_lastModif %s\n" ,date_lastScan, date_lastModif);
// Exécution de la fonction "compareDate"
nbSec=compareDate(date_lastScan, date_lastModif);
//printf("Nombre de minutes écoulées depuis le dernier scan: %d min\n", nbSec/60);
//Si le nombre de secondes est supérieur 0 un scan a été effectué.
if ( nbSec > 0 )
{
syslog(LOG_INFO, "Lancement le: %s", ctime(&t) );
strcpy(date_search, substr(date_lastScan, 4, 18));
//TODO:1, 3
//On charge le fichier en mémoire
buff_file=LoadFileToMemory(file_ulog);
//On recherche la date dans d'ulog le fichier et on retourne sa position dans le fichier
buff_file = Ulog_Search(buff_file, date_search);
if( buff_file == NULL)
{
syslog(LOG_INFO, "Date introuvable" );
}
buff_file = Ulog_Search_END_LINE(buff_file);
while( buff_file != NULL )
{
date_search=Ulog_get_date(buff_file);
printf("ici\n");
IP=getip(buff_file);
printf("ici2\n");
if( IP == NULL)
{
syslog(LOG_INFO, "IP introuvable" );
}
else
{
printf("IP %s\n", IP);
//syslog(LOG_INFO, "Date du scan: %s, IP en cause: %s", date_search, IP );
printf("print\n");
}
cpt++;
buff_file=Ulog_Search_END_LINE(buff_file);
}
//fclose(file_out);
printf("write\n");
//TODO 5
//On écrit la date du dernier scan dans le fichier
file_out=fopen(FILE_OUT,"w+");
if ( fwrite(date_lastModif, strlen(date_lastModif), 1, file_out) < 1 ) perror ("Erreur fwrite 1");
printf("close\n");
printf("file_out: %d\n", file_out);
if(file_out != NULL)
fclose(file_out);
printf("closed\n");
}
printf("free\n");
free(date_search);
free(date_lastModif);
free(date_lastScan);
date_search=NULL;
date_lastModif=NULL;
date_lastScan=NULL;
if(file_ulog != NULL)
fclose(file_ulog);
printf("bye\n");
return 0;
} |
Partager