# BProxy BProxy (Bottler Proxy) ## Tabla de contenidos - [Requisitos ](#requisitos-) - [Compilación ](#compilación-) - [Ejecución ](#ejecución-) - [Casos de uso ](#casos-de-uso-) - [Testeos ](#testeos-) - [Limpieza ](#limpieza-) - [Documentación ](#documentación-) ## Requisitos Debe instalar gcc y make. Estos se encuentran disponibles en el repositorio de la vasta mayoría de distribuciones de Linux/macOS. ## Compilación Para compilar todos los archivos se debe hacer: ```bash make all ``` ## Ejecución Ahora, tendrá dos ejecutables: `client` y `socks5d`. El servidor por defecto utilizará un _TOKEN_ que debe ser una `env` variable. Por ejemplo, puede configurar una mediante: ```bash export BPROXY_TOKEN=0x0FF1CEDEADB00B1E ``` Si no se encuentra una token al momento de ejecutar el `server` el mismo terminará con error. Ahora, puede correr el `server` y luego, si desea hacer alguna configuración, conectarse con el `client`. ```bash ./socks5d ${PARAMS} ``` y en otra terminal ```bash ./client ${PARAMS} ``` ## Casos de uso Se mostrarán dos casos típicos de uso del servidor. Aquí se tiene al servidor proxy corriendo en 127.0.0.1:1080 y se utiliza a este para conectarse a 192.168.10.120:110 (una PC en la misma subred corriendo un servidor POP3 local). Además, se está autenticando con el usuario `user:pass`. ```bash ./socks5d -u user:pass ncat -C -v --proxy 127.0.0.1:1080 --proxy-type socks5 192.168.10.120 110 --proxy-auth user:pass ``` Por otro lado, aquí se usó `curl` para acceder a http://api.ipify.org mediante el proxy (también corriendo en la misma IP que el ejemplo anterior). ```bash ./socks5d -u user:pass curl -x socks5://user:pass@127.0.0.1:1080 http://api.ipify.org ``` En este caso se quiere obtener la cantidad de páginas de usuarios que hay en el servidor proxy, mediante -L se especifica la direccion IP del servidor de configuración (por defecto 127.0.0.1), con -P se especifica el puerto (por defecto 8080). Una vez que se obtiene la cantidad de páginas se le pide el listado de usuarios pertenecientes a la 2da página, en caso de que el servidor no cuente con usuarios suficientes para tener 2 páginas, imprimirá un error especificando que el valor pasado no es válido. En cambio, si se cuentan con usuarios suficientes se listarán separados por un '\n' ```bash ./client 1148926835748244254 -L 192.168.10.119 -P 8100 -f ./client 1148926835748244254 -L 192.168.10.119 -P 8100 -u 2 ``` ## Testeos En orden de realizar un análisis estático del sistema usted debe tener instalado [cppcheck](http://cppcheck.net/) y [pvs-studio](https://pvs-studio.com/). Luego, puede correrlos con: ```bash make test ``` Por último, si quiere hacer un análisis dinámico (usando [valgrind](https://valgrind.org/)) puede hacerlo mediante: ```bash valgrind ./socks5d ``` ## Limpieza Si desea borrar los archivos creados luego de la compilación (y los testeos si se hubiesen corrido) debe correr: ```bash make clean ``` ## Documentación Debe notar que el informe y el rfc del protocolo BCP se encuentran en la carpeta `docs/`. # Autores ### Bottler: - Barmasch, Juan Martín (61033) - Bellver, Ezequiel (61268) - Lo Coco, Santiago (61301)