# Ruby - Análise de ficheiros de auditoria de servidores web ## Objetivos do programa - **Objetivo 1**: ~~Número de contactos que um determinado IP realizou~~ (Feito) - **Objetivo 2**: ~~Quais IPs resultaram no maior número de erros de cliente (400-499)~~ (Feito) - **Objetivo 3**: ~~Agrupar por tipo de cliente e saber que tipos de clientes contactam mais o site~~ (Feito) ### Sub-objetivos e desafios - Agrupar visitas por IP por mês - Exemplo: IP 5.15.124.2 visitou o site 20 veses em abril e gerou 4 erros no mesmo mês - Criar funcionalidade para enviar denúncias ao AbuseIPDB (OPCIONAL) - Recolher os três principais suspeitos e oferecer a escolha de denúncia ao utilizador (Ex. os IPs com mais erros suspeitos, excl. erros 404) - Modo pesquisa (OPCIONAL) - Oferecer ao utilizador uma forma de introduzir um IP para obter todas as estatísticas que o programa já oferece, e avisar caso o IP não tenha contactado o site - Whois e reputação do IP (OPCIONAL) - Modo não-interativo (OPCIONAL) - Permitir que o utilizador controle o programa e o seu output através da linha de comandos (ex. rubystats --in access.log -i x.x.x.x -v -e) - Garantir que o programa segue o [filosofia do Unix](https://en.wikipedia.org/wiki/Unix_philosophy) - Menu interativo (OPCIONAL) - Permitir ao utilizador escolher que estatística pretende visualizar - Tornar o programa mais modular, fácil de manter e de expandir (OPCIONAL); - Permitir que o utilizardor escolha que tipo de log pretende analisar (Nginx/Apache/Lightspeed/IIS, etc) utilizando as mesmas funções utilitárias - Adicionar testes a todas as funções utilitárias de modo a garantir que produzem o mesmo output esperado independentemente da implementação (OPCIONAL)