Projeto para a disciplina de Desenvolvimento WEB: desenvolver um servidor HTTP 1.1 usando Socket. Este, será desenvolvido utilizando a linguagem Python.
Adições dos recursos (mais antigos por ultimo):
-
Telemetria com Angular atualizando div a cada segundo.
-
Interface atualizada para mobile com Bootstrap.
-
Recurso de feedback na pagina 404. O feedback eh recuperado usando o metodo POST.
-
Implementado recurso de status virtual. Gerado automaticamente, apenas como request '/virtual/.../status.json' este recurso responde com o status do servidor.
-
Obtendo endereço IP e BROADCAST automaticamente via o 'ifconfig'. Então apenas chamamos 'Server(HTTP_PORT, UNICAST_PORT)', pois os endereços são obtidos via o pacote 'network.py'. Porém, este recurso apenas funciona no Linux.
-
Implementado Server Grid. Agora com um protocolo proprio, o servidor envia pacotes em broadcast procurando novos servidores. Entao, antes de retornar 404, procurará o recurso nos servidores adjacentes.
-
Implementação de recursos dinamicos com o Common Gateway Interface. Ao escrever na URL /CGI/prog?params, o servidor ira executar o prog, tanto se tiver em /bin/ ou /sbin/, quanto se for um programa local. Para teste, tente executar o programa CGIexecutable e passar alguns parametros.
-
Implementado o Basic Authentication para acesso as path. Quando for requisitado um path, sera procurado no path o arquivo .htaccess. Se nao tiver, retorna 200. Se tiver, retorna 401. Entao no proximo request se espera um user e pass.
-
Ordenando os arquivos crescente ou decrescentemente pelo Nome e Size usando Query Params.
-
Navegação completa na interface usando o 'Parent Directory'.
-
Icones são carregados via Base64.
-
Interface de navegação apresenta os campos File(Name), Size - com seus respectivos tamanhos em bytes, kB, MB e GB. Quando pasta, este valor não é informado - e Last Modified.
-
Interface para navegaçao pronto.
-
Correçao de erros de geraçao de Mymetypes desconhecidos, da geraçao do index incorreto e caminhos no index linkavam para lugar incorreto por causa do '.'.
-
Interface criada para navegação entre os diretórios. Basta fazer uma requisição para 127.0.0.1:port/subpath/subsubpath.
-
Gerando o index.html para qualquer requisição de path.
-
Atualizada a função de retorno do 404 Not Found.
-
Quando pela primeira vez o Cliente se conecta com o Servidor, o Servidor retorna um Cookie "count=0", que é incrementado a cada conexão com o Servidor.
-
Começando a processar as caches de arquivos do método GET: If-Modified-Since e If-Unmodified-Since implementado.
-
Obtendo e retornando o header-field Content-Length, Content-Type e Last-Modified.
-
Retornando requisições GET de arquivos de 128 em 128 bytes para não "afogar" o servidor com arquivos grandes.
-
Agora está lançando uma thread para atender qualquer GET. Então quando um Socket se conectar, uma thread é lançada para atende-la e a thread principal continua a esperar outra conexão.
-
Transformando o arquivo Server em uma classe.