/Proxy-Cache-Redes

Primary LanguagePythonGNU General Public License v3.0GPL-3.0


Alunos:        William Felipe Tsubota          - 2017.1904.056-7
               Marllon Lucas Rodrigues Rosa    - 2017.1904.045-1
               Gabriel C. M.                   - 2017.1904.005-2
                           
                          Trabalho 1

Professora:    Hana Karina Salles Rubinsztejn

Proxy HTTP

Este projeto visa a criação de um servidor proxy com as funcionalidades de receber uma requisição do navegar e armazenar os dados da requisição

Relatório redes:

1.1 - Cache: Foi implementado um dicionário para armazenagem da cache, tal dicionário é composto pela chave (url completa da requisição) e o valor é uma lista com os replies. Um scheduler é lançado para cada cache armazenada em um tempo de 5 minutos, após esse tempo tal chave e seu valor é apagado do dicionário. Caso a cache esteja cheia (Há uma variável simulando o tamanho da cache) é retirado da cache o elemento mais antigo e verificado se com o novo valor do tamanho da cache é possível inserir a nova informação na cache. OBS: A partir no python 3.7 o dicionário mantém a ordem de inserção, e utilizamos esse fato na nossa política de substituição, ou seja, removemos os primeiros elementos do dicionário para alocar espaço.

1.2 - Blacklist: Todos os links a serem bloqueados devem ser colocados em "blacklist.txt", separados por uma quebra de linha, a implementação deste é intuitiva, apenas comparamos se o link que estamos requisitando acesso está na blacklist.

2.1 - Lista de implementações

  • Cache - implementado
  • blacklist - implementado
  • multiplos clientes - checked
  • conexão - tcp - checked
  • porta não definida - checked
  • logs - checked (obs os logs são criados a cada 30 segundos, apenas se houver acesso à sites neste tempo)

2.2 - Lista de extras implementados:

  • bloqueio por horário

Para execução da proxy basta executar: python3 proxy.py