123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- 'use strict';
- 'require view';
- 'require form';
- 'require uci';
- return view.extend({
- load: function() {
- return Promise.all([
- uci.load('keepalived'),
- ]);
- },
- renderVirtualServer: function(m) {
- var s, o;
- var real_servers;
- s = m.section(form.GridSection, 'virtual_server', _('Virtual Server'),
- _('A virtual server is a service configured to listen on a specific virtual IP.') + '<br/>' +
- _('A VIP address migrates from one LVS router to the other during a failover,') +
- _('thus maintaining a presence at that IP address'));
- s.anonymous = true;
- s.addremove = true;
- s.nodescriptions = true;
- s.tab('general', _('General'));
- s.tab('advanced', _('Advanced'));
- o = s.taboption('general', form.Flag, 'enabled', _('Enable'));
- o.optional = true;
- o.placeholder = 'name';
- o = s.taboption('general', form.Value, 'ipaddr', _('Address'),
- _('Address of the Server'));
- o.datatype = 'ipaddr';
- o = s.taboption('general', form.ListValue, 'protocol', _('Protocol'));
- o.value('TCP');
- o.value('UDP');
- o.default = 'TCP';
- o.modalonly = true;
- o = s.taboption('general', form.Value, 'port', _('Port'),
- _('Server Port'));
- o.rmempty = false;
- o.optional = false;
- o.datatype = 'port';
- o = s.taboption('general', form.Value, 'fwmark', _('Mark'),
- _('Firewall fwmark. Use Virtual server from FWMARK'));
- o.datatype = 'hexstring';
- real_servers = uci.sections('keepalived', 'real_server');
- o = s.taboption('general', form.DynamicList, 'real_server', _('Real Server'));
- if (real_servers != '') {
- for (i = 0; i < real_servers.length; i++) {
- o.value(real_servers[i]['name']);
- }
- }
- o.optional = false;
- o = s.taboption('general', form.Value, 'virtualhost', _('Virtual Host'),
- _('HTTP virtualhost to use for HTTP_GET | SSL_GET'));
- o.datatype = 'hostname';
- o.modalonly = true;
- o = s.taboption('general', form.ListValue, 'lb_kind', _('Forwarding Method'));
- o.value('NAT');
- o.value('DR');
- o.value('TUN');
- o.default = 'NAT';
- o = s.taboption('advanced', form.Value, 'delay_loop', _('Delay Loop'),
- _('Interval between checks in seconds'));
- o.optional = false;
- o.datatype = 'uinteger';
- o.modalonly = true;
- o = s.taboption('advanced', form.ListValue, 'lb_algo', _('Scheduler Algorigthm'));
- o.value('rr', _('Round-Robin'));
- o.value('wrr', _('Weighted Round-Robin'));
- o.value('lc', _('Least-Connection'));
- o.value('wlc', _('Weighted Least-Connection'));
- o.default = 'rr';
- o = s.taboption('advanced', form.Value, 'persistence_timeout', _('Persist Timeout'),
- _('Timeout value for persistent connections'));
- o.datatype = 'uinteger';
- o.default = 50;
- o.modalonly = true;
- o = s.taboption('advanced', form.Value, 'persistence_granularity', _('Persist Granularity'),
- _('Granularity mask for persistent connections'));
- o.datatype = 'ipaddr';
- o.modalonly = true;
- o = s.taboption('advanced', form.Value, 'sorry_server_ip', _('Sorry Server Address'),
- _('Server to be added to the pool if all real servers are down'));
- o.optional = false;
- o.datatype = 'ipaddr';
- o.modalonly = true;
- o = s.taboption('advanced', form.Value, 'sorry_server_port', _('Sorry Server Port'));
- o.optional = false;
- o.datatype = 'port';
- o.modalonly = true;
- o = s.taboption('advanced', form.Value, 'rise', _('Rise'),
- _('Required number of successes for OK transition'));
- o.optional = true;
- o.datatype = 'uinteger';
- o.modalonly = true;
- o = s.taboption('advanced', form.Value, 'fail', _('Fail'),
- _('Required number of successes for KO transition'));
- o.optional = true;
- o.datatype = 'uinteger';
- o.modalonly = true;
- },
- renderRealServer: function(m) {
- var s, o;
- var urls;
- s = m.section(form.GridSection, 'real_server', _('Real Servers'),
- _('Real Server to redirect all request'));
- s.anonymous = true;
- s.addremove = true;
- s.nodescriptions = true;
- o = s.option(form.Value, 'name', _('Name'));
- o.rmempty = false;
- o.optional = false;
- o.placeholder = 'name';
- o = s.option(form.Flag, 'enabled', _('Enabled'));
- o.default = true;
- o = s.option(form.Value, 'ipaddr', _('Address'),
- _('Address of the Server'));
- o.rmempty = false;
- o.optional = false;
- o.datatype = 'ipaddr';
- o = s.option(form.Value, 'port', _('Port'),
- _('Server Port'));
- o.rmempty = false;
- o.optional = false;
- o.datatype = 'port';
- o = s.option(form.Value, 'weight', _('Weight'),
- _('Relative weight to use'));
- o.rmempty = false;
- o.optional = false;
- o.placeholder = 1;
- o.datatype = 'uinteger';
- o = s.option(form.ListValue, 'check', _('Check'),
- _('Healthcheckers. Can be multiple of each type'));
- o.value('HTTP_GET');
- o.value('SSL_GET');
- o.value('TCP_CHECK');
- o.value('MISC_CHECK');
- o = s.option(form.Value, 'connect_timeout', _('Connect Timeout'));
- o.datatype = 'uinteger';
- o.depends('check', 'TCP_CHECK');
- o = s.option(form.Value, 'connect_port', _('Port'),
- _('Port to connect to'));
- o.datatype = 'port';
- o.depends('check', 'TCP_CHECK');
- o = s.option(form.Value, 'misc_path', _('User Check Script'));
- o.datatype = 'file';
- o.depends('check', 'MISC_CHECK');
- urls = uci.sections('keepalived', 'url');
- o = s.option(form.DynamicList, 'url', _('URLs'));
- if (urls != '') {
- for (var i = 0; i < urls.length; i++) {
- o.value(urls[i].name);
- }
- }
- o.depends('check', 'HTTP_GET');
- o.depends('check', 'SSL_GET');
- o = s.option(form.Value, 'retry', _('Retry'));
- o.datatype = 'uinteger';
- o = s.option(form.Value, 'delay_before_retry', _('Delay Before Retry'));
- o.datatype = 'uinteger';
- },
- render: function() {
- var m;
- m = new form.Map('keepalived');
- this.renderVirtualServer(m);
- this.renderRealServer(m);
- return m.render();
- }
- });
|