FEUP > DEEC > MRSC > Programação em Comunicações Trabalho prático de Java – “Monitor de sítios web” Neste trabalho pretende-se que o aluno implemente uma aplicação em Java que verifique periodicamente o estado de uma lista de sítios na web, envie notificações por e-mail dos respectivos estados, e guarde, quando disponível, uma cópia local do ficheiro principal de cada sítio. Dada uma lista de sítios (URIs), a aplicação deverá verificar se cada sítio está acessível. Caso esteja, a aplicação deverá guardar um cópia local do ficheiro principal do sítio quando ainda não exista uma ou quando se verifique que o sítio foi actualizado desde a última verificação. De modo a permitir a diferenciação local de ficheiros com o mesmo nome mas de sítios diferentes, cada ficheiro deverá ser copiado para dentro de uma directoria com um nome relacionado com o URI do sítio, a qual deverá ser criada pela aplicação. Para o caso dos URIs que não especifiquem qual o nome do ficheiro a pedir, poderá assumir um nome por omissão para o ficheiro local do tipo index.html. No fim de cada sessão de verificação a aplicação deve enviar um email de notificação. O e-mail deverá conter uma linha por sítio com os respectivos URI e estado: Caso o sítio esteja acessível deverá apresentar o código de estado da resposta HTTP (RFC 2616) bem como a data/hora da última actualização do sítio. Caso o sítio não esteja acessível, a aplicação deverá indicar qual o código de estado da resposta HTTP devolvida ou outra indicação para o caso do servidor HTTP ou host não estarem acessíveis ou não existirem. Neste trabalho deverá implementar os comandos/respostas dos protocolos HTTP e SMTP necessários ao bom funcionamento da aplicação. A aplicação deverá suportar o recurso opcional de um proxy HTTP. Para isso deverá ser possível especificar o proxy bem como um eventual porto (por omissão é 80) como parâmetro de entrada. Deverá ser indicado através de um parâmetro de entrada qual o MTA a utilizar para o envio dos e-mails de notificação. A aplicação deverá poder receber os pedidos via linha de comando através de parâmetros. A seguir é apresentada a especificação dos parâmetros que terão de ser suportados pela aplicação. $> java WebMon ficheirocomlistadesítios emaildenotificação mtalocal [proxy[:porto]] periodoemsegundos A lista de URIs contida em ficheirocomlistadesitios é de tamanho variável e poderá, por exemplo, ter o seguinte conteúdo: http://www.google.com http://www.fe.up.pt http://www.sapo.pt http://paginas.fe.up.pt/~jaime http://paginas.fe.up.pt/~jaime/0607/PC/PC.htm http://paginas.fe.up.pt/~jaime/0607/PC/Trabalho_Pratico_Java.pdf ©2006 Jaime Dias (cont.) Valorização: 1. Melhorar a aplicação de modo a que esta possa enviar os e-mails directamente para o servidor SMTP do destinatário (MTA destino) sem recorrer ao MTA local (mtalocal). 2. Guardar localmente a página completa: para além do ficheiro principal deverão também ser descarregados outros possíveis ficheiros nele referenciados (imagens, scripts, css…). ©2006 Jaime Dias