Skip to content

Latest commit

 

History

History
199 lines (142 loc) · 5.55 KB

README-id.md

File metadata and controls

199 lines (142 loc) · 5.55 KB

ROS REST - RouterOS REST API

Pengantar

Buat permintaan HTTP (REST API) dari Node.js ke RouterOS. REST API adalah fitur baru, ini mulai tersedia di RouterOS v7.1beta4.

Getting Started

Prasyarat

  • 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
    

Instalasi

Untuk menginstall ROS REST, jalankan perintah berikut:

npm:

npm i ros-rest

atau, yarn:

yarn add ros-rest

Konfigurasi

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 menjadi false (default). Jika sertifikat divalidasi oleh otoritas seritifkat (CA) dan RouterOS dapat diakses melalui jaringan publik, atur secure menjadi true untuk keamanan.

Method

Berikut daftar method yang bisa kita gunakan yang dikembalikan fungsi rosRest:

HTTP RouterOS ROS REST Description
GET print print 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:

print

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');

add

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',
});

set

Contoh memperbarui komentar IP Address yang memiliki id *13:

clientRosRest.set('ip/address/*13', {
  comment: 'update comment test ROS REST',
});

remove

Contoh menghapus IP Address yang memiliki id *13:

clientRosRest.remove('ip/address/*13');

command

Semua fitur API tersedia melalui command metode.

clientRosRest.command('interface/print', {
  '.proplist': ['name', 'type'],
});

// or

clientRosRest.command('interface/print', {
  '.proplist': 'name,type',
});

Berkontribusi

Kontribusi, masalah, dan permintaan fitur dipersilakan. Jangan ragu untuk memeriksa halaman masalah jika Anda ingin berkontribusi.