Commit Graph

43 Commits

Author SHA1 Message Date
oxpoe
094c47c15d feat(isolir): generator script cloud sederhana
All checks were successful
CI / test (push) Successful in 1m38s
- tab Cloud di modal Script Isolir
- resolve semua A record, warn Cloudflare/CDN
- hook PPPoE, DNS redirect, NAT HTTP, filter allow/reject/drop
- API /admin/api/isolir-cloud-script
- versi 0.6.7
2026-11-06 05:49:15 +07:00
oxpoe
0f7affc498 feat(qr-custom): filter tanggal + pilih baris & hapus terpilih
All checks were successful
CI / test (push) Successful in 1m37s
- filter from/to pada list
- checkbox pilih semua, batch delete dengan password admin
- reset histori tetap
- versi 0.6.6
2026-11-06 05:11:50 +07:00
oxpoe
a2888810ad feat(qr-custom): hapus satu & reset histori dengan password admin
All checks were successful
CI / test (push) Successful in 1m47s
- endpoint delete/reset, verifikasi admin_password
- tombol hapus di detail + reset di header histori
- versi 0.6.5
2026-11-06 05:08:30 +07:00
oxpoe
8fcb50e16a fix(qr-custom): center QR, timer berhenti, refund saat lunas, regenerate expired
All checks were successful
CI / test (push) Successful in 1m44s
- link publik: QR center, nominal/QR/timer disembunyikan saat expired
- reject/refund untuk paid
- regenerate QR expired (kode unik baru) di detail & tabel
- versi 0.6.4
2026-11-06 05:05:58 +07:00
oxpoe
b72dbf3e55 fix(webhook): auto secret token + URL dari public base/host
All checks were successful
CI / test (push) Successful in 2m5s
- ensureWebhookSecret saat boot dan buka Pengaturan
- URL webhook memakai public_base_url fallback host
- tolak default billing-rtrw-secret-key
- versi 0.6.3
2026-11-06 04:55:12 +07:00
oxpoe
fd46731a53 fix(qr-custom): ikon menu + disable sampai QRIS statis siap
All checks were successful
CI / test (push) Successful in 1m43s
- icon bi-qr-code
- menu disembunyikan bila QRIS belum aktif/payload kosong
- form & POST ditolak, tidak membuat data tanpa QR
- versi 0.6.1
2026-11-06 04:38:12 +07:00
oxpoe
bf25260d4c feat: QR-Custom Payment + mode webhook secret GOWA
All checks were successful
CI / test (push) Successful in 1m35s
- tabel custom_qr_payments, service, halaman admin + publik share
- kode unik 20 menit, warning bila bayar setelah batas, manual pay/accept/reject
- webhook payment-notif mencocokkan nominal custom
- menu sidebar QR-Custom Payment
- GOWA secret: auto generate (locked) / manual (simpan lalu locked, ubah)
- versi 0.6.0
2026-11-06 04:32:06 +07:00
oxpoe
848dd49cce feat(update): floating notif + banner saat restart diperlukan
All checks were successful
CI / test (push) Successful in 1m32s
- marker .restart-required ditulis setelah update sukses
- API /admin/api/restart-required + polling 30s di sidebar
- banner di halaman Update sampai restart
- marker dihapus saat boot proses baru
- versi 0.5.19
2026-11-06 04:01:16 +07:00
oxpoe
ad62aab07d feat(gowa): device id kosong ikut device terhubung + auto webhook secret
All checks were successful
CI / test (push) Successful in 1m45s
- hapus auto-pin gowa_device_id pada QR/status
- hint device id + secret otomatis
- ensureGowaWebhookSecret saat boot & simpan pengaturan
- versi 0.5.18
2026-11-06 03:50:06 +07:00
oxpoe
fadbf0084b fix(gowa): status device array, auto-save device id, QR hide saat terhubung
All checks were successful
CI / test (push) Successful in 1m53s
- status route normalisasi results array + auto isi gowa_device_id
- UI poll status 3s, sembunyikan QR saat open
- resolveDeviceId utamakan device connected
- versi 0.5.17
2026-11-06 03:38:00 +07:00
oxpoe
280a8ac9a6 fix(update): pertahankan .env.gowa + hapus checkout pathspec
All checks were successful
CI / test (push) Successful in 3m35s
- .env.gowa masuk preserved entries dan clean exclude
- settings.json/database tidak di-checkout (tidak dilacak git)
- .env.gowa di .gitignore
- versi 0.5.15
2026-11-05 17:53:14 +07:00
oxpoe
1e3067989a feat(settings): tombol Test API di AI (tanpa simpan)
All checks were successful
CI / test (push) Successful in 2m26s
- endpoint POST /admin/settings/test-ai (provider, key, base URL, model)
- UI status valid/tidak + latensi
- versi 0.5.14
2026-11-05 17:49:54 +07:00
oxpoe
7db4cb81a3 fix(wa): notifikasi LUNAS lewat gateway aktif + approve APK
All checks were successful
CI / test (push) Successful in 2m26s
- isConnected GOWA: tangani /devices array (state connected)
- app-customer payment-notif: pakai waNotify, bukan Baileys
- customerAPI approve kolektor + payment-unmatched: kirim WA lunas
- versi 0.5.13
2026-11-05 17:32:31 +07:00
oxpoe
310e91ed97 fix(gowa): Test Koneksi pakai nilai form tanpa simpan
All checks were successful
CI / test (push) Successful in 2m42s
- testReachability menerima override baseUrl/username/password
- UI mengirim nilai form
- versi 0.5.12
2026-11-05 17:08:08 +07:00
oxpoe
f8e6e86619 feat(gowa): tombol Test Koneksi (health, auth, jumlah device)
All checks were successful
CI / test (push) Successful in 2m44s
- service testReachability: /health + /devices
- route POST /admin/whatsapp/test-gowa-connection
- UI status warna hijau/kuning/merah
- versi 0.5.11
2026-11-05 17:01:13 +07:00
oxpoe
b49822b553 feat(gowa): pilihan mode Cloud HTTPS / Local HTTP + polyfill di pengaturan
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
2026-11-05 16:02:44 +07:00
oxpoe
b98ad7568d fix(gowa): QR sebagai data URI + rewrite qr_link ke base URL publik
All checks were successful
CI / test (push) Successful in 2m41s
- gambar tidak lagi bergantung request /qr.png kedua
- qr_link host internal diganti origin base URL
- log saat gambar gagal diambil; onerror di UI
- versi 0.5.9
2026-11-05 15:55:29 +07:00
oxpoe
7a5b488882 fix(gowa): tampilkan status HTTP saat QR gagal (401/kredensial)
All checks were successful
CI / test (push) Successful in 3m32s
2026-11-05 15:46:45 +07:00
oxpoe
34d4563a5f fix(qris): kode unik lintas order + pelunasan multi-tagihan; fix kirim tagihan manual
Some checks failed
CI / test (push) Has been cancelled
- webhook QRIS: nominal total tagihan + kode -> lunaskan semua tagihan pelanggan
- isQrisAmountTaken() cek invoice+voucher+donasi (cegah ambigu)
- billingSendService: require('qrcode'), nominal unik + {{qris_kode}}, fallback link
- pilih tagihan terlama; pesan pengingat manual yang jujur saat di-skip
- versi 0.5.5
2026-11-05 12:48:59 +07:00
oxpoe
bc7f2bdb09 feat(wa): notifikasi pelanggan tiket + broadcast status layanan
All checks were successful
CI / test (push) Successful in 2m3s
- WA konfirmasi ke pelanggan saat tiket dibuat (web & APK)
- checkbox + target (semua/area/router) di Status Layanan
- WA gangguan/perbaikan saat mode berubah, WA layanan pulih saat NORMAL
- broadcast latar belakang dengan jeda acak, dedupe nomor, log [NoticeWA]
- versi 0.5.4
2026-11-05 09:28:48 +07:00
oxpoe
8231058f79 fix(update): hapus referensi info.* di handler POST (info is not defined)
All checks were successful
CI / test (push) Successful in 1m44s
2026-11-05 09:11:36 +07:00
oxpoe
fe7682fa45 fix(update): timeout git fetch + tampilkan error di log update
All checks were successful
CI / test (push) Successful in 2m30s
2026-11-05 09:00:45 +07:00
oxpoe
205db53d7e fix(ui): link repo ke gitea.oxpoe.xyz, buka semua menu, hapus kontak aktivasi
All checks were successful
CI / test (push) Successful in 1m55s
- ganti sisa URL gitea.oxpoe.qzz.io -> gitea.oxpoe.xyz (sidebar, donate, package.json, projectUrl)
- default menu sidebar semuanya Tampil (tidak ada lagi menu terkunci)
- hapus nomor kontak aktivasi palsu 081947215703 dari UI & pesan route
- form pengaturan sidebar tidak lagi meminta password aktivasi
2026-11-05 06:29:50 +07:00
oxpoe
f6ab9bbfa7 feat(update): sumber update bisa diatur (update_base_url)
All checks were successful
CI / test (push) Successful in 4m5s
- setting baru update_base_url (default https://gitea.oxpoe.xyz), menggantikan hardcode gitea.oxpoe.qzz.io
- field di Pengaturan: Sumber Update + Repo Update (owner/nama)
- default project_url ikut diperbarui
2026-11-05 04:05:20 +07:00
oxpoe
adc3437bd5 fix(login): link status ikut setting uptime_url + batas sesi per akun
- login.ejs: pakai settings.uptime_url (fallback status_url lama), sehingga tab Status tidak lagi hardcode status.skyfiber.qzz.io
- sessionLimitService: rotasi session id saat login (anti fixation), catat sesi di tabel login_sessions, batas admin/kasir/teknisi/kolektor 2 per akun dan pelanggan 3 per akun; sesi tertua diputus dari store saat melebihi batas
- hook login admin/kasir/teknisi/kolektor/pelanggan (direct & OTP) dan logout
2026-11-05 01:58:29 +07:00
oxpoe
4003149046 feat(ai): provider OpenAI-compatible + DeepSeek, AI Telegram, self-healing dengan toggle (port upstream)
- telegramAiService/adminAiTools: dukung openai, deepseek, groq, openrouter, custom (base URL + key + model)
- selfHealingService: billing vs isolir, konsistensi secret PPPoE, sesi RADIUS stale, IP ACS kosong
- mikrotikService: getActivePppoeUsers, isolateCustomerPppoe, unisolateCustomerPppoe (upstream memanggil fungsi yang tidak ada)
- cron 30 menit hanya jalan bila ai_self_healing_enabled=true (default off) + scan brute force MikroTik tiap 2 menit
- Pengaturan: kartu AI & Self-Healing (provider, key/model, toggle, tombol Diagnosa/Perbaiki)
- bot Telegram: pesan non-command dari admin dijawab AI
2026-11-05 01:48:50 +07:00
oxpoe
1c40e6a0e8 feat(keamanan): security watchdog brute-force + soundbox TTS (port upstream)
- securityWatchdogService: deteksi brute force login admin/kasir/teknisi/kolektor & log MikroTik, blokir IP 15 menit, alert suara + WA/Telegram
- soundboxService + voiceTtsService (TTS Google Translate, cache)
- hook login admin/teknisi/kolektor, hook soundbox saat invoice lunas
- route /admin/api/soundbox/poll dan /test
2026-11-05 01:27:33 +07:00
oxpoe
95fa69e968 feat(inventaris): stok keluar/retur/opname + detail unit, dan edit slip payroll (port upstream)
- inventoryService: port penuh dari upstream (issueStock FIFO/SN, returnStock, adjustStock opname, serial tersedia, statistik, detail barang) + kompatibilitas fork
- schema: kolom price/supplier (stock) dan remaining_stock/recipient/reference_no (log) via migrasi aman
- admin: route stok keluar/retur/opname + API detail & serial; modal + tombol aksi di halaman inventaris; viewStock yang tadinya undefined
- payroll: updateSlip() + route /payroll/slip/:id/update
2026-11-05 01:26:18 +07:00
oxpoe
d24cabf818 feat(akses): batasi teknisi & kolektor sesuai wilayah tugas (port dari upstream)
- techService: getTechAreaWhere + canTechAccessCustomer, filter pool/stats
- techPortal: filter peta, ODP, daftar perangkat; guard perangkat per wilayah; area pelanggan baru dipaksa sesuai wilayah
- customerService: getCollectorCustomerWhere + canCollectorAccessCustomer (multi-area)
- collectorPortal: daftar tagihan pakai helper; tolak bayar/cetak/kirim PDF di luar wilayah
- customerAPI: dashboard & pay-bill kolektor dibatasi wilayah
- tests/unit/area-access.test.js: self-check logika area
2026-11-05 01:16:26 +07:00
oxpoe
11ccc31933 fix(update): fetch rilis dari Gitea, bukan github.com 2026-10-14 21:11:52 +07:00
oxpoe
19558b9b94 rebrand: ganti sisa teks 'GitHub' -> 'Gitea' (UI, komentar, dokumen) 2026-10-14 21:09:02 +07:00
oxpoe
d02c9baf7b feat(update): mode container -> menu Update tampil dgn pesan rebuild image (bukan disembunyikan) 2026-10-13 04:00:25 +07:00
oxpoe
cb60ceec10 chore: default wa_gateway_type=gowa (baileys dilepas) + README 2026-10-13 03:47:32 +07:00
oxpoe
6f97430e41 feat: dukung SETTINGS_PATH (settings.json di direktori mount/persisten) 2026-10-13 03:29:36 +07:00
oxpoe
f27c02309e feat: badge kelengkapan data pelanggan; fix IP search GenieACS; mount speedtest backend; isolir-redirect embedded; sembunyikan menu Update tanpa .git 2026-10-13 03:01:16 +07:00
oxpoe
2aadb66f77 fix(backup): perbaiki scope restartNeeded (di luar try) agar restart setelah restore DB benar-benar jalan 2026-10-12 23:20:13 +07:00
oxpoe
a77975ca44 fix(backup): restart otomatis setelah restore database (koneksi lama masih pegang file DB lama) 2026-10-12 23:13:35 +07:00
oxpoe
63994df1e4 feat: toggle fitur voucher (setting voucher_enabled) + gate route & sembunyikan link 2026-10-12 22:20:48 +07:00
oxpoe
e838645531 feat: notifikasi admin/monitoring via Telegram (WA fallback); alert staff dialihkan ke Telegram 2026-10-09 09:23:06 +07:00
oxpoe
b65eb3195c fix(wa): pakai getTechById (getTechnicianById tidak ada) - notifikasi tiket oleh admin kini terkirim 2026-10-09 09:07:20 +07:00
oxpoe
02af750226 feat(wa): tiket cukup Chat Pelanggan + Share Lokasi (hapus detail/pool) 2026-10-09 09:03:15 +07:00
oxpoe
086565d195 feat(wa): tambah tautan pelanggan (chat WA, Maps, detail, pool tiket) di notifikasi tiket 2026-10-09 09:01:54 +07:00
oxpoe
eaf05f2811 OPEN-ISP v0.5 (pickle-lime) — rilis open-source perdana
Aplikasi billing & manajemen ISP (fiber optic) — PWA pelanggan, portal teknisi & kolektor,
admin panel lengkap, multi-vendor OLT, RADIUS, WhatsApp/Telegram, pembayaran QRIS.

Kredit & lisensi (ISC):
- Base kode & repo: alijayanet/billing-rtrw oleh Alijaya Net — terima kasih banyak
  atas base kode dan repo yang bermanfaat.
- Add-on: GoWA, LibreSpeed/OpenSpeedTest, Uptime Kuma, notification-forwarder.
- Dikembangkan menjadi OPEN-ISP oleh oxpoe — https://github.com/oxpoe/open-isp
2026-10-09 05:51:21 +07:00