Files
rodrigonet/src/genieacs/config.js
T
rodrigo 6e2473719d genieacs: implantação (TESTING)
Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo.sousa.577@gmail.com>
2026-04-01 08:40:57 -03:00

79 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 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;