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


Repositorio 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.1e


Nuevas Características

* Timeout configurable: Añadida opción `-t SEGUNDOS` para establecer el tiempo límite de conexión (por defecto: 15 segundos)
* Salida con colores: Añadida opción `-c CUANDO` con detección automática de terminal (por defecto: auto, activado en terminal)
* Manejo inteligente de URLs: Añade automáticamente `gemini://` cuando falta el esquema
* Mejor retroalimentación: Confirmación al guardar archivos con `-o`, muestra datos enviados con `-i`

Mejoras

* Redirecciones por defecto cambiadas: Ahora sigue 1 redirección por defecto en lugar de 0
* Texto de ayuda mejorado: Actualizado con ejemplos prácticos y descripciones más claras
* Opciones simplificadas: Eliminado `--color` en favor del atajo `-c`
* Auto-completado de URLs: Entradas como `ejemplo.com` se convierten en `gemini://ejemplo.com`
* Retroalimentación visual: Códigos de estado coloreados y mensajes de error según el tipo de respuesta
* Comportamiento sin argumentos: Ejecutar sin argumentos muestra el texto de ayuda
* Mejores mensajes de error: Retroalimentación clara para fallos de conexión y opciones inválidas

Código de Colores

* Respuestas 20x (éxito): Verde (solo contenido, sin cabecera)
* Respuestas 30x (redirección): Amarillo con URL de redirección
* Respuestas 40x (fallo temporal): Magenta
* Respuestas 50x (fallo permanente): Rojo
* Respuestas 10x (entrada requerida): Cian
* Mensajes de error: Rojo con resaltado apropiado
* Mensajes informativos: Cian (normalización de URL, datos siendo enviados)

Información de Versión

Repositorio del Código Fuente
Sitio Gemini

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
* Amigable con el usuario con valores por defecto inteligentes y colores
* Proporciona retroalimentación clara para todas las operaciones

Ejemplos de Uso


# Uso básico (añade gemini:// automáticamente)
gemurl ejemplo.com

# Guardar contenido en archivo (con confirmación)
gemurl -o pagina.gmi capsule.tilde.team

# Buscar con parámetro de consulta (muestra datos siendo enviados)
gemurl -i "consulta de búsqueda" tlgs.one/search?

# Múltiples URLs con tiempo límite y redirecciones personalizadas
gemurl -r 3 -t 30 gemini.circumlunar.space

# Desactivar colores para scripts
gemurl -c never gus.guru

# Buscar directamente en la URL
gemurl tlgs.one/search?subnet.city

# Ejemplo combinado: buscar y guardar resultados
gemurl -i "protocolo Gemini" -o resultados_busqueda.gmi tlgs.one/search?

# Mostrar versión con enlaces al repositorio
gemurl -v

Progreso


Hecho:

* Compatibilidad con OpenSSL v1.1.x y 3.x
* Análisis básico de URLs con adición automática de esquema
* Entrada (opción `-i`) para parámetros de consulta con retroalimentación visual
* Redirecciones (opción `-r`, por defecto: 1)
* Timeout configurable (opción `-t`)
* Salida coloreada con detección de terminal (opción `-c`)
* Salida a archivo con confirmación de guardado (opción `-o`)
* Normalización de URLs (añade automáticamente `gemini://`)
* Correcciones para compilación multiplataforma
* Experiencia de usuario mejorada con mensajes informativos
* Mensajes de error útiles y validación

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
* Verificación opcional de certificados
* Límites de tamaño de respuesta
* Indicadores de progreso para descargas grandes
* Soporte para proxy HTTP/HTTPS
* Soporte para proxy SOCKS5

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
$ make clean
$ make

Probar las nuevas características:
# Probar nueva función de timeout
gemurl -t 60 gemini.circumlunar.space

# Probar salida con colores (detección automática)
gemurl -c auto ejemplo.com

# Probar auto-completado de URLs
gemurl tilde.team  # Se convierte automáticamente en gemini://tilde.team

# Probar retroalimentación de entrada
gemurl -i "consulta de prueba" buscar.ejemplo.com  # Muestra "enviando datos: consulta de prueba"

# Probar confirmación de guardado de archivo
gemurl -o salida.gmi ejemplo.com  # Muestra "guardados X bytes en salida.gmi"

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
# macOS (Homebrew)
$ brew install openssl

Problemas comunes:
* URLs sin esquema: Solo usa ejemplo.com - gemurl añade gemini:// automáticamente
* Sin salida de colores: Usa `-c always` para forzar colores, o comprueba la compatibilidad del terminal
* Problemas de redirección: Ajusta con `-r NUM` (por defecto es 1)
* Timeouts de conexión: Aumenta con `-t SEGUNDOS` (por defecto es 15)
* Permisos de archivo: Asegúrate de tener acceso de escritura al directorio de salida cuando uses `-o`

Ejemplo de flujo de trabajo:
# 1. Buscar contenido
gemurl -i "cliente gemini" tlgs.one/search? | grep -i gemini

# 2. Guardar resultados interesantes
gemurl -o sitios_gemini.gmi -i "software cliente" tlgs.one/search?

# 3. Visitar sitios descubiertos
gemurl gemini://ejemplo.sitio.descubierto

# 4. Seguir redirecciones si es necesario
gemurl -r 5 gemini://sitio.con.redirecciones

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.1e - Añadido timeout, salida con colores, auto-completado de URLs, experiencia de usuario mejorada e información del repositorio

Repositorio del Código Fuente (Codeberg)
Sitio Gemini