diagnostico: busca pelo circuit-id no username
Signed-off-by: Rodrigo Martins <rodrigo@martinsevieira.adv.br>
This commit is contained in:
1 parent
ec92ef1b88
commit
6176a150e1
1 file changed
+20
-6
+20
-6
@@ -1108,6 +1108,7 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
|
|
||||||
const pppoeLogin = servico.usuario || servico.pppoe_login || servico.login || null;
|
const pppoeLogin = servico.usuario || servico.pppoe_login || servico.login || null;
|
||||||
const serial = servico.serial || servico.comodato_serial || servico.mac || null;
|
const serial = servico.serial || servico.comodato_serial || servico.mac || null;
|
||||||
|
const circuitId = servico.dhcp_agent_circuit_id || null;
|
||||||
const statusServico = this.topsapp.getStatusServicoDetalhado
|
const statusServico = this.topsapp.getStatusServicoDetalhado
|
||||||
? this.topsapp.getStatusServicoDetalhado(servico.id_status)
|
? this.topsapp.getStatusServicoDetalhado(servico.id_status)
|
||||||
: (servico.status || 'N/A');
|
: (servico.status || 'N/A');
|
||||||
@@ -1120,7 +1121,7 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
// Executar consultas em paralelo: Juniper + ONU + GenieACS (por TAG/login)
|
// Executar consultas em paralelo: Juniper + ONU + GenieACS (por TAG/login)
|
||||||
// No concentrador Juniper usa-se só o usuário (antes do @)
|
// No concentrador Juniper usa-se só o usuário (antes do @)
|
||||||
const pppoeUser = pppoeLogin ? pppoeLogin.split('@')[0] : null;
|
const pppoeUser = pppoeLogin ? pppoeLogin.split('@')[0] : null;
|
||||||
const [juniperResult, onuResult, genieResult] = await Promise.all([
|
let [juniperResult, onuResult, genieResult] = await Promise.all([
|
||||||
pppoeUser
|
pppoeUser
|
||||||
? this.ssh.getJuniperSubscriberInfo('juniper', pppoeUser).catch(e => ({ success: false, error: e.message }))
|
? this.ssh.getJuniperSubscriberInfo('juniper', pppoeUser).catch(e => ({ success: false, error: e.message }))
|
||||||
: Promise.resolve({ success: false, skipped: true }),
|
: Promise.resolve({ success: false, skipped: true }),
|
||||||
@@ -1132,6 +1133,18 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
: Promise.resolve({ success: false, skipped: true })
|
: Promise.resolve({ success: false, skipped: true })
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// Fallback: se PPPoE não encontrou sessão ativa e há circuit-id (IPoE), buscar pelo circuit-id
|
||||||
|
if (circuitId && (!juniperResult.connected)) {
|
||||||
|
try {
|
||||||
|
const circuitResult = await this.ssh.getJuniperSubscriberInfo('juniper', circuitId);
|
||||||
|
if (circuitResult.success && circuitResult.connected) {
|
||||||
|
juniperResult = { ...circuitResult, viaCircuitId: true };
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
logger.warn(`Fallback circuit-id Juniper falhou: ${e.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Sincronização TAG GenieACS ↔ PPPoE TopSapp (fire-and-forget, silencioso)
|
// Sincronização TAG GenieACS ↔ PPPoE TopSapp (fire-and-forget, silencioso)
|
||||||
// Garante que o login PPPoE do cliente fica registrado como TAG no GenieACS,
|
// Garante que o login PPPoE do cliente fica registrado como TAG no GenieACS,
|
||||||
// permitindo buscas futuras por "ver roteador <login>".
|
// permitindo buscas futuras por "ver roteador <login>".
|
||||||
@@ -1156,22 +1169,23 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
msg += ` 🔌 Status: ${statusServico}\n`;
|
msg += ` 🔌 Status: ${statusServico}\n`;
|
||||||
if (pppoeLogin) msg += ` 👤 Login PPPoE: \`${pppoeLogin}\`\n`;
|
if (pppoeLogin) msg += ` 👤 Login PPPoE: \`${pppoeLogin}\`\n`;
|
||||||
if (servico.dhcp_username) msg += ` 👤 DHCP Username: \`${servico.dhcp_username}\`\n`;
|
if (servico.dhcp_username) msg += ` 👤 DHCP Username: \`${servico.dhcp_username}\`\n`;
|
||||||
if (servico.dhcp_agent_circuit_id) msg += ` 🔗 Agent Circuit ID: \`${servico.dhcp_agent_circuit_id}\`\n`;
|
if (circuitId) msg += ` 🔗 Circuit\-ID: \`${circuitId}\`\n`;
|
||||||
if (endereco) msg += ` 📍 Endereço: ${endereco}${cidade ? `, ${cidade}` : ''}\n`;
|
if (endereco) msg += ` 📍 Endereço: ${endereco}${cidade ? `, ${cidade}` : ''}\n`;
|
||||||
msg += '\n';
|
msg += '\n';
|
||||||
|
|
||||||
// Bloco 2: Concentrador Juniper
|
// Bloco 2: Concentrador Juniper
|
||||||
msg += `🌐 *Concentrador Juniper*\n`;
|
msg += `🌐 *Concentrador Juniper*\n`;
|
||||||
if (juniperResult.skipped) {
|
if (juniperResult.skipped && !circuitId) {
|
||||||
msg += ` ⚫ Login PPPoE não informado no cadastro\n`;
|
msg += ` ⚫ Login PPPoE/Circuit\-ID não informado no cadastro\n`;
|
||||||
} else if (!juniperResult.success) {
|
} else if (!juniperResult.success) {
|
||||||
msg += ` ⚠️ Erro ao consultar: ${juniperResult.error || 'falha na consulta'}\n`;
|
msg += ` ⚠️ Erro ao consultar: ${juniperResult.error || 'falha na consulta'}\n`;
|
||||||
} else if (juniperResult.connected) {
|
} else if (juniperResult.connected) {
|
||||||
msg += ` 🟢 *Conectado*\n`;
|
const modoAuth = juniperResult.viaCircuitId ? 'IPoE/Circuit\-ID' : 'PPPoE';
|
||||||
|
msg += ` 🟢 *Conectado* (${modoAuth})\n`;
|
||||||
msg += ` 🌐 IP: \`${juniperResult.ip || 'N/A'}\`\n`;
|
msg += ` 🌐 IP: \`${juniperResult.ip || 'N/A'}\`\n`;
|
||||||
msg += ` 🔌 Interface: \`${juniperResult.interface || 'N/A'}\`\n`;
|
msg += ` 🔌 Interface: \`${juniperResult.interface || 'N/A'}\`\n`;
|
||||||
} else {
|
} else {
|
||||||
msg += ` 🔴 *Desconectado* (sem sessão PPPoE ativa)\n`;
|
msg += ` 🔴 *Desconectado* (sem sessão ativa)\n`;
|
||||||
}
|
}
|
||||||
msg += '\n';
|
msg += '\n';
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user