genieacs: implantação (TESTING)

Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
rodrigo committed 2026-04-01 08:40:57 -03:00
1 parent 3726e4d449
commit 6e2473719d
8 files changed
+439 -1

No files matched your search

+78
View File
@@ -0,0 +1,78 @@
/**
* Configurações das instâncias GenieACS
* Suporta múltiplas instâncias para expansão futura.
*
* Variáveis de ambiente esperadas (prefix GENIEACS_<CHAVE>_*):
* GENIEACS_GUARAI_URL, GENIEACS_GUARAI_NBI_PORT,
* GENIEACS_GUARAI_USER, GENIEACS_GUARAI_PASS
*/
class GenieACSConfig {
constructor() {
// Instâncias conhecidas – novas podem ser adicionadas aqui
// ou via variáveis de ambiente com o mesmo padrão de chave.
this.instances = {
guarai: {
name: 'Guarai - Clicknet',
baseURL: process.env.GENIEACS_GUARAI_URL || 'http://g.clicknetto.com.br',
nbiPort: parseInt(process.env.GENIEACS_GUARAI_NBI_PORT, 10) || 7557,
user: process.env.GENIEACS_GUARAI_USER || '',
password: process.env.GENIEACS_GUARAI_PASS || ''
}
/*
* Exemplo de nova instância futura:
* pedro_afonso: {
* name: 'Pedro Afonso - Clicknet',
* baseURL: process.env.GENIEACS_PEDRO_AFONSO_URL || '',
* nbiPort: parseInt(process.env.GENIEACS_PEDRO_AFONSO_NBI_PORT, 10) || 7557,
* user: process.env.GENIEACS_PEDRO_AFONSO_USER || '',
* password: process.env.GENIEACS_PEDRO_AFONSO_PASS || ''
* }
*/
};
}
/**
* Retorna a instância padrão (guarai).
*/
getDefaultInstance() {
return this.instances.guarai;
}
/**
* Retorna uma instância pelo nome da chave.
* Se a chave não existir, retorna a instância padrão.
*/
getInstanceByKey(key) {
return this.instances[key] || this.getDefaultInstance();
}
/**
* Seleciona a instância correta com base em um texto de localização livre.
* Útil quando o bot suportar múltiplas instâncias.
*/
getInstanceByLocation(location = '') {
const loc = location.toLowerCase();
if (loc.includes('pedro') || loc.includes('afonso')) {
return this.instances.pedro_afonso || this.getDefaultInstance();
}
return this.getDefaultInstance();
}
/**
* Verifica se ao menos uma instância está configurada (user + password).
*/
isReady() {
return Object.values(this.instances).some(
(inst) => inst.user && inst.password
);
}
/**
* Retorna a URL NBI completa de uma instância.
*/
getNBIUrl(instance) {
return `${instance.baseURL}:${instance.nbiPort}`;
}
}
module.exports = GenieACSConfig;