summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--applications/luci-app-keepalived/htdocs/luci-static/resources/view/keepalived/notification.js38
-rw-r--r--applications/luci-app-keepalived/root/usr/share/luci/menu.d/luci-app-keepalived.json9
-rw-r--r--applications/luci-app-keepalived/root/usr/share/rpcd/acl.d/luci-app-keepalived.json8
3 files changed, 53 insertions, 2 deletions
diff --git a/applications/luci-app-keepalived/htdocs/luci-static/resources/view/keepalived/notification.js b/applications/luci-app-keepalived/htdocs/luci-static/resources/view/keepalived/notification.js
new file mode 100644
index 0000000000..613971d9e3
--- /dev/null
+++ b/applications/luci-app-keepalived/htdocs/luci-static/resources/view/keepalived/notification.js
@@ -0,0 +1,38 @@
+'use strict';
+'require view';
+'require fs';
+'require ui';
+
+var isReadonlyView = !L.hasViewPermission() || null;
+
+return view.extend({
+ load: function() {
+ return L.resolveDefault(fs.read('/etc/keepalived.user'), '');
+ },
+
+ handleSave: function(ev) {
+ var value = (document.querySelector('textarea').value || '').trim().replace(/\r\n/g, '\n') + '\n';
+
+ return fs.write('/etc/keepalived.user', value).then(function(rc) {
+ document.querySelector('textarea').value = value;
+ ui.addNotification(null, E('p', _('Contents have been saved.')), 'info');
+
+ return fs.exec('/etc/init.d/keepalived', [ 'reload' ]);
+ }).catch(function(e) {
+ ui.addNotification(null, E('p', _('Unable to save contents: %s').format(e.message)));
+ });
+ },
+
+ render: function(keepalived) {
+ return E([
+ E('h2', _('Keepalived.user')),
+ E('p', { 'class': 'cbi-section-descr' }, _('This is the /etc/keepalived.user file in which custom commands can be defined.')),
+ E('p', {}, E('textarea', { 'style': 'width:100%', 'rows': 25, 'disabled': isReadonlyView }, [ keepalived != null ? keepalived : '' ]))
+ ]);
+ },
+
+ handleSaveApply: null,
+ handleReset: null
+});
+
+
diff --git a/applications/luci-app-keepalived/root/usr/share/luci/menu.d/luci-app-keepalived.json b/applications/luci-app-keepalived/root/usr/share/luci/menu.d/luci-app-keepalived.json
index 93c741918a..3afc43eed4 100644
--- a/applications/luci-app-keepalived/root/usr/share/luci/menu.d/luci-app-keepalived.json
+++ b/applications/luci-app-keepalived/root/usr/share/luci/menu.d/luci-app-keepalived.json
@@ -98,6 +98,15 @@
}
},
+ "admin/services/keepalived/notification": {
+ "title": "Notification",
+ "order": 150,
+ "action": {
+ "type": "view",
+ "path": "keepalived/notification"
+ }
+ },
+
"admin/status/keepalived": {
"title": "VRRP",
"order": 10,
diff --git a/applications/luci-app-keepalived/root/usr/share/rpcd/acl.d/luci-app-keepalived.json b/applications/luci-app-keepalived/root/usr/share/rpcd/acl.d/luci-app-keepalived.json
index 0c8b676e61..c83054408c 100644
--- a/applications/luci-app-keepalived/root/usr/share/rpcd/acl.d/luci-app-keepalived.json
+++ b/applications/luci-app-keepalived/root/usr/share/rpcd/acl.d/luci-app-keepalived.json
@@ -5,12 +5,16 @@
"ubus" : {
"keepalived" : [ "*" ]
},
- "uci": [ "keepalived" ]
+ "uci": [ "keepalived" ],
+ "file": {
+ "/etc/keepalived.user": [ "read" ]
+ }
},
"write" : {
"uci": [ "keepalived" ],
"file" : {
- "/etc/keepalived/keys/*" : [ "write" ]
+ "/etc/keepalived/keys/*" : [ "write" ],
+ "/etc/keepalived.user": [ "write" ]
}
}
}