LuCI Support for IPSec VPN (Libreswan) Signed-off-by: Jaymin Patel <jem.patel@gmail.com> [fix '15h' label typo] Signed-off-by: Jo-Philipp Wich <jo@mein.io>
77 lines
2 KiB
JavaScript
77 lines
2 KiB
JavaScript
'use strict';
|
|
'require view';
|
|
'require rpc';
|
|
'require form';
|
|
'require poll';
|
|
|
|
var callLibreswanStatus = rpc.declare({
|
|
object: 'libreswan',
|
|
method: 'status',
|
|
expect: { },
|
|
});
|
|
|
|
function secondsToString(seconds) {
|
|
var str = '';
|
|
var numdays = Math.floor(seconds / 86400);
|
|
var numhours = Math.floor((seconds % 86400) / 3600);
|
|
var numminutes = Math.floor(((seconds % 86400) % 3600) / 60);
|
|
var numseconds = ((seconds % 86400) % 3600) % 60;
|
|
|
|
str = (numdays ? numdays + 'd ' : '') + (numhours ? numhours + 'h ' : '') + (numminutes ? numminutes + 'm ' : '') + numseconds + 's';
|
|
return str;
|
|
}
|
|
|
|
return view.extend({
|
|
render: function() {
|
|
var table =
|
|
E('table', { 'class': 'table lases' }, [
|
|
E('tr', { 'class': 'tr table-titles' }, [
|
|
E('th', { 'class': 'th' }, _('Name')),
|
|
E('th', { 'class': 'th' }, _('Remote')),
|
|
E('th', { 'class': 'th' }, _('Local Subnet')),
|
|
E('th', { 'class': 'th' }, _('Remote Subnet')),
|
|
E('th', { 'class': 'th' }, _('Tx')),
|
|
E('th', { 'class': 'th' }, _('Rx')),
|
|
E('th', { 'class': 'th' }, _('Phase1')),
|
|
E('th', { 'class': 'th' }, _('Phase2')),
|
|
E('th', { 'class': 'th' }, _('Status')),
|
|
E('th', { 'class': 'th' }, _('Uptime')),
|
|
E([])
|
|
])
|
|
]);
|
|
|
|
poll.add(function() {
|
|
return callLibreswanStatus().then(function(tunnelsInfo) {
|
|
var tunnels = Array.isArray(tunnelsInfo.tunnels) ? tunnelsInfo.tunnels : [];
|
|
|
|
cbi_update_table(table,
|
|
tunnels.map(function(tunnel) {
|
|
return [
|
|
tunnel.name,
|
|
tunnel.right,
|
|
tunnel.leftsubnet,
|
|
tunnel.rightsubnet,
|
|
tunnel.tx,
|
|
tunnel.rx,
|
|
tunnel.phase1 ? _('Up') : _('Down'),
|
|
tunnel.phase2 ? _('Up') : _('Down'),
|
|
tunnel.connected ? _('Up') : _('Down'),
|
|
secondsToString(tunnel.uptime),
|
|
];
|
|
}),
|
|
E('em', _('There are no active Tunnels'))
|
|
);
|
|
});
|
|
});
|
|
|
|
return E([
|
|
E('h3', _('IPSec Tunnels Summary')),
|
|
E('br'),
|
|
table
|
|
]);
|
|
},
|
|
|
|
handleSave: null,
|
|
handleSaveApply:null,
|
|
handleReset: null
|
|
});
|