Buat permintaan HTTP (REST API) dari Node.js ke RouterOS. REST API adalah fitur baru, ini mulai tersedia di RouterOS v7.1beta4.
-
Gunakan RouterOS v7.1beta4 atau yang paling baru.
-
Install Node.js.
-
Aktifkan layanan www-ssl (Winbox: IP > Services).
-
Pasang sertifikat CA, kalau hanya digunakan di jaringan lokal (untuk pengujian) buat sertifikat yang ditandatangani sendiri (self-signed), jalankan perintah berikut di Terminal Winbox (selengkapnya):
/certificate add name=ca-template days-valid=3650 common-name=your.server.url key-usage=key-cert-sign,crl-sign add name=server-template days-valid=3650 common-name=your.server.url /certificate sign ca-template name=root-ca :delay 3s sign ca=root-ca server-template name=server :delay 3s /certificate set root-ca trusted=yes set server trusted=yes /ip service set www-ssl certificate=server disabled=no
Untuk menginstall ROS REST, jalankan perintah berikut:
npm:
npm i ros-rest
atau, yarn:
yarn add ros-rest
const rosRest = require('ros-rest');
const clientRosRest = rosRest({
host: '192.168.100.32',
user: 'user',
password: 'password',
port: 443, // default 443
secure: false, // default false
});
Fungsi rosRest
mengharapkan objek kredential RouterOS dan mengembalikan method yang akan kita bahas di bawah.
Berikut daftar properti objek yang diharapkan rosRest
:
Properti | Tipe | Default | Deskripsi |
---|---|---|---|
host |
string | - | host RouterOS |
port |
number | 443 |
port layanan www-sssl RouterOS |
user |
string | - | user untuk masuk ke RouterOS |
password |
string | - | password untuk masuk ke RouterOS |
secure |
boolean | false |
apakah sertifikat divalidasi oleh otoritas sertifikat (CA) yang dipercaya publik? |
Catatan: Jika sertifikat ditandatangani sendiri atur
secure
menjadifalse
(default). Jika sertifikat divalidasi oleh otoritas seritifkat (CA) dan RouterOS dapat diakses melalui jaringan publik, atursecure
menjaditrue
untuk keamanan.
Berikut daftar method yang bisa kita gunakan yang dikembalikan fungsi rosRest
:
HTTP | RouterOS | ROS REST | Description |
---|---|---|---|
GET | untuk mengambil data | ||
PUT | add | add | untuk membuat data baru |
PATCH | set | set | untuk mempebarui data |
DELETE | remove | remove | untuk menghapus data |
POST | command | untuk mengakses berbagai perintah konsol |
Pelajari selengkapnya: Dokumentasi RouteOS REST API
Semua method mengembalikan Promise, kita bisa menanganinya menggunakan then/catch
atau try/catch
.
then/catch
:
clientRosRest
.print('ip/address')
.then((res) => {
console.log('result:', res);
})
.catch((err) => {
console.log('error:', err);
});
try/catch
:
const fetchRouterOS = async () => {
try {
const res = await clientRosRest.print('ip/address');
console.log('result:', res);
} catch (err) {
console.log('error:', err);
}
};
fetchRouterOS();
Untuk error handling dan response schema, lihat dokumentasi Axios:
Contoh mengambil semua data IP Address (Winbox: IP > Address):
clientRosRest.print('ip/address');
Ambil berdasarkan id, ehter, atau berdasarkan properti yang berisi nilai tertentu:
clientRosRest.print('ip/address/*2');
clientRosRest.print('ip/address/ether1');
clientRosRest.print('ip/address?network=10.155.101.0&dynamic=true');
Jika kita hanya memerlukan properti tertentu, gunakan .proplist
:
clientRosRest.print('ip/address?.proplist=address,disabled');
Contoh menambahkan IP Address baru:
clientRosRest.add('ip/address', {
address: '192.168.10.1/24',
network: '192.168.10.1',
interface: 'ether2',
comment: 'test ROS REST',
});
Contoh memperbarui komentar IP Address yang memiliki id *13
:
clientRosRest.set('ip/address/*13', {
comment: 'update comment test ROS REST',
});
Contoh menghapus IP Address yang memiliki id *13
:
clientRosRest.remove('ip/address/*13');
Semua fitur API tersedia melalui command
metode.
clientRosRest.command('interface/print', {
'.proplist': ['name', 'type'],
});
// or
clientRosRest.command('interface/print', {
'.proplist': 'name,type',
});
Kontribusi, masalah, dan permintaan fitur dipersilakan. Jangan ragu untuk memeriksa halaman masalah jika Anda ingin berkontribusi.