Files
open-isp/docs/RUJUKAN_SISTEM.md
T
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

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) dengan foreign_keys = ON.
  • Fungsi Kustom SQLite: NOW_LOCAL() (memformat tanggal-waktu berdasarkan timezone lokal Asia/Jakarta).
  • Tabel Utama:
    1. settings (Dynamic Key-Value Store)
    2. packages (Paket Internet: harga, speed up/down, promo, jam kalong, FUP)
    3. customers (Data Pelanggan: no_pelanggan, nama, phone, pppoe_user, pppoe_secret, status, isolir_date, router_id, odp_id, genieacs_tag)
    4. invoices & payments (Tagihan & Pembayaran)
    5. routers (Daftar Router MikroTik: host, port 8728, username, password, status)
    6. pppoe_users & pppoe_traffic_samples & pppoe_sessions
    7. hotspot_users & hotspot_profiles & hotspot_sessions
    8. voucher_batches & vouchers & public_voucher_orders
    9. olts, odps, onu_mapping, acsdevices (Modul FTTH & TR-069 ACS)
    10. technicians, cashiers, collectors, agents (Akses multi-role)
    11. audit_trail (Log aktivitas pengguna)

C. Services Layer (services/)

  1. 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).
  2. customerService.js:
    • CRUD Pelanggan, komparasi data lokal vs router.
    • Penanganan siklus isolir & pemulihan status otomatis.
  3. billingService.js:
    • Penjadwalan & pembuatan invoice bulanan.
    • Pembayaran invoice (Cash, Transfer, QRIS, Gateway Midtrans/Tripay/Xendit).
    • Eksekusi auto-isolir saat jatuh tempo.
  4. 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.
  5. 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/)

  1. /admin (adminPortal.js): Portal Utama Admin (Dashboard, Pelanggan, Paket, Router, Transaksi, Laporan, OLT/ACS, Settings).
  2. /customer (customerPortal.js): Portal Pelanggan Self-Service (Cek Tagihan, Bayar QRIS, Tiket Komplain).
  3. /agent (agentPortal.js): Portal Agen (Jual Voucher, Topup Pulsa Digiflazz).
  4. /collector (collectorPortal.js): Portal Kolektor Penagih Lapangan.
  5. /tech (techPortal.js): Portal Teknisi (Tiket Gangguan, Pasang Baru, Mapping ODP).
  6. /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)

  1. Prinsip Utama: Seluruh modul MikroTik API eksisting TIDAK BOLEH DIUBAH ATAU DIHAPUS.
  2. 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.
  3. Database Integration: RADIUS Server akan langsung membaca & menulis ke database/billing.db eksisting:
    • 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.