$success, 'message' => $message]); exit; } // Menyimpan data ke session if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Simpan data POST ke session (termasuk data Mikrotik jika ada) foreach ($_POST as $key => $value) { if (!empty($value)) { $_SESSION[$key] = $value; // Menyimpan data POST ke session } } $mikrotikValid = true; // Flag untuk validasi koneksi Mikrotik // Cek apakah ada data Mikrotik yang diperlukan if (isset($_POST['ipa'], $_POST['usm'], $_POST['psw'], $_POST['pam'])) { try { $API = new RouterosAPI(); $API->debug = false; // Ambil data koneksi Mikrotik dari $_POST $ip_address = $_POST['ipa']; // IP Mikrotik $username = $_POST['usm']; // Username Mikrotik $password = $_POST['psw']; // Password Mikrotik $port_api = $_POST['pam']; // Port API Mikrotik // Menghubungkan ke API Mikrotik menggunakan data yang dikirim melalui POST if ($API->connect2($ip_address, $username, $password, $port_api)) { sendResponse(true, 'Data Form Komplit, Koneksi ke Mikrotik berhasil.'); } else { $mikrotikValid = false; sendResponse(false, 'Koneksi ke Mikrotik gagal, silakan perbaiki koneksi.'); } } catch (Exception $e) { $mikrotikValid = false; sendResponse(false, 'Terjadi kesalahan saat menghubungkan ke Mikrotik: ' . $e->getMessage()); } } // Jika ada data selain Mikrotik, cek validasi untuk jenis dan profile if (isset($_POST['jenis'], $_POST['profile'])) { try { $API = new RouterosAPI(); $API->debug = false; // Mengambil data koneksi Mikrotik dari session jika sudah ada $ip_address = $_SESSION['ipa'] ?? ''; // IP Mikrotik $username = $_SESSION['usm'] ?? ''; // Username Mikrotik $password = $_SESSION['psw'] ?? ''; // Password Mikrotik $port_api = $_SESSION['pam'] ?? 8728; // Default port API Mikrotik // Cek apakah koneksi Mikrotik valid if ($API->connect2($ip_address, $username, $password, $port_api)) { // Cek status jenis layanan dan profile $profileName = $_POST['profile']; if ($_POST['jenis'] == 'PPPOE') { // Cek profil PPPOE di Mikrotik $profiles = $API->comm('/ppp/profile/print'); $found = false; foreach ($profiles as $profile) { if ($profile['name'] === $profileName) { $found = true; break; } } if ($found) { sendResponse(true, 'Data Form Komplit, Profile PPPOE di Mikrotik sesuai.'); } else { sendResponse(false, 'Profil PPPOE tidak ditemukan di Mikrotik.'); } } else { // Cek profil Hotspot di Mikrotik $profiles = $API->comm('/ip/hotspot/user/profile/print'); $found = false; $profileId = null; foreach ($profiles as $profile) { if ($profile['name'] === $profileName) { $profileId = $profile['.id']; $found = true; break; } } if ($found) { $status = ($_POST['jenishs'] == 1) ? 1 : NULL; if ($status == 1) { // Format interval durasi jika diperlukan $interval = intervalFormat($_POST['durasi']); // Skrip On Login yang akan dipasang di profil Hotspot $onLoginScript = ':local nama $user; :local tanggal [/system clock get date]; :local waktu [/system clock get time]; :if ([/ip hotspot user get [find name=$nama] comment] = "") do={/ip hotspot user set [find name=$nama] comment="Login.$tanggal $waktu"; :log warning ("User " . $nama . " berhasil login.")} else={:log warning ("User " . $nama . " berhasil melakukan login ulang.")}; :if ([/system schedule find name=$nama] = "") do={/system schedule add name=$nama interval='.$interval.' on-event="/ip hotspot active remove [find user=$nama]; /ip hotspot user remove [find name=$nama]; /system schedule remove [find name=$nama]" start-date=$tanggal start-time=$waktu;}'; // Update skrip On Login $response = $API->comm('/ip/hotspot/user/profile/set', [ '.id' => $profileId, 'on-login' => $onLoginScript, ]); } sendResponse(true, 'Data Form Komplit, Profile Hotspot di Mikrotik sesuai.'); } else { sendResponse(false, 'Profil Hotspot tidak ditemukan di Mikrotik.'); } } } else { $mikrotikValid = false; sendResponse(false, 'Koneksi ke Mikrotik gagal, silakan perbaiki koneksi.'); } } catch (Exception $e) { $mikrotikValid = false; sendResponse(false, 'Terjadi kesalahan saat menghubungkan ke Mikrotik: ' . $e->getMessage()); } } // Kirimkan respon sukses jika data berhasil disimpan sendResponse(true, 'Data Form Komplit.'); } else { sendResponse(false, 'Permintaan tidak valid.'); } ?>