mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
New version of OMR-Tracker
This commit is contained in:
parent
bb64827a1e
commit
f5b3aa6831
15 changed files with 831 additions and 318 deletions
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
||||
# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
||||
#
|
||||
#
|
||||
|
||||
|
|
|
@ -0,0 +1,289 @@
|
|||
'use strict';
|
||||
'require form';
|
||||
'require fs';
|
||||
'require view';
|
||||
'require uci';
|
||||
|
||||
var cfgtypes = ['defaults','interface'];
|
||||
|
||||
return view.extend({
|
||||
load: function() {
|
||||
return Promise.all([
|
||||
L.resolveDefault(fs.stat('/usr/bin/httping'), {}),
|
||||
L.resolveDefault(fs.stat('/usr/bin/dig'), {}),
|
||||
// L.resolveDefault(fs.stat('/usr/bin/nping'), {}),
|
||||
// L.resolveDefault(fs.stat('/usr/bin/arping'), {}),
|
||||
uci.load('network')
|
||||
]);
|
||||
},
|
||||
|
||||
render: function (stats) {
|
||||
var m, s, o;
|
||||
|
||||
m = new form.Map('omr-tracker', _('OMR-Tracker - Interfaces'),
|
||||
_('Names must match the interface name found in /etc/config/network.') + '<br />' +
|
||||
_('Names may contain characters A-Z, a-z, 0-9, _ and no spaces-'));
|
||||
|
||||
//s = m.section(form.GridSection, 'defaults');
|
||||
s = m.section(form.GridSection);
|
||||
s.addremove = true;
|
||||
s.anonymous = false;
|
||||
s.nodescriptions = true;
|
||||
s.cfgsections = function() {
|
||||
return this.map.data.sections(this.map.config)
|
||||
.filter(function(s) { return cfgtypes.indexOf(s['.type']) !== -1; })
|
||||
.map(function(s) { return s['.name']; });
|
||||
};
|
||||
|
||||
o = s.option(form.Flag, 'enabled', _('Enabled'));
|
||||
o.default = false;
|
||||
|
||||
o = s.option(form.ListValue, 'initial_state', _('Initial state'),
|
||||
_('Expect interface state on up event'));
|
||||
o.default = 'online';
|
||||
o.value('online', _('Online'));
|
||||
o.value('offline', _('Offline'));
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.ListValue, 'family', _('Internet Protocol'));
|
||||
o.default = 'ipv4';
|
||||
o.value('ipv4', _('IPv4'));
|
||||
o.value('ipv6', _('IPv6'));
|
||||
o.value('ipv4ipv6', _('IPv4 & IPv6'));
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.DynamicList, 'hosts', _('Tracking hostname or IP address'),
|
||||
_('This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to use defaults settings.'));
|
||||
o.datatype = 'hosts';
|
||||
o.modalonly = true;
|
||||
o.rmempty = false;
|
||||
|
||||
o = s.option(form.DynamicList, 'hosts6', _('Tracking hostname or IP address for IPv6'),
|
||||
_('This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to use defaults settings.'));
|
||||
o.datatype = 'hosts';
|
||||
o.modalonly = true;
|
||||
o.depends('family', 'ipv4ipv6');
|
||||
o.depends('family', 'ipv6');
|
||||
o.rmempty = false;
|
||||
|
||||
o = s.option(form.ListValue, 'type', _('Tracking method'));
|
||||
o.default = 'ping';
|
||||
o.value('none');
|
||||
o.value('ping');
|
||||
if (stats[0].type === 'file') {
|
||||
o.value('httping');
|
||||
}
|
||||
if (stats[1].type === 'file') {
|
||||
o.value('dns');
|
||||
}
|
||||
/*
|
||||
if (stats[2].type === 'file') {
|
||||
o.value('nping-tcp');
|
||||
o.value('nping-udp');
|
||||
o.value('nping-icmp');
|
||||
o.value('nping-arp');
|
||||
}
|
||||
if (stats[3].type === 'file') {
|
||||
o.value('arping');
|
||||
}
|
||||
*/
|
||||
o = s.option(form.Flag, 'server_http_test', _('Server http test'),
|
||||
_('Check if connection work with http by sending a request to server'));
|
||||
o.rmempty = false;
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.Flag, 'mail_alert', _('Mail alert'),
|
||||
_('Send a mail when connection status change. You need to configure e-mail settings here.'));
|
||||
o.rmempty = false;
|
||||
o.modalonly = true;
|
||||
|
||||
/*
|
||||
o = s.option(form.Flag, 'httping_ssl', _('Enable ssl tracking'),
|
||||
_('Enables https tracking on ssl port 443'));
|
||||
o.depends('type', 'httping');
|
||||
o.rmempty = false;
|
||||
o.modalonly = true;
|
||||
*/
|
||||
|
||||
o = s.option(form.Value, 'reliability', _('Tracking reliability'),
|
||||
_('Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up'));
|
||||
o.datatype = 'range(1, 100)';
|
||||
o.default = '1';
|
||||
|
||||
o = s.option(form.ListValue, 'count', _('Ping count'));
|
||||
o.default = '1';
|
||||
o.value('1');
|
||||
o.value('2');
|
||||
o.value('3');
|
||||
o.value('4');
|
||||
o.value('5');
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.Value, 'size', _('Ping size'));
|
||||
o.default = '56';
|
||||
o.depends('type', 'ping');
|
||||
o.value('8');
|
||||
o.value('24');
|
||||
o.value('56');
|
||||
o.value('120');
|
||||
o.value('248');
|
||||
o.value('504');
|
||||
o.value('1016');
|
||||
o.value('1472');
|
||||
o.value('2040');
|
||||
o.datatype = 'range(1, 65507)';
|
||||
o.modalonly = true;
|
||||
|
||||
o =s.option(form.Value, 'max_ttl', _('Max TTL'));
|
||||
o.default = '60';
|
||||
o.depends('type', 'ping');
|
||||
o.value('10');
|
||||
o.value('20');
|
||||
o.value('30');
|
||||
o.value('40');
|
||||
o.value('50');
|
||||
o.value('60');
|
||||
o.value('70');
|
||||
o.datatype = 'range(1, 255)';
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.Flag, 'check_quality', _('Check link quality'));
|
||||
o.depends('type', 'ping');
|
||||
o.default = false;
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.Value, 'failure_latency', _('Failure latency [ms]'));
|
||||
o.depends('check_quality', '1');
|
||||
o.default = '1000';
|
||||
o.value('25');
|
||||
o.value('50');
|
||||
o.value('75');
|
||||
o.value('100');
|
||||
o.value('150');
|
||||
o.value('200');
|
||||
o.value('250');
|
||||
o.value('300');
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.Value, 'failure_loss', _('Failure packet loss [%]'));
|
||||
o.depends('check_quality', '1');
|
||||
o.default = '40';
|
||||
o.value('2');
|
||||
o.value('5');
|
||||
o.value('10');
|
||||
o.value('20');
|
||||
o.value('25');
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.Value, 'recovery_latency', _('Recovery latency [ms]'));
|
||||
o.depends('check_quality', '1');
|
||||
o.default = '500';
|
||||
o.value('25');
|
||||
o.value('50');
|
||||
o.value('75');
|
||||
o.value('100');
|
||||
o.value('150');
|
||||
o.value('200');
|
||||
o.value('250');
|
||||
o.value('300');
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.Value, 'recovery_loss', _('Recovery packet loss [%]'));
|
||||
o.depends('check_quality', '1');
|
||||
o.default = '10';
|
||||
o.value('2');
|
||||
o.value('5');
|
||||
o.value('10');
|
||||
o.value('20');
|
||||
o.value('25');
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.ListValue, "timeout", _("Ping timeout"));
|
||||
o.default = '4';
|
||||
o.value('1', _('%d second').format('1'));
|
||||
for (var i = 2; i <= 10; i++)
|
||||
o.value(String(i), _('%d seconds').format(i));
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.ListValue, 'interval', _('Ping interval'));
|
||||
o.default = '10';
|
||||
o.value('1', _('%d second').format('1'));
|
||||
o.value('3', _('%d seconds').format('3'));
|
||||
o.value('5', _('%d seconds').format('5'));
|
||||
o.value('10', _('%d seconds').format('10'));
|
||||
o.value('20', _('%d seconds').format('20'));
|
||||
o.value('30', _('%d seconds').format('30'));
|
||||
o.value('60', _('%d minute').format('1'));
|
||||
o.value('300', _('%d minutes').format('5'));
|
||||
o.value('600', _('%d minutes').format('10'));
|
||||
o.value('900', _('%d minutes').format('15'));
|
||||
o.value('1800', _('%d minutes').format('30'));
|
||||
o.value('3600', _('%d hour').format('1'));
|
||||
|
||||
o = s.option(form.Value, 'failure_interval', _('Failure interval'),
|
||||
_('Ping interval during failure detection'));
|
||||
o.default = '5';
|
||||
o.value('1', _('%d second').format('1'));
|
||||
o.value('3', _('%d seconds').format('3'));
|
||||
o.value('5', _('%d seconds').format('5'));
|
||||
o.value('10', _('%d seconds').format('10'));
|
||||
o.value('20', _('%d seconds').format('20'));
|
||||
o.value('30', _('%d seconds').format('30'));
|
||||
o.value('60', _('%d minute').format('1'));
|
||||
o.value('300', _('%d minutes').format('5'));
|
||||
o.value('600', _('%d minutes').format('10'));
|
||||
o.value('900', _('%d minutes').format('15'));
|
||||
o.value('1800', _('%d minutes').format('30'));
|
||||
o.value('3600', _('%d hour').format('1'));
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.Flag, 'keep_failure_interval', _('Keep failure interval'),
|
||||
_('Keep ping failure interval during failure state'));
|
||||
o.default = false;
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.ListValue, 'tries', _('Interface down'),
|
||||
_('Interface will be deemed down after this many failed ping tests'));
|
||||
o.default = '5';
|
||||
o.value('1');
|
||||
o.value('2');
|
||||
o.value('3');
|
||||
o.value('4');
|
||||
o.value('5');
|
||||
o.value('6');
|
||||
o.value('7');
|
||||
o.value('8');
|
||||
o.value('9');
|
||||
o.value('10');
|
||||
|
||||
o = s.option(form.ListValue, 'tries_up', _('Interface up'),
|
||||
_('Downed interface will be deemed up after this many successful ping tests'));
|
||||
o.default = "5";
|
||||
o.value('1');
|
||||
o.value('2');
|
||||
o.value('3');
|
||||
o.value('4');
|
||||
o.value('5');
|
||||
o.value('6');
|
||||
o.value('7');
|
||||
o.value('8');
|
||||
o.value('9');
|
||||
o.value('10');
|
||||
|
||||
o = s.option(form.Flag, 'restart_down', _('Restart if down'),
|
||||
_('Restart interface if detected as down.'));
|
||||
o.rmempty = false;
|
||||
o.modalonly = true;
|
||||
|
||||
|
||||
/*
|
||||
o = s.option(form.DynamicList, 'flush_conntrack', _('Flush conntrack table'),
|
||||
_('Flush global firewall conntrack table on interface events'));
|
||||
o.value('ifup', _('ifup (netifd)'));
|
||||
o.value('ifdown', _('ifdown (netifd)'));
|
||||
o.modalonly = true;
|
||||
*/
|
||||
|
||||
return m.render();
|
||||
}
|
||||
})
|
|
@ -0,0 +1,186 @@
|
|||
'use strict';
|
||||
'require form';
|
||||
'require fs';
|
||||
'require view';
|
||||
'require uci';
|
||||
|
||||
var cfgtypes = ['proxy'];
|
||||
|
||||
return view.extend({
|
||||
load: function() {
|
||||
return Promise.all([
|
||||
L.resolveDefault(fs.stat('/usr/bin/httping'), {}),
|
||||
L.resolveDefault(fs.stat('/usr/bin/dig'), {}),
|
||||
// L.resolveDefault(fs.stat('/usr/bin/nping'), {}),
|
||||
// L.resolveDefault(fs.stat('/usr/bin/arping'), {}),
|
||||
uci.load('network')
|
||||
]);
|
||||
},
|
||||
|
||||
render: function (stats) {
|
||||
var m, s, o;
|
||||
|
||||
m = new form.Map('omr-tracker', _('OMR-Tracker - Proxy'),
|
||||
_('Detect if proxy is down and stop redirection over it.'));
|
||||
|
||||
//s = m.section(form.GridSection, 'defaults');
|
||||
s = m.section(form.GridSection);
|
||||
//s.addremove = true;
|
||||
s.anonymous = false;
|
||||
s.nodescriptions = true;
|
||||
s.cfgsections = function() {
|
||||
return this.map.data.sections(this.map.config)
|
||||
.filter(function(s) { return cfgtypes.indexOf(s['.type']) !== -1; })
|
||||
.map(function(s) { return s['.name']; });
|
||||
};
|
||||
|
||||
o = s.option(form.Flag, 'enabled', _('Enabled'));
|
||||
o.default = false;
|
||||
|
||||
o = s.option(form.ListValue, 'initial_state', _('Initial state'),
|
||||
_('Expect interface state on up event'));
|
||||
o.default = 'online';
|
||||
o.value('online', _('Online'));
|
||||
o.value('offline', _('Offline'));
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.ListValue, 'family', _('Internet Protocol'));
|
||||
o.default = 'ipv4ipv6';
|
||||
//o.value('ipv4', _('IPv4'));
|
||||
//o.value('ipv6', _('IPv6'));
|
||||
o.value('ipv4ipv6', _('IPv4 & IPv6'));
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.DynamicList, 'hosts', _('Tracking hostname or IP address'),
|
||||
_('This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to assume interface is always online'));
|
||||
o.datatype = 'hosts';
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.DynamicList, 'hosts6', _('Tracking hostname or IP address for IPv6'),
|
||||
_('This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to assume interface is always online'));
|
||||
o.datatype = 'hosts';
|
||||
o.modalonly = true;
|
||||
o.depends('family', 'ipv4ipv6');
|
||||
o.depends('family', 'ipv6');
|
||||
|
||||
/*
|
||||
o = s.option(form.Flag, 'httping_ssl', _('Enable ssl tracking'),
|
||||
_('Enables https tracking on ssl port 443'));
|
||||
o.depends('track_method', 'httping');
|
||||
o.rmempty = false;
|
||||
o.modalonly = true;
|
||||
*/
|
||||
|
||||
o = s.option(form.Flag, 'mail_alert', _('Mail alert'),
|
||||
_('Send a mail when connection status change. You need to configure e-mail settings here.'));
|
||||
o.rmempty = false;
|
||||
o.modalonly = true;
|
||||
|
||||
|
||||
/*
|
||||
o = s.option(form.Value, 'reliability', _('Tracking reliability'),
|
||||
_('Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up'));
|
||||
o.datatype = 'range(1, 100)';
|
||||
o.default = '1';
|
||||
*/
|
||||
o = s.option(form.ListValue, 'tries', _('Test count'));
|
||||
o.default = '1';
|
||||
o.value('1');
|
||||
o.value('2');
|
||||
o.value('3');
|
||||
o.value('4');
|
||||
o.value('5');
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.ListValue, "timeout", _("Test timeout"));
|
||||
o.default = '4';
|
||||
o.value('1', _('%d second').format('1'));
|
||||
for (var i = 2; i <= 10; i++)
|
||||
o.value(String(i), _('%d seconds').format(i));
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.ListValue, 'interval', _('Test interval'));
|
||||
o.default = '10';
|
||||
o.value('1', _('%d second').format('1'));
|
||||
o.value('3', _('%d seconds').format('3'));
|
||||
o.value('5', _('%d seconds').format('5'));
|
||||
o.value('10', _('%d seconds').format('10'));
|
||||
o.value('20', _('%d seconds').format('20'));
|
||||
o.value('30', _('%d seconds').format('30'));
|
||||
o.value('60', _('%d minute').format('1'));
|
||||
o.value('300', _('%d minutes').format('5'));
|
||||
o.value('600', _('%d minutes').format('10'));
|
||||
o.value('900', _('%d minutes').format('15'));
|
||||
o.value('1800', _('%d minutes').format('30'));
|
||||
o.value('3600', _('%d hour').format('1'));
|
||||
/*
|
||||
o = s.option(form.Value, 'failure_interval', _('Failure interval'),
|
||||
_('Ping interval during failure detection'));
|
||||
o.default = '5';
|
||||
o.value('1', _('%d second').format('1'));
|
||||
o.value('3', _('%d seconds').format('3'));
|
||||
o.value('5', _('%d seconds').format('5'));
|
||||
o.value('10', _('%d seconds').format('10'));
|
||||
o.value('20', _('%d seconds').format('20'));
|
||||
o.value('30', _('%d seconds').format('30'));
|
||||
o.value('60', _('%d minute').format('1'));
|
||||
o.value('300', _('%d minutes').format('5'));
|
||||
o.value('600', _('%d minutes').format('10'));
|
||||
o.value('900', _('%d minutes').format('15'));
|
||||
o.value('1800', _('%d minutes').format('30'));
|
||||
o.value('3600', _('%d hour').format('1'));
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.Flag, 'keep_failure_interval', _('Keep failure interval'),
|
||||
_('Keep ping failure interval during failure state'));
|
||||
o.default = false;
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.Value, 'recovery_interval', _('Recovery interval'),
|
||||
_('Ping interval during failure recovering'));
|
||||
o.default = '5';
|
||||
o.value('1', _('%d second').format('1'));
|
||||
o.value('3', _('%d seconds').format('3'));
|
||||
o.value('5', _('%d seconds').format('5'));
|
||||
o.value('10', _('%d seconds').format('10'));
|
||||
o.value('20', _('%d seconds').format('20'));
|
||||
o.value('30', _('%d seconds').format('30'));
|
||||
o.value('60', _('%d minute').format('1'));
|
||||
o.value('300', _('%d minutes').format('5'));
|
||||
o.value('600', _('%d minutes').format('10'));
|
||||
o.value('900', _('%d minutes').format('15'));
|
||||
o.value('1800', _('%d minutes').format('30'));
|
||||
o.value('3600', _('%d hour').format('1'));
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.ListValue, 'tries', _('Proxy down'),
|
||||
_('Proxy will be deemed down after this many failed tests'));
|
||||
o.default = '5';
|
||||
o.value('1');
|
||||
o.value('2');
|
||||
o.value('3');
|
||||
o.value('4');
|
||||
o.value('5');
|
||||
o.value('6');
|
||||
o.value('7');
|
||||
o.value('8');
|
||||
o.value('9');
|
||||
o.value('10');
|
||||
|
||||
o = s.option(form.ListValue, 'tries_up', _('Interface up'),
|
||||
_('Downed interface will be deemed up after this many successful ping tests'));
|
||||
o.default = "5";
|
||||
o.value('1');
|
||||
o.value('2');
|
||||
o.value('3');
|
||||
o.value('4');
|
||||
o.value('5');
|
||||
o.value('6');
|
||||
o.value('7');
|
||||
o.value('8');
|
||||
o.value('9');
|
||||
o.value('10');
|
||||
*/
|
||||
return m.render();
|
||||
}
|
||||
})
|
|
@ -0,0 +1,163 @@
|
|||
'use strict';
|
||||
'require form';
|
||||
'require fs';
|
||||
'require view';
|
||||
'require uci';
|
||||
|
||||
var cfgtypes = ['server'];
|
||||
|
||||
return view.extend({
|
||||
load: function() {
|
||||
return Promise.all([
|
||||
L.resolveDefault(fs.stat('/usr/bin/httping'), {}),
|
||||
L.resolveDefault(fs.stat('/usr/bin/dig'), {}),
|
||||
// L.resolveDefault(fs.stat('/usr/bin/nping'), {}),
|
||||
// L.resolveDefault(fs.stat('/usr/bin/arping'), {}),
|
||||
uci.load('network')
|
||||
]);
|
||||
},
|
||||
|
||||
render: function (stats) {
|
||||
var m, s, o;
|
||||
|
||||
m = new form.Map('omr-tracker', _('OMR-Tracker - Server'),
|
||||
_('Detect if server is down and use defined backup server in this case.'));
|
||||
|
||||
//s = m.section(form.GridSection, 'defaults');
|
||||
s = m.section(form.GridSection);
|
||||
//s.addremove = true;
|
||||
s.anonymous = false;
|
||||
s.nodescriptions = true;
|
||||
s.cfgsections = function() {
|
||||
return this.map.data.sections(this.map.config)
|
||||
.filter(function(s) { return cfgtypes.indexOf(s['.type']) !== -1; })
|
||||
.map(function(s) { return s['.name']; });
|
||||
};
|
||||
|
||||
o = s.option(form.Flag, 'enabled', _('Enabled'));
|
||||
o.default = false;
|
||||
|
||||
o = s.option(form.ListValue, 'initial_state', _('Initial state'),
|
||||
_('Expect interface state on up event'));
|
||||
o.default = 'online';
|
||||
o.value('online', _('Online'));
|
||||
o.value('offline', _('Offline'));
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.Flag, 'mail_alert', _('Mail alert'),
|
||||
_('Send a mail when connection status change. You need to configure e-mail settings here.'));
|
||||
o.rmempty = false;
|
||||
o.modalonly = true;
|
||||
/*
|
||||
o = s.option(form.Value, 'reliability', _('Tracking reliability'),
|
||||
_('Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up'));
|
||||
o.datatype = 'range(1, 100)';
|
||||
o.default = '1';
|
||||
*/
|
||||
o = s.option(form.ListValue, 'tries', _('Test count'));
|
||||
o.default = '1';
|
||||
o.value('1');
|
||||
o.value('2');
|
||||
o.value('3');
|
||||
o.value('4');
|
||||
o.value('5');
|
||||
o.modalonly = true;
|
||||
|
||||
/*
|
||||
o = s.option(form.Flag, 'check_quality', _('Check link quality'));
|
||||
o.depends('track_method', 'ping');
|
||||
o.default = false;
|
||||
o.modalonly = true;
|
||||
*/
|
||||
o = s.option(form.ListValue, "timeout", _("Test timeout"));
|
||||
o.default = '4';
|
||||
o.value('1', _('%d second').format('1'));
|
||||
for (var i = 2; i <= 10; i++)
|
||||
o.value(String(i), _('%d seconds').format(i));
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.ListValue, 'interval', _('Test interval'));
|
||||
o.default = '10';
|
||||
o.value('1', _('%d second').format('1'));
|
||||
o.value('3', _('%d seconds').format('3'));
|
||||
o.value('5', _('%d seconds').format('5'));
|
||||
o.value('10', _('%d seconds').format('10'));
|
||||
o.value('20', _('%d seconds').format('20'));
|
||||
o.value('30', _('%d seconds').format('30'));
|
||||
o.value('60', _('%d minute').format('1'));
|
||||
o.value('300', _('%d minutes').format('5'));
|
||||
o.value('600', _('%d minutes').format('10'));
|
||||
o.value('900', _('%d minutes').format('15'));
|
||||
o.value('1800', _('%d minutes').format('30'));
|
||||
o.value('3600', _('%d hour').format('1'));
|
||||
/*
|
||||
o = s.option(form.Value, 'failure_interval', _('Failure interval'),
|
||||
_('Ping interval during failure detection'));
|
||||
o.default = '5';
|
||||
o.value('1', _('%d second').format('1'));
|
||||
o.value('3', _('%d seconds').format('3'));
|
||||
o.value('5', _('%d seconds').format('5'));
|
||||
o.value('10', _('%d seconds').format('10'));
|
||||
o.value('20', _('%d seconds').format('20'));
|
||||
o.value('30', _('%d seconds').format('30'));
|
||||
o.value('60', _('%d minute').format('1'));
|
||||
o.value('300', _('%d minutes').format('5'));
|
||||
o.value('600', _('%d minutes').format('10'));
|
||||
o.value('900', _('%d minutes').format('15'));
|
||||
o.value('1800', _('%d minutes').format('30'));
|
||||
o.value('3600', _('%d hour').format('1'));
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.Flag, 'keep_failure_interval', _('Keep failure interval'),
|
||||
_('Keep ping failure interval during failure state'));
|
||||
o.default = false;
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.Value, 'recovery_interval', _('Recovery interval'),
|
||||
_('Ping interval during failure recovering'));
|
||||
o.default = '5';
|
||||
o.value('1', _('%d second').format('1'));
|
||||
o.value('3', _('%d seconds').format('3'));
|
||||
o.value('5', _('%d seconds').format('5'));
|
||||
o.value('10', _('%d seconds').format('10'));
|
||||
o.value('20', _('%d seconds').format('20'));
|
||||
o.value('30', _('%d seconds').format('30'));
|
||||
o.value('60', _('%d minute').format('1'));
|
||||
o.value('300', _('%d minutes').format('5'));
|
||||
o.value('600', _('%d minutes').format('10'));
|
||||
o.value('900', _('%d minutes').format('15'));
|
||||
o.value('1800', _('%d minutes').format('30'));
|
||||
o.value('3600', _('%d hour').format('1'));
|
||||
o.modalonly = true;
|
||||
|
||||
o = s.option(form.ListValue, 'down', _('Interface down'),
|
||||
_('Interface will be deemed down after this many failed ping tests'));
|
||||
o.default = '5';
|
||||
o.value('1');
|
||||
o.value('2');
|
||||
o.value('3');
|
||||
o.value('4');
|
||||
o.value('5');
|
||||
o.value('6');
|
||||
o.value('7');
|
||||
o.value('8');
|
||||
o.value('9');
|
||||
o.value('10');
|
||||
|
||||
o = s.option(form.ListValue, 'up', _('Interface up'),
|
||||
_('Downed interface will be deemed up after this many successful ping tests'));
|
||||
o.default = "5";
|
||||
o.value('1');
|
||||
o.value('2');
|
||||
o.value('3');
|
||||
o.value('4');
|
||||
o.value('5');
|
||||
o.value('6');
|
||||
o.value('7');
|
||||
o.value('8');
|
||||
o.value('9');
|
||||
o.value('10');
|
||||
*/
|
||||
return m.render();
|
||||
}
|
||||
})
|
|
@ -1,6 +0,0 @@
|
|||
module("luci.controller.omr-tracker", package.seeall)
|
||||
|
||||
function index()
|
||||
--entry({"admin", "openmptcprouter", "omr-tracker"}, cbi("omr-tracker"), _("OMR-Tracker"))
|
||||
entry({"admin", "services", "omr-tracker"}, cbi("omr-tracker"), _("OMR-Tracker"))
|
||||
end
|
|
@ -1,254 +0,0 @@
|
|||
local net = require "luci.model.network".init()
|
||||
local sys = require "luci.sys"
|
||||
local m, s, o
|
||||
|
||||
m = Map("omr-tracker", translate("OMR-Tracker"))
|
||||
|
||||
s = m:section(TypedSection, "proxy", translate("Proxy tracker Settings"), translate("Detect if Proxy is down and stop traffic redirection over it."))
|
||||
s.anonymous = true
|
||||
s.addremove = false
|
||||
|
||||
local sdata = m:get('proxy')
|
||||
if not sdata then
|
||||
m:set('proxy', nil, 'proxy')
|
||||
m:set('proxy', 'enabled', "1")
|
||||
end
|
||||
|
||||
o = s:option(Flag, "enabled", translate("Enable"), translate("When tracker is disabled, connection failover is also disabled"))
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "timeout", translate("Timeout (s)"))
|
||||
o.placeholder = "1"
|
||||
o.default = "1"
|
||||
o.datatype = "range(1, 100)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "tries", translate("Tries"))
|
||||
o.placeholder = "4"
|
||||
o.default = "4"
|
||||
o.datatype = "range(1, 10)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "interval", translate("Retry interval (s)"))
|
||||
o.placeholder = "2"
|
||||
o.default = "2"
|
||||
o.datatype = "range(1, 100)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "wait_test", translate("Wait after a failed test (s)"))
|
||||
o.placeholder = "0"
|
||||
o.default = "0"
|
||||
o.datatype = "range(0, 100)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Flag, "mail_alert", translate("Mail alert"), translate("Send a mail when connection state change"))
|
||||
o.optional = false
|
||||
o.rmempty = false
|
||||
o.default = false
|
||||
o.disabled = 0
|
||||
o.enabled = 1
|
||||
|
||||
o = s:option(DynamicList, "hosts", translate("Hosts"), translate("IPs or domains must be available over http"))
|
||||
o.placeholder = "bing.com"
|
||||
o.default = { "bing.com", "google.com" }
|
||||
o.rmempty = false
|
||||
|
||||
|
||||
s = m:section(TypedSection, "server", translate("Server tracker Settings"), translate("Detect if Server is down and use defined backup server in this case."))
|
||||
s.anonymous = true
|
||||
s.addremove = false
|
||||
|
||||
local sdata = m:get('server')
|
||||
if not sdata then
|
||||
m:set('server', nil, 'server')
|
||||
m:set('server', 'enabled', "1")
|
||||
end
|
||||
|
||||
o = s:option(Flag, "enabled", translate("Enable"), translate("When tracker is disabled, server failover is also disabled"))
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "timeout", translate("Timeout (s)"))
|
||||
o.placeholder = "1"
|
||||
o.default = "1"
|
||||
o.datatype = "range(1, 100)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "tries", translate("Tries"))
|
||||
o.placeholder = "4"
|
||||
o.default = "4"
|
||||
o.datatype = "range(1, 10)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "interval", translate("Retry interval (s)"))
|
||||
o.placeholder = "2"
|
||||
o.default = "2"
|
||||
o.datatype = "range(1, 100)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "wait_test", translate("Wait after a failed test (s)"))
|
||||
o.placeholder = "0"
|
||||
o.default = "0"
|
||||
o.datatype = "range(0, 100)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Flag, "mail_alert", translate("Mail alert"), translate("Send a mail when connection state change"))
|
||||
o.optional = false
|
||||
o.rmempty = false
|
||||
o.default = false
|
||||
o.disabled = 0
|
||||
o.enabled = 1
|
||||
|
||||
s = m:section(TypedSection, "defaults", translate("Defaults Settings"), translate("OMR-Tracker create needed routes and detect when a connection is down or up"))
|
||||
s.anonymous = true
|
||||
|
||||
o = s:option(Flag, "enabled", translate("Enable"), translate("When tracker is disabled, connection failover is also disabled"))
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "timeout", translate("Timeout (s)"))
|
||||
o.placeholder = "1"
|
||||
o.default = "1"
|
||||
o.datatype = "range(1, 100)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "tries", translate("Tries"), translate("How many times repeat test"))
|
||||
o.placeholder = "4"
|
||||
o.default = "4"
|
||||
o.datatype = "range(1, 10)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "count", translate("Count"), translate("How many packets send on each test"))
|
||||
o.placeholder = "2"
|
||||
o.default = "2"
|
||||
o.datatype = "range(1, 100)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "interval", translate("Retry interval (s)"))
|
||||
o.placeholder = "2"
|
||||
o.default = "2"
|
||||
o.datatype = "range(1, 100)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "wait_test", translate("Wait after a failed test (s)"))
|
||||
o.placeholder = "0"
|
||||
o.default = "0"
|
||||
o.datatype = "range(0, 100)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(ListValue, "type", translate("Type"), translate("Always ping gateway, then test connection by ping, httping or dns. None mode only ping gateway."))
|
||||
o:value("ping","ping")
|
||||
o:value("httping","httping")
|
||||
o:value("dns","dns")
|
||||
o:value("none","none")
|
||||
|
||||
o = s:option(Flag, "server_http_test", translate("Server http test"), translate("Check if connection work with http by sending a request to server"))
|
||||
o.optional = false
|
||||
o.rmempty = false
|
||||
o.default = true
|
||||
o.disabled = 0
|
||||
o.enabled = 1
|
||||
|
||||
o = s:option(Flag, "mail_alert", translate("Mail alert"), translate("Send a mail when connection state change"))
|
||||
o.optional = false
|
||||
o.rmempty = false
|
||||
o.default = false
|
||||
o.disabled = 0
|
||||
o.enabled = 1
|
||||
|
||||
o = s:option(Flag, "restart_down", translate("Restart if down"), translate("Restart interface if detected as down"))
|
||||
o.optional = false
|
||||
o.rmempty = false
|
||||
o.default = false
|
||||
o.disabled = 0
|
||||
o.enabled = 1
|
||||
|
||||
o = s:option(DynamicList, "hosts", translate("Hosts"), translate("Must be IPs and not domains"))
|
||||
o.placeholder = "4.2.2.1"
|
||||
o.default = { "4.2.2.1", "8.8.8.8" }
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(DynamicList, "hosts6", translate("Hosts IPv6"), translate("Must be IPs and not domains"))
|
||||
o.placeholder = "2001:4860:4860::8844"
|
||||
o.default = { "2001:4860:4860::8888", "2001:4860:4860::8844" }
|
||||
o.rmempty = false
|
||||
|
||||
s = m:section(TypedSection, "interface", translate("Interfaces"))
|
||||
s.template_addremove = "omr-tracker/cbi-select-add"
|
||||
s.addremove = true
|
||||
s.add_select_options = { }
|
||||
s.add_select_options[''] = ''
|
||||
for _, iface in ipairs(net:get_networks()) do
|
||||
if not (iface:name() == "loopback") then
|
||||
s.add_select_options[iface:name()] = iface:name()
|
||||
end
|
||||
end
|
||||
|
||||
o = s:option(Flag, "enabled", translate("Enable"))
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "timeout", translate("Timeout (s)"))
|
||||
o.placeholder = "1"
|
||||
o.default = "1"
|
||||
o.datatype = "range(1, 100)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "tries", translate("Tries"))
|
||||
o.placeholder = "4"
|
||||
o.default = "4"
|
||||
o.datatype = "range(1, 10)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "count", translate("Count"), translate("How many packets send on each test, one wrong make test fail, one wrong make tail fail"))
|
||||
o.placeholder = "2"
|
||||
o.default = "2"
|
||||
o.datatype = "range(1, 100)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "interval", translate("Retry interval (s)"))
|
||||
o.placeholder = "2"
|
||||
o.default = "2"
|
||||
o.datatype = "range(1, 100)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(Value, "wait_test", translate("Wait after a failed test (s)"))
|
||||
o.placeholder = "0"
|
||||
o.default = "0"
|
||||
o.datatype = "range(0, 100)"
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(ListValue, "type", translate("Type"), translate("Always ping gateway, then test connection by ping, httping or dns. None mode only ping gateway."))
|
||||
o:value("ping","ping")
|
||||
o:value("httping","httping")
|
||||
o:value("dns","dns")
|
||||
o:value("none","none")
|
||||
|
||||
o = s:option(Flag, "server_http_test", translate("Server http test"), translate("Check if connection work with http by sending a request to server"))
|
||||
o.optional = false
|
||||
o.rmempty = false
|
||||
o.default = true
|
||||
o.disabled = 0
|
||||
o.enabled = 1
|
||||
|
||||
o = s:option(Flag, "mail_alert", translate("Mail alert"), translate("Send a mail when connection status change. You need to configure e-mail settings <a href=\"/cgi-bin/luci/admin/services/mail\">here</a>."))
|
||||
o.optional = false
|
||||
o.rmempty = false
|
||||
o.default = false
|
||||
o.disabled = 0
|
||||
o.enabled = 1
|
||||
|
||||
o = s:option(Flag, "restart_down", translate("Restart if down"), translate("Restart interface if detected as down"))
|
||||
o.optional = false
|
||||
o.rmempty = false
|
||||
o.default = false
|
||||
o.disabled = 0
|
||||
o.enabled = 1
|
||||
|
||||
o = s:option(DynamicList, "hosts", translate("Hosts"), translate("Must be IPs and not domains"))
|
||||
o.placeholder = "4.2.2.1"
|
||||
o.default = { "4.2.2.1", "8.8.8.8" }
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(DynamicList, "hosts6", translate("Hosts IPv6"), translate("Must be IPs and not domains"))
|
||||
o.placeholder = "2001:4860:4860::8844"
|
||||
o.rmempty = false
|
||||
|
||||
return m
|
|
@ -1,10 +0,0 @@
|
|||
<div class="cbi-section-create">
|
||||
<% if self.invalid_cts then -%><div class="cbi-section-error"><% end %>
|
||||
<select class="cbi-section-create-name" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.select">
|
||||
<%- for k, v in luci.util.kspairs(self.add_select_options) do %>
|
||||
<option value="<%=k%>"><%=luci.xml.pcdata(v)%></option>
|
||||
<% end -%>
|
||||
</select>
|
||||
<input class="cbi-button cbi-button-add" type="submit" value="<%:Add%>" title="<%:Add%>" />
|
||||
<% if self.invalid_cts then %><br /><%:Invalid%></div><% end %>
|
||||
</div>
|
|
@ -1,13 +1,36 @@
|
|||
{
|
||||
"admin/services/omr-tracker": {
|
||||
"title": "OMR-Tracker",
|
||||
"order": 10,
|
||||
"title": "OMR-Tracker Manager",
|
||||
"order": 60,
|
||||
"action": {
|
||||
"type": "cbi",
|
||||
"path": "omr-tracker"
|
||||
"type": "firstchild"
|
||||
},
|
||||
"depends": {
|
||||
"acl": [ "luci-app-omr-tracker" ]
|
||||
}
|
||||
},
|
||||
"admin/services/omr-tracker/interface": {
|
||||
"title": "Interface",
|
||||
"order": 10,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "omr-tracker/network/interface"
|
||||
}
|
||||
},
|
||||
"admin/services/omr-tracker/proxy": {
|
||||
"title": "Proxy",
|
||||
"order": 20,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "omr-tracker/network/proxy"
|
||||
}
|
||||
},
|
||||
"admin/services/omr-tracker/server": {
|
||||
"title": "Server",
|
||||
"order": 30,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "omr-tracker/network/server"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,13 @@
|
|||
"luci-app-omr-tracker": {
|
||||
"description": "Grant UCI access for luci-app-omr-tracker",
|
||||
"read": {
|
||||
"uci": [ "omr-tracker" ]
|
||||
"uci": [ "omr-tracker" ],
|
||||
"file": {
|
||||
"/usr/bin/httping": [ "list" ],
|
||||
"/usr/bin/dig": [ "list" ],
|
||||
"/usr/bin/nping": [ "list" ],
|
||||
"/usr/bin/arping": [ "list" ]
|
||||
}
|
||||
},
|
||||
"write": {
|
||||
"uci": [ "omr-tracker" ]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue