Skip to content

Minimal server HTTP in Python using Socket. GET and POST are implemented. Can be used to share files in LAN.

Notifications You must be signed in to change notification settings

DanielVenturini/lan-server

Repository files navigation

Server-HTTP-with-Socket

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.

About

Minimal server HTTP in Python using Socket. GET and POST are implemented. Can be used to share files in LAN.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published