fix(acs): dukung virtual parameters GenieACS Pro
Some checks failed
CI / test (push) Has been cancelled

- pppoeIP/pppIP/WanIP/IPTR069, pppoeUsername2/PPPoEUser, WlanSSID
- lookup PPPoE & tampilan IP/username lebih akurat
- versi 0.6.12
This commit is contained in:
oxpoe
2026-11-06 11:11:19 +07:00
parent 2658efd89d
commit 19096b36e3
6 changed files with 23 additions and 3 deletions

View File

@@ -2,6 +2,12 @@
Format mengikuti [Keep a Changelog](https://keepachangelog.com/) dan [Semantic Versioning](https://semver.org/). Format mengikuti [Keep a Changelog](https://keepachangelog.com/) dan [Semantic Versioning](https://semver.org/).
## [0.6.12] — 2026-11-06 — "acs-virtual"
### Diperbaiki
- Ekstraksi **GenieACS Pro** memakai virtual parameters: `pppoeIP`, `pppIP`, `WanIP`, `IPTR069`, `pppoeUsername2`, `PPPoEUser`, `WlanSSID`.
- Lookup perangkat via PPPoE mencakup variabel virtual tersebut, sehingga IP/username lebih cepat dan akurat tampil di tabel ACS.
## [0.6.11] — 2026-11-06 — "acs-wifi-modal" ## [0.6.11] — 2026-11-06 — "acs-wifi-modal"
### Ditambahkan ### Ditambahkan

View File

@@ -11,7 +11,7 @@
<p align="center"> <p align="center">
<img src="https://img.shields.io/badge/lisensi-ISC-ADFF2F" alt="Lisensi: ISC"> <img src="https://img.shields.io/badge/lisensi-ISC-ADFF2F" alt="Lisensi: ISC">
<img src="https://img.shields.io/badge/versi-0.6.11_acs--modal-ADFF2F" alt="Versi 0.6.11 (acs-wifi-modal)"> <img src="https://img.shields.io/badge/versi-0.6.12_acs--virtual-ADFF2F" alt="Versi 0.6.12 (acs-virtual)">
<img src="https://img.shields.io/badge/Node.js-%E2%89%A520-339933" alt="Node.js >= 20"> <img src="https://img.shields.io/badge/Node.js-%E2%89%A520-339933" alt="Node.js >= 20">
<img src="https://img.shields.io/badge/docker-ready-2496ED?logo=docker&logoColor=white" alt="Docker"> <img src="https://img.shields.io/badge/docker-ready-2496ED?logo=docker&logoColor=white" alt="Docker">
<a href="https://demo-openisp.oxpoe.xyz"><img src="https://img.shields.io/badge/demo-live-ADFF2F?logo=googlechrome&logoColor=black" alt="Demo"></a> <a href="https://demo-openisp.oxpoe.xyz"><img src="https://img.shields.io/badge/demo-live-ADFF2F?logo=googlechrome&logoColor=black" alt="Demo"></a>

View File

@@ -1,6 +1,6 @@
{ {
"name": "open-isp", "name": "open-isp",
"version": "0.6.11", "version": "0.6.12",
"description": "OPEN-ISP \u2014 sistem billing & manajemen ISP open-source (PWA pelanggan, multi-OLT, RADIUS, WhatsApp, QRIS)", "description": "OPEN-ISP \u2014 sistem billing & manajemen ISP open-source (PWA pelanggan, multi-OLT, RADIUS, WhatsApp, QRIS)",
"main": "app-customer.js", "main": "app-customer.js",
"scripts": { "scripts": {

View File

@@ -492,6 +492,11 @@ function getDeviceParameterValue(device, keys, filterFn) {
} }
function extractPppoeIp(d) { function extractPppoeIp(d) {
// Virtual parameters GenieACS (lebih cepat & akurat bila tersedia)
for (const k of ['VirtualParameters.pppoeIP', 'VirtualParameters.pppIP', 'VirtualParameters.WanIP', 'VirtualParameters.IPTR069', 'VirtualParameters.pppoe_ip']) {
const val = getNestedValue(d, k);
if (val && typeof val === 'string' && val.trim() && val !== '-' && val !== '0.0.0.0' && val !== 'N/A') return val.trim();
}
const ip = getDeviceParameterValue(d, PPPOE_IP_KEYS, (matchedPath, value, device) => { const ip = getDeviceParameterValue(d, PPPOE_IP_KEYS, (matchedPath, value, device) => {
if (!value || value === '0.0.0.0' || value === '-') return false; if (!value || value === '0.0.0.0' || value === '-') return false;
@@ -511,6 +516,10 @@ function extractPppoeIp(d) {
} }
function extractPppoeUser(d) { function extractPppoeUser(d) {
for (const k of ['VirtualParameters.pppoeUsername2', 'VirtualParameters.pppoeUsername', 'VirtualParameters.pppUsername', 'VirtualParameters.PPPoEUser', 'VirtualParameters.pppoe_username', 'VirtualParameters.username']) {
const val = getNestedValue(d, k);
if (val && typeof val === 'string' && val.trim() && val !== '-' && val !== 'N/A') return val.trim();
}
const user = getDeviceParameterValue(d, PPPOE_USER_KEYS, (matchedPath, value, device) => { const user = getDeviceParameterValue(d, PPPOE_USER_KEYS, (matchedPath, value, device) => {
if (!value || value === '-') return false; if (!value || value === '-') return false;
// Abaikan nilai generik yang bukan user PPPoE pelanggan // Abaikan nilai generik yang bukan user PPPoE pelanggan

View File

@@ -160,6 +160,7 @@ const parameterPaths = {
'Device.DeviceInfo.SoftwareVersion' 'Device.DeviceInfo.SoftwareVersion'
], ],
ssid: [ ssid: [
'VirtualParameters.WlanSSID',
'InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.SSID', 'InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.SSID',
'Device.WiFi.SSID.1.SSID', 'Device.WiFi.SSID.1.SSID',
'Device.WiFi.SSID.2.SSID' 'Device.WiFi.SSID.2.SSID'
@@ -194,6 +195,8 @@ const parameterPaths = {
pppoeIP: [ pppoeIP: [
'VirtualParameters.pppoeIP', 'VirtualParameters.pppoeIP',
'VirtualParameters.pppIP', 'VirtualParameters.pppIP',
'VirtualParameters.WanIP',
'VirtualParameters.IPTR069',
'InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.ExternalIPAddress', 'InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.ExternalIPAddress',
'InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress', 'InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress',
'InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.ExternalIPAddress', 'InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.ExternalIPAddress',
@@ -204,8 +207,10 @@ const parameterPaths = {
'Device.IP.Interface.1.IPv4Address.1.IPAddress' 'Device.IP.Interface.1.IPv4Address.1.IPAddress'
], ],
pppUsername: [ pppUsername: [
'VirtualParameters.pppoeUsername2',
'VirtualParameters.pppoeUsername', 'VirtualParameters.pppoeUsername',
'VirtualParameters.pppUsername', 'VirtualParameters.pppUsername',
'VirtualParameters.PPPoEUser',
'InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Username', 'InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Username',
'InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.2.Username', 'InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.2.Username',
'InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.3.Username', 'InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.3.Username',

View File

@@ -1 +1 @@
0.6.11 0.6.12