Update Voucher , Tiket , Dashboard
membuat perubahan dan update
This commit is contained in:
+439
-20
@@ -6,7 +6,7 @@
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<h3 class="card-title">Setting Mikrotik</h3>
|
||||
<h3 class="card-title">Setting Mikrotik <?=$SvId;?></h3>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="float-sm-right mb-0">
|
||||
@@ -35,26 +35,43 @@
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>IP Address</label>
|
||||
<input type="text" class="form-control" name="ipa" required="required">
|
||||
<input type="text" class="form-control" name="ipa" value="172.0.0.1" required="required">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Port API Mikrotik</label>
|
||||
<input type="text" class="form-control" name="pam" required="required">
|
||||
<input type="text" class="form-control" name="pam" value="0" required="required">
|
||||
<i class="text-danger">Isi Jika memiliki IP Public</i>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Port Remote Modem</label>
|
||||
<input type="text" class="form-control" name="prm" required="required">
|
||||
<input type="text" class="form-control" name="prm" value="0" required="required">
|
||||
<i class="text-danger">Isi Jika memiliki IP Public</i>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Tambahan</label>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="tunnel" value="1" id="checkbox1-0">
|
||||
<label class="form-check-label" for="checkbox1">
|
||||
Buatkan saya tunnel Port API Mikrotik dan Port Remote Modem
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="radius" value="1" id="checkbox2-0">
|
||||
<label class="form-check-label" for="checkbox2">
|
||||
Menggunakan radius server
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="card-body pb-0">
|
||||
<div class="form-group">
|
||||
<label>Username</label>
|
||||
<label>Username Mikrotik</label>
|
||||
<input type="text" class="form-control" name="usm" required="required">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Password</label>
|
||||
<label>Password Mikrotik</label>
|
||||
<input type="text" class="form-control" name="psw" required="required">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -86,22 +103,64 @@
|
||||
if (isset($_POST['tambah'])) {
|
||||
$user_remote = 'Test';
|
||||
$last_remote = date('Y-m-d H:i:s');
|
||||
|
||||
try {
|
||||
// Misalkan $pdo adalah koneksi PDO yang sudah dibuat sebelumnya
|
||||
// Cek apakah tunnel dibuat
|
||||
if (!empty($_POST['tunnel']) && $_POST['tunnel'] == 1 || !empty($_POST['radius']) && $_POST['radius'] == 1) {
|
||||
|
||||
$nasgroup = "server" . $SvId;
|
||||
|
||||
$tunnel = new CreateTunnel();
|
||||
$resultTun = $tunnel->addTunnel($_POST['nmk'] . '_' . $_POST['ids'], $nasgroup);
|
||||
$radius_nas_data = $resultTun;
|
||||
|
||||
$decodedResult = json_decode($resultTun);
|
||||
$nasname = $decodedResult->data->{"remote-address"} ?? null;
|
||||
$shortname = strtok($decodedResult->data->{"name"}, '@');
|
||||
$nassecret = $decodedResult->data->{"nas_secret"} ?? null;
|
||||
|
||||
//Add nas Radius Sevrver
|
||||
if ($decodedResult->{'status'} == true && $_POST['radius'] == 1) {
|
||||
$radius = new CrudRadiusServer();
|
||||
$radius->request('add_nas', 'POST', [
|
||||
'nasname' => $nasname,
|
||||
'shortname' => $shortname,
|
||||
'secret' => $nassecret,
|
||||
'nasnamegroup' => $nasgroup
|
||||
]);
|
||||
}
|
||||
|
||||
$address = "tunnel.manjapro.net";
|
||||
$portApi = $decodedResult->data->{"port-api"} ?? null;
|
||||
$portRm = $decodedResult->data->{"port-remote"} ?? null;
|
||||
} else {
|
||||
$radius_nas_data = "";
|
||||
|
||||
$address = $_POST['ipa'];
|
||||
$portApi = $_POST['pam'];
|
||||
$portRm = $_POST['prm'];
|
||||
}
|
||||
|
||||
// Tentukan status radius (aktif/tidak)
|
||||
$status_radius = (!empty($_POST['radius']) && $_POST['radius'] == 1) ? 1 : 0;
|
||||
|
||||
// Insert ke DB
|
||||
$stmt = $pdo->prepare("INSERT INTO setting_mikrotik
|
||||
(id_data_server, nama, ip_address, port_api, port_remote, username, password, profile_remote, user_remote, last_remote)
|
||||
VALUES (:id_data_server, :nama, :ip_address, :port_api, :port_remote, :username, :password, :profile_remote, :user_remote, :last_remote)");
|
||||
(id_data_server, nama, ip_address, port_api, port_remote, username, password, profile_remote, user_remote, last_remote, radius_nas_data, status_radius)
|
||||
VALUES (:id_data_server, :nama, :ip_address, :port_api, :port_remote, :username, :password, :profile_remote, :user_remote, :last_remote, :radius_nas_data, :status_radius)");
|
||||
|
||||
$stmt->bindParam(':id_data_server', $_POST['ids']);
|
||||
$stmt->bindParam(':nama', $_POST['nmk']);
|
||||
$stmt->bindParam(':ip_address', $_POST['ipa']);
|
||||
$stmt->bindParam(':port_api', $_POST['pam']);
|
||||
$stmt->bindParam(':port_remote', $_POST['prm']);
|
||||
$stmt->bindParam(':ip_address', $address);
|
||||
$stmt->bindParam(':port_api', $portApi);
|
||||
$stmt->bindParam(':port_remote', $portRm);
|
||||
$stmt->bindParam(':username', $_POST['usm']);
|
||||
$stmt->bindParam(':password', $_POST['psw']);
|
||||
$stmt->bindParam(':profile_remote', $_POST['profile_remote']);
|
||||
$stmt->bindParam(':user_remote', $user_remote);
|
||||
$stmt->bindParam(':last_remote', $last_remote);
|
||||
$stmt->bindParam(':radius_nas_data', $radius_nas_data);
|
||||
$stmt->bindParam(':status_radius', $status_radius);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
sweetAlert("Data telah ditambah", "success");
|
||||
@@ -111,6 +170,7 @@
|
||||
sweetAlert("Error: " . $e->getMessage(), "error");
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -156,8 +216,10 @@
|
||||
<form class="form-inline" method="post" enctype="multipart/form-data">
|
||||
<div class="row">
|
||||
<input type="submit" name="test<?php echo $server['id']; ?>" class="btn btn-primary btn-sm" value="Test">
|
||||
<a type="button" class="btn btn-secondary btn-sm ml-1" data-toggle="modal" data-target="#modal-edit<?php echo $server['id'];?>">Edit
|
||||
</a>
|
||||
<a type="button" class="btn btn-secondary btn-sm ml-1" data-toggle="modal" data-target="#modal-edit<?php echo $server['id'];?>">Edit</a>
|
||||
<?php if(!empty($server['radius_nas_data'])) { ?>
|
||||
<a type="button" class="btn btn-success btn-sm ml-1" data-toggle="modal" data-target="#modal-detail<?php echo $server['id'];?>">Nas Detail</a>
|
||||
<?php } ?>
|
||||
<input type="submit" name="hapus<?php echo $server['id'];?>" value="Hapus" class="btn btn-danger btn-sm ml-1" />
|
||||
</div>
|
||||
</form>
|
||||
@@ -278,6 +340,21 @@
|
||||
<label>Port Remote Modem</label>
|
||||
<input type="text" class="form-control" value="<?php echo $server['port_remote']; ?>" name="prm" required="required">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Tambahan</label>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="tunnel" value="1" id="checkbox1-<?= $server['id']; ?>" <?= (!empty($server['radius_nas_data'])) ? 'checked' : ''; ?>>
|
||||
<label class="form-check-label" for="checkbox1">
|
||||
Buatkan saya tunnel Port API Mikrotik dan Port Remote Modem
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="radius" value="1" id="checkbox2-<?= $server['id']; ?>" <?= ($server['status_radius'] == 1) ? 'checked' : ''; ?>>
|
||||
<label class="form-check-label" for="checkbox2">
|
||||
Menggunakan radius server
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
@@ -319,6 +396,117 @@
|
||||
<?php
|
||||
if (isset($_POST['edit' . $server['id']])) {
|
||||
try {
|
||||
|
||||
// Jika data tunnel radius kosong tapi mau bikin tunnel & radius
|
||||
if (empty($server['radius_nas_data']) && $_POST['tunnel'] == 1) {
|
||||
|
||||
$tunnel = new CreateTunnel();
|
||||
$resultTun = $tunnel->addTunnel($_POST['nmk'] . '_' . $_POST['ids']);
|
||||
$radius_nas_data = $resultTun;
|
||||
|
||||
$decodedResult = json_decode($resultTun);
|
||||
$nasname = $decodedResult->data->{"remote-address"} ?? null;
|
||||
$shortname = strtok($decodedResult->data->{"name"}, '@');
|
||||
$nassecret = $decodedResult->data->{"nas_secret"} ?? null;
|
||||
$nasgroup = "server" . $SvId;
|
||||
|
||||
// Tambahkan NAS ke Radius jika diminta
|
||||
if ($decodedResult->{'status'} == true && !empty($_POST['radius'])) {
|
||||
$radius = new CrudRadiusServer();
|
||||
$radius->request('add_nas', 'POST', [
|
||||
'nasname' => $nasname,
|
||||
'shortname' => $shortname,
|
||||
'secret' => $nassecret,
|
||||
'nasnamegroup' => $nasgroup
|
||||
]);
|
||||
$status_radius = 1 ;
|
||||
} else {
|
||||
$status_radius = 0 ;
|
||||
}
|
||||
|
||||
$address = "tunnel.manjapro.net";
|
||||
$portApi = $decodedResult->data->{"port-api"} ?? null;
|
||||
$portRm = $decodedResult->data->{"port-remote"} ?? null;
|
||||
|
||||
}
|
||||
// Jika data tunnel radius ada tapi tunnel & radius mau dihapus
|
||||
elseif (!empty($server['radius_nas_data']) && empty($_POST['tunnel'])) {
|
||||
|
||||
$nasnameip = json_decode($server['radius_nas_data']);
|
||||
$nasipname = $nasnameip->data->{'remote-address'};
|
||||
|
||||
$radius = new CrudRadiusServer();
|
||||
$radius->request('delete_nas', 'DELETE', [
|
||||
'nasname' => $nasipname
|
||||
]);
|
||||
|
||||
$dtunnel = new CreateTunnel();
|
||||
$dresultTun = $dtunnel->deleteTunnel($server['radius_nas_data']);
|
||||
|
||||
// hapus data tunnel di db setting mikrotik
|
||||
$radius_nas_data = "";
|
||||
$status_radius = 0 ;
|
||||
|
||||
$address = $_POST['ipa'];
|
||||
$portApi = $_POST['pam'];
|
||||
$portRm = $_POST['prm'];
|
||||
|
||||
}
|
||||
// Jika tetap pakai tunnel tapi radius dinonaktifkan
|
||||
elseif (!empty($server['radius_nas_data']) && empty($_POST['radius'])) {
|
||||
|
||||
$nasnameip = json_decode($server['radius_nas_data']);
|
||||
$nasipname = $nasnameip->data->{'remote-address'};
|
||||
|
||||
$radius = new CrudRadiusServer();
|
||||
$radius->request('delete_nas', 'DELETE', [
|
||||
'nasname' => $nasipname
|
||||
]);
|
||||
|
||||
$radius_nas_data = $server['radius_nas_data'];
|
||||
$status_radius = 0 ;
|
||||
|
||||
$address = "tunnel.manjapro.net";
|
||||
$portApi = $nasnameip->data->{"port-api"};
|
||||
$portRm = $nasnameip->data->{"port-remote"};
|
||||
|
||||
}
|
||||
// Jika sudah ada tunnel lalu mau pakai radius
|
||||
elseif (!empty($server['radius_nas_data']) && $_POST['radius'] == 1) {
|
||||
|
||||
$decodedResult = json_decode($server['radius_nas_data']);
|
||||
$nasname = $decodedResult->data->{"remote-address"} ?? null;
|
||||
$shortname = strtok($decodedResult->data->{"name"}, '@');
|
||||
$nassecret = $decodedResult->data->{"nas_secret"} ?? null;
|
||||
$nasgroup = "server" . $SvId;
|
||||
|
||||
$radius = new CrudRadiusServer();
|
||||
$radius->request('add_nas', 'POST', [
|
||||
'nasname' => $nasname,
|
||||
'shortname' => $shortname,
|
||||
'secret' => $nassecret,
|
||||
'nasnamegroup' => $nasgroup
|
||||
]);
|
||||
|
||||
$radius_nas_data = $server['radius_nas_data'];
|
||||
$status_radius = 1 ;
|
||||
|
||||
$address = "tunnel.manjapro.net";
|
||||
$portApi = $decodedResult->data->{"port-api"};
|
||||
$portRm = $decodedResult->data->{"port-remote"};
|
||||
|
||||
}
|
||||
// Jika tidak menggunakan tunnel dan radius
|
||||
else {
|
||||
$radius_nas_data = "";
|
||||
$status_radius = "";
|
||||
|
||||
$address = $_POST['ipa'];
|
||||
$portApi = $_POST['pam'];
|
||||
$portRm = $_POST['prm'];
|
||||
}
|
||||
|
||||
|
||||
// Misalkan $pdo adalah koneksi PDO yang sudah dibuat sebelumnya
|
||||
$stmt = $pdo->prepare("UPDATE setting_mikrotik SET
|
||||
id_data_server = :id_data_server,
|
||||
@@ -328,40 +516,223 @@
|
||||
port_remote = :port_remote,
|
||||
username = :username,
|
||||
password = :password,
|
||||
profile_remote = :profile_remote
|
||||
profile_remote = :profile_remote,
|
||||
radius_nas_data = :radius_nas_data,
|
||||
status_radius = :status_radius
|
||||
WHERE id = :id");
|
||||
|
||||
// Mengikat parameter
|
||||
$stmt->bindParam(':id_data_server', $_POST['ids']);
|
||||
$stmt->bindParam(':nama', $_POST['nmk']);
|
||||
$stmt->bindParam(':ip_address', $_POST['ipa']);
|
||||
$stmt->bindParam(':port_api', $_POST['pam']);
|
||||
$stmt->bindParam(':port_remote', $_POST['prm']);
|
||||
$stmt->bindParam(':ip_address', $address);
|
||||
$stmt->bindParam(':port_api', $portApi);
|
||||
$stmt->bindParam(':port_remote', $portRm);
|
||||
$stmt->bindParam(':username', $_POST['usm']);
|
||||
$stmt->bindParam(':password', $_POST['psw']);
|
||||
$stmt->bindParam(':profile_remote', $_POST['profile_remote']);
|
||||
$stmt->bindParam(':radius_nas_data', $radius_nas_data);
|
||||
$stmt->bindParam(':status_radius', $status_radius);
|
||||
$stmt->bindParam(':id', $server['id']); // ID dari server yang ingin diupdate
|
||||
|
||||
// Eksekusi statement
|
||||
if ($stmt->execute()) {
|
||||
// Membuat Tunnel Radius
|
||||
sweetAlert("Data telah diubah", "success");
|
||||
}
|
||||
} catch (PDOException $e) {
|
||||
// Menangani kesalahan
|
||||
sweetAlert("Error: " . $e->getMessage(), "error");
|
||||
// sweetAlert("Error: " . $e->getMessage(), "error");
|
||||
echo $e->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
// Hapus data Mikrotik
|
||||
if (isset($_POST['hapus'.$server['id']]))
|
||||
{
|
||||
$dtunnel = new CreateTunnel();
|
||||
$dresultTun = $dtunnel->deleteTunnel($server['radius_nas_data']);
|
||||
|
||||
$nasnameip = json_decode($server['radius_nas_data']);
|
||||
$nasipname = $nasnameip->data->{'remote-address'};
|
||||
$radius = new CrudRadiusServer();
|
||||
$radius->request('delete_nas', 'DELETE', [
|
||||
'nasname' => $nasipname
|
||||
]);
|
||||
|
||||
$iddata = $server['id'];
|
||||
deleteAlert("setting_mikrotik",$iddata );
|
||||
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END Modal Edit -->
|
||||
<!-- Modal DETAIL -->
|
||||
<?php $apiScript = json_decode($server['radius_nas_data'], true)?>
|
||||
<div class="modal fade" id="modal-detail<?php echo $server['id'];?>" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header bg-success">
|
||||
<h5 class="modal-title" id="staticBackdropLabel">Detail Mikrotik</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<h6 class="mb-2 ml-4"><i class="fa fa-network-wired mr-2"></i> OVPN / L2TP / SSTP / Radius Server</h6>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="card-body pb-0 pt-0">
|
||||
|
||||
|
||||
<div class="mb-3">
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item d-flex justify-content-between p-2">
|
||||
<span>Connect To</span>
|
||||
<span class="text-muted">tunnel.manjapro.net</span>
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between p-2">
|
||||
<span>User</span>
|
||||
<span class="text-primary fw-bold"><?= $apiScript['data']['name']; ?></span>
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between p-2">
|
||||
<span>Password</span>
|
||||
<span class="text-danger fw-bold"><?= $apiScript['data']['password']; ?></span>
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between p-2">
|
||||
<span>Port API Mikrotik</span>
|
||||
<span class="text-danger fw-bold"><?= $apiScript['data']['port-api']; ?></span>
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between p-2">
|
||||
<span>Port Remote ONU</span>
|
||||
<span class="text-danger fw-bold"><?= $apiScript['data']['port-remote']; ?></span>
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between p-2">
|
||||
<span>Port SSTP</span>
|
||||
<span class="text-muted">4433</span>
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between p-2">
|
||||
<span>Port OVPN</span>
|
||||
<span class="text-muted">1199</span>
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between p-2">
|
||||
<span>Protocol OVPN</span>
|
||||
<span class="text-muted">udp</span>
|
||||
</li>
|
||||
<?php if($server['status_radius'] == 1) { ?>
|
||||
<li class="list-group-item d-flex justify-content-between p-2">
|
||||
<span>Address Radius</span>
|
||||
<span class="text-primary fw-bold">172.16.254.242</span>
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between p-2">
|
||||
<span>Protocol Radius</span>
|
||||
<span class="text-muted">udp</span>
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between p-2">
|
||||
<span>Secret Radius</span>
|
||||
<span class="text-danger fw-bold"><?= $apiScript['data']['nas_secret']; ?></span>
|
||||
</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<?php if($server['status_radius'] == 1) { ?>
|
||||
<h6 class="mt-2 mb-2">Script Radius Server</h6>
|
||||
<div class="mb-3">
|
||||
<div class="text-right" style="margin-bottom: -33px; margin-right: 2px;">
|
||||
<a onclick="copyToClipboard('script4-<?= $server['id']; ?>')" class="btn btn-sm btn-light btn-icon" title="Copy">
|
||||
<i class="fa fa-copy"></i>
|
||||
</a>
|
||||
</div>
|
||||
<pre class="bg-light border rounded p-3 mb-2" id="script4-<?= $server['id']; ?>">
|
||||
/radius
|
||||
add service=dhcp,hotspot,ppp address=172.16.254.242 protocol=udp secret=<?= $apiScript['data']['nas_secret']; ?> authentication-port=1812 accounting-port=1813 comment="Radius ManjaPro"
|
||||
/radius incoming
|
||||
set accept=yes port=3799
|
||||
/ip route
|
||||
add dst-address=172.16.254.242 gateway=172.18.1.100 check-gateway=ping distance=1 comment="Route to Radius Server"
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="card-body pb-0 pt-0">
|
||||
|
||||
<?php } ?>
|
||||
|
||||
<h6 class="mb-2">Script OVPN</h6>
|
||||
<div class="mb-3">
|
||||
<div class="text-right" style="margin-bottom: -33px; margin-right: 2px;">
|
||||
<a onclick="copyToClipboard('script1-<?= $server['id']; ?>')" class="btn btn-sm btn-light btn-icon" title="Copy">
|
||||
<i class="fa fa-copy"></i>
|
||||
</a>
|
||||
</div>
|
||||
<pre class="bg-light border rounded p-3 mb-2" id="script1-<?= $server['id']; ?>">
|
||||
/interface ovpn-client
|
||||
add name=opvn-manjapro connect-to=tunnel.manjapro.net port=1199 mode=ip protocol=udp user=<?= $apiScript['data']['name']; ?> password=<?= $apiScript['data']['password']; ?> profile=default-encryption add-default-route=no route-nopull-yes disabled=no
|
||||
/ip firewall nat
|
||||
add chain=dstnat dst-address=<?= $apiScript['data']['remote-address']; ?> protocol=tcp dst-port=<?= $apiScript['data']['port-remote']; ?> action=dst-nat to-addresses=172.0.0.1 to-port=80 comment="Remote"
|
||||
/ip service
|
||||
set api port=<?= $apiScript['data']['port-api']; ?>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<?php if($server['status_radius'] == 0) { ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="card-body pb-0 pt-0">
|
||||
<?php } ?>
|
||||
|
||||
<h6 class="mt-2 mb-2">Script L2TP</h6>
|
||||
<div class="mb-3">
|
||||
<div class="text-right" style="margin-bottom: -33px; margin-right: 2px;">
|
||||
<a onclick="copyToClipboard('script2-<?= $server['id']; ?>')" class="btn btn-sm btn-light btn-icon" title="Copy">
|
||||
<i class="fa fa-copy"></i>
|
||||
</a>
|
||||
</div>
|
||||
<pre class="bg-light border rounded p-3 mb-2" id="script2-<?= $server['id']; ?>">
|
||||
/interface l2tp-client
|
||||
add name=l2tp-manjapro connect-to=tunnel.manjapro.net user=<?= $apiScript['data']['name']; ?> password=<?= $apiScript['data']['password']; ?> profile=default-encryption add-default-route=no disabled=no
|
||||
/ip firewall nat
|
||||
add chain=dstnat dst-address=<?= $apiScript['data']['remote-address']; ?> protocol=tcp dst-port=<?= $apiScript['data']['port-remote']; ?> action=dst-nat to-addresses=172.0.0.1 to-port=80 comment="Remote"
|
||||
/ip service
|
||||
set api port=<?= $apiScript['data']['port-api']; ?>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<h6 class="mt-2 mb-2">Script SSTP</h6>
|
||||
<div class="mb-3">
|
||||
<div class="text-right" style="margin-bottom: -33px; margin-right: 2px;">
|
||||
<a onclick="copyToClipboard('script3-<?= $server['id']; ?>')" class="btn btn-sm btn-light btn-icon" title="Copy">
|
||||
<i class="fa fa-copy"></i>
|
||||
</a>
|
||||
</div>
|
||||
<pre class="bg-light border rounded p-3 mb-2" id="script3-<?= $server['id']; ?>">
|
||||
/interface sstp-client
|
||||
add name=sstp-manjapro connect-to=tunnel.manjapro.net port=4433 proxy-port=4433 user=<?= $apiScript['data']['name']; ?> password=<?= $apiScript['data']['password']; ?> profile=default-encryption add-default-route=no disabled=no
|
||||
/ip firewall nat
|
||||
add chain=dstnat dst-address=<?= $apiScript['data']['remote-address']; ?> protocol=tcp dst-port=<?= $apiScript['data']['port-remote']; ?> action=dst-nat to-addresses=172.0.0.1 to-port=80 comment="Remote"
|
||||
/ip service
|
||||
set api port=<?= $apiScript['data']['port-api']; ?>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END Modal DETAIL -->
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -400,4 +771,52 @@ $('#syncBtn').on('click', function () {
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
// Pilih semua checkbox dengan prefix "checkbox1-" dan "checkbox2-"
|
||||
document.querySelectorAll('[id^="checkbox1-"]').forEach(checkbox1 => {
|
||||
const serverId = checkbox1.id.split('-')[1]; // ambil ID unik dari checkbox1-xxx
|
||||
const checkbox2 = document.getElementById('checkbox2-' + serverId);
|
||||
|
||||
checkbox1.addEventListener('change', function () {
|
||||
if (this.checked) {
|
||||
checkbox2.checked = false; // kalau ceklis 1, hilangkan ceklis 2
|
||||
} else {
|
||||
checkbox2.checked = false;
|
||||
}
|
||||
});
|
||||
|
||||
checkbox2.addEventListener('change', function () {
|
||||
if (this.checked) {
|
||||
checkbox1.checked = true; // kalau ceklis 2, aktifkan ceklis 1
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
// const checkbox1 = document.getElementById('checkbox1');
|
||||
// const checkbox2 = document.getElementById('checkbox2');
|
||||
|
||||
// checkbox1.addEventListener('change', function () {
|
||||
// if (checkbox1.checked) {
|
||||
// checkbox2.checked = false; // kalau ceklis 1, hilangkan ceklis 2
|
||||
// } else {
|
||||
// checkbox2.checked = false;
|
||||
// }
|
||||
// });
|
||||
|
||||
// checkbox2.addEventListener('change', function () {
|
||||
// if (checkbox2.checked) {
|
||||
// checkbox1.checked = true; // kalau ceklis 2, aktifkan ceklis 1
|
||||
// }
|
||||
// });
|
||||
</script>
|
||||
|
||||
<script>
|
||||
function copyToClipboard(id) {
|
||||
const text = document.getElementById(id).innerText;
|
||||
navigator.clipboard.writeText(text);
|
||||
}
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user