#include#include #include #include #include #include #define MAX_ENTRIES 10 struct arquivo { int a_hora; unsigned int a_inte; unsigned long int a_status; unsigned long int a_in_octets ; unsigned long int a_in_descar ; unsigned long int a_in_erros ; unsigned long int a_out_octets ; unsigned long int a_out_descar ; unsigned long int a_out_erros ; unsigned int mail_trafe ; unsigned int mail_erros ; unsigned int mail_status; } arq; unsigned char arq_mesant[6] ; struct mensagem { int men_hora ; int men_codigo ; } mens ; typedef struct { char *name; char *val; } entry; char *makeword(char *line, char stop); char *fmakeword(FILE *f, char stop, int *len); char x2c(char *what); void unescape_url(char *url); void plustospace(char *str); struct tm *ldia; main(int argc, char *argv[]) { entry entries[MAX_ENTRIES]; register int x,m=0; int cl; FILE *fp,*fp1; unsigned long int as1_hora; unsigned long int as1_1_in_octets; unsigned long int as1_1_out_octets; unsigned long int as1_1_in_disc ; unsigned long int as1_1_in_erros ; unsigned long int as1_1_out_disc ; unsigned long int as1_1_out_erros ; unsigned long int as1_2_in_octets; unsigned long int as1_2_out_octets; unsigned long int as1_2_in_disc ; unsigned long int as1_2_in_erros ; unsigned long int as1_2_out_disc ; unsigned long int as1_2_out_erros ; unsigned long int as2_hora; unsigned long int as2_1_in_octets; unsigned long int as2_1_out_octets; unsigned long int as2_1_in_disc ; unsigned long int as2_1_in_erros ; unsigned long int as2_1_out_disc ; unsigned long int as2_1_out_erros ; unsigned long int as2_2_in_octets; unsigned long int as2_2_out_octets; unsigned long int as2_2_in_disc ; unsigned long int as2_2_in_erros ; unsigned long int as2_2_out_disc ; unsigned long int as2_2_out_erros ; unsigned long int as_val1; unsigned long int as_val2; double as_val3; double as_val4; double as_val5; double as_val6; char diretorio1[46]; char diretorio2[50]; char mes[4] ; char nome_arq1[6]; char nome_arq2[10]; int dia; int wcont ; as1_hora = 0; as1_1_in_octets = 0; as1_1_out_octets = 0; as1_2_in_octets = 0; as1_2_out_octets = 0; as2_hora = 0; as2_1_in_octets = 0; as2_1_out_octets = 0; as2_2_in_octets = 0; as2_2_out_octets = 0; strcpy(diretorio1,"/internet/celepar/bonato/mestrado/teste/"); strcpy(diretorio2,"/internet/celepar/bonato/mestrado/teste/"); diretorio1[45] = '\0'; diretorio2[49] = '\0'; printf("Content-type: text/html%c%c",10,10); cl = atoi(getenv("CONTENT_LENGTH")); for(x=0;cl && (!feof(stdin));x++) { m=x; entries[x].val = fmakeword(stdin,'&',&cl); plustospace(entries[x].val); unescape_url(entries[x].val); entries[x].name = makeword(entries[x].val,'='); } mes[0] = entries[0].val[0] ; mes[1] = entries[0].val[1] ; mes[2] = entries[0].val[2] ; mes[3] = '\0' ; dia = atoi(entries[1].val) ; if (strcmp(mes,"Jan")==0 || strcmp(mes,"Fev")==0 || strcmp(mes,"Mar")==0 || strcmp(mes,"Abr")==0 || strcmp(mes,"Mai")==0 || strcmp(mes,"Jun")==0 || strcmp(mes,"Jul")==0 || strcmp(mes,"Ago")==0 || strcmp(mes,"Set")==0 || strcmp(mes,"Out")==0 || strcmp(mes,"Nov")==0 || strcmp(mes,"Dez")==0) { if(strcmp(mes,"Fev")==0) mes[2] = 'b'; if(strcmp(mes,"Abr")==0) mes[1] = 'p'; if(strcmp(mes,"Mai")==0) mes[2] = 'y'; if(strcmp(mes,"Ago")==0) { mes[1] = 'u'; mes[2] = 'g'; } if(strcmp(mes,"Set")==0) mes[2] = 'p'; if(strcmp(mes,"Out")==0) mes[1] = 'c'; if(strcmp(mes,"Dez")==0) mes[2] = 'c'; } else { printf(" Informar o mes corretamente "); printf("Os meses devem ser informados com a primeira letra maiuscula "); printf("e as demais letras em minusculo, como segue exemplo abaixo. "); printf("
Jan ; Fev ; Mar ; Abr ; Mai ; Jun ; Jul ; Ago ; Set ; Out ; Nov ou Dez"); exit(1) ; } if((strcmp(mes,"Jan")==0 || strcmp(mes,"Mar")==0 || strcmp(mes,"May")==0 || strcmp(mes,"Jul")==0 || strcmp(mes,"Aug")==0 || strcmp(mes,"Oct")==0 || strcmp(mes,"Dec")==0) && (dia < 1 || dia > 31)) { printf("
Informar o dia corretamente "); exit(1) ; } if((strcmp(mes,"Apr")==0 || strcmp(mes,"Jun")==0 || strcmp(mes,"Sep")==0 || strcmp(mes,"Nov")==0) && (dia < 1 || dia > 30)) { printf("Informar o dia corretamente "); exit(1) ; } if(strcmp(mes,"Feb")==0 && (dia < 1 || dia > 29)) { printf("Informar o dia corretamente "); exit(1) ; } nome_arq1[0] = mes[0] ; nome_arq1[1] = mes[1] ; nome_arq1[2] = mes[2] ; nome_arq1[3] = entries[1].val[0] ; nome_arq1[4] = entries[1].val[1] ; nome_arq1[5] = '\0'; nome_arq2[0] = mes[0] ; nome_arq2[1] = mes[1] ; nome_arq2[2] = mes[2] ; nome_arq2[3] = entries[1].val[0] ; nome_arq2[4] = entries[1].val[1] ; nome_arq2[5] = 'm'; nome_arq2[6] = 'e'; nome_arq2[7] = 'n'; nome_arq2[8] = 's'; nome_arq2[9] = '\0'; strcat(diretorio1,nome_arq1); strcat(diretorio2,nome_arq2); if ((fp=fopen(diretorio1,"rb"))==NULL) { printf("Problemas com a abertura do arquivo de log ...."); printf("
A causa provavel e que nao existem informacoes para o "); printf("
Dia e Mes especificado ."); exit(1); } if ((fp1=fopen(diretorio2,"rb"))==NULL) { printf("Problemas com a abertura do arquivo de log ...."); printf("
A causa provavel e que nao existem informacoes para o "); printf("
Dia e Mes especificado ."); exit(1); } printf("ESTATISTICA DO USO DAS INTERFACES DO ROTEADOR "); printf("200.6.40.99 curitiba.celepar.br "); printf("
"); for(;;) { if (fread(&arq,sizeof(struct arquivo),1,fp)!=1) break; if(as1_1_in_octets == 0) { as1_hora = arq.a_hora; as1_1_in_octets = arq.a_in_octets; as1_1_out_octets = arq.a_out_octets; as1_1_in_disc = arq.a_in_descar ; as1_1_in_erros = arq.a_in_erros; as1_1_out_disc = arq.a_out_descar; as1_1_out_erros = arq.a_out_erros; } else { if(as1_2_in_octets == 0) { as1_2_in_octets = arq.a_in_octets; as1_2_out_octets = arq.a_out_octets; as1_2_in_disc = arq.a_in_descar ; as1_2_in_erros = arq.a_in_erros; as1_2_out_disc = arq.a_out_descar; as1_2_out_erros = arq.a_out_erros; } else { if(as2_1_in_octets == 0) { as2_hora = arq.a_hora; as2_1_in_octets = arq.a_in_octets; as2_1_out_octets = arq.a_out_octets; as2_1_in_disc = arq.a_in_descar ; as2_1_in_erros = arq.a_in_erros; as2_1_out_disc = arq.a_out_descar; as2_1_out_erros = arq.a_out_erros; } else { as2_2_in_octets = arq.a_in_octets; as2_2_out_octets = arq.a_out_octets; as2_2_in_disc = arq.a_in_descar ; as2_2_in_erros = arq.a_in_erros; as2_2_out_disc = arq.a_out_descar; as2_2_out_erros = arq.a_out_erros; } } } if (as2_2_out_octets != 0) { if (as2_1_in_octets < as1_1_in_octets) as_val1 = ((4294967295 - as1_1_in_octets) + as2_1_in_octets) ; else as_val1 = (as2_1_in_octets - as1_1_in_octets) ; if (as2_1_out_octets < as1_1_out_octets) as_val2 = ((4294967295 - as1_1_out_octets) + as2_1_out_octets) ; else as_val2 = (as2_1_out_octets - as1_1_out_octets) ; as_val3 = as_val1 + as_val2 ; as_val3 = as_val3 / 3600 ; as_val3 = as_val3 * 8 ; as_val3 = as_val3 / 100000; if (as2_2_in_octets < as1_2_in_octets) as_val1 = ((4294967295 - as1_2_in_octets) + as2_2_in_octets) ; else as_val1 = (as2_2_in_octets - as1_2_in_octets) ; if (as2_2_out_octets < as1_2_out_octets) as_val2 = ((4294967295 - as1_2_out_octets) + as2_2_out_octets) ; else as_val2 = (as2_2_out_octets - as1_2_out_octets) ; as_val4 = as_val1 + as_val2; as_val4 = as_val4 / 3600 ; as_val4 = as_val4 * 8; as_val4 = as_val4 / 2560; if (as2_1_in_disc < as1_1_in_disc) as_val1 = ((4294967295 - as1_1_in_disc) + as2_1_in_disc) ; else as_val1 = (as2_1_in_disc - as1_1_in_disc) ; if (as2_1_out_disc < as1_1_out_disc) as_val2 = ((4294967295 - as1_1_out_disc) + as2_1_out_disc) ; else as_val2 = (as2_1_out_disc - as1_1_out_disc) ; as_val5 = as_val1 + as_val2; if (as2_1_in_erros < as1_1_in_erros) as_val1 = ((4294967295 - as1_1_in_erros) + as2_1_in_erros) ; else as_val1 = (as2_1_in_erros - as1_1_in_erros) ; if (as2_1_out_erros < as1_1_out_erros) as_val2 = ((4294967295 - as1_1_out_erros) + as2_1_out_erros) ; else as_val2 = (as2_1_out_erros - as1_1_out_erros) ; as_val5 = as_val5 + as_val1 + as_val2; as_val5 = as_val5 * 100 ; as_val5 = as_val5 / 10000 ; if (as2_2_in_disc < as1_2_in_disc) as_val1 = ((4294967295 - as1_2_in_disc) + as2_2_in_disc) ; else as_val1 = (as2_2_in_disc - as1_2_in_disc) ; if (as2_2_out_disc < as1_2_out_disc) as_val2 = ((4294967295 - as1_2_out_disc) + as2_2_out_disc) ; else as_val2 = (as2_2_out_disc - as1_2_out_disc) ; as_val6 = as_val1 + as_val2; if (as2_2_in_erros < as1_2_in_erros) as_val1 = ((4294967295 - as1_2_in_erros) + as2_2_in_erros) ; else as_val1 = (as2_2_in_erros - as1_2_in_erros) ; if (as2_2_out_erros < as1_2_out_erros) as_val2 = ((4294967295 - as1_2_out_erros) + as2_2_out_erros) ; else as_val2 = (as2_2_out_erros - as1_2_out_erros) ; as_val6 = as_val6 + as_val1 + as_val2; as_val6 = as_val6 * 100 ; as_val6 = as_val6 / 10000 ; printf("
Hora Inicial %d:00 Hora Final %d:00",as1_hora,as2_hora); printf("
Percentual de utilizacao da Interface Local do Roteador (10 Mbps) : %.3f ",as_val3); printf("
Percentual de erros na Interface Local (10 Mbps) %.3f ",as_val5); printf("
Percentual de utilizacao da Interface Remota do Roteador (256 Kbps) : %.3f ",as_val4); printf("
Percentual de erros na Interface Remota (256 Kbps) %.3f ",as_val6); printf("
"); as1_hora = as2_hora ; as1_1_in_octets = as2_1_in_octets ; as1_1_in_disc = as2_1_in_disc; as1_1_in_erros = as2_1_in_erros; as1_1_out_disc = as2_1_out_disc; as1_1_out_erros = as2_1_out_erros; as1_1_out_octets = as2_1_out_octets ; as1_2_in_octets = as2_2_in_octets ; as1_2_out_octets = as2_2_out_octets ; as1_2_in_erros = as2_2_in_erros; as1_2_in_disc = as2_2_in_disc; as1_2_out_disc = as2_2_out_disc; as1_2_out_erros = as2_2_out_erros; as2_hora = 0 ; as2_1_in_octets = 0; as2_1_out_octets = 0; as2_1_in_erros = 0; as2_1_in_disc = 0; as2_1_out_erros = 0; as2_1_out_disc = 0; as2_2_in_octets = 0; as2_2_out_octets = 0; as2_2_in_erros = 0; as2_2_in_disc = 0; as2_2_out_erros = 0; as2_2_out_disc = 0; } } printf("MENSAGENS DE ALERTA QUE FORAM ENVIDAS PARA O GERENTE "); printf("
"); wcont = 0; for(;;) { if(fread(&mens,sizeof(struct mensagem),1,fp1)!=1) break; if(mens.men_codigo == 1) { wcont++; printf("
Hora %lu:00 - Trafego na interface Local (10 Mbps) do Roteador excedendo 50%.",mens.men_hora); printf("
"); } else if(mens.men_codigo == 2) { wcont++; printf("
Hora %lu:00 - Trafego na interface Remota (256 Kpbs) do Roteador excedendo 80%.",mens.men_hora); printf("
"); } else if(mens.men_codigo == 3) { wcont++; printf("
Hora %lu:00 - Interface Local (10 Mpbs) do Roteador esta DOWN.",mens.men_hora); printf("
"); } else if(mens.men_codigo == 4) { wcont++; printf("
Hora %lu:00 - Interface Remota (256 Kpbs) do Roteador esta DOWN.",mens.men_hora); printf("
"); } else if(mens.men_codigo == 5) { wcont++; printf("
Hora %lu:00 - Interface Local (10 Mpbs) do Roteador esta com excesso de erros.",mens.men_hora); printf("
"); } else if(mens.men_codigo == 6) { wcont++; printf("
Hora %lu:00 - Interface Remota (256 Kbps) do Roteador esta com excesso de erros.",mens.men_hora); printf("
"); } } if (wcont == 0) { printf("Nao foi mandado nenhuma mensagem de aviso para o "); printf("Gerente, pois, nada de errado ocorreu."); printf("
"); } printf(""); printf("
Marco Aurélio Bonato e Douglas Joé Peixoto de Azevedo"); printf(" Disciplina de Gerjncia de Redes - Professora Liane Tarouco "); }