Skip to content

agustinignaciovazquez/GatOxy

Repository files navigation

El objetivo del trabajo es implementar un servidor proxy que soporte el 
protocolo HTTP version 1.1 y a su vez pueda ser utilizado por distintos
User-Agents para navegar por Internet.
El servidor debe poder utilizarse de manera transparente y con previa 
configuración de los navegadores. Es necesario que se soporte la concurrencia 
de usuarios en simultáneo.
Adicionalmente, el servidor implementa funciones de transformación, soporte de 
métricas y datos de uso. Estos datos se pueden obtener por consola en tiempo de 
ejecución, para los cuales se diseñó un protocolo “admin” que funciona sobre 
SCTP.

Authors:
--------

Grupo 5

Cifuentes, Ignacio Imanol		54311
Manganaro Bello, Santiago		56289
Soracco, Tomas 				56002
Vazquez, Agustin Ignacio 		55354


Construcción con CMake:
-----------------------

Es posible construir el proyecto con <https://cmake.org/>.

 $ cd src
 $ make

Ejecucion:
----------

 $./proxy [-P port] -T -M mediatype,...

Contruccion Cliente:
--------------------

 $ cd client
 $ make

Ejecucion Cliente:

 $./client -a IP_ADDR -p PORT -c ADMIN_COMMAND

Requerimientos:
---------------

  - cmake para la construcción
  - pthreads  para que sea un server iterativo
  - lsctp para el funcionamiento del protocolo

Organización:
------------

Los archivos se encuentran escritos en el dialecto GNU99.

- httproxynio.c:​ ​ punto de entrada del proxy, donde se lleva a cabo todo el 
manejo del flujo de mensajes.
- admin.c:​ ​se conecta con el servidor, envía un mensaje donde se puede 
visualizar el estado de las configuraciones.
- sctpadminnio.c:​ ​ manejo de mensajes del protocolo implementado, 
funcionando sobre sctp.
- main.c:​​ monta un socket pasivos y maneja las conexiones entrantes.
- proxy_state.c:​ almacena la estructura general que tiene las configuraciones 
de comunicación entre admin y server.
- selector.c: multiplexor de entrada/salida, permite mantener la concurrencia 
de manera no bloqueante.
             
Los parsers no realizan syscalls.

Algunos de los archivos contienen pruebas de unidad.

Si un archivo se llama `foo.c' su suite de pruebas estará en el archivo 
`foo_test.c', que generará el binario ejecutable `foo_test'. Cada suite
contiene uno o más pruebas. 



About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •