summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-keepalived/htdocs/luci-static/resources/view/keepalived/peers.js
diff options
context:
space:
mode:
Diffstat (limited to 'applications/luci-app-keepalived/htdocs/luci-static/resources/view/keepalived/peers.js')
-rw-r--r--applications/luci-app-keepalived/htdocs/luci-static/resources/view/keepalived/peers.js97
1 files changed, 97 insertions, 0 deletions
diff --git a/applications/luci-app-keepalived/htdocs/luci-static/resources/view/keepalived/peers.js b/applications/luci-app-keepalived/htdocs/luci-static/resources/view/keepalived/peers.js
new file mode 100644
index 0000000000..059fc1dd6c
--- /dev/null
+++ b/applications/luci-app-keepalived/htdocs/luci-static/resources/view/keepalived/peers.js
@@ -0,0 +1,97 @@
+'use strict';
+'require view';
+'require form';
+'require rpc';
+
+return view.extend({
+ callHostHints: rpc.declare({
+ object: 'luci-rpc',
+ method: 'getHostHints',
+ expect: { '': {} }
+ }),
+
+ load: function() {
+ return Promise.all([
+ this.callHostHints(),
+ ]);
+ },
+
+ render: function(data) {
+ var hosts = data[0];
+ var m, s, o;
+
+ m = new form.Map('keepalived');
+
+ s = m.section(form.GridSection, 'peer', _('Peers'),
+ _('Peers can be referenced into Instances cluster and data/config synchronization'));
+ s.anonymous = true;
+ s.addremove = true;
+ s.nodescriptions = true;
+
+ o = s.option(form.Value, 'name', _('Name'));
+ o.optional = false;
+ o.placeholder = 'name';
+
+ o = s.option(form.Value, 'address', _('Peer Address'));
+ o.optional = false;
+ o.rmempty = false;
+ o.datatype = 'ipaddr';
+ for(var mac in hosts) {
+ if (hosts[mac]['ipaddrs'] == 'undefined') {
+ continue;
+ }
+ for(var i = 0; i < hosts[mac]['ipaddrs'].length; i++) {
+ o.value(hosts[mac]['ipaddrs'][i]);
+ }
+ }
+
+ o = s.option(form.Flag, 'sync', _('Enable Sync'),
+ _('Auto Synchonize Config/Data files with peer'));
+
+ o = s.option(form.ListValue, 'sync_mode', _('Sync Mode'),
+ _('Current System should act as Sender/Receiver.') + '<br/>' +
+ _('If peer is backup node, Current system should be sender, If peer is master current system should be receiver'));
+ o.value('send', _('Sender'));
+ o.value('receive', _('Receiver'));
+ o.default = 'send';
+ o.depends({ 'sync' : '1' });
+
+ o = s.option(form.Value, 'ssh_port', _('SSH Port'),
+ _('If peer runs on non standard ssh port, change to correct ssh port number'));
+ o.datatype = 'port';
+ o.default = '22';
+ o.modalonly = true;
+ o.depends({ 'sync' : '1', 'sync_mode' : 'send' });
+
+ o = s.option(form.Value, 'sync_dir', _('Sync Directory'),
+ _('Sender will send files to this location of receiver. Must be same on Master/Backup'));
+ o.default = '/usr/share/keepalived/rsync';
+ o.optional = false;
+ o.rmempty = false;
+ o.modalonly = true;
+ o.datatype = 'directory';
+ o.depends({ 'sync' : '1' });
+
+ o = s.option(form.FileUpload, 'ssh_key', _('Path to SSH Private Key'),
+ _('Use SSH key for password less authentication, SSH Key would be used on current system'));
+ o.root_directory = '/etc/keepalived/keys';
+ o.enable_upload = true;
+ o.modalonly = true;
+ o.datatype = 'file';
+ o.depends({ 'sync' : '1', 'sync_mode' : 'send' });
+
+ o = s.option(form.TextValue, 'ssh_pubkey', _('SSH Public Key'),
+ _('Authorize ssh public key of peer'));
+ o.datatype = 'string';
+ o.modalonly = true;
+ o.depends({ 'sync' : '1', 'sync_mode' : 'receive' });
+
+ o = s.option(form.DynamicList, 'sync_list', _('Sync Files'),
+ _('Additional files to synchronize, By default it synchronizes sysupgrade backup files'));
+ o.datatype = 'file';
+ o.modalonly = true;
+ o.depends({ 'sync' : '1', 'sync_mode' : 'send' });
+
+ return m.render();
+ }
+});