'use strict';
'require view';
'require form';
'require tools.widgets as widgets';
return view.extend({
render: function () {
var m, s, o;
m = new form.Map('watchcat',
_('Watchcat'),
_("Here you can set up several checks and actions to take in the event that a host becomes unreachable. \
Click the Add button at the bottom to set up more than one action."));
s = m.section(form.TypedSection, 'watchcat', _('Watchcat'), _('These rules will govern how this device reacts to network events.'));
s.anonymous = true;
s.addremove = true;
s.tab('general', _('General Settings'));
o = s.taboption('general', form.ListValue, 'mode',
_('Mode'),
_("Ping Reboot: Reboot this device if a ping to a specified host fails for a specified duration of time.
\
Periodic Reboot: Reboot this device after a specified interval of time.
\
Restart Interface: Restart a network interface if a ping to a specified host fails for a specified duration of time.
\
Run Script: Run a script if a ping to a specified host fails for a specified duration of time.
"));
o.value('ping_reboot', _('Ping Reboot'));
o.value('periodic_reboot', _('Periodic Reboot'));
o.value('restart_iface', _('Restart Interface'));
o.value('run_script', _('Run Script'));
o = s.taboption('general', form.Value, 'script',
_('Script to run'),
_(`Script to run when the host has not responded for the specified duration of time. The script is passed the interface name as $1`));
o.datatype = 'file';
o.default = "/etc/watchcat.user.sh";
o.depends({ mode: "run_script" });
o = s.taboption('general', form.Value, 'period',
_('Period'),
_("In Periodic Reboot mode, it defines how often to reboot.
\
In Ping Reboot mode, it defines the longest period of \
time without a reply from the Host To Check before a reboot is engaged.
\
In Network Restart or Run Script mode, it defines the longest period of \
time without a reply from the Host to Check before the interface is restarted or the script is run. \
The default unit is seconds, without a suffix, but you can use the \
suffix m for minutes, h for hours or d \
for days.
Examples:
- 10 seconds would be: 10 or 10s
- 5 minutes would be: 5m
- \
1 hour would be: 1h
- 1 week would be: 7d
"));
o.default = '6h';
o = s.taboption('general', form.Value, 'pinghosts', _('Host To Check'), _(`IP address or hostname to ping.`));
o.datatype = 'host';
o.default = '8.8.8.8';
o.depends({ mode: "ping_reboot" });
o.depends({ mode: "restart_iface" });
o.depends({ mode: "run_script" });
o = s.taboption('general', form.ListValue, 'addressfamily',
_('Address family for pinging the host'));
o.default = 'any';
o.depends({ mode: 'ping_reboot' });
o.depends({ mode: 'restart_iface' });
o.depends({ mode: "run_script" });
o.value('any', _('Any'));
o.value('ipv4');
o.value('ipv6');
o = s.taboption('general', form.Value, 'pingperiod',
_('Check Interval'),
_("How often to ping the host specified above. \
The default unit is seconds, without a suffix, but you can use the suffix m for minutes, h for hours or d for days.
\
Examples:- 10 seconds would be: 10 or 10s
- 5 minutes would be: 5m
- 1 hour would be: 1h
- 1 week would be: 7d
"));
o.default = '30s';
o.depends({ mode: "ping_reboot" });
o.depends({ mode: "restart_iface" });
o.depends({ mode: "run_script" });
o = s.taboption('general', form.ListValue, 'pingsize',
_('Ping Packet Size'));
o.value('small', _('Small: 1 byte'));
o.value('windows', _('Windows: 32 bytes'));
o.value('standard', _('Standard: 56 bytes'));
o.value('big', _('Big: 248 bytes'));
o.value('huge', _('Huge: 1492 bytes'));
o.value('jumbo', _('Jumbo: 9000 bytes'));
o.default = 'standard';
o.depends({ mode: 'ping_reboot' });
o.depends({ mode: 'restart_iface' });
o.depends({ mode: "run_script" });
o = s.taboption('general', form.Value, 'forcedelay',
_('Force Reboot Delay'),
_("Applies to Ping Reboot and Periodic Reboot modes
When rebooting the router, the service will trigger a soft reboot. \
Entering a non-zero value here will trigger a delayed hard reboot if the soft reboot were to fail. \
Enter the number of seconds to wait for the soft reboot to fail or use 0 to disable the forced reboot delay."));
o.default = '1m';
o.depends({ mode: 'ping_reboot' });
o.depends({ mode: 'periodic_reboot' });
o = s.taboption('general', widgets.DeviceSelect, 'interface',
_('Interface'),
_('Interface to monitor and/or restart'),
_('Applies to Ping Reboot, Restart Interface, and Run Script modes
Specify the interface to monitor and react if a ping over it fails.'));
o.depends({ mode: 'ping_reboot' });
o.depends({ mode: 'restart_iface' });
o.depends({ mode: 'run_script' });
o = s.taboption('general', widgets.NetworkSelect, 'mmifacename',
_('Name of ModemManager Interface'),
_("Applies to Ping Reboot and Restart Interface modes
If using ModemManager, \
you can have Watchcat restart your ModemManger interface by specifying its name."));
o.depends({ mode: 'restart_iface' });
o.optional = true;
o = s.taboption('general', form.Flag, 'unlockbands',
_('Unlock Modem Bands'),
_('If using ModemManager, then before restarting the interface, set the modem to be allowed to use any band.'));
o.default = '0';
o.depends({ mode: 'restart_iface' });
return m.render();
}
});