NSL-Graph

Documenta a túa rede en texto plano, non en caixóns de ferramentas privativas.

NSL-Graph é unha ferramenta libre para modelar, visualizar e auditar infraestruturas de rede. Tres caras nun mesmo modelo: CLI en Go, API HTTP e interfaz web en PHP. _Parsing_ de configuracións reais de OPNsense, OpenWrt e Fortinet. Xeración idempotente de configuracións. Exportación a diagramas D2. Licenza AGPL-3.0.

🟢 Go 1.25 🐘 PHP 7.4+ 🗄️ CloverDB 📐 D2 📜 AGPL-3.0-or-later 🇪🇺 Feito na Galiza

O problema

As infraestruturas de rede dependen, no mellor dos casos, de NMS propietarios opacos; no peor, de scripts ad hoc cuxa lóxica reside na cabeza dunha persoa. Auditar unha configuración de firewall require acceso ao sistema, e xerar un diagrama de topoloxía require debuxar á man. NSL-Graph ofrece unha alternativa: un modelo de datos declarativo, _parsing_ de configuracións reais, e _push_ idempotente cara aos dispositivos.

Capacidades principais

Todo o que precisas para describir e operar unha rede, baixo unha única licenza copyleft forte.

📐 Diagramas D2

Xera diagramas de topoloxía a partir do modelo declarativo. Dispositivos, portos, conexións, VLANs, SSID e zonas de seguridade, todo nun só ficheiro D2 exportable.

🌐 VLANs _tagged_ e _untagged_

Modela VLANs con cores diferenciadas, conexións _trunk_ e _access_, e detección de inconsistencias entre o declarado e o real.

🔌 _Parsing_ multi-vendor

OPNsense, OpenWrt, Fortinet. _Parsers_ escritos desde cero a partir das especificacións públicas, sen código propietario embebido.

📡 SNMP + config

Coordena datos operacionais SNMP coa configuración declarativa. Detecta deriva (drift) entre o que _dixes_ que tes e o que realmente hai.

🔐 Credenciais cifradas

Almacén _vault_ local con golang.org/x/crypto. As chaves SSH e API non abandonan o disco en claro.

🚀 _Push_ idempotente

Aplicación aditiva de NTP, VLAN e rutas contra OPNsense e OpenWrt. Podes re-executar o mesmo _push_ sen romper nada.

🖥️ Tres interfaces

CLI con cobra, API REST con gorilla/mux, e interfaz web en PHP. Usa a que máis conveña ao teu fluxo.

🧪 _Test_suite_

unha vintena de _suites_ con stretchr/testify. Cada cambio pasa por probas automatizadas en CI.

Instalación en 4 pasos

Necesitas Go 1.21+ e, opcionalmente, PHP para a interfaz web e D2 para os diagramas.

1Clona o repositorio

git clone https://github.com/Talleyrand-34/nsl
cd nsl

2Compila o binario

go build -o nsl-graph main.go

3Arranca a API

./nsl-graph server --port 8081

4Abre a interfaz web (opcional)

php -S localhost:8091 -t frontend/php

100% software libre, auditado

NSL-Graph distribúese baixo a GNU Affero General Public License v3 (AGPL-3.0-or-later). A escolla non é casualidade: a sección 13 da AGPL é a única cláusula estándar que pecha a ASP loophole, obrigando a ofrecer o _Corresponding Source_ a calquera persoa usuaria que interactúe remotamente co servizo. Unha licenza permí-siva deixaría un terceiro despregar o servizo en produción sen contribuír nada de volta.

Coherencia SPDX

Os 374 ficheiros fonte do proxecto declaran SPDX-License-Identifier: AGPL-3.0-or-later de forma consistente co LICENSE.md raíz. Auditoría previa corrixiu 50 cabeceiros que contradicían a licenza do proxecto.

Dependencias compatibles

Todas as dependencias importadas son permí-sivas (BSD-3-Clause, Apache-2.0, MIT), absorbidas sen risco pola AGPL. Non se importa _copyleft_ forte alleo (LGPL, GPL, EUPL) que crearía conflitos de compatibilidade.

374
ficheiros con SPDX AGPL-3.0
9
dependencias permí-sivas
0
cabeceiros SPDX inconsistentes
0
código propietario embebido

Empeza agora

O proxecto está en fase de estabilización do núcleo. _Forks_, _issues_ e _pull requests_ son benvidos. Se tes unha infraestrutura real con OPNsense ou OpenWrt, o _parsing_ xa está listo; o _push_ idempotente está en maduración.