feat(gowa): pilihan mode Cloud HTTPS / Local HTTP + polyfill di pengaturan
All checks were successful
CI / test (push) Successful in 1m53s
All checks were successful
CI / test (push) Successful in 1m53s
- setting gowa_mode, hint dinamis, link wiki - wiki: halaman GOWA (mode, polyfill, troubleshooting) - versi 0.5.10
This commit is contained in:
@@ -2,6 +2,12 @@
|
||||
|
||||
Format mengikuti [Keep a Changelog](https://keepachangelog.com/) dan [Semantic Versioning](https://semver.org/).
|
||||
|
||||
## [0.5.10] — 2026-11-05 — "gowa-mode"
|
||||
|
||||
### Ditambahkan
|
||||
- Pilihan **Mode Akses GOWA** di Admin → WhatsApp: **Cloud (HTTPS)** atau **Local (HTTP)**. Mode Local menampilkan peringatan wajib polyfill `crypto.randomUUID` beserta tautan panduan wiki.
|
||||
- Halaman wiki **GOWA**: setup Compose, perbedaan Cloud/Local, perintah polyfill, setting OPEN-ISP, dan troubleshooting QR/webhook.
|
||||
|
||||
## [0.5.9] — 2026-11-05 — "gowa-qr-image"
|
||||
|
||||
### Diperbaiki
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/badge/lisensi-ISC-ADFF2F" alt="Lisensi: ISC">
|
||||
<img src="https://img.shields.io/badge/versi-0.5.9_gowa--qr-image-ADFF2F" alt="Versi 0.5.9 (gowa-qr-image)">
|
||||
<img src="https://img.shields.io/badge/versi-0.5.10_gowa--mode-ADFF2F" alt="Versi 0.5.10 (gowa-mode)">
|
||||
<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">
|
||||
<a href="https://demo-openisp.oxpoe.xyz"><img src="https://img.shields.io/badge/demo-live-ADFF2F?logo=googlechrome&logoColor=black" alt="Demo"></a>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "open-isp",
|
||||
"version": "0.5.9",
|
||||
"version": "0.5.10",
|
||||
"description": "OPEN-ISP \u2014 sistem billing & manajemen ISP open-source (PWA pelanggan, multi-OLT, RADIUS, WhatsApp, QRIS)",
|
||||
"main": "app-customer.js",
|
||||
"scripts": {
|
||||
|
||||
@@ -6691,8 +6691,10 @@ router.get('/whatsapp', requireAdminSession, requireSidebarMenuAccess('whatsapp'
|
||||
fonnte_api_url: getSetting('fonnte_api_url', 'https://api.fonnte.com/send'),
|
||||
fonnte_country_code: getSetting('fonnte_country_code', '62')
|
||||
};
|
||||
const gowaBaseUrl = getSetting('gowa_base_url', 'http://127.0.0.1:3000');
|
||||
const gowaSettings = {
|
||||
gowa_base_url: getSetting('gowa_base_url', 'http://127.0.0.1:3000'),
|
||||
gowa_mode: getSetting('gowa_mode', /^https:/i.test(String(gowaBaseUrl)) ? 'cloud' : 'local'),
|
||||
gowa_base_url: gowaBaseUrl,
|
||||
gowa_username: getSetting('gowa_username', ''),
|
||||
gowa_password: getSetting('gowa_password', ''),
|
||||
gowa_device_id: getSetting('gowa_device_id', ''),
|
||||
@@ -6729,6 +6731,7 @@ router.post('/whatsapp/gateway-settings', requireAdminSession, express.urlencode
|
||||
fonnte_token,
|
||||
fonnte_api_url,
|
||||
fonnte_country_code,
|
||||
gowa_mode,
|
||||
gowa_base_url,
|
||||
gowa_username,
|
||||
gowa_password,
|
||||
@@ -6746,6 +6749,7 @@ router.post('/whatsapp/gateway-settings', requireAdminSession, express.urlencode
|
||||
fonnte_token: String(fonnte_token || '').trim(),
|
||||
fonnte_api_url: String(fonnte_api_url || 'https://api.fonnte.com/send').trim(),
|
||||
fonnte_country_code: String(fonnte_country_code || '62').trim(),
|
||||
gowa_mode: String(gowa_mode || 'cloud').trim() === 'local' ? 'local' : 'cloud',
|
||||
gowa_base_url: String(gowa_base_url || 'http://127.0.0.1:3000').trim(),
|
||||
gowa_username: String(gowa_username || '').trim(),
|
||||
gowa_password: String(gowa_password || '').trim(),
|
||||
|
||||
@@ -1 +1 @@
|
||||
0.5.9
|
||||
0.5.10
|
||||
@@ -154,6 +154,25 @@
|
||||
<!-- 3. GOWA (go-whatsapp-web-multidevice) FIELDS -->
|
||||
<div id="gowa_fields_container" style="<%= waGatewayType === 'gowa' ? '' : 'display:none;' %> background: rgba(173,255,47,0.05); padding: 16px; border-radius: 10px; border: 1px solid var(--primary-glow); margin-bottom: 16px;">
|
||||
<div class="fw6 mb12" style="color: var(--primary); font-size: 13px;"><i class="bi bi-lightning-charge-fill"></i> Konfigurasi GOWA (go-whatsapp-web-multidevice) — Ringan / Self-Hosted</div>
|
||||
<div class="form-row mb12">
|
||||
<div class="fg" style="flex:1;">
|
||||
<label class="fl">Mode Akses GOWA</label>
|
||||
<select class="fs" name="gowa_mode" id="gowa_mode" onchange="toggleGowaMode()">
|
||||
<option value="cloud" <%= gowaSettings.gowa_mode === 'local' ? '' : 'selected' %>>Cloud (HTTPS) — disarankan</option>
|
||||
<option value="local" <%= gowaSettings.gowa_mode === 'local' ? 'selected' : '' %>>Local (HTTP) — wajib polyfill</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="fg" style="flex:2;">
|
||||
<label class="fl">Keterangan</label>
|
||||
<div id="gowa_mode_hint" style="font-size:11.5px;color:var(--muted);line-height:1.5">
|
||||
<% if (gowaSettings.gowa_mode === 'local') { %>
|
||||
Base URL <code>http://IP:3000</code>. UI GOWA wajib diberi polyfill <code>crypto.randomUUID</code> (atau akses lewat SSH tunnel). Panduan: <a href="https://gitea.oxpoe.xyz/oxpoe/open-isp/wiki/Konfigurasi" target="_blank" rel="noopener" style="color:var(--primary)">Wiki → Konfigurasi → GOWA Local</a>.
|
||||
<% } else { %>
|
||||
Base URL <code>https://domain-gowa</code> dengan TLS. UI GOWA langsung normal, tanpa polyfill.
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row mb12">
|
||||
<div class="fg" style="flex:2;">
|
||||
<label class="fl">Base URL GOWA *</label>
|
||||
@@ -218,6 +237,19 @@
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function toggleGowaMode() {
|
||||
var mode = (document.getElementById('gowa_mode') || {}).value || 'cloud';
|
||||
var hint = document.getElementById('gowa_mode_hint');
|
||||
var base = document.querySelector('input[name="gowa_base_url"]');
|
||||
if (mode === 'local') {
|
||||
if (hint) hint.innerHTML = 'Base URL <code>http://IP:3000</code>. UI GOWA wajib diberi polyfill <code>crypto.randomUUID</code> (atau akses lewat SSH tunnel). Panduan: <a href="https://gitea.oxpoe.xyz/oxpoe/open-isp/wiki/Konfigurasi" target="_blank" rel="noopener" style="color:var(--primary)">Wiki → Konfigurasi → GOWA Local</a>.';
|
||||
if (base) base.placeholder = 'http://IP:3000';
|
||||
} else {
|
||||
if (hint) hint.innerHTML = 'Base URL <code>https://domain-gowa</code> dengan TLS. UI GOWA langsung normal, tanpa polyfill.';
|
||||
if (base) base.placeholder = 'https://gowa.domainmu.com';
|
||||
}
|
||||
}
|
||||
|
||||
function toggleGatewayFields() {
|
||||
const val = document.getElementById('wa_gateway_type').value;
|
||||
document.getElementById('fonnte_fields_container').style.display = val === 'fonnte' ? 'block' : 'none';
|
||||
|
||||
Reference in New Issue
Block a user