123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- 'use strict';
- 'require view';
- 'require form';
- 'require uci';
- 'require network';
- 'require tools.widgets as widgets';
- return view.extend({
- load: function() {
- return Promise.all([
- network.getDevices(),
- uci.load('keepalived'),
- ]);
- },
- renderGeneralTab: function(s) {
- var o, ipaddress;
- o = s.taboption('general',form.Value, 'name', _('Name'));
- o.rmempty = false;
- o.optional = false;
- o = s.taboption('general', form.ListValue, 'state', _('State'),
- _('Initial State. As soon as the other machine(s) come up,') +
- _('an election will be held and the machine with the highest "priority" will become MASTER.'));
- o.value('MASTER', _('Master'));
- o.value('BACKUP', _('Backup'));
- o.optional = false;
- o.rmempty = false;
- o = s.taboption('general', widgets.DeviceSelect, 'interface', _('Interface'),
- _('Interface for inside_network, bound by VRRP'));
- o.noaliases = true;
- o.noinactive = true;
- o.optional = false;
- o.rmempty = false;
- o = s.taboption('general', form.Value, 'virtual_router_id', _('Virtual Router Id'),
- _('Differentiate multiple instances of vrrpd, running on the same NIC'));
- o.datatype = 'range(1-255)';
- o.optional = false;
- o.rmempty = false;
- o = s.taboption('general', form.Value, 'priority', _('Priority'),
- _('A server with a higher priority becomes a MASTER'));
- o.datatype = 'uinteger';
- o.optional = false;
- o.rmempty = false;
- o = s.taboption('general', form.ListValue, 'advert_int', _('Interval'),
- _('VRRP Advert interval in seconds'));
- o.datatype = 'float';
- o.default = '1';
- o.rmempty = false;
- o.optional = false;
- o.value('1');
- o.value('3');
- o.value('5');
- o.value('10');
- o.value('30');
- o.value('60');
- o = s.taboption('general', form.Flag, 'nopreempt', _('Disable Preempt'),
- _('Allows the lower priority machine to maintain the master role,') +
- _('even when a higher priority machine comes back online.') + ' ' +
- _('For this to work, the initial state of this entry must be BACKUP.'));
- o.optional = true;
- o.default = false;
- ipaddress = uci.sections('keepalived', 'ipaddress');
- o = s.taboption('general', form.DynamicList, 'virtual_ipaddress', _('Virtual IP Address'),
- _('Addresses add|del on change to MASTER, to BACKUP.') + ' ' +
- _('With the same entries on other machines, the opposite transition will be occurring.'));
- if (ipaddress != '') {
- for (var i = 0; i < ipaddress.length; i++) {
- o.value(ipaddress[i]['name']);
- }
- }
- o.rmempty = false;
- o.optional = false;
- },
- renderPeerTab: function(s, netDevs) {
- var o;
- o = s.taboption('peer', form.ListValue, 'unicast_src_ip', _('Unicast Source IP'),
- _('Default IP for binding vrrpd is the primary IP on interface'));
- o.datatype = 'ipaddr';
- o.optional = true;
- o.modalonly = true;
- for (var i = 0; i < netDevs.length; i++) {
- var addrs = netDevs[i].getIPAddrs();
- for (var j = 0; j < addrs.length; j++) {
- o.value(addrs[j].split('/')[0]);
- }
- }
- var peers = uci.sections('keepalived', 'peer');
- o = s.taboption('peer', form.DynamicList, 'unicast_peer', _('Peer'),
- _('Do not send VRRP adverts over VRRP multicast group.') + ' ' +
- _('Instead it sends adverts to the following list of ip addresses using unicast design fashion'));
- if (peers != '') {
- for (var i = 0; i < peers.length; i++) {
- o.value(peers[i]['name']);
- }
- }
- o = s.taboption('peer', form.Value, 'mcast_src_ip', _('Multicast Source IP'),
- _('If you want to hide location of vrrpd, use this IP for multicast vrrp packets'));
- o.datatype = 'ipaddr';
- o.optional = true;
- o.modalonly = true;
- o.depends({ 'unicast_peer' : '' });
- o = s.taboption('peer', form.ListValue, 'auth_type', _('HA Authentication Type'));
- o.value('PASS', _('Simple Password'));
- o.value('AH', _('IPSec'));
- o = s.taboption('peer', form.Value, 'auth_pass', _('Password'),
- _('Password for accessing vrrpd, should be the same on all machines'));
- o.datatype = 'maxlength(8)';
- o.password = true;
- o.modalonly = true;
- o.depends({ 'auth_type' : 'PASS' });
- },
- renderGARPTab: function(s) {
- var o;
- o = s.taboption('garp', form.ListValue, 'garp_master_delay', _('GARP Delay'),
- _('Gratuitous Master Delay in seconds'));
- o.datatype = 'uinteger';
- o.modalonly = true;
- o.value('1');
- o.value('3');
- o.value('5');
- o.value('10');
- o.value('30');
- o.value('60');
- o = s.taboption('garp', form.ListValue, 'garp_master_repeat', _('GARP Repeat'),
- _('Gratuitous Master Repeat in seconds'));
- o.datatype = 'uinteger';
- o.modalonly = true;
- o.value('1');
- o.value('3');
- o.value('5');
- o.value('10');
- o.value('30');
- o.value('60');
- o = s.taboption('garp', form.ListValue, 'garp_master_refresh', _('GARP Refresh'),
- _('Gratuitous Master Refresh in seconds'));
- o.datatype = 'uinteger';
- o.modalonly = true;
- o.value('1');
- o.value('3');
- o.value('5');
- o.value('10');
- o.value('30');
- o.value('60');
- o = s.taboption('garp', form.ListValue, 'garp_master_refresh_repeat', _('GARP Refresh Repeat'),
- _('Gratuitous Master Refresh Repeat in seconds'));
- o.datatype = 'uinteger';
- o.modalonly = true;
- o.value('1');
- o.value('3');
- o.value('5');
- o.value('10');
- o.value('30');
- o.value('60');
- },
- renderAdvancedTab: function(s) {
- var o;
- o = s.taboption('advanced', form.Value, 'use_vmac', _('Use VMAC'),
- _('Use VRRP Virtual MAC'));
- o.optional = true;
- o.placeholder = '[<VMAC_INTERFACE_NAME>] [MAC_ADDRESS]';
- o.modalonly = true;
- o = s.taboption('advanced', form.Flag, 'vmac_xmit_base', _('Use VMAC Base'),
- _('Send/Recv VRRP messages from base interface instead of VMAC interfac'));
- o.default = false;
- o.optional = true;
- o.modalonly = true;
- o = s.taboption('advanced', form.Flag, 'native_ipv6', _('Use IPV6'),
- _('Force instance to use IPv6'));
- o.default = false;
- o.optional = true;
- o.modalonly = true;
- o = s.taboption('advanced', form.Flag, 'dont_track_primary', _('Disable Primary Tracking'),
- _('Ignore VRRP interface faults'));
- o.default = false;
- o.optional = true;
- o.modalonly = true;
- o = s.taboption('advanced', form.ListValue, 'version', _('Version'),
- _('VRRP version to run on interface'));
- o.value('', _('None'));
- o.value('2', _('2'));
- o.value('3', _('3'));
- o.default = '';
- o.modalonly = true;
- o = s.taboption('advanced', form.Flag, 'accept', _('Accept'),
- _('Accept packets to non address-owner'));
- o.default = false;
- o.optional = true;
- o = s.taboption('advanced', form.Value, 'preempt_delay', _('Preempt Delay'),
- _('Time in seconds to delay preempting compared'));
- o.datatype = 'float';
- o.placeholder = '300';
- o.modalonly = true;
- o = s.taboption('advanced', form.ListValue, 'debug', _('Debug'),
- _('Debug Level'));
- o.default = '0';
- o.value('0');
- o.value('1');
- o.value('2');
- o.value('3');
- o.value('4');
- o.modalonly = true;
- o = s.taboption('advanced', form.Flag, 'smtp_alert', _('Email Alert'),
- _('Send SMTP alerts'));
- o.default = false;
- o.modalonly = true;
- },
- renderTrackingTab: function(s) {
- var o;
- var ipaddress, routes, interfaces, scripts;
- ipaddress = uci.sections('keepalived', 'ipaddress');
- routes = uci.sections('keepalived', 'route');
- interfaces = uci.sections('keepalived', 'track_interface');
- scripts = uci.sections('keepalived', 'track_script');
- o = s.taboption('tracking', form.DynamicList, 'virtual_ipaddress_excluded', _('Exclude Virtual IP Address'),
- _('VRRP IP excluded from VRRP. For cases with large numbers (eg 200) of IPs on the same interface.') + ' ' +
- _('To decrease the number of packets sent in adverts, you can exclude most IPs from adverts.'));
- o.modalonly = true;
- if (ipaddress != '') {
- for (var i = 0; i < ipaddress.length; i++) {
- o.value(ipaddress[i]['name']);
- }
- }
- o = s.taboption('tracking', form.DynamicList, 'virtual_routes', _('Virtual Routes'),
- _('Routes add|del when changing to MASTER, to BACKUP'));
- o.modalonly = true;
- if (routes != '') {
- for (var i = 0; i < routes.length; i++) {
- o.value(routes[i]['name']);
- }
- }
- o = s.taboption('tracking', form.DynamicList, 'track_interface', _('Track Interfaces'),
- _('Go to FAULT state if any of these go down'));
- o.modalonly = true;
- if (interfaces != '') {
- for (var i = 0; i < interfaces.length; i++) {
- o.value(interfaces[i]['name']);
- }
- }
- o = s.taboption('tracking', form.DynamicList, 'track_script', _('Track Script'),
- _('Go to FAULT state if any of these go down, if unweighted'));
- o.modalonly = true;
- if (scripts != '') {
- for (var i = 0; i < scripts.length; i++) {
- o.value(scripts[i]['name']);
- }
- }
- },
- render: function(data) {
- var netDevs = data[0];
- let m, s, o;
- m = new form.Map('keepalived');
- s = m.section(form.GridSection, 'vrrp_instance', _('VRRP Instance'),
- _('Define an individual instance of the VRRP protocol running on an interface'));
- s.anonymous = true;
- s.addremove = true;
- s.nodescriptions = true;
- o = s.tab('general', _('General'));
- o = s.tab('peer', _('Peer'));
- o = s.tab('tracking', _('Tracking'));
- o = s.tab('garp', _('GARP'));
- o = s.tab('advanced', _('Advanced'));
- this.renderGeneralTab(s);
- this.renderPeerTab(s, netDevs);
- this.renderTrackingTab(s);
- this.renderGARPTab(s);
- this.renderAdvancedTab(s);
- return m.render();
- }
- });
|