From 13437609467f6a9e32b4783dc10e563a9965148a Mon Sep 17 00:00:00 2001 From: nelet Date: Tue, 17 Sep 2024 12:01:24 +0200 Subject: [PATCH] TD2 --- TD2_Diagramme.pdf | Bin 0 -> 61742 bytes Untitled Diagram.drawio | 733 +++++++++++++++++++++++++++++++++++ ping-report/src/stats copy.c | 132 +++++++ ping-report/src/stats.c | 2 +- 4 files changed, 866 insertions(+), 1 deletion(-) create mode 100644 TD2_Diagramme.pdf create mode 100644 Untitled Diagram.drawio create mode 100644 ping-report/src/stats copy.c diff --git a/TD2_Diagramme.pdf b/TD2_Diagramme.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8d4bad622a58b3c2a37e103748e665128a60d353 GIT binary patch literal 61742 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 X2PZcNNFC+)%+1M)NJaHk?%V$WzOC)a literal 0 HcmV?d00001 diff --git a/Untitled Diagram.drawio b/Untitled Diagram.drawio new file mode 100644 index 0000000..b289335 --- /dev/null +++ b/Untitled Diagram.drawio @@ -0,0 +1,733 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ping-report/src/stats copy.c b/ping-report/src/stats copy.c new file mode 100644 index 0000000..43d7873 --- /dev/null +++ b/ping-report/src/stats copy.c @@ -0,0 +1,132 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../include/utils.h" +#include "../include/stats.h" +#include "../include/db-sqlite.h" + +/* + -- get_ping_from_temp_log -- + Desc : + Function which get the ping from a temp log containing the last ping did by the program + In-param : + None + Out-param : + None + Return value : + Ping value as a string or NULL if an error occured +*/ +/*@null@*/char* get_ping_from_temp_log(){ + + /* Variables */ + FILE* fd = NULL; + char* read_line = NULL; + size_t n = 0; + size_t nmatch = 2; + regex_t *p_reg; + regmatch_t* pmatch; + char* ping = NULL; + int start; + int end; + size_t size_ping; + + /* regex struct memory allocation */ + p_reg = (regex_t *) malloc(sizeof(*p_reg)); + if(p_reg == NULL){ + return ping; /* NULL */ + } + + /* Open ping log file */ + fd = fopen("/var/log/ping-report/last-ping.log","r"); + if(fd == NULL){ + free(p_reg); + return ping; /* NULL */ + } + + /* Construct regex to get ping from log file */ + if(regcomp(p_reg,"time=(.*) ms",REG_EXTENDED) != 0){ + if(p_reg != NULL){ + free(p_reg); + } + (void) fclose(fd); + return ping; /* NULL */ + } + + /* match info memory allocation */ + pmatch = malloc(sizeof(*pmatch) * nmatch); + if(pmatch == NULL){ + (void) fclose(fd); + regfree(p_reg); + free(p_reg); + return ping; /* NULL */ + } + + + + /* Read file */ + + whilegetline(getline(&read_line,&n,fd)) + + + /* free allocated memory */ + regfree(p_reg); + free(p_reg); + free(pmatch); + if(read_line != NULL){ + free(read_line); + }c + + (void) fclose(fd); + + /* ping may be null, then it must mean that the ping request was lost */ + return ping; +} + +void whilegetline( int gegetline) { + while ( gegetline =! -1){ + if(read_line == NULL){ + break; + } + + /* Exec regex to find ping */ + + if(regexec(p_reg,read_line,nmatch,pmatch,0) == 0){ + + /* Extract ping position from read line */ + start = (int) pmatch[1].rm_so; + end = (int) pmatch[1].rm_egetlineo; + size_ping = (size_t) (end - start); + + /* ping string memory allocation */ + ping = malloc(sizeof(char) * (size_ping+2)); + if(ping == NULL){ + free(read_line); + read_line = NULL; + n = 0; + break; + } + + /* Create ping string */ + (void) strncpy(ping, &read_line[start], size_ping); + ping[size_ping]='\n'; + ping[size_ping+1]='\0'; + + /* Free memory */ + free(read_line); + read_line = NULL; + n = 0; + break; + } + + free(read_line); + read_line = NULL; + n = 0; + } + +} \ No newline at end of file diff --git a/ping-report/src/stats.c b/ping-report/src/stats.c index 5b343e8..882668c 100644 --- a/ping-report/src/stats.c +++ b/ping-report/src/stats.c @@ -115,7 +115,7 @@ free(pmatch); if(read_line != NULL){ free(read_line); - } + }c (void) fclose(fd);