ftp-hog: sencillo servidor ftp a la MailHog
Hace tiempo tuve que trabajar con FTP.
Cuando uno desarrolla sistemas que deben interactuar con sistemas de terceros, ayuda mucho tener un sustituto que podamos controlar totalmente.
Algunos ejemplos son servidores de base de datos locales, servicios web «impostores», servidores de correo electrónico locales, etc.
Obviamente necesitaba un servidor FTP local. En Linux, hay mil maneras de instalar uno.
vsftpd
es la opción más popular en Linux, y es lo que he estado
utilizando para este trabajo.
Por otro lado, para enviar correos electrónicos, por suerte conocí hace tiempo MailHog.
Es una herramienta que no me canso de recomendar.
En su forma más sencilla, es un simple ejecutable. Como los servidores web de desarrollo a los que estamos acostumbrados (Rils, Django, etc.), al ejecutarlo como un usuario no privilegiado, arranca el proceso de un «demonio» o «servidor» que espera mensajes SMTP en el puerto 2025. Todos los mensajes que les han enviado puedes verlos después en una interfaz web.
Lo que más me gusta de utilizar este tipo de herramientas para desarrollar software es que:
- No está integrado al sistema
- Corre en modo no privilegiado
- La instalación y ejecución es trivial
Posiblemente lo que más me gusta es el último punto, porque puedes hacer que todo tu equipo de desarrolladores empiecen a trabajar en el asunto casi de inmediato.
Este último punto es lo que no conseguía con vsftpd
.
Hace poco tuve que volver a trabajar con ese módulo que interactúa con
FTP. Tenía que volver a recrear el entorno de desarrollo, instalar
vsftpd
y explicarle a mis colegas del equipo cómo hacerlo (si
querían).
Por esta razón, decidí preparar una pequeña herramienta que me ofreciera los 3 puntos anteriores, pero como un servidor FTP.
Lo llamé ftp-hog.
Puedes probarlo clonando el repositorio y ejecutando desde la raíz del repositorio lo siguiente:
clojure -X:run-x
Entonces tendrás un servidor FTP escuchando en el puerto 2221 y que
expone tu carpeta temporal (/tmp
).
Ctrl-C
y lo detienes. Sencillo.
Lógico, debes tener Clojure instalado.
Por los momentos el puerto y la carpeta están fijos.
Tengo planeado parametrizar el puerto y la carpeta a compartir.
También quiero dejar a disposición ejecutables, tal cuál hace
MailHog
: cero instalación/configuración, y cero dependencia de
Clojure.
Es una herramienta para programadores. No debe usarse para servidores FTP de verdad. En la medida que vaya mejorando y sofisticándose, lo restringiré lo más posible.
He estado utilizándolo últimamente y ha sido de la más útil. Si lo llegas a utilizar, espero que te sea de tanta utilidad como a mi.