Estructura del proyecto
Estructura de directorios
Sección titulada «Estructura de directorios»Directoriocmd/
Directoriobenchmark/ Herramienta de benchmark de operaciones RouterOS
- …
Directoriocs-routeros-bouncer/
- main.go Punto de entrada de la CLI
Directoriointernal/
Directorioconfig/
- config.go Struct de configuración y carga
- config_test.go
- doc.go Documentación del paquete
Directoriocrowdsec/
- bouncer_iface.go Interfaz del bouncer de CrowdSec
- crowdsec_test.go
- doc.go Documentación del paquete
- logrus_adapter.go Adaptador de Logrus a zerolog
- logrus_adapter_test.go
- mock_bouncer_test.go
- stream.go Modo streaming
- stream_test.go
Directoriomanager/
- crowdsec_iface.go Interfaz del stream de CrowdSec
- doc.go Documentación del paquete
- manager.go Orquestador central
- manager_test.go
- mock_test.go
- routeros_iface.go Interfaz del cliente de RouterOS
- start_test.go Pruebas de arranque y reconciliación
Directoriometrics/
- doc.go Documentación del paquete
Directoriolapi/ Métricas de uso de la LAPI de CrowdSec
- …
- metrics.go Definiciones de métricas de Prometheus
- metrics_test.go
- server.go Servidor HTTP para /metrics y /health
Directoriorouteros/
- addresslist.go Operaciones de address list
- bulk.go Operaciones masivas con scripts
- client.go Cliente de la API de RouterOS
- client_mock_test.go
- conn_iface.go Interfaz de conexión de RouterOS
- doc.go Documentación del paquete
- firewall.go Operaciones de reglas de firewall
- mock_conn_test.go
- pool.go Pool de conexiones
- routeros_test.go
Directoriodocs/ Documentación (Starlight)
- …
Directoriolocal/
Directoriodocs-legacy/ Documentación original de MkDocs (archivo)
- …
Directoriografana/
- dashboard.json Dashboard de Grafana
Directorioconfig/ Archivos de configuración de ejemplo
- …
Directoriodocker/
- Dockerfile Build de Docker
- go.mod Definición del módulo de Go
- LICENSE Licencia MIT
- README.md Readme del proyecto
Responsabilidades de los paquetes
Sección titulada «Responsabilidades de los paquetes»cmd/cs-routeros-bouncer
Sección titulada «cmd/cs-routeros-bouncer»Punto de entrada de la CLI. Se encarga de:
- Enrutado de subcomandos (
setup,uninstall,version,help) y flags de ejecución (-c,-version) - Gestión de señales (SIGTERM, SIGINT)
- Coordinación del apagado ordenado
internal/config
Sección titulada «internal/config»Gestión de la configuración:
- Carga la configuración desde un archivo YAML y/o variables de entorno
- Valida todos los parámetros
- Proporciona valores por defecto razonables
- Mapea los nombres de variables de entorno a los campos del struct de configuración
internal/crowdsec
Sección titulada «internal/crowdsec»Integración con la LAPI de CrowdSec:
- Cliente HTTP para la Local API de CrowdSec
- Modo streaming: consulta decisiones nuevas/eliminadas
- Filtrado de decisiones por origin, scenario y scope
- Compatibilidad con certificados TLS
internal/manager
Sección titulada «internal/manager»Orquestador central que conecta todos los componentes:
- Arranque: se conecta a CrowdSec y MikroTik, crea las reglas de firewall, ejecuta la reconciliación
- Ejecución: procesa decisiones en streaming (bans/unbans)
- Apagado: elimina las reglas de firewall, cierra las conexiones
- Gestión de errores y lógica de reintentos
internal/metrics
Sección titulada «internal/metrics»Observabilidad:
- Definición y registro de métricas de Prometheus
- Endpoint de comprobación de salud (
/health) - Recolector de métricas del sistema RouterOS (CPU, memoria, temperatura)
- Servidor HTTP para los endpoints
/metricsy/health
internal/routeros
Sección titulada «internal/routeros»Cliente de la API de MikroTik RouterOS:
- Pool de conexiones con tamaño configurable
- Operaciones de address list (añadir, eliminar, listar)
- Operaciones de reglas de firewall (crear, borrar, listar)
- Consultas de información del sistema
- Ejecución masiva de scripts para la reconciliación
- Ayudante de ejecución en paralelo (
ParallelExec)