easynetconf
Version:
Wrapper for the node-yuma123 netconf bindings
63 lines (52 loc) • 2.03 kB
JavaScript
import { createRequire } from "module";
import { yuma123, yangcli, getErrorMessage } from "node-yuma123";
const require = createRequire(import.meta.url);
const { XMLParser } = require("fast-xml-parser");
class easyNetconf {
constructor(server=null, port=null, username=null, password=null, privatekey_path=null, publickey_path=null) {
this.connected = false;
this.session = null;
this.parser = new XMLParser();
if(server != null && port != null) {
this.connect(server, port, username, password, privatekey_path, publickey_path);
}
}
connect(server, port, username, password, privatekey_path=null, publickey_path=null, timeout=30) {
if(!this.connected) {
this.session = safeConnect(server, port, username, password, privatekey_path, publickey_path, `--timeout=${timeout}`);
this.connected = true;
}
}
async_connect(server, port, username, password, privatekey_path=null, publickey_path=null, timeout=30) {
return new Promise((resolve, reject) => {
if(!this.connected) {
yuma123.yangrpc.async_connect(server, port, username, password, privatekey_path, publickey_path, `--timeout=${timeout}`).then((connection) => {
this.session = connection;
this.connected = true;
resolve(this.session);
}).catch((e) => {
this.connected = false;
reject(getErrorMessage(e.code));
})
}
});
}
perform(command, parse=true) {
if(!this.connected) {
return;
}
let res = yangcli(this.session, command);
if(!parse) {
return res;
}
let jObject = this.parser.parse(res)
return jObject
}
close() {
if(this.connected) {
yuma123.yangrpc.close(this.session)
this.connected = false;
}
}
}
export { easyNetconf }