refactor(switch-config): charger la base VLAN depuis l'API CMDB
- loadVlanDatabase() interroge GET /api/vlans (table networks de la CMDB) au lieu du fichier vlan_database.js, désormais supprimé - Repli sur la base par défaut intégrée en mode file:// ou serveur injoignable - Lien vers le générateur de mots de passe dans la navigation Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
90f3a2ac3d
commit
8c20793236
3 changed files with 30 additions and 55 deletions
2
.gitmodules
vendored
2
.gitmodules
vendored
|
|
@ -1,4 +1,4 @@
|
|||
[submodule "cmdb"]
|
||||
path = cmdb
|
||||
url = ssh://git@git.thehackdes.com/TheHackdes/Noctame.git
|
||||
url = https://git.thehackdes.com/TheHackdes/Noctame.git
|
||||
branch = dev
|
||||
|
|
|
|||
|
|
@ -596,7 +596,6 @@ button:active { transform: scale(0.98); }
|
|||
background: #101216; color: #d4d4d4;
|
||||
}
|
||||
</style>
|
||||
<script src="vlan_database.js" defer></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
|
@ -608,6 +607,7 @@ button:active { transform: scale(0.98); }
|
|||
<a href="../cmdb/cmdb.html"><div class="psw-ico">◧</div><div class="psw-txt"><b>CMDB</b><small>Machines, réseaux, salles</small></div></a>
|
||||
<a href="../cert-generator/dashboard.html"><div class="psw-ico">🔐</div><div class="psw-txt"><b>Générateur certificats</b><small>Clés RSA, CSR, SSL</small></div></a>
|
||||
<a class="active" href="switch_vlan_mapper.html"><div class="psw-ico">🔌</div><div class="psw-txt"><b>Configuration switch</b><small>VLANs, export config</small></div></a>
|
||||
<a href="../password-generator/password_generator.html"><div class="psw-ico">🔑</div><div class="psw-txt"><b>Mots de passe</b><small>Générateur & envoi</small></div></a>
|
||||
</div>
|
||||
<div class="psw" style="margin-top:auto;padding-top:14px;border-top:1px solid var(--border)">
|
||||
<a href="../cmdb/preferences.html"><div class="psw-ico">⚙</div><div class="psw-txt"><b>Préférences</b><small>Types, tickets, réglages</small></div></a>
|
||||
|
|
@ -810,51 +810,35 @@ const DEFAULT_VLAN_DATABASE = `1 = Native = #8B5CF6
|
|||
200 = VLAN200 = #16A34A
|
||||
300 = VLAN300 = #0EA5E9`;
|
||||
|
||||
// Charger la base de données VLAN au démarrage
|
||||
function loadVlanDatabase() {
|
||||
// 1️⃣ Chercher d'abord dans localStorage (changements sauvegardés par l'utilisateur)
|
||||
const savedDbText = localStorage.getItem('vlanDatabaseText');
|
||||
if (savedDbText) {
|
||||
parseVlanDatabase(savedDbText);
|
||||
console.log('✓ Base de données chargée depuis le stockage local');
|
||||
return;
|
||||
}
|
||||
|
||||
// 2️⃣ Vérifier si vlan_database.js a été chargé (fonctionne en mode file://)
|
||||
if (typeof VLAN_DATABASE_FILE !== 'undefined') {
|
||||
parseVlanDatabase(VLAN_DATABASE_FILE);
|
||||
localStorage.setItem('vlanDatabaseText', VLAN_DATABASE_FILE);
|
||||
console.log('✓ Base de données chargée depuis vlan_database.js');
|
||||
return;
|
||||
}
|
||||
|
||||
// 3️⃣ Essayer de charger depuis le fichier externe (serveur HTTP uniquement)
|
||||
// Charger la base de données VLAN au démarrage.
|
||||
// Source de vérité : la table `networks` de la CMDB (SQL), exposée par le
|
||||
// portail via GET /api/vlans. Chaque réseau CMDB portant un numéro de VLAN
|
||||
// devient une entrée (nom + couleur). Remplace l'ancien vlan_database.js.
|
||||
// Replis (mode file:// ou serveur injoignable) : base par défaut intégrée.
|
||||
async function loadVlanDatabase() {
|
||||
if (!location.href.startsWith('file://')) {
|
||||
const xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', 'vlan_database.txt', true);
|
||||
xhr.onload = function() {
|
||||
if (xhr.status === 200) {
|
||||
parseVlanDatabase(xhr.responseText);
|
||||
localStorage.setItem('vlanDatabaseText', xhr.responseText);
|
||||
console.log('✓ Base de données chargée depuis vlan_database.txt');
|
||||
} else {
|
||||
loadDefaultDatabase();
|
||||
}
|
||||
};
|
||||
xhr.onerror = function() {
|
||||
loadDefaultDatabase();
|
||||
};
|
||||
|
||||
try {
|
||||
xhr.send();
|
||||
return;
|
||||
const res = await fetch('/api/vlans', { cache: 'no-store' });
|
||||
if (res.ok) {
|
||||
const rows = await res.json();
|
||||
vlanDatabase = {};
|
||||
rows.forEach(r => {
|
||||
if (r.vlan === null || r.vlan === undefined || r.vlan === '') return;
|
||||
vlanDatabase[String(r.vlan)] = {
|
||||
name: r.name || `VLAN_${r.vlan}`,
|
||||
color: r.color || '#8B5CF6'
|
||||
};
|
||||
});
|
||||
console.log(`✓ ${Object.keys(vlanDatabase).length} VLAN(s) chargés depuis la CMDB (table networks)`);
|
||||
return;
|
||||
}
|
||||
console.warn('CMDB /api/vlans a répondu', res.status, '→ base VLAN par défaut');
|
||||
} catch (error) {
|
||||
loadDefaultDatabase();
|
||||
console.warn('CMDB injoignable, base VLAN par défaut :', error);
|
||||
}
|
||||
} else {
|
||||
// Mode file:// et aucun vlan_database.js trouvé - utiliser DB par défaut
|
||||
loadDefaultDatabase();
|
||||
}
|
||||
// Mode file:// ou serveur indisponible : base par défaut intégrée
|
||||
loadDefaultDatabase();
|
||||
}
|
||||
|
||||
function loadDefaultDatabase() {
|
||||
|
|
@ -2475,8 +2459,10 @@ window.addEventListener('resize', () => {
|
|||
});
|
||||
|
||||
// Charger la base de données au démarrage
|
||||
window.addEventListener('load', () => {
|
||||
loadVlanDatabase();
|
||||
window.addEventListener('load', async () => {
|
||||
// Attendre les VLANs (table networks CMDB) avant toute analyse : une conf
|
||||
// reçue via le hash s'analyse aussitôt et a besoin des noms/couleurs.
|
||||
await loadVlanDatabase();
|
||||
syncCmdbDbStatus(); // version de la base CMDB (partagée via localStorage)
|
||||
|
||||
// Config transmise par la CMDB via l'URL (#cfg=...) : pré-remplir et analyser
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
// Fichier de base de données VLAN - À charger dans le HTML
|
||||
// Placer ce fichier dans le même dossier que switch_vlan_mapper.html
|
||||
// Format : <id> = <nom> = <couleur hex> (exemple générique, à adapter)
|
||||
|
||||
const VLAN_DATABASE_FILE = `10 = MGMT = #6366f1
|
||||
20 = SERVERS = #22c55e
|
||||
30 = USERS = #06b6d4
|
||||
40 = VOICE = #2dd4bf
|
||||
50 = DMZ = #8b5cf6
|
||||
99 = GUEST = #f97316
|
||||
`;
|
||||
Loading…
Add table
Add a link
Reference in a new issue