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 FuenteSitio 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