gemurl
gemurl es a Gemini lo que cURL es para la Web, pero más simple.
Una herramienta de propósito general para interactuar con servidores Gemini desde la línea de comandos.
Instalación
$ git clone https://codeberg.org/_-Caleb-_/gemurl $ cd gemurl $ make $ make install
Por defecto, `make install` instala el binario en `~/.local/bin`. Esto se puede cambiar estableciendo la variable de entorno PREFIX.
Dependencias
- OpenSSL 1.1.x o 3.x (el soporte para LibreSSL está pendiente de pruebas)
- Compilador de C (GCC, Clang, etc.)
- GNU Make
Novedades en la Versión 0.2.0
Cambios Incompatibles
- Compatibilidad con OpenSSL 3.0+: La función `SSL_get_peer_certificate()` ha sido reemplazada por su equivalente moderno, requiriendo compilación condicional para mantener la compatibilidad con versiones anteriores.
- Mejora en la inicialización TLS: Se actualizaron las rutinas de inicialización para una mejor portabilidad entre versiones de OpenSSL.
Correcciones de Errores
- Corregido error de sintaxis en el análisis de metadatos (gemini.c:88)
- Añadido `#include <ctype.h>` faltante para la función `isdigit()`
- Corregida la terminación de cadenas meta para manejar correctamente finales CRLF
- Simplificados los flags del enlazador en el Makefile para una mejor compatibilidad
Mejoras
- Compilación condicional para OpenSSL 1.1.x y 3.x
- Mejor limpieza de recursos entre versiones de OpenSSL
- Actualizado a `TLS_client_method()` para una creación de contexto TLS más específica
Objetivos
- Soportar la especificación completa
- Mantener la accesibilidad del código
- Compilar en cualquier sitio con librerías TLS modernas
Justificación
Existen muchos programas que funcionan de manera similar a gemurl (gmni, gemget, gurl, gcat), pero este es el único cliente en el que todo lo siguiente es (o será) cierto:
- Obsesivamente multiplataforma
- Soportar varias implementaciones TLS (OpenSSL 1.1.x/3.x)
- Implementar la especificación completa
Progreso
Hecho:
- Compatibilidad con OpenSSL v1.1.x y 3.x
- Análisis básico de URLs
- Entrada (opción `-i`)
- Redirecciones (opción `-r`)
- Correcciones para compilación multiplataforma
Por hacer:
- Soporte para LibreSSL (necesita pruebas con los cambios de v0.2.0)
- Otras implementaciones TLS (LibTLS, GnuTLS, BearSSL, etc.)
- Certificados de cliente
- Mejoras en compatibilidad con Windows
- Distribución como librería C
Notas de Compatibilidad
Usuarios de OpenSSL 3.0: La versión 0.2.0 incluye correcciones esenciales para la compatibilidad con OpenSSL 3.0. Si usas OpenSSL 1.1.x, los cambios son compatibles con versiones anteriores.
Construir desde el código fuente:
$ git clone https://codeberg.org/_-Caleb-_/gemurl $ cd gemurl $ git checkout v0.2.0 # Cuando esté etiquetada $ make clean $ make
Solución de Problemas
Si encuentras errores de enlazado con OpenSSL:
# Comprueba tu versión de OpenSSL $ openssl version # Asegúrate de que las librerías de desarrollo están instaladas # Debian/Ubuntu: $ sudo apt install libssl-dev # Fedora/RHEL: $ sudo dnf install openssl-devel # Solus $ sudo eopkg it openssl-devel
Licencia
Puedes usar este software bajo los términos de la licencia BSD-3-Clause. Consulta LICENSE para más información.
---
Versión 0.2.0 - Actualizada para compatibilidad con OpenSSL 3.0+ y correcciones de errores