Add remaining project files (exclude ignored folders)
This commit is contained in:
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
// Pastikan untuk menonaktifkan tampilan error
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
// Termasuk file koneksi Mikrotik dan sesi
|
||||
include '../config/connect.php';
|
||||
include '../config/routeros_api.class.php';
|
||||
include '../config/tanggal_indo.php';
|
||||
session_start();
|
||||
|
||||
// Fungsi untuk menangani respon JSON
|
||||
function sendResponse($success, $message) {
|
||||
// Kirim respons JSON dengan status dan pesan
|
||||
echo json_encode(['success' => $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.');
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user