A restful API for MikroTik RouterOS.
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
.gitignore
LICENSES Readme, LICENSES. Feb 20, 2017
README.md workaround for borken socket when using TLS. Feb 21, 2017
package.json workaround for borken socket when using TLS. Feb 21, 2017

README.md

restful-mikrotik

A Restful API server for MikroTik RouterOS.

usage:

% npm install restful-mikrotik
var RestfulMikrotik = require('restful-mikrotik');
var api_server = new RestfulMikrotik({
  host: '10.0.0.1',
  user: 'admin',
  password: 'password',
  listen_port: 8080,
  listen_host: '127.0.0.1'
});

// api_server.stop(); // stop API server.

Constructor of RestfulMikrotik accept an object:

properties|type|default|description :--|:--|:--|:--|:-- host|str||Router address user|str||Router username password|str||Router password port|int|8728|Router API port tls|bool/object|false|When true or object, tls will be enabled. See mikronode document for more infomation listen_port|int|8080|REST API server listen port listen_host|str|127.0.0.1|REST API server listen address

To query, send a GET request to API server:

% curl http://127.0.0.1:8080/ip/firewall/nat/print
[{".id":"*1","chain":"srcnat","action":"masquerade","out-interface":"ether1" .... 

To use command with parameters, POST a JSON object:

% curl http://127.0.0.1:8080/ip/address/comment -H 'Content-Type: application/json' -X POST -d '{"=numbers": 5, "=comment": "VPN"}'
[] 
# equivalent to "/ip address comment numbers=5 comment=VPN"

To query with condition, POST a JSON object:

% curl http://127.0.0.1:8080/ip/address/print -H 'Content-Type: application/json' -X POST -d '{"?interface": "ether1"}'
[{".id":"*2","address":"172.19.38.45/24","network":"172.19.38.0","interface":"ether1","actual-interface":"ether1","invalid":"false","dynamic":"true","disabled":"false"}]
# equivalent to "/ip address print where interface=ether1"

For more information about query/parameter, see mikrotik wiki.

TODO

  • (Real) TLS fix? - For whatever reason, connection using tls close itself after channel closed, maybe problem with mikronode?