Este repositorio contiene el código fuente para un acortador de enlace descartado con CGI escrito en óxido. Puede alojar este proyecto en su propio entorno utilizando las instrucciones a continuación.
Los enlaces en la web se están hinchando cada vez más. ¡Los amigos no envían amigos de múltiples líneas! Sin embargo, los servicios de enlaces de terceros son una pesadilla de privacidad. Pero principalmente, quería aprender óxido y esto parecía un proyecto simple.
Este proyecto está destinado a ser mínimo y simple. Características del usuario:
Características del software:

La forma recomendada de instalar este proyecto es usar la imagen Docker. Sin embargo, especialmente si solo desea usar la API, también puede instalar el binario directamente en su propio servidor web.
Primero, prepare un directorio para el archivo de datos. Debe ser propiedad del usuario con UID 82 (Data www en Debian/Ubuntu).
$ mkdir -p ${STORAGE} /smrs/data
$ sudo chown 82:82 ${STORAGE} /smrs/dataAquí hay un ejemplo de estrofa Docker-Compose:
smrs :
image : ghcr.io/igor47/smrs:v0.1.1
restart : unless-stopped
container_name : smrs
labels :
- " traefik.enable=true "
- " traefik.http.routers.smrs.rule=Host(`example.com`,`www.example.com`) "
- " traefik.http.routers.smrs.tls=true "
- " traefik.http.routers.smrs.tls.certresolver=letsencrypt "
- " traefik.http.routers.smrs.entrypoints=https "
- " traefik.http.services.smrs.loadbalancer.server.port=8000 "
volumes :
- ${STORAGE}/smrs/data:/smrs/dataEsto utiliza Traefik como un proxy inverso al puerto de contenedor 8000. Puede usar su propio proxy inverso o exponer el puerto directamente.
Clonar el repositorio y construir el binario:
$ cargo build --release Coloque el archivo target/release/smrs en algún lugar de la ruta de su servidor web. Deberá configurar su servidor para ejecutar el binario como un script CGI. Utilizo apache2 dentro del contenedor. El archivo de configuración está en conf/smrs.conf en este repositorio.
El binario de óxido implementa los siguientes puntos finales de la API:
GET /session - Devuelve la sesión actual como { session: string }POST /session - Establece la cookie de sesión en el valor dado { session: string }POST /save - Guarda la URL en el token dado (si aún no está en uso) { url: string, token: string }GET /to/<token - redirige a la URL en el token dado, o devuelve un 404GET /list : devuelve una lista de todos los tokens y URL guardados por la session actual como { links: [{ token: string, url: string, created_at: i32 }]POST /forget : marca el token dado como se elimina, o 404 : { token: string } Para ejecutar este proyecto localmente, puede instalar la herramienta cargo make y ejecutar la tarea devenv :
$ cargo make devenv Se puede acceder al entorno de desarrollo en Localhost: 8000/. Esto atacará a los htdocs dir en el contenedor para que pueda iterar en el código y recargar. Para iterar en el binario de óxido, puede ejecutar la tarea iter , que construirá el binario localmente y copiará en el contenedor:
$ cargo make iter¡Bienvenido! Pero tenga en cuenta que este proyecto está destinado a ser mínimo. No aceptaré PRS que agregan demasiadas dependencias o características que no quiero.
Mit. Siéntase libre de bifurcarse y hacer lo que quiera.