diff --git a/locales/en.json b/locales/en.json
index e06a118..eecf359 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -1578,6 +1578,81 @@
"select_vendor": "Select Vendor",
"hint_rescan": "Click \"Rescan\" to find unconfigured ONUs",
"hint_reload": "Click \"Reload / Scan\" to monitor configured ONU status via SNMP"
+ },
+ "rds": {
+ "card_status": "RADIUS Server Status",
+ "card_online": "RADIUS Users Online",
+ "card_online_sub": "Currently Connected Active Sessions",
+ "card_nas_sub": "Registered NAS Routers on Server",
+ "card_traffic": "RADIUS Traffic Today",
+ "card_log_today": "Accounting Logs Today",
+ "tab_sessions": "Active RADIUS Sessions",
+ "tab_settings": "RADIUS Settings",
+ "tab_nas": "NAS Router List",
+ "tab_log": "Accounting Log",
+ "svc_title": "RADIUS Server Service",
+ "svc_status": "RADIUS Service Status",
+ "opt_active_bg": "Active (Running Background UDP Service)",
+ "opt_inactive": "Inactive (Disabled)",
+ "desc_listen": "Listens for authentication & accounting requests from MikroTik NAS routers.",
+ "secret": "Global Shared Secret RADIUS",
+ "secret_desc": "Default secret used when the NAS IP is not specifically registered.",
+ "ports_title": "UDP Network Ports",
+ "port_auth": "Port Auth (UDP)",
+ "port_acct": "Port Acct (UDP)",
+ "limit_title": "Speed & Active Session Limits",
+ "simuse": "Limit Concurrent Active Sessions (Simultaneous-Use)",
+ "opt_simuse_on": "Active - Limit 1 Account to 1 Online Session (Reject Multiple Logins)",
+ "opt_simuse_off": "Inactive - Allow Multi-Login",
+ "simuse_desc": "Prevents one account from being used on many devices at once.",
+ "rate_default": "Default Rate Limit (Speed Fallback)",
+ "ph_rate": "Example: 5M/10M",
+ "rate_desc": "Used when the user/customer is not bound to a specific Internet Package. (Format: Upload/Download).",
+ "isolir_title": "RADIUS Isolir & Suspended Policy",
+ "isolir_action": "Isolated Customer Action",
+ "opt_isolir_pool": "Access-Accept with Isolir Dynamic IP Pool (Recommended)",
+ "opt_isolir_reject": "Access-Reject (Connection Fully Rejected)",
+ "isolir_pool_alloc": "Isolir IP Pool Allocation by RADIUS Server",
+ "opt_isolir_pool_on": "Active - RADIUS allocates a dedicated Isolir IP automatically",
+ "opt_isolir_pool_off": "Inactive - Only send Mikrotik-Group / Framed-Pool",
+ "isolir_pool_desc": "Isolated customers get a dedicated IP from the RADIUS isolir subnet without needing a user/pool on MikroTik.",
+ "isolir_start": "Isolir IP Pool Range (Start)",
+ "isolir_end": "Isolir IP Pool Range (End)",
+ "isolir_rate": "Isolated Customer Speed Limit (Rate-Limit)",
+ "ph_isolir_rate": "Example: 512k/512k or 1M/1M",
+ "isolir_rate_desc": "Format: Upload/Download (e.g.: 512k/512k, 1M/1M, 256k/512k). Sent directly to MikroTik when a customer is isolated.",
+ "isolir_pool_name": "RADIUS Isolir Pool / Group Name (Attribute)",
+ "isolir_pool_name_desc": "Extra Mikrotik-Group / Framed-Pool attribute for isolated customers.",
+ "ipool_title": "Automatic RADIUS IP Pool Allocation",
+ "ipool_alloc": "Dynamic IP Allocation by RADIUS Server",
+ "opt_ipool_on": "Active - RADIUS hands out IPs automatically from the IP Pool range (Recommended)",
+ "opt_ipool_off": "Inactive - Use Dynamic Pool from MikroTik (Framed-Pool)",
+ "ipool_desc": "If enabled, RADIUS automatically assigns dynamic IPs to customers without static IPs, independent of the local MikroTik pool.",
+ "ipool_start": "Normal IP Pool Range (Start)",
+ "ipool_end": "Normal IP Pool Range (End)",
+ "framed_pool": "Default Framed Pool Name (Fallback)",
+ "autogen_title": "Auto-Generate PPPoE Account (New Customer)",
+ "autogen_hint": "Used when an admin approves a registrant or clicks Generate PPPoE Account. Applies to both MikroTik and RADIUS modes.",
+ "autogen_label": "Automatically create PPPoE account",
+ "opt_yes": "Yes (automatic)",
+ "opt_no_manual": "No (manual)",
+ "pattern": "Username Pattern",
+ "opt_cust_code": "Customer ID (ISP-xxxxx)",
+ "default_pass": "Default Password",
+ "profile_title": "MikroTik Profile Mode (RADIUS)",
+ "profile_hint": "If Yes: RADIUS only authenticates & sends Mikrotik-Group (package name) — rate-limit & IP are taken from the PPP profile on MikroTik (RADIUS sends no Rate-Limit or IP attributes). Make sure the MikroTik profile name = package name.",
+ "profile_use": "Use Profile & IP from MikroTik",
+ "opt_profile_off": "No (RADIUS sets rate-limit & IP)",
+ "opt_profile_on": "Yes (take from MikroTik PPP profile)",
+ "script_title": "Automatic MikroTik Setup Script (RADIUS & Isolir)",
+ "billing_ip": "Billing Server IP:",
+ "copy_script": "Copy MikroTik Script",
+ "ufw_title": "1. Linux Server Firewall Command (UFW)",
+ "ufw_desc": "Run this command in the Linux server terminal (VPS / Production) so the router can reach the server:",
+ "mt_title": "2. RADIUS & Isolir Integration Script on MikroTik (RouterOS Terminal)",
+ "mt_desc": "Copy and paste the entire script below into the MikroTik Terminal (server IP is auto-filled from the field above):",
+ "save": "Save RADIUS Configuration",
+ "username_hint": "Username = pattern + @ + domain. Example: budi_santoso@openisp.id"
}
},
"tech": {
diff --git a/locales/id.json b/locales/id.json
index 8b7dcef..4a5992d 100644
--- a/locales/id.json
+++ b/locales/id.json
@@ -1579,6 +1579,81 @@
"select_vendor": "Pilih Vendor",
"hint_rescan": "Klik \"Scan Ulang\" untuk mencari ONU yang belum terkonfigurasi",
"hint_reload": "Klik \"Muat Ulang / Scan\" untuk memantau status ONU terkonfigurasi via SNMP"
+ },
+ "rds": {
+ "card_status": "Status RADIUS Server",
+ "card_online": "User RADIUS Online",
+ "card_online_sub": "Sesi Aktif Terhubung Saat Ini",
+ "card_nas_sub": "Router NAS Terdaftar di Server",
+ "card_traffic": "Trafik RADIUS Hari Ini",
+ "card_log_today": "Log Accounting Hari Ini",
+ "tab_sessions": "Sesi Active RADIUS",
+ "tab_settings": "Pengaturan RADIUS",
+ "tab_nas": "Daftar NAS Router",
+ "tab_log": "Log Accounting",
+ "svc_title": "Layanan RADIUS Server",
+ "svc_status": "Status Service RADIUS",
+ "opt_active_bg": "Aktif (Running Background UDP Service)",
+ "opt_inactive": "Non-Aktif (Disabled)",
+ "desc_listen": "Mendengarkan request autentikasi & accounting dari Router NAS MikroTik.",
+ "secret": "Global Shared Secret RADIUS",
+ "secret_desc": "Secret default yang digunakan jika IP NAS tidak didaftarkan secara khusus.",
+ "ports_title": "Port Jaringan UDP",
+ "port_auth": "Port Auth (UDP)",
+ "port_acct": "Port Acct (UDP)",
+ "limit_title": "Limitasi Kecepatan & Sesi Aktif",
+ "simuse": "Pembatasan Sesi Aktif Ganda (Simultaneous-Use)",
+ "opt_simuse_on": "Aktif - Batasi 1 Akun 1 Sesi Online (Rejek Login Ganda)",
+ "opt_simuse_off": "Non-Aktif - Bebas Multi-Login",
+ "simuse_desc": "Mencegah 1 akun dipakai secara bersamaan di banyak perangkat.",
+ "rate_default": "Default Rate Limit (Fallback Kecepatan)",
+ "ph_rate": "Contoh: 5M/10M",
+ "rate_desc": "Digunakan jika pengguna/pelanggan tidak terikat pada Paket Internet khusus. (Format: Upload/Download).",
+ "isolir_title": "Isolir & Suspended Policy RADIUS",
+ "isolir_action": "Aksi Pelanggan Terisolir",
+ "opt_isolir_pool": "Access-Accept dengan Dynamic IP Pool Isolir (Rekomendasi)",
+ "opt_isolir_reject": "Access-Reject (Koneksi Ditolak Total)",
+ "isolir_pool_alloc": "Alokasi IP Pool Isolir oleh RADIUS Server",
+ "opt_isolir_pool_on": "Aktif - RADIUS Alokasikan IP Isolir Khusus Secara Otomatis",
+ "opt_isolir_pool_off": "Non-Aktif - Hanya Kirim Mikrotik-Group / Framed-Pool",
+ "isolir_pool_desc": "Pelanggan terisolir akan mendapatkan IP khusus dari subnet isolir RADIUS tanpa perlu user/pool di MikroTik.",
+ "isolir_start": "Rentang IP Pool Isolir (Awal)",
+ "isolir_end": "Rentang IP Pool Isolir (Akhir)",
+ "isolir_rate": "Kecepatan Limit Pelanggan Terisolir (Rate-Limit)",
+ "ph_isolir_rate": "Contoh: 512k/512k atau 1M/1M",
+ "isolir_rate_desc": "Format: Upload/Download (misal: 512k/512k, 1M/1M, 256k/512k). Dikirimkan langsung ke MikroTik saat pelanggan terisolir.",
+ "isolir_pool_name": "Nama Pool / Group Isolir RADIUS (Attribute)",
+ "isolir_pool_name_desc": "Atribut Mikrotik-Group / Framed-Pool tambahan untuk pelanggan terisolir.",
+ "ipool_title": "Pembagian IP Pool RADIUS Otomatis",
+ "ipool_alloc": "Alokasi IP Dinamis oleh RADIUS Server",
+ "opt_ipool_on": "Aktif - RADIUS Bagikan IP Otomatis dari Rentang IP Pool (Rekomendasi)",
+ "opt_ipool_off": "Non-Aktif - Gunakan Dynamic Pool dari MikroTik (Framed-Pool)",
+ "ipool_desc": "Jika aktif, RADIUS akan membagikan IP dinamis otomatis ke pelanggan tanpa IP statis sehingga tidak tergantung pada pool lokal MikroTik.",
+ "ipool_start": "Rentang IP Pool Normal (Awal)",
+ "ipool_end": "Rentang IP Pool Normal (Akhir)",
+ "framed_pool": "Nama Framed Pool Default (Fallback)",
+ "autogen_title": "Auto-Generate Akun PPPoE (Pelanggan Baru)",
+ "autogen_hint": "Dipakai saat admin menyetujui pendaftar atau menekan Generate Akun PPPoE. Berlaku untuk mode MikroTik maupun RADIUS.",
+ "autogen_label": "Otomatis buat akun PPPoE",
+ "opt_yes": "Ya (otomatis)",
+ "opt_no_manual": "Tidak (isi manual)",
+ "pattern": "Pola Username",
+ "opt_cust_code": "ID Pelanggan (ISP-xxxxx)",
+ "default_pass": "Password Default",
+ "profile_title": "Mode Profil MikroTik (RADIUS)",
+ "profile_hint": "Jika Ya: RADIUS hanya mengautentikasi & mengirim Mikrotik-Group (nama paket) — rate-limit & IP diambil dari profil PPP di MikroTik (RADIUS tidak mengirim atribut Rate-Limit maupun IP). Pastikan nama profil di MikroTik = nama paket.",
+ "profile_use": "Gunakan Profil & IP dari MikroTik",
+ "opt_profile_off": "Tidak (RADIUS atur rate-limit & IP)",
+ "opt_profile_on": "Ya (ambil dari profil PPP MikroTik)",
+ "script_title": "Script Setup Otomatis MikroTik (RADIUS & Isolir)",
+ "billing_ip": "IP Server Billing:",
+ "copy_script": "Salin Script MikroTik",
+ "ufw_title": "1. Perintah Firewall Linux Server (UFW)",
+ "ufw_desc": "Jalankan perintah ini di terminal server Linux (VPS / Server Produksi) agar router dapat menghubungi server:",
+ "mt_title": "2. Script Integrasi RADIUS & Isolir di MikroTik (RouterOS Terminal)",
+ "mt_desc": "Copy dan pastekan seluruh script di bawah ini ke Terminal MikroTik (IP server otomatis terisi dari IP di atas):",
+ "save": "Simpan Konfigurasi RADIUS",
+ "username_hint": "Username = pola + @ + domain. Contoh: budi_santoso@openisp.id"
}
},
"tech": {
diff --git a/views/admin/radius-settings.ejs b/views/admin/radius-settings.ejs
index 41415cb..7b4a4ee 100644
--- a/views/admin/radius-settings.ejs
+++ b/views/admin/radius-settings.ejs
@@ -110,7 +110,7 @@
Upload/Download).
+ <%- t('admin.rds.rate_desc','Digunakan jika pengguna/pelanggan tidak terikat pada Paket Internet khusus. (Format: Upload/Download).') %>
Upload/Download (misal: 512k/512k, 1M/1M, 256k/512k). Dikirimkan langsung ke MikroTik saat pelanggan terisolir.
+
+
+ <%- t('admin.rds.isolir_rate_desc','Format: Upload/Download (misal: 512k/512k, 1M/1M, 256k/512k). Dikirimkan langsung ke MikroTik saat pelanggan terisolir.') %>