Pada pembahasan kali ini saya ingin berbagi script PHP yang sudah saya buat dengan menggunakan API MIKROTIK, tujuan script ini untuk membuat variable sendiri pada halaman status mikrotik yang pada dasarnya mikrotik sendiri sudah memberikan variable yang bisa langsung kalian pakai berikut link variable default mikrotik :
https://wiki.mikrotik.com/wiki/Manual:Customizing_Hotspot
Pada script yang sudah saya buat ada 2 variable yang sudah saya modif yaitu :
- Membaca Profile User.
- Membaca Total kuota terpakai.
Pada script berikut saya hanya membuat modif 2 variable tambahan dan jika kalian bisa mengeditnya masih banyak lagi variable yang bisa kalian buat sendiri, kali ini saya hanya memberi 2 contoh saja dan kalian bisa mengembangkannya sendiri. Langsung saja kita ke pokok pembahasan ya...
Persiapan pertama :
- Kamu harus mengaktifkan akses API pada mikrotik (IP - Service).
- Download routeros_api.class.php
- Copy script dibawa ini dengan nama file hotspot.php (nama sesuaikan saja)
<?php
error_reporting(0);
header('Content-Type: application/json');
header("Access-Control-Allow-Origin: *");
require ('routeros_api.class.php');
/* Pengaturan Mikrotik server */
define('MIKROTIK_IP', 'IP_MIKROTIK_API:PORT_API');
define('MIKROTIK_USERNAME', 'USERNAME_MIKROTIK');
define('MIKROTIK_PASSWORD', 'PASSWORD_MIKROTIK');
function chkAdmin($val, $arr)
{
foreach ($arr as $arr_val)
{
if ($arr_val == $val)
{
return true;
}
}
return false;
}
function Size($path)
{
$bytes = $path;
if ($bytes > 0)
{
$unit = intval(log($bytes, 1024));
$units = array(
'B',
'KB',
'MB',
'GB'
);
if (array_key_exists($unit, $units) === true)
{
return sprintf('%d %s', $bytes / pow(1024, $unit) , $units[$unit]);
}
}
return $bytes;
}
if ($_GET["voucher"])
{
$vcr = $_GET["voucher"];
$APIMIKROTIK = new RouterosAPI();
#$APIMIKROTIK->debug = true;
#Cek profile mikrotik ada apa tidak dengan yang user input
if ($APIMIKROTIK->connect(MIKROTIK_IP, MIKROTIK_USERNAME, MIKROTIK_PASSWORD))
{
$getprofile = $APIMIKROTIK->comm("/ip/hotspot/user/print", array(
"?name" => $vcr
));
$TotalReg = count($getprofile);
$options = array();
for ($i = 0;$i < $TotalReg;$i++)
{
$regtable = $getprofile[$i];
$nama = $regtable['name'];
$profil = $regtable['profile'];
$kuota = Size($regtable['bytes-out']);
$namaProfilHotspot = explode("_", $profil)[1];
array_push($options, $namaProfilHotspot);
}
$ProfilAdaTidak = chkAdmin($namaProfilHotspot, $options);
if ($ProfilAdaTidak)
{
$DataDetail = array(
'Hasil' => array(
'url' => array(
'msg' => 'ok',
'Voucher' => $nama,
'Paket' => $namaProfilHotspot,
'Kuota Terpakai' => $kuota
) ,
)
);
}
else
{
$DataDetail = array(
'Hasil' => array(
'url' => array(
'msg' => 'Data voucher tidak ditemukan.'
) ,
)
);
}
}
echo json_encode($DataDetail, JSON_PRETTY_PRINT);
$APIMIKROTIK->disconnect();
}
?>
Beberapa hal yang harus diganti pada script diatas :
- IP_MIKROTIK_API
- PORT_API
- USERNAME_MIKROTIK
- PASSWORD_MIKROTIK
Upload file tersebut di hosting kamu ya gaes, dan untuk mencoba berjalan apa tidak kalian akses dulu manual file tersebut misal :
https://fmt-tools.com/api/hotspot.php?voucher=gilang
Pada gambar diatas bisa disimpulkan script kalian berjalan dengan baik, selanjutkan tinggal kita implementasikan ke status.html pada hotspot kita. tambahkan javascript berikut di header status.
<script type="text/javascript">
function createXHR(){var a=false;try{a=new ActiveXObject('Msxml2.XMLHTTP')}catch(err2){try{a=new ActiveXObject('Microsoft.XMLHTTP')}catch(err3){try{a=new XMLHttpRequest()}catch(err1){a=false}}}return a};
var h = createXHR();
var i = 'https://fmt-tools.com/api/hotspot.php?voucher=$(username)';
h.open('GET', i, true);
h.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
h.onload = function() {
if (h.readyState == 4 && h.status == 200) {
var data = h.responseText;
var jsonResponse = JSON.parse(data);
var kodeVoucher = jsonResponse["Hasil"]["url"]["Voucher"];
var paket = jsonResponse["Hasil"]["url"]["Paket"];
var kuota = jsonResponse["Hasil"]["url"]["Kuota Terpakai"];
$('#vcr').html(kodeVoucher);
$('#pkt').html(paket);
$('#kuota').html(kuota);
}
};
h.send();
</script>
Ok dari tahap ini kalian sudah bisa menampilkan Nama profile dan jumlah kuota terpakai, semoga artikel ini dapat bermanfaat dan jangan lupa tinggalkan komentar jika ada hal yang ditanyakan.
Berikut variable yang bisa di pakai :
<span id="vcr"></span>
<span id="pkt"></span>
<span id="kuota"></span>
Contoh format profile di hotspot : paket_1jam, paket_2jam
Gunakan awalan paket_NAMAPAKET