Connect to OpenVPN management port through telnet.
$ npm install telnet-openvpn --save
var TelnetVPN = require('telnet-openvpn');
var vpn = new TelnetVPN();
var options = {
host: '127.0.0.1',
port: 1337,
ors: '\r\n',
sendTimeout: 2000
};
var auth = {
username: 'username',
password: 'password'
};
vpn.connect(options);
vpn.on('connect', function() {
vpn.exec('log on all').then(function() {
return vpn.exec('state on').then(function() {
return vpn.exec('hold release').then(function() {
return vpn.authorize(auth);
});
});
}).catch(function(error) {
console.error(error);
});
});
vpn.on('log', function(result) {
console.log(result);
});
vpn.on('error', function(result) {
console.log(result);
vpn.disconnect();
});
vpn.on('end', function(result) {
console.log(result);
vpn.destroy();
});
vpn.on('data', function(result) {
console.log(result);
});
import TelnetVPN from 'telnet-openvpn';
let vpn = new TelnetVPN();
let options = {
host: '127.0.0.1',
port: 1337,
ors: '\r\n',
sendTimeout: 2000
};
let auth = {
username: 'username',
password: 'password'
};
vpn.connect(options);
vpn.on('connect', () => {
vpn.exec('log on all').then(() => {
return vpn.exec('state on').then(() => {
return vpn.exec('hold release').then(() => {
return vpn.authorize(auth);
});
});
}).catch((error) => {
console.error(error);
});
});
vpn.on('log', (result) => {
console.log(result);
});
vpn.on('error', (error) => {
console.log(error);
vpn.disconnect();
});
vpn.on('end', (result) => {
console.log(result);
vpn.destroy();
});
vpn.on('data', (result) => {
console.log(result);
});
Connects to the management port specified in the .ovpn file.
More options can be found in the telnet-client docs.
options:
- host: Management IP address specified under "management" in .ovpn file (default: '127.0.0.1').
- port: Management port specified under "management" in .ovpn file (default: 1337).
- negotiationMandatory: Enable to disable telnet negotiations (default: true).
- ors: Output record separator. Used to execute commands from telnet console (default: '\r\n').
- sendTimeout: Waits for input return character (default: 3000).
After user connects, vpn.authorize(auth) must be called if .ovpn file specifies auth-user-pass.
options:
- username: Client username for VPN service.
- password: Client password for VPN service
Specify telnet console commands through this function.
EventEmitter options emitted as information is received from telnet console.
events:
- connect: Telnet console has successfully connected to management port.
- log: Telnet console log outputs.
- error: Telnet console error outputs.
- end: Telnet console has ended session to management port.
- data: Telnet console output data important to user (JSON Formatted).
- state: (array) Current state of telnet console.
- hold: Telnet console waiting for user commands.
- success: Telnet data successfully obtained.
- bytecount: Telnet byte count.
- bytecount_cli: Per-client byte counts.
- password: Password information sent through telnet console.
- pid: Process id of session.
Ends telnet session and triggers the 'end' event emitter.
Removes all instances of telnet console socket connection. Used for 'error' event emitter.
Closes telnet session but does not kill all telnet instances like vpn.destroy(). It is possible the server may send some data.
# OpenVPN management IP and port (localhost 1337).
management 127.0.0.1 1337
# OpenVPN wait for hold release from telnet console (vpn.exec('hold release')).
management-hold
# OpenVPN wait for authentication from telnet console (vpn.authorize(auth)).
management-query-passwords
# OpenVPN authenticate using username and password from telnet console.
auth-user-pass
Start OpenVPN through command line (requires OpenVPN) :
$ openvpn myconfig.ovpn
For more OpenVPN management commands please follow OpenVPN's documentation