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
4.8 KiB
4.8 KiB
RUJUKAN ARSITEKTUR & FITUR SISTEM BILLING RTRW-NET
Dokumen ini disimpan sebagai rujukan utama arsitektur, fitur backend, frontend, dan skema database sebelum dilakukan penambahan fitur RADIUS Server.
1. DOKUMENTASI MODUL & KOMPONEN EKSISTING
A. Core Engine & Entry Point
app-customer.js: Main entry point Express.js v4.- Memuat middleware security: CORS, Referer/Origin CSRF Protection, Express Session, Body Parser limit 1MB.
- Pengatur i18n multi-bahasa (
locales/). - Menjalankan background service: Auto-backup (
scheduleAutoBackup), Cron Billing (cronService.js), WhatsApp Bot, Telegram Bot. - Mengunci DNS ke IPv4 (
dns.setDefaultResultOrder('ipv4first')) untuk mencegah timeout IPv6 di server produksi.
B. Database & Stored Layer (config/database.js)
- Engine: SQLite 3 menggunakan driver
better-sqlite3(Native C++ extension, high performance). - Mode:
WAL(Write-Ahead Logging) denganforeign_keys = ON. - Fungsi Kustom SQLite:
NOW_LOCAL()(memformat tanggal-waktu berdasarkan timezone lokalAsia/Jakarta). - Tabel Utama:
settings(Dynamic Key-Value Store)packages(Paket Internet: harga, speed up/down, promo, jam kalong, FUP)customers(Data Pelanggan: no_pelanggan, nama, phone, pppoe_user, pppoe_secret, status, isolir_date, router_id, odp_id, genieacs_tag)invoices&payments(Tagihan & Pembayaran)routers(Daftar Router MikroTik: host, port 8728, username, password, status)pppoe_users&pppoe_traffic_samples&pppoe_sessionshotspot_users&hotspot_profiles&hotspot_sessionsvoucher_batches&vouchers&public_voucher_ordersolts,odps,onu_mapping,acsdevices(Modul FTTH & TR-069 ACS)technicians,cashiers,collectors,agents(Akses multi-role)audit_trail(Log aktivitas pengguna)
C. Services Layer (services/)
mikrotikService.js:- Menghubungkan aplikasi ke RouterOS via API port 8728/8729 menggunakan
routeros-client. - Mengelola PPPoE Secret (Add, Update, Delete, Toggle Enable/Disable).
- Mengelola Hotspot User & Active Sessions.
- Mengambil trafik interface & active connections secara realtime.
- Mengatur isolir pelanggan via MikroTik API (mengubah profile / IP pool).
- Menghubungkan aplikasi ke RouterOS via API port 8728/8729 menggunakan
customerService.js:- CRUD Pelanggan, komparasi data lokal vs router.
- Penanganan siklus isolir & pemulihan status otomatis.
billingService.js:- Penjadwalan & pembuatan invoice bulanan.
- Pembayaran invoice (Cash, Transfer, QRIS, Gateway Midtrans/Tripay/Xendit).
- Eksekusi auto-isolir saat jatuh tempo.
cronService.js:- Menjalankan penagihan otomatis jam 00:05.
- Cek auto-isolir harian jam 01:00.
- Sampling statistik trafik jam 10 menit sekali.
- Notifikasi reminder tagihan via WA / Telegram.
oltService.js&onuProvisionService.js&acsServerService.js:- Integrasi OLT ZTE/Huawei/FiberHome via SNMP & Telnet.
- TR-069 Auto-Provisioning CPE via GenieACS.
D. Route & Portal Layer (routes/)
/admin(adminPortal.js): Portal Utama Admin (Dashboard, Pelanggan, Paket, Router, Transaksi, Laporan, OLT/ACS, Settings)./customer(customerPortal.js): Portal Pelanggan Self-Service (Cek Tagihan, Bayar QRIS, Tiket Komplain)./agent(agentPortal.js): Portal Agen (Jual Voucher, Topup Pulsa Digiflazz)./collector(collectorPortal.js): Portal Kolektor Penagih Lapangan./tech(techPortal.js): Portal Teknisi (Tiket Gangguan, Pasang Baru, Mapping ODP)./finance(financePortal.js): Portal Keuangan (Pemasukan & Pengeluaran Kas).
E. Frontend & Views (views/)
- Menggunakan EJS (Embedded JavaScript) dengan template responsive.
- Menggunakan CSS Vanilla & Custom Theme (Dark/Light Mode), Bootstrap Icons / FontAwesome.
- AJAX Fetch API untuk interaksi data tanpa reload halaman.
2. ATURAN INTEGRASI FITUR RADIUS (NON-BREAKING GUARANTEE)
- Prinsip Utama: Seluruh modul MikroTik API eksisting TIDAK BOLEH DIUBAH ATAU DIHAPUS.
- Fleksibilitas: Sistem akan mendukung 2 mode otentikasi router:
- Mode 1 (Default Eksisting): MikroTik API (
routeros-client). - Mode 2 (Fitur Baru): RADIUS Server (UDP Port 1812/1813).
- Mode 3 (Hybrid): MikroTik API + RADIUS Server berjalan bersamaan.
- Mode 1 (Default Eksisting): MikroTik API (
- Database Integration: RADIUS Server akan langsung membaca & menulis ke
database/billing.dbeksisting:- Mengotentikasi kredensial pengguna dari tabel
customers/pppoe_users/hotspot_users. - Mengirimkan atribut RADIUS standar (
Framed-IP-Address,Mikrotik-Rate-Limit,Session-Timeout). - Menerima paket RADIUS Accounting (Start/Interim/Stop) dan mencatat penggunaan kuota/bandwidth ke tabel
pppoe_traffic_samples&radius_accounting_logs.
- Mengotentikasi kredensial pengguna dari tabel