-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
80 lines (55 loc) · 2.21 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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.