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
Respositorio de gemurl en Codeberg
$ 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.
Código Fuente (Codeberg)
---
Versión 0.2.0 - Actualizada para compatibilidad con OpenSSL 3.0+ y correcciones de errores