Complete backup of all GenieACS ACS configuration: - 24 provision scripts (default, inform, bootstrap, firmware upgrades, per-model configs for HT803G, HT502, HT812, Deco, XX230v, XX430v, XX530v) - 25 presets (trigger rules mapping events to provisions) - 6 ext scripts (provisioning.js, wifi.js, voip.js — query MariaDB for per-device WiFi SSID/password and VoIP credentials) - 12 firmware images catalogued (HT502, HG8245, HT803G-W/WS2, HT812, Deco) - 7,550 device fleet snapshot (4,035 online, 53.4% online rate) - GenieACS env config (MongoDB at 10.5.2.116, ext dir, JWT secret) Fleet breakdown: - Device2 (TP-Link Deco): 4,051 units (74% online) — bulk of fleet - HT803G (Raisecom): 2,833 units (33% online) — legacy ONTs - DISCOVERYSERVICE: 156 ghost entries (0% online) - Grandstream phones: GXP2130/2160/1630, HT502/812 Key finding: ext scripts use MariaDB (10.5.14.21) for WiFi/VoIP provisioning data (SSID, passwords, SIP credentials per serial). This data must be migrated to ERPNext or a new provisioning DB for Oktopus. Custom fork: @genieacs/genieacs-targo v1.2.8-targo.3 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
const mariadb = require('mariadb/callback');
|
|
//const MARIADB_HOST = process.env["GENIEACS_MARIADB_HOST"] || "10.100.80.100";
|
|
const MARIADB_HOST = process.env["GENIEACS_MARIADB_HOST"] || "10.5.14.21";
|
|
const MARIADB_USER = process.env["GENIEACS_MARIADB_USER"] || "genieacs";
|
|
const MARIADB_PASS = process.env["GENIEACS_MARIADB_PASS"] || "DnZHC3XezD7A8keEtaUocqPw";
|
|
|
|
const conn = mariadb.createConnection({host: MARIADB_HOST, user: MARIADB_USER, password: MARIADB_PASS});
|
|
|
|
function getWifi(args, callback) {
|
|
const serial = args[0];
|
|
conn.query(`select * from genieacs.wifi where serial = ?`, [serial], (err, res) => {
|
|
if (err) return callback(err);
|
|
callback(null, res.map(r => ({instance: r.instance, ssid: r.ssid, password: r.password, enable: r.enable})));
|
|
});
|
|
}
|
|
|
|
/*function getVoip(args, callback) {
|
|
const serial = args[0];
|
|
conn.query(`select * from genieacs.voip where serial = ?`, [serial], (err, res) => {
|
|
if (err) return callback(err);
|
|
callback(null, res.map(r => ({instance: r.instance, username: r.username, password: r.password, enable: r.enable})));
|
|
});
|
|
}*/
|
|
|
|
exports.getWifi = getWifi;
|
|
//exports.getVoip = getVoip;
|
|
|
|
/*
|
|
getWifi(["74DA88D3FEC4"], (err, res) => {
|
|
console.dir(err);
|
|
console.dir(res);
|
|
});
|
|
*/
|
|
|