Home News Contact About
About Services Clients Contact

Custum status hotspot mikrotik via API

|


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

1 komentar:

  1. Do you realize there's a 12 word sentence you can speak to your man... that will induce deep emotions of love and impulsive attraction to you deep inside his heart?

    Because hidden in these 12 words is a "secret signal" that fuels a man's instinct to love, worship and guard you with all his heart...

    12 Words That Trigger A Man's Desire Response

    This instinct is so built-in to a man's brain that it will drive him to try harder than ever before to do his best at looking after your relationship.

    Matter of fact, triggering this all-powerful instinct is so important to getting the best ever relationship with your man that the second you send your man one of these "Secret Signals"...

    ...You will instantly find him open his mind and soul for you in such a way he never experienced before and he will see you as the one and only woman in the universe who has ever truly tempted him.

    BalasHapus