i18n (Phase C batch 2): radius-settings — form & tab (cards, isolir, ip-pool, autogen, script) ID/EN + fix domain sky.id->openisp.id
This commit is contained in:
1 parent
8b3fc70c36
commit
136778aa0a
3 files changed
+226
-76
No files matched your search
@@ -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: <code>Upload/Download</code>).",
|
||||
"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: <code>Upload/Download</code> (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 <b>approves a registrant</b> or clicks <b>Generate PPPoE Account</b>. 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 <b>Yes</b>: RADIUS only authenticates & sends <b>Mikrotik-Group</b> (package name) — <b>rate-limit & IP are taken from the PPP profile on MikroTik</b> (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 <strong>MikroTik Terminal</strong> (server IP is auto-filled from the field above):",
|
||||
"save": "Save RADIUS Configuration",
|
||||
"username_hint": "Username = pattern + @ + domain. Example: <span class=\"mono\">budi_santoso@openisp.id</span>"
|
||||
}
|
||||
},
|
||||
"tech": {
|
||||
|
||||
@@ -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: <code>Upload/Download</code>).",
|
||||
"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: <code>Upload/Download</code> (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 <b>menyetujui pendaftar</b> atau menekan <b>Generate Akun PPPoE</b>. 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 <b>Ya</b>: RADIUS hanya mengautentikasi & mengirim <b>Mikrotik-Group</b> (nama paket) — <b>rate-limit & IP diambil dari profil PPP di MikroTik</b> (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 <strong>Terminal MikroTik</strong> (IP server otomatis terisi dari IP di atas):",
|
||||
"save": "Simpan Konfigurasi RADIUS",
|
||||
"username_hint": "Username = pola + @ + domain. Contoh: <span class=\"mono\">budi_santoso@openisp.id</span>"
|
||||
}
|
||||
},
|
||||
"tech": {
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
<div class="sc p">
|
||||
<i class="bi bi-broadcast sc-icon"></i>
|
||||
<div class="sc-label" style="display:flex;align-items:center;justify-content:space-between;gap:6px;">
|
||||
<span>Status RADIUS Server</span>
|
||||
<span><%= t('admin.rds.card_status','Status RADIUS Server') %></span>
|
||||
<form action="/admin/radius/restart" method="POST" style="margin:0;">
|
||||
<button type="submit" class="btn btn-w btn-sm" style="font-size:10px;padding:2px 8px;height:auto;" title="Restart Service UDP RADIUS (1812/1813)">
|
||||
<i class="bi bi-arrow-clockwise"></i> Restart
|
||||
@@ -129,39 +129,39 @@
|
||||
|
||||
<div class="sc s">
|
||||
<i class="bi bi-wifi sc-icon"></i>
|
||||
<div class="sc-label">User RADIUS Online</div>
|
||||
<div class="sc-label"><%= t('admin.rds.card_online','User RADIUS Online') %></div>
|
||||
<div class="sc-val"><%= onlineSessions.length %></div>
|
||||
<div class="sc-sub">Sesi Aktif Terhubung Saat Ini</div>
|
||||
<div class="sc-sub"><%= t('admin.rds.card_online_sub','Sesi Aktif Terhubung Saat Ini') %></div>
|
||||
</div>
|
||||
|
||||
<div class="sc i">
|
||||
<i class="bi bi-router sc-icon"></i>
|
||||
<div class="sc-label">NAS Router Client</div>
|
||||
<div class="sc-val"><%= nasList.length %></div>
|
||||
<div class="sc-sub">Router NAS Terdaftar di Server</div>
|
||||
<div class="sc-sub"><%= t('admin.rds.card_nas_sub','Router NAS Terdaftar di Server') %></div>
|
||||
</div>
|
||||
|
||||
<div class="sc w">
|
||||
<i class="bi bi-activity sc-icon"></i>
|
||||
<div class="sc-label">Trafik RADIUS Hari Ini</div>
|
||||
<div class="sc-label"><%= t('admin.rds.card_traffic','Trafik RADIUS Hari Ini') %></div>
|
||||
<div class="sc-val"><%= typeof todayTrafficMB !== 'undefined' ? todayTrafficMB : '0.0' %><span style="font-size:14px;"> MB</span></div>
|
||||
<div class="sc-sub"><%= typeof todayEvents !== 'undefined' ? todayEvents : 0 %> Log Accounting Hari Ini</div>
|
||||
<div class="sc-sub"><%= typeof todayEvents !== 'undefined' ? todayEvents : 0 %> <%= t('admin.rds.card_log_today','Log Accounting Hari Ini') %></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- TABS NAVIGATION -->
|
||||
<div class="mtabs mb16">
|
||||
<button type="button" class="mtab active" id="tab-btn-online" onclick="switchTab('online')">
|
||||
<i class="bi bi-wifi"></i> Sesi Active RADIUS (<%= onlineSessions.length %>)
|
||||
<i class="bi bi-wifi"></i> <%= t('admin.rds.tab_sessions','Sesi Active RADIUS') %> (<%= onlineSessions.length %>)
|
||||
</button>
|
||||
<button type="button" class="mtab" id="tab-btn-settings" onclick="switchTab('settings')">
|
||||
<i class="bi bi-sliders"></i> Pengaturan RADIUS
|
||||
<i class="bi bi-sliders"></i> <%= t('admin.rds.tab_settings','Pengaturan RADIUS') %>
|
||||
</button>
|
||||
<button type="button" class="mtab" id="tab-btn-nas" onclick="switchTab('nas')">
|
||||
<i class="bi bi-router"></i> Daftar NAS Router (<%= nasList.length %>)
|
||||
<i class="bi bi-router"></i> <%= t('admin.rds.tab_nas','Daftar NAS Router') %> (<%= nasList.length %>)
|
||||
</button>
|
||||
<button type="button" class="mtab" id="tab-btn-accounting" onclick="switchTab('accounting')">
|
||||
<i class="bi bi-journal-text"></i> Log Accounting
|
||||
<i class="bi bi-journal-text"></i> <%= t('admin.rds.tab_log','Log Accounting') %>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -173,25 +173,25 @@
|
||||
<!-- Card 1: Core Service Settings -->
|
||||
<div class="card mb16">
|
||||
<div class="card-hd">
|
||||
<h6><i class="bi bi-cpu"></i> Layanan RADIUS Server</h6>
|
||||
<h6><i class="bi bi-cpu"></i> <%= t('admin.rds.svc_title','Layanan RADIUS Server') %></h6>
|
||||
</div>
|
||||
<div class="card-bd">
|
||||
<div class="fg">
|
||||
<label class="fl">Status Service RADIUS</label>
|
||||
<label class="fl"><%= t('admin.rds.svc_status','Status Service RADIUS') %></label>
|
||||
<select name="radius_enabled" class="fs">
|
||||
<option value="1" <%= radiusStatus.enabled ? 'selected' : '' %>>Aktif (Running Background UDP Service)</option>
|
||||
<option value="0" <%= !radiusStatus.enabled ? 'selected' : '' %>>Non-Aktif (Disabled)</option>
|
||||
<option value="1" <%= radiusStatus.enabled ? 'selected' : '' %>><%= t('admin.rds.opt_active_bg','Aktif (Running Background UDP Service)') %></option>
|
||||
<option value="0" <%= !radiusStatus.enabled ? 'selected' : '' %>><%= t('admin.rds.opt_inactive','Non-Aktif (Disabled)') %></option>
|
||||
</select>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-top:4px;">
|
||||
Mendengarkan request autentikasi & accounting dari Router NAS MikroTik.
|
||||
<%= t('admin.rds.desc_listen','Mendengarkan request autentikasi & accounting dari Router NAS MikroTik.') %>
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div class="fg">
|
||||
<label class="fl">Global Shared Secret RADIUS</label>
|
||||
<label class="fl"><%= t('admin.rds.secret','Global Shared Secret RADIUS') %></label>
|
||||
<input type="text" name="radius_secret" class="fc" value="<%= radiusStatus.secret %>" required>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-top:4px;">
|
||||
Secret default yang digunakan jika IP NAS tidak didaftarkan secara khusus.
|
||||
<%= t('admin.rds.secret_desc','Secret default yang digunakan jika IP NAS tidak didaftarkan secara khusus.') %>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
@@ -200,18 +200,18 @@
|
||||
<!-- Card 2: Port UDP & Protocol -->
|
||||
<div class="card mb16">
|
||||
<div class="card-hd">
|
||||
<h6><i class="bi bi-ethernet"></i> Port Jaringan UDP</h6>
|
||||
<h6><i class="bi bi-ethernet"></i> <%= t('admin.rds.ports_title','Port Jaringan UDP') %></h6>
|
||||
</div>
|
||||
<div class="card-bd">
|
||||
<div class="form-row">
|
||||
<div class="fg">
|
||||
<label class="fl">Port Auth (UDP)</label>
|
||||
<label class="fl"><%= t('admin.rds.port_auth','Port Auth (UDP)') %></label>
|
||||
<input type="number" name="radius_auth_port" class="fc" value="<%= radiusStatus.authPort %>" required>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-top:4px;">Default: 1812</small>
|
||||
</div>
|
||||
|
||||
<div class="fg">
|
||||
<label class="fl">Port Acct (UDP)</label>
|
||||
<label class="fl"><%= t('admin.rds.port_acct','Port Acct (UDP)') %></label>
|
||||
<input type="number" name="radius_acct_port" class="fc" value="<%= radiusStatus.acctPort %>" required>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-top:4px;">Default: 1813</small>
|
||||
</div>
|
||||
@@ -222,25 +222,25 @@
|
||||
<!-- Card 3: Limitasi Koneksi & Sesi -->
|
||||
<div class="card mb16">
|
||||
<div class="card-hd">
|
||||
<h6><i class="bi bi-speedometer2"></i> Limitasi Kecepatan & Sesi Aktif</h6>
|
||||
<h6><i class="bi bi-speedometer2"></i> <%= t('admin.rds.limit_title','Limitasi Kecepatan & Sesi Aktif') %></h6>
|
||||
</div>
|
||||
<div class="card-bd">
|
||||
<div class="fg">
|
||||
<label class="fl">Pembatasan Sesi Aktif Ganda (Simultaneous-Use)</label>
|
||||
<label class="fl"><%= t('admin.rds.simuse','Pembatasan Sesi Aktif Ganda (Simultaneous-Use)') %></label>
|
||||
<select name="radius_limit_simultaneous" class="fs">
|
||||
<option value="1" <%= (typeof radiusStatus.limitSimultaneous === 'undefined' || radiusStatus.limitSimultaneous) ? 'selected' : '' %>>Aktif - Batasi 1 Akun 1 Sesi Online (Rejek Login Ganda)</option>
|
||||
<option value="0" <%= (typeof radiusStatus.limitSimultaneous !== 'undefined' && !radiusStatus.limitSimultaneous) ? 'selected' : '' %>>Non-Aktif - Bebas Multi-Login</option>
|
||||
<option value="1" <%= (typeof radiusStatus.limitSimultaneous === 'undefined' || radiusStatus.limitSimultaneous) ? 'selected' : '' %>><%= t('admin.rds.opt_simuse_on','Aktif - Batasi 1 Akun 1 Sesi Online (Rejek Login Ganda)') %></option>
|
||||
<option value="0" <%= (typeof radiusStatus.limitSimultaneous !== 'undefined' && !radiusStatus.limitSimultaneous) ? 'selected' : '' %>><%= t('admin.rds.opt_simuse_off','Non-Aktif - Bebas Multi-Login') %></option>
|
||||
</select>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-top:4px;">
|
||||
Mencegah 1 akun dipakai secara bersamaan di banyak perangkat.
|
||||
<%= t('admin.rds.simuse_desc','Mencegah 1 akun dipakai secara bersamaan di banyak perangkat.') %>
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div class="fg">
|
||||
<label class="fl">Default Rate Limit (Fallback Kecepatan)</label>
|
||||
<input type="text" name="radius_default_rate_limit" class="fc" value="<%= typeof radiusStatus.defaultRateLimit !== 'undefined' ? radiusStatus.defaultRateLimit : '5M/10M' %>" placeholder="Contoh: 5M/10M">
|
||||
<label class="fl"><%= t('admin.rds.rate_default','Default Rate Limit (Fallback Kecepatan)') %></label>
|
||||
<input type="text" name="radius_default_rate_limit" class="fc" value="<%= typeof radiusStatus.defaultRateLimit !== 'undefined' ? radiusStatus.defaultRateLimit : '5M/10M' %>" placeholder="<%= t('admin.rds.ph_rate','Contoh: 5M/10M') %>">
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-top:4px;">
|
||||
Digunakan jika pengguna/pelanggan tidak terikat pada Paket Internet khusus. (Format: <code>Upload/Download</code>).
|
||||
<%- t('admin.rds.rate_desc','Digunakan jika pengguna/pelanggan tidak terikat pada Paket Internet khusus. (Format: <code>Upload/Download</code>).') %>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
@@ -249,47 +249,47 @@
|
||||
<!-- Card 3: Isolir Settings -->
|
||||
<div class="card mb16">
|
||||
<div class="card-hd">
|
||||
<h6><i class="bi bi-shield-slash"></i> Isolir & Suspended Policy RADIUS</h6>
|
||||
<h6><i class="bi bi-shield-slash"></i> <%= t('admin.rds.isolir_title','Isolir & Suspended Policy RADIUS') %></h6>
|
||||
</div>
|
||||
<div class="card-bd">
|
||||
<div class="fg">
|
||||
<label class="fl">Aksi Pelanggan Terisolir</label>
|
||||
<label class="fl"><%= t('admin.rds.isolir_action','Aksi Pelanggan Terisolir') %></label>
|
||||
<select name="radius_isolir_action" class="fs">
|
||||
<option value="pool" <%= radiusStatus.isolirAction === 'pool' ? 'selected' : '' %>>Access-Accept dengan Dynamic IP Pool Isolir (Rekomendasi)</option>
|
||||
<option value="reject" <%= radiusStatus.isolirAction === 'reject' ? 'selected' : '' %>>Access-Reject (Koneksi Ditolak Total)</option>
|
||||
<option value="pool" <%= radiusStatus.isolirAction === 'pool' ? 'selected' : '' %>><%= t('admin.rds.opt_isolir_pool','Access-Accept dengan Dynamic IP Pool Isolir (Rekomendasi)') %></option>
|
||||
<option value="reject" <%= radiusStatus.isolirAction === 'reject' ? 'selected' : '' %>><%= t('admin.rds.opt_isolir_reject','Access-Reject (Koneksi Ditolak Total)') %></option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="fg">
|
||||
<label class="fl">Alokasi IP Pool Isolir oleh RADIUS Server</label>
|
||||
<label class="fl"><%= t('admin.rds.isolir_pool_alloc','Alokasi IP Pool Isolir oleh RADIUS Server') %></label>
|
||||
<select name="radius_isolir_ip_pool_enabled" class="fs">
|
||||
<option value="1" <%= (typeof radiusStatus.isolirIpPoolEnabled === 'undefined' || radiusStatus.isolirIpPoolEnabled) ? 'selected' : '' %>>Aktif - RADIUS Alokasikan IP Isolir Khusus Secara Otomatis</option>
|
||||
<option value="0" <%= (typeof radiusStatus.isolirIpPoolEnabled !== 'undefined' && !radiusStatus.isolirIpPoolEnabled) ? 'selected' : '' %>>Non-Aktif - Hanya Kirim Mikrotik-Group / Framed-Pool</option>
|
||||
<option value="1" <%= (typeof radiusStatus.isolirIpPoolEnabled === 'undefined' || radiusStatus.isolirIpPoolEnabled) ? 'selected' : '' %>><%= t('admin.rds.opt_isolir_pool_on','Aktif - RADIUS Alokasikan IP Isolir Khusus Secara Otomatis') %></option>
|
||||
<option value="0" <%= (typeof radiusStatus.isolirIpPoolEnabled !== 'undefined' && !radiusStatus.isolirIpPoolEnabled) ? 'selected' : '' %>><%= t('admin.rds.opt_isolir_pool_off','Non-Aktif - Hanya Kirim Mikrotik-Group / Framed-Pool') %></option>
|
||||
</select>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-top:4px;">Pelanggan terisolir akan mendapatkan IP khusus dari subnet isolir RADIUS tanpa perlu user/pool di MikroTik.</small>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-top:4px;"><%= t('admin.rds.isolir_pool_desc','Pelanggan terisolir akan mendapatkan IP khusus dari subnet isolir RADIUS tanpa perlu user/pool di MikroTik.') %></small>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="fg">
|
||||
<label class="fl">Rentang IP Pool Isolir (Awal)</label>
|
||||
<label class="fl"><%= t('admin.rds.isolir_start','Rentang IP Pool Isolir (Awal)') %></label>
|
||||
<input type="text" name="radius_isolir_ip_pool_start" class="fc" value="<%= typeof radiusStatus.isolirIpPoolStart !== 'undefined' ? radiusStatus.isolirIpPoolStart : '10.10.99.2' %>" placeholder="10.10.99.2" required>
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label class="fl">Rentang IP Pool Isolir (Akhir)</label>
|
||||
<label class="fl"><%= t('admin.rds.isolir_end','Rentang IP Pool Isolir (Akhir)') %></label>
|
||||
<input type="text" name="radius_isolir_ip_pool_end" class="fc" value="<%= typeof radiusStatus.isolirIpPoolEnd !== 'undefined' ? radiusStatus.isolirIpPoolEnd : '10.10.99.254' %>" placeholder="10.10.99.254" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="fg">
|
||||
<label class="fl">Kecepatan Limit Pelanggan Terisolir (Rate-Limit)</label>
|
||||
<input type="text" name="radius_isolir_rate_limit" class="fc" value="<%= typeof radiusStatus.isolirRateLimit !== 'undefined' ? radiusStatus.isolirRateLimit : '512k/512k' %>" placeholder="Contoh: 512k/512k atau 1M/1M" required>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-top:4px;">Format: <code>Upload/Download</code> (misal: 512k/512k, 1M/1M, 256k/512k). Dikirimkan langsung ke MikroTik saat pelanggan terisolir.</small>
|
||||
<label class="fl"><%= t('admin.rds.isolir_rate','Kecepatan Limit Pelanggan Terisolir (Rate-Limit)') %></label>
|
||||
<input type="text" name="radius_isolir_rate_limit" class="fc" value="<%= typeof radiusStatus.isolirRateLimit !== 'undefined' ? radiusStatus.isolirRateLimit : '512k/512k' %>" placeholder="<%= t('admin.rds.ph_isolir_rate','Contoh: 512k/512k atau 1M/1M') %>" required>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-top:4px;"><%- t('admin.rds.isolir_rate_desc','Format: <code>Upload/Download</code> (misal: 512k/512k, 1M/1M, 256k/512k). Dikirimkan langsung ke MikroTik saat pelanggan terisolir.') %></small>
|
||||
</div>
|
||||
|
||||
<div class="fg">
|
||||
<label class="fl">Nama Pool / Group Isolir RADIUS (Attribute)</label>
|
||||
<label class="fl"><%= t('admin.rds.isolir_pool_name','Nama Pool / Group Isolir RADIUS (Attribute)') %></label>
|
||||
<input type="text" name="radius_isolir_pool" class="fc" value="<%= radiusStatus.isolirPool %>" required>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-top:4px;">Atribut Mikrotik-Group / Framed-Pool tambahan untuk pelanggan terisolir.</small>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-top:4px;"><%= t('admin.rds.isolir_pool_name_desc','Atribut Mikrotik-Group / Framed-Pool tambahan untuk pelanggan terisolir.') %></small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -297,33 +297,33 @@
|
||||
<!-- Card 4: Dynamic IP Pool RADIUS -->
|
||||
<div class="card mb16">
|
||||
<div class="card-hd">
|
||||
<h6><i class="bi bi-diagram-3-fill"></i> Pembagian IP Pool RADIUS Otomatis</h6>
|
||||
<h6><i class="bi bi-diagram-3-fill"></i> <%= t('admin.rds.ipool_title','Pembagian IP Pool RADIUS Otomatis') %></h6>
|
||||
</div>
|
||||
<div class="card-bd">
|
||||
<div class="fg">
|
||||
<label class="fl">Alokasi IP Dinamis oleh RADIUS Server</label>
|
||||
<label class="fl"><%= t('admin.rds.ipool_alloc','Alokasi IP Dinamis oleh RADIUS Server') %></label>
|
||||
<select name="radius_ip_pool_enabled" class="fs">
|
||||
<option value="1" <%= (typeof radiusStatus.ipPoolEnabled === 'undefined' || radiusStatus.ipPoolEnabled) ? 'selected' : '' %>>Aktif - RADIUS Bagikan IP Otomatis dari Rentang IP Pool (Rekomendasi)</option>
|
||||
<option value="0" <%= (typeof radiusStatus.ipPoolEnabled !== 'undefined' && !radiusStatus.ipPoolEnabled) ? 'selected' : '' %>>Non-Aktif - Gunakan Dynamic Pool dari MikroTik (Framed-Pool)</option>
|
||||
<option value="1" <%= (typeof radiusStatus.ipPoolEnabled === 'undefined' || radiusStatus.ipPoolEnabled) ? 'selected' : '' %>><%= t('admin.rds.opt_ipool_on','Aktif - RADIUS Bagikan IP Otomatis dari Rentang IP Pool (Rekomendasi)') %></option>
|
||||
<option value="0" <%= (typeof radiusStatus.ipPoolEnabled !== 'undefined' && !radiusStatus.ipPoolEnabled) ? 'selected' : '' %>><%= t('admin.rds.opt_ipool_off','Non-Aktif - Gunakan Dynamic Pool dari MikroTik (Framed-Pool)') %></option>
|
||||
</select>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-top:4px;">
|
||||
Jika aktif, RADIUS akan membagikan IP dinamis otomatis ke pelanggan tanpa IP statis sehingga tidak tergantung pada pool lokal MikroTik.
|
||||
<%= t('admin.rds.ipool_desc','Jika aktif, RADIUS akan membagikan IP dinamis otomatis ke pelanggan tanpa IP statis sehingga tidak tergantung pada pool lokal MikroTik.') %>
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="fg">
|
||||
<label class="fl">Rentang IP Pool Normal (Awal)</label>
|
||||
<label class="fl"><%= t('admin.rds.ipool_start','Rentang IP Pool Normal (Awal)') %></label>
|
||||
<input type="text" name="radius_ip_pool_start" class="fc" value="<%= typeof radiusStatus.ipPoolStart !== 'undefined' ? radiusStatus.ipPoolStart : '10.10.10.2' %>" placeholder="10.10.10.2" required>
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label class="fl">Rentang IP Pool Normal (Akhir)</label>
|
||||
<label class="fl"><%= t('admin.rds.ipool_end','Rentang IP Pool Normal (Akhir)') %></label>
|
||||
<input type="text" name="radius_ip_pool_end" class="fc" value="<%= typeof radiusStatus.ipPoolEnd !== 'undefined' ? radiusStatus.ipPoolEnd : '10.10.10.254' %>" placeholder="10.10.10.254" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="fg">
|
||||
<label class="fl">Nama Framed Pool Default (Fallback)</label>
|
||||
<label class="fl"><%= t('admin.rds.framed_pool','Nama Framed Pool Default (Fallback)') %></label>
|
||||
<input type="text" name="radius_framed_pool" class="fc" value="<%= radiusStatus.framedPool %>" required>
|
||||
</div>
|
||||
</div>
|
||||
@@ -332,34 +332,34 @@
|
||||
<!-- Card: Auto-Generate PPPoE -->
|
||||
<div class="card mb16">
|
||||
<div class="card-hd">
|
||||
<h6><i class="bi bi-key-fill"></i> Auto-Generate Akun PPPoE (Pelanggan Baru)</h6>
|
||||
<h6><i class="bi bi-key-fill"></i> <%= t('admin.rds.autogen_title','Auto-Generate Akun PPPoE (Pelanggan Baru)') %></h6>
|
||||
</div>
|
||||
<div class="card-bd">
|
||||
<div class="hint" style="margin-bottom:10px">Dipakai saat admin <b>menyetujui pendaftar</b> atau menekan <b>Generate Akun PPPoE</b>. Berlaku untuk mode MikroTik maupun RADIUS.</div>
|
||||
<div class="hint" style="margin-bottom:10px"><%- t('admin.rds.autogen_hint','Dipakai saat admin <b>menyetujui pendaftar</b> atau menekan <b>Generate Akun PPPoE</b>. Berlaku untuk mode MikroTik maupun RADIUS.') %></div>
|
||||
<div class="form-row">
|
||||
<div class="fg">
|
||||
<label class="fl">Otomatis buat akun PPPoE</label>
|
||||
<label class="fl"><%= t('admin.rds.autogen_label','Otomatis buat akun PPPoE') %></label>
|
||||
<select name="pppoe_auto_generate" class="fs">
|
||||
<option value="1" <%= (String((typeof settings!=='undefined'&&settings&&settings.pppoe_auto_generate)||'1')==='1')?'selected':'' %>>Ya (otomatis)</option>
|
||||
<option value="0" <%= (String((typeof settings!=='undefined'&&settings&&settings.pppoe_auto_generate)||'1')==='0')?'selected':'' %>>Tidak (isi manual)</option>
|
||||
<option value="1" <%= (String((typeof settings!=='undefined'&&settings&&settings.pppoe_auto_generate)||'1')==='1')?'selected':'' %>><%= t('admin.rds.opt_yes','Ya (otomatis)') %></option>
|
||||
<option value="0" <%= (String((typeof settings!=='undefined'&&settings&&settings.pppoe_auto_generate)||'1')==='0')?'selected':'' %>><%= t('admin.rds.opt_no_manual','Tidak (isi manual)') %></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label class="fl">Pola Username</label>
|
||||
<label class="fl"><%= t('admin.rds.pattern','Pola Username') %></label>
|
||||
<select name="pppoe_username_pattern" class="fs">
|
||||
<option value="name" <%= (String((typeof settings!=='undefined'&&settings&&settings.pppoe_username_pattern)||'name')==='name')?'selected':'' %>><%= t('iso.cust_name','Nama Pelanggan') %></option>
|
||||
<option value="customer_code" <%= (String((typeof settings!=='undefined'&&settings&&settings.pppoe_username_pattern)||'name')==='customer_code')?'selected':'' %>>ID Pelanggan (SKY-xxxxx)</option>
|
||||
<option value="customer_code" <%= (String((typeof settings!=='undefined'&&settings&&settings.pppoe_username_pattern)||'name')==='customer_code')?'selected':'' %>><%= t('admin.rds.opt_cust_code','ID Pelanggan (ISP-xxxxx)') %></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="fg">
|
||||
<label class="fl">Domain / Realm</label>
|
||||
<input type="text" name="pppoe_domain" class="fc" value="<%= (typeof settings!=='undefined'&&settings&&settings.pppoe_domain)||'sky.id' %>" placeholder="sky.id">
|
||||
<div class="hint">Username = pola + @ + domain. Contoh: <span class="mono">budi_santoso@sky.id</span></div>
|
||||
<input type="text" name="pppoe_domain" class="fc" value="<%= (typeof settings!=='undefined'&&settings&&settings.pppoe_domain)||'openisp.id' %>" placeholder="openisp.id">
|
||||
<div class="hint"><%- t('admin.rds.username_hint','Username = pola + @ + domain. Contoh: <span class="mono">budi_santoso@openisp.id</span>') %></div>
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label class="fl">Password Default</label>
|
||||
<label class="fl"><%= t('admin.rds.default_pass','Password Default') %></label>
|
||||
<input type="text" name="pppoe_default_password" class="fc" value="<%= (typeof settings!=='undefined'&&settings&&settings.pppoe_default_password)||'openisp' %>" placeholder="openisp">
|
||||
</div>
|
||||
</div>
|
||||
@@ -368,14 +368,14 @@
|
||||
|
||||
<!-- Card: Mode Profil MikroTik -->
|
||||
<div class="card mb16">
|
||||
<div class="card-hd"><h6><i class="bi bi-sliders"></i> Mode Profil MikroTik (RADIUS)</h6></div>
|
||||
<div class="card-hd"><h6><i class="bi bi-sliders"></i> <%= t('admin.rds.profile_title','Mode Profil MikroTik (RADIUS)') %></h6></div>
|
||||
<div class="card-bd">
|
||||
<div class="hint" style="margin-bottom:10px">Jika <b>Ya</b>: RADIUS hanya mengautentikasi & mengirim <b>Mikrotik-Group</b> (nama paket) — <b>rate-limit & IP diambil dari profil PPP di MikroTik</b> (RADIUS tidak mengirim atribut Rate-Limit maupun IP). Pastikan nama profil di MikroTik = nama paket.</div>
|
||||
<div class="hint" style="margin-bottom:10px"><%- t('admin.rds.profile_hint','Jika <b>Ya</b>: RADIUS hanya mengautentikasi & mengirim <b>Mikrotik-Group</b> (nama paket) — <b>rate-limit & IP diambil dari profil PPP di MikroTik</b> (RADIUS tidak mengirim atribut Rate-Limit maupun IP). Pastikan nama profil di MikroTik = nama paket.') %></div>
|
||||
<div class="fg">
|
||||
<label class="fl">Gunakan Profil & IP dari MikroTik</label>
|
||||
<label class="fl"><%- t('admin.rds.profile_use','Gunakan Profil & IP dari MikroTik') %></label>
|
||||
<select name="radius_use_profile" class="fs">
|
||||
<option value="0" <%= (String((typeof settings!=='undefined'&&settings&&settings.radius_use_profile)||'0')==='0')?'selected':'' %>>Tidak (RADIUS atur rate-limit & IP)</option>
|
||||
<option value="1" <%= (String((typeof settings!=='undefined'&&settings&&settings.radius_use_profile)||'0')==='1')?'selected':'' %>>Ya (ambil dari profil PPP MikroTik)</option>
|
||||
<option value="0" <%= (String((typeof settings!=='undefined'&&settings&&settings.radius_use_profile)||'0')==='0')?'selected':'' %>><%- t('admin.rds.opt_profile_off','Tidak (RADIUS atur rate-limit & IP)') %></option>
|
||||
<option value="1" <%= (String((typeof settings!=='undefined'&&settings&&settings.radius_use_profile)||'0')==='1')?'selected':'' %>><%= t('admin.rds.opt_profile_on','Ya (ambil dari profil PPP MikroTik)') %></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -384,17 +384,17 @@
|
||||
<!-- Card 5: Panduan Firewall Linux UFW & Script MikroTik -->
|
||||
<div class="card mb16">
|
||||
<div class="card-hd" style="display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;">
|
||||
<h6 style="margin:0;"><i class="bi bi-terminal-fill"></i> Script Setup Otomatis MikroTik (RADIUS & Isolir)</h6>
|
||||
<h6 style="margin:0;"><i class="bi bi-terminal-fill"></i> <%= t('admin.rds.script_title','Script Setup Otomatis MikroTik (RADIUS & Isolir)') %></h6>
|
||||
<div style="display:flex;align-items:center;gap:8px;">
|
||||
<label style="font-size:12px;margin:0;color:var(--muted);white-space:nowrap;">IP Server Billing:</label>
|
||||
<label style="font-size:12px;margin:0;color:var(--muted);white-space:nowrap;"><%= t('admin.rds.billing_ip','IP Server Billing:') %></label>
|
||||
<input type="text" id="billing-ip-input" class="fc" value="<%= typeof serverIp !== 'undefined' ? serverIp : '192.168.8.88' %>" oninput="updateScriptIp(this.value)" style="width:140px;height:30px;font-size:12px;padding:3px 8px;" title="Ubah IP server jika router mengakses lewat IP lain/VPS">
|
||||
<button type="button" class="btn btn-s btn-sm" onclick="copyMikrotikScript()"><i class="bi bi-clipboard-check"></i> Salin Script MikroTik</button>
|
||||
<button type="button" class="btn btn-s btn-sm" onclick="copyMikrotikScript()"><i class="bi bi-clipboard-check"></i> <%= t('admin.rds.copy_script','Salin Script MikroTik') %></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-bd">
|
||||
<div class="fg" style="margin-bottom:14px;">
|
||||
<label class="fl">1. Perintah Firewall Linux Server (UFW)</label>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-bottom:6px;">Jalankan perintah ini di terminal server Linux (VPS / Server Produksi) agar router dapat menghubungi server:</small>
|
||||
<label class="fl"><%= t('admin.rds.ufw_title','1. Perintah Firewall Linux Server (UFW)') %></label>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-bottom:6px;"><%= t('admin.rds.ufw_desc','Jalankan perintah ini di terminal server Linux (VPS / Server Produksi) agar router dapat menghubungi server:') %></small>
|
||||
<div style="background:var(--bg3);padding:10px 12px;border-radius:8px;border:1px solid var(--border);font-family:monospace;font-size:12px;color:var(--info);">
|
||||
sudo ufw allow <%= radiusStatus.authPort %>/udp<br>
|
||||
sudo ufw allow <%= radiusStatus.acctPort %>/udp
|
||||
@@ -402,8 +402,8 @@
|
||||
</div>
|
||||
|
||||
<div class="fg" style="margin-bottom:0;">
|
||||
<label class="fl">2. Script Integrasi RADIUS & Isolir di MikroTik (RouterOS Terminal)</label>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-bottom:6px;">Copy dan pastekan seluruh script di bawah ini ke <strong>Terminal MikroTik</strong> (IP server otomatis terisi dari IP di atas):</small>
|
||||
<label class="fl"><%= t('admin.rds.mt_title','2. Script Integrasi RADIUS & Isolir di MikroTik (RouterOS Terminal)') %></label>
|
||||
<small class="text-muted" style="font-size:11px;display:block;margin-bottom:6px;"><%- t('admin.rds.mt_desc','Copy dan pastekan seluruh script di bawah ini ke <strong>Terminal MikroTik</strong> (IP server otomatis terisi dari IP di atas):') %></small>
|
||||
<textarea id="mikrotik-script-area" class="fc" rows="14" style="font-family:monospace;font-size:11px;background:var(--bg3);color:#10b981;line-height:1.4;white-space:pre;" readonly># =========================================================
|
||||
# SCRIPT SETUP OTOMATIS RADIUS BILLING & ISOLIR MIKROTIK
|
||||
# =========================================================
|
||||
@@ -432,7 +432,7 @@
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<button type="submit" class="btn btn-p"><i class="bi bi-save"></i> Simpan Konfigurasi RADIUS</button>
|
||||
<button type="submit" class="btn btn-p"><i class="bi bi-save"></i> <%= t('admin.rds.save','Simpan Konfigurasi RADIUS') %></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -558,7 +558,7 @@
|
||||
<input type="hidden" name="username" value="<%= s.username %>">
|
||||
<input type="hidden" name="session_id" value="<%= s.session_id %>">
|
||||
<input type="hidden" name="nas_ip" value="<%= s.nas_ip %>">
|
||||
<button type="submit" class="btn btn-d btn-sm" title="Putuskan Sesi Active RADIUS">
|
||||
<button type="submit" class="btn btn-d btn-sm" title="Putuskan <%= t('admin.rds.tab_sessions','Sesi Active RADIUS') %>">
|
||||
<i class="bi bi-power"></i> Putuskan
|
||||
</button>
|
||||
</form>
|
||||
@@ -581,7 +581,7 @@
|
||||
<div id="tab-content-accounting" class="tab-pane" style="display:none;">
|
||||
<div class="card mb16">
|
||||
<div class="card-hd">
|
||||
<h6><i class="bi bi-journal-text"></i> Log Accounting RADIUS (100 Terakhir)</h6>
|
||||
<h6><i class="bi bi-journal-text"></i> <%= t('admin.rds.tab_log','Log Accounting') %> RADIUS (100 Terakhir)</h6>
|
||||
</div>
|
||||
<div class="card-bd" style="padding:0;">
|
||||
<div class="tbl-wrap">
|
||||
|
||||
Reference in new issue
Block a user