fiberhome: add prelimunary add ONU support

Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
rodrigo committed 2026-02-10 19:11:25 -03:00
1 parent ee22ecf693
commit dee32518aa
1 file changed
+34 -28
+34 -28
View File
@@ -1081,6 +1081,8 @@ Digite /help para ver todos os comandos disponíveis!
return;
}
console.log(`📝 Criando sessão para usuário ${userId}, serial: ${serialNumber}`);
// Criar sessão para coletar informações
this.userSessions.set(userId, {
action: 'adicionar_onu_fiberhome_step1',
@@ -1088,6 +1090,8 @@ Digite /help para ver todos os comandos disponíveis!
timestamp: Date.now()
});
console.log(`✅ Sessão criada. Sessões ativas:`, this.userSessions.size);
// Perguntar o alias/nome do usuário
await this.bot.sendMessage(chatId,
`➕ **Adicionar ONU Fiberhome**\n\n` +
@@ -1103,6 +1107,10 @@ Digite /help para ver todos os comandos disponíveis!
*/
async handleUserSessionInput(chatId, text, userId, session) {
try {
console.log(`🔄 Processando input de sessão. Action: ${session.action}, Type: ${session.type}, Text: ${text}`);
// Verificar se é sessão baseada em action (Fiberhome ONU)
if (session.action) {
switch (session.action) {
case 'adicionar_onu_fiberhome_step1':
// Recebeu o nome do usuário, agora perguntar pelo tipo da ONU
@@ -1119,13 +1127,13 @@ Digite /help para ver todos os comandos disponíveis!
};
await this.bot.sendMessage(chatId,
`📡 **Porta PON:** ${session.portAlias}\n\n` +
`👤 **Usuário:** ${session.usuario}\n\n` +
'🔌 Selecione o **tipo da ONU**:',
{ reply_markup: keyboard, parse_mode: 'Markdown' }
);
break;
return;
case 'adicionar_onu_fiberhome_step5':
case 'adicionar_onu_fiberhome_step3':
// Recebeu confirmação de VLAN customizada
const vlanInput = text.trim();
@@ -1146,14 +1154,29 @@ Digite /help para ver todos os comandos disponíveis!
// Executar adição da ONU
await this.executarAdicaoOnuFiberhome(chatId, session);
break;
default:
// Sessão desconhecida, limpar
this.userSessions.delete(userId);
await this.bot.sendMessage(chatId, '❌ Sessão expirada. Por favor, comece novamente.');
break;
return;
}
}
// Verificar se é sessão baseada em type (outros fluxos)
if (session.type) {
switch (session.type) {
case 'waiting_custom_command':
await this.executeCustomCommand(chatId, session.connectionId, text);
this.userSessions.delete(userId);
return;
case 'waiting_username_disconnect':
await this.handleDisconnectUser(chatId, text.trim());
this.userSessions.delete(userId);
return;
}
}
// Estado desconhecido
console.log(`❓ Estado de sessão desconhecido: action=${session.action}, type=${session.type}`);
this.userSessions.delete(userId);
await this.bot.sendMessage(chatId, '❓ Estado de sessão desconhecido. Tente novamente.');
} catch (error) {
console.error('❌ Erro ao processar input da sessão:', error);
this.userSessions.delete(userId);
@@ -1548,25 +1571,8 @@ Digite /help para ver todos os comandos disponíveis!
}
/**
* Lida com input de usuário durante sessões específicas
* MÉTODO REMOVIDO - handleUserSessionInput duplicado foi mesclado acima
*/
async handleUserSessionInput(chatId, text, userId, session) {
switch (session.type) {
case 'waiting_custom_command':
await this.executeCustomCommand(chatId, session.connectionId, text);
break;
case 'waiting_username_disconnect':
await this.handleDisconnectUser(chatId, text.trim());
break;
default:
await this.bot.sendMessage(chatId, '❓ Estado de sessão desconhecido. Tente novamente.');
}
// Limpar sessão
this.userSessions.delete(userId);
}
/**
* Executa comando personalizado em uma conexão SSH