gtracert - Traceroute para servidores Gemini


Una utilidad traceroute para seguir redirecciones y trazar rutas en servidores que usan el protocolo Gemini (gemini://).

Características


* Sigue redirecciones Gemini (códigos 30 y 31)
* Muestra tiempos de respuesta por cada salto
* Detecta y evita bucles de redirección
* Resuelve direcciones IP para cada host
* Soporte multilingüe (inglés, español, alemán)
* Detecta automáticamente el idioma del sistema
* Límite configurable de saltos
* Timeout configurable
* Manpage incluida

Instalación


Desde código fuente:


make
sudo make install  # Instala binario y manpage

Solo el binario:


sudo make install-bin

Instalación manual:


# Instalar binario
sudo cp gtracert /usr/local/bin/

# Instalar manpage (opcional)
sudo cp gtracert.1.gz /usr/share/man/man1/
sudo mandb  # Actualizar base de datos de manpages

Uso


Sintaxis básica:


gtracert [OPCIONES] <Gemini-URI>

Ejemplos:


# Traceroute básico
gtracert gemini://gemini.circumlunar.space/

# Forma abreviada (gemini:// se añade automáticamente)
gtracert gemini.circumlunar.space

# Máximo 5 saltos
gtracert -m 5 ejemplo.com

# Timeout de 10 segundos
gtracert -t 10 ejemplo.com

# Español forzado
gtracert --lang es ejemplo.com

# Mostrar ayuda
gtracert -h

Opciones:


* -m MAXSALTOS - Máximo número de saltos (predeterminado: 10)
* -t TIMEOUT - Timeout en segundos (predeterminado: 5)
* -h - Mostrar ayuda
* --lang IDIOMA - Forzar idioma (en, es, de)

Salida de ejemplo


$ gtracert -m 3 gemini://ejemplo.com/
Trazando ruta a gemini://ejemplo.com/
Máximo 3 saltos:

Salto   Estado       Tiempo   IP/Host
---- ------------ ------   ---------------------------------
 1   Redirección      245ms   ejemplo.com (192.0.2.1)
      └─→ Redirección a: gemini://ejemplo2.com/
 2   Éxito            320ms   ejemplo2.com (192.0.2.2)

Traza completa. Tiempo total: 565ms

Idiomas soportados


El programa soporta 3 idiomas:

1. Inglés (en) - Predeterminado
2. Español (es)
3. Alemán (de)

Detección automática:


El idioma se detecta automáticamente de las variables de entorno:

* LANGUAGE (estándar GNU)
* LC_ALL
* LC_MESSAGES
* LANG

Forzar idioma:


gtracert --lang es gemini://ejemplo.com
export LANG=es_ES.UTF-8 && gtracert ejemplo.com

Códigos de estado Gemini


El programa sigue y muestra códigos de estado del protocolo Gemini:

* 20 - ÉXITO (fin del traceroute)
* 30 - REDIRECCIÓN TEMPORAL (siguiente salto)
* 31 - REDIRECCIÓN PERMANENTE (siguiente salto)
* 40-59 - ERRORES (fin del traceroute)

Documentación


Manpage:


# Ver documentación completa
man gtracert

# Ver sin instalar
man -l gtracert.1

Especificación Gemini:


Especificación del protocolo Gemini

Dependencias


* Bibliotecas de desarrollo de OpenSSL
* Biblioteca estándar de C

Instalar dependencias:


Debian/Ubuntu:
sudo apt-get install libssl-dev

Fedora/RHEL:
sudo dnf install openssl-devel

Arch Linux:
sudo pacman -S openssl

Solus Linux:
sudo eopkg install openssl-devel

Compilación desde código fuente


# Instalar dependencias
sudo apt-get install libssl-dev  # En Debian/Ubuntu

# Compilar
make

# Probar
./gtracert -m 3 gemini://gemini.circumlunar.space/

Desinstalación


# Si se instaló con make install
sudo make uninstall

# Manualmente
sudo rm -f /usr/local/bin/gtracert /usr/share/man/man1/gtracert.1.gz
sudo mandb

Protocolo Gemini


Gemini es un protocolo de internet nuevo y simple, diseñado para ser más simple que Gopher pero más poderoso. Opera sobre TLS en el puerto 1965.

Página principal de Gemini
Directorio de cápsulas

Limitaciones


* Traza a nivel aplicación (redirecciones), no a nivel red (routers)
* Cada salto establece una nueva conexión TLS completa
* Algunos servidores pueden limitar conexiones frecuentes
* El tiempo medido incluye el handshake TLS completo

Licencia


Este proyecto está liberado bajo la licencia The Unlicense (dominio público).

Este es software libre y sin restricciones liberado al dominio
público.

Cualquiera es libre de copiar, modificar, publicar, usar, compilar,
vender o distribuir este software, ya sea en forma de código fuente o
como binario compilado, para cualquier propósito, comercial o no
comercial, y por cualquier medio.

En jurisdicciones que reconocen las leyes de derechos de autor, el
autor o autores de este software dedican cualquier y todo interés de
derechos de autor en el software al dominio público. Hacemos esta
dedicación en beneficio del público en general y en detrimento de
nuestros herederos y sucesores. Pretendemos que esta dedicación sea
un acto manifiesto de renuncia en perpetuidad de todos los derechos
presentes y futuros sobre este software bajo la ley de derechos de
autor.

EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO,
EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE
COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO
INFRACCIÓN. EN NINGÚN CASO LOS AUTORES SERÁN RESPONSABLES POR NINGUNA
RECLAMACIÓN, DAÑOS U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE
CONTRATO, AGRAVIO O DE OTRO MODO, QUE SURJA DE, FUERA O EN CONEXIÓN
CON EL SOFTWARE O EL USO U OTROS ACUERDOS EN EL SOFTWARE.

Para más información, por favor refiérase a <https://unlicense.org/>

Consulte el archivo UNLICENSE para el texto completo.

Autor


Tanausú Gómez (_-Caleb-_) - 2026

Repositorio en Codeberg

Contribuir


Las contribuciones son bienvenidas. Por favor:

1. Haz fork del repositorio
2. Crea una rama para tu característica
3. Haz commit de tus cambios
4. Abre un Pull Request

Reportar problemas


Por favor, reporta cualquier problema o sugerencia en:
Issues en Codeberg

---

> Simple, rápido, útil - como el protocolo Gemini mismo.