Anda di halaman 1dari 24

https://s.

id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

PHP dan Mikrotik API

Arie Wijayanto
Selasa, 2 Maret 2021, 07.00 PM s/d 08.00 PM WIB
https://s.id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

Perkenalan

● SD - SMU di Merak, Cilegon, Banten


● Kuliah - Kerja di Ciampea, Kab Bogor, Jabar
● S1 Program Studi Matematika dari IPB University
● Tenaga Kependidikan non PNS tidak tetap di IPB University
● Penjual VPN pada tunnel.my.id
https://s.id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

Disclaimer

● Saya hanya sedikit paham dengan PHP


● Saya hanya sedikit paham dengan Mikrotik
● Materi ini berdasarkan pengalaman pribadi
https://s.id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

Apa itu API

API atau Application Programming Interface adalah sebuah interface yang dapat menghubungkan
aplikasi satu dengan aplikasi lainnya. Jadi, API berperan sebagai perantara antar berbagai aplikasi
berbeda, baik dalam satu platform yang sama atau lintas platform
https://s.id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

Apa itu Mikrotik, RouterOS, dan RouterBoard

● MikroTik adalah perusahaan kecil berkantor pusat di Latvia


● RouterOS adalah merupakan sistem operasi yang diperuntukkan sebagai network router.
● RouterBoard adalah suatu hardware yang dibuat oleh Mikrotik dan dapat menjalankan RouterOS
https://s.id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

Cara Mengakses RouterOS

● Winbox
● Webfig
● SSH / Telnet
● Console
● API
https://s.id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

Apa itu Mikrotik API

● Mikrotik API merupakan sebuah fitur yang berguna untuk mengakses RouterOS melalui aplikasi
pihak ketiga.
● Default-nya API menggunakan port 8728
● API command yang digunakan mirip dengan CLI mikrotik
● Manfaat integrasi API ini dapat digunakan untuk mengembangkan aplikasi sesuai keinginan client,
baik itu aplikasi webbased maupun desktop
https://s.id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

Perbandingan CLI dan API

API : /system/resource/print
https://s.id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

PHP Class untuk Mikrotik API

● https://github.com/BenMenking/routeros-api
https://s.id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

Contoh Setup di Rumah


https://s.id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

Live test langsung ke Router CHR

Akses WEB (Menu terbatas, writeable) Akses API


URL : http://id12.tunnel.my.id:3346/ Host : id12.tunnel.my.id
User : web Port : 3046
Pass : phpid User : api
Pass : phpid
Akses WEB (Menu lengkap, readonly)
URL : http://id12.tunnel.my.id:3346/
User : guest
Pass : phpid
Koneksi
<?php
require('routeros_api.class.php');

$rb = new RouterosAPI();


$host = "id12.tunnel.my.id";
$rb->port = 3046;
$username = "api";
$password = "phpid";

if ($rb->connect($host, $username, $password)) {


echo “koneksi ok”;
$rb->disconnect();
}
Debug
<?php
require('routeros_api.class.php');

$rb = new RouterosAPI();


$host = "id12.tunnel.my.id";
$rb->port = 3046;
$username = "api";
$password = "phpid";

$rb->debug = true;

if ($rb->connect($host, $username, $password)) {


echo “koneksi ok”;
$rb->disconnect();
}
Create
<?php
require('routeros_api.class.php');

$rb = new RouterosAPI();


$host = "id12.tunnel.my.id";
$rb->port = 3046;
//$rb->debug = true;
$username = "api";
$password = "phpid";

if ($rb->connect($host, $username, $password)) {


$rand = rand(10000,99999);
$rb->comm("/ppp/secret/add", array(
"name" => "kangarie_$rand",
"password" => $rand
));

$rb->disconnect();

}
Read SELECT * FROM table1
Array
Primary key
● Digunakan untuk menghapus/mengedit
( ● Direset ketika router reboot
<?php [.id] => *1
require('routeros_api.class.php'); [name] => kangarie_33915
[service] => any
[caller-id] =>
$rb = new RouterosAPI();
[password] => *****
$host = "id12.tunnel.my.id"; [profile] => default
$rb->port = 3046; [routes] =>
//$rb->debug = true; OUTPUT [limit-bytes-in] => 0
$username = "api"; [limit-bytes-out] => 0
$password = "phpid"; [last-logged-out] => jan/01/1970 00:00:00
[disabled] => false
if ($rb->connect($host, $username, $password)) { )
$rows = $rb->comm("/ppp/secret/print"); Array
(
[.id] => *7
foreach($rows as $row) { [name] => kangarie_30583
print_r($row); [service] => any
} [caller-id] =>
[password] => *****
$rb->disconnect(); [profile] => default
} [routes] =>
[limit-bytes-in] => 0
[limit-bytes-out] => 0
[last-logged-out] => jan/01/1970 00:00:00
[disabled] => false
)
Read hal.2 SELECT * FROM table1 WHERE field1=var

<?php
require('routeros_api.class.php');

$rb = new RouterosAPI();


$host = "id12.tunnel.my.id";
$rb->port = 3046;
//$rb->debug = true;
$username = "api";
$password = "phpid";

if ($rb->connect($host, $username, $password)) {


$rows = $rb->comm("/ppp/secret/print", array('?name'=>'kangarie'));

foreach($rows as $row) {
print_r($row);
}

$rb->disconnect();
}
Read hal.3 SELECT field1,field2 FROM table1 WHERE field1=var

<?php
require('routeros_api.class.php');

$rb = new RouterosAPI();


$host = "id12.tunnel.my.id";
$rb->port = 3046;
//$rb->debug = true;
$username = "api";
$password = "phpid";

if ($rb->connect($host, $username, $password)) {


$rows = $rb->comm("/ppp/secret/print", array('?name'=>'kangarie',".proplist" => ".id,name"));

foreach($rows as $row) {
print_r($row);
}

$rb->disconnect();
}
Update Bagaimana mengupdate berdasarkan nama?

Berikut step nya :


<?php
require('routeros_api.class.php');
● Read pakai filter nama
● Ambil .id
$rb = new RouterosAPI(); ● Gunakan .id utk mengupdate
$host = "id12.tunnel.my.id";
$rb->port = 3046;
//$rb->debug = true;
$username = "api";
$password = "phpid";

if ($rb->connect($host, $username, $password)) {


$rb->comm("/ppp/secret/set", array(
".id" => "*5",
"name" => "kangarie_edit"
));

$rb->disconnect();
}
Delete Bagaimana menghapus berdasarkan nama?

Berikut step nya :


<?php
require('routeros_api.class.php');
● Read pakai filter nama
● Ambil .id
$rb = new RouterosAPI(); ● Gunakan .id utk menghapus
$host = "id12.tunnel.my.id";
$rb->port = 3046;
//$rb->debug = true;
$username = "api";
$password = "phpid";

if ($rb->connect($host, $username, $password)) {


$rb->comm("/ppp/secret/remove", array(".id" => "*A"));

$rb->disconnect();
}
https://s.id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

Fungsi Pendukung bawaan PHP yang berhubungan dgn IP


*yg biasa sy pakai

● https://www.php.net/manual/en/function.long2ip.php
● https://www.php.net/manual/en/function.ip2long.php
● https://www.php.net/manual/en/function.gethostbyname.php
https://s.id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

Contoh Aplikasi PHP + Mikrotik API

● MIKHMON: https://github.com/laksa19/mikhmonv3
https://s.id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

Contoh Implementasi

● Sistem wifi dengan captive portal, semisal wifi.id


○ Restoran / cafe memberikan free wifi dengan harus pesan menu. API dapat digunakan terintegrasi dengan
sistem POS pada cafe tersebut untuk membuat user/pass captive portal.
○ Lembaga kursus memberikan free wifi khusus anggota aktif. API dapat digunakan terintegrasi dengan sistem
keanggotaan kursus
○ Dst.
● Jualan vpn mikrotik dengan client manajemen berbasis web
● Custom Mikrotik monitoring
https://s.id/php-mikrotikapi
https://s.id/php-mikrotikapi-files

Pustaka Referensi

● https://mikrotik.com/
● https://wiki.mikrotik.com/wiki/Main_Page
● https://wiki.mikrotik.com/wiki/Manual:API
● https://github.com/BenMenking/routeros-api
Sesi Tanya Jawab

Anda mungkin juga menyukai