luci-app-openwisp: inital checkin

Signed-off-by: Nicholas Smith <nicholas@nbembedded.com>
- Commit heading rewritten
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
This commit is contained in:
Nicholas Smith 2021-10-30 11:57:54 +10:00 committed by Florian Eckert
parent 919b02c169
commit d2f4256f15
5 changed files with 363 additions and 0 deletions

View file

@ -0,0 +1,15 @@
# Copyright 2021 Nicholas Smith (nicholas@nbembedded.com)
# This is free software, licensed under the GNU General Public License v2.
include $(TOPDIR)/rules.mk
PKG_LICENSE:=GPL-2.0-or-later
PKG_MAINTAINER:=Nicholas Smith <nicholas@nbembedded.com>
LUCI_TITLE:=LuCI support for OpenWISP
LUCI_DESCRIPTION:=Allows configuration of OpenWISP agent settings
LUCI_DEPENDS:=+openwisp-config
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature

View file

@ -0,0 +1,101 @@
'use strict';
'require view';
'require form';
'require tools.widgets as widgets';
return view.extend({
render: function () {
var m, s, o;
m = new form.Map('openwisp',
_('OpenWISP'),
_("Configure, start and stop the OpenWISP agent on this device. Read more about configuration values: <a target='_blank' rel='noopener noreferrer' href='https://github.com/openwisp/openwisp-config'>https://github.com/openwisp/openwisp-config</a>"));
s = m.section(form.NamedSection, 'http', 'controller');
s.tab('general', _('General Settings'));
s.tab('advanced', _('Advanced Settings'));
// General settings
o = s.taboption('general', form.Value, 'uuid', _('UUID'), _('The UUID of this device in the OpenWISP server.'))
o.readonly = true;
o = s.taboption('general', form.Value, 'key', _('Key'), _('The Key of this device in the OpenWISP server.'))
o.readonly = true;
o = s.taboption('general', form.ListValue, 'enabled',
_('Enable'),
_("Enable or disable the OpenWISP service."));
o.value('disabled', _('Disabled'));
o.value('monitoring', _('Enabled'));
o = s.taboption('general', form.Value, 'url', _('Server URL'), _('The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com'))
o.placeholder = 'https://openwisp2.mynetwork.com'
o = s.taboption('general', form.Value, 'shared_secret', _('Shared Secret'), _('The organization shared secret for auto enrollment.'))
o.password = true
o = s.taboption('general', form.Value, 'interval', _('Update Interval'), 'How often to check in with the OpenWISP server. Expressed in seconds.')
o.placeholder = '120'
o.datatype = 'uinteger';
// Advanced settings
o = s.taboption('advanced', form.Flag, 'verify_ssl', _('Verify SSL'), _('Verify the server SSL certificate.'))
o.rmempty = false
o = s.taboption('advanced', form.Flag, 'consistent_key', _('Consistent Key'), _('When using Automatic registration, this feature allows devices to keep the same configuration even if reset or re-flashed. This feature is enabled by default, but must be enabled also in the controller application in order to work.'))
o.rmempty = false
o = s.taboption('advanced', widgets.DeviceSelect, 'mac_interface', _('MAC Interface'), _('The interface to use for getting the MAC for this device.'))
o.rmempty = false
o = s.taboption('advanced', widgets.NetworkSelect, 'management_interface', _('Management Interface'), _('The interface to use for management and control.'))
o.rmempty = false
o = s.taboption('advanced', form.Flag, 'merge_config', _('Merge Config'), _('If selected, in the event a config item is present in both the remote and local configuration, the remote configuration takes precedence over local configuration.'))
o.rmempty = false
o = s.taboption('advanced', form.DynamicList, 'tags', _('Tags'), _('Tags applied to this device.'))
o = s.taboption('advanced', form.Flag, 'test_config', _('Test Config'), _('If the agent is unable to reach the controller after applying the downloaded config it will be reverted.'))
o = s.taboption('advanced', form.Value, 'test_script', _('Test Script'), 'Path to a custom test script if the default Test Config script does not meet your needs.')
o.depends({ test_config: '1' })
o.datatype = "file"
o = s.taboption('advanced', form.Flag, 'hardware_id_key', _('Hardware ID Key'), _('Use a unique hardware ID for device identification, for example a serial number.'))
o.rmempty = false
o = s.taboption('advanced', form.Value, 'hardware_id_script', _('Hardware ID Script'), 'Path to the script used to return the value of the hardware key.')
o.depends({ hardware_id_key: '1' })
o.datatype = "file"
o = s.taboption('advanced', form.Value, 'bootup_delay', _('Boot Delay'), 'Maximum value of the delay after boot before starting OpenWISP service. Expressed in seconds.')
o.placeholder = '0'
o.datatype = 'uinteger';
o = s.taboption('advanced', form.Value, 'connect_timeout', _('Connect Timeout'), 'Value passed to curl --connect-timeout argument, defaults to 15. Expressed in seconds.')
o.placeholder = '15'
o.datatype = 'uinteger';
o = s.taboption('advanced', form.Value, 'max_time', _('Max Time'), _('Value passed to curl --max-time argument, defaults to 30. Expressed in seconds.'))
o.placeholder = '30'
o.datatype = 'uinteger';
o = s.taboption('advanced', form.Value, 'capath', _('CA Path'), _('Use the specified certificate file to verify the peer. The file may contain multiple CA certificates. The certificate(s) must be in PEM format.'))
o.datatype = "file"
o = s.taboption('advanced', form.Value, 'cacert', _('CA Cert'), _('Use the specified certificate directory to verify the peer. The certificates must be in PEM format, and the directory must have been processed using the c_rehash utility supplied with openssl.'))
o.datatype = "file"
o = s.taboption('advanced', form.Value, 'pre_reload_hook', _('Pre-reload Hook'), _('Path to pre-reload hook. The hook is not called if the path does not point to an executable script file. This hook is called each time openwisp-config applies a configuration, but before services are reloaded.'))
o.placeholder = '/usr/sbin/my_pre_reload_hook'
o.datatype = "file"
o = s.taboption('advanced', form.Value, 'post_reload_hook', _('Post-reload Hook'), _('Path to post reload hook script. The hook is not called if the path does not point to an executable script file. This hook is called each time openwisp-config applies a configuration, but after services are reloaded.'))
o.placeholder = '/usr/sbin/my_post_reload_hook'
o.datatype = "file"
return m.render();
}
});

View file

@ -0,0 +1,223 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:73
msgid "Bootup Delay"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:88
msgid "CA Cert"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:85
msgid "CA Path"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
msgid ""
"Configure, start and stop the OpenWISP agent on this device. Read more about "
"configuration values: <a href='https://github.com/openwisp/openwisp-"
"config'>https://github.com/openwisp/openwisp-config</a>"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:77
msgid "Connect Timeout"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:46
msgid "Consistent Key"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
msgid "Disabled"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
msgid "Enable"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
msgid "Enable or disable the OpenWISP service."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
msgid "Enabled"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
msgid "General Settings"
msgstr ""
#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
msgid "Grant access to luci-app-openwisp"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
msgid "Hardware ID Key"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:69
msgid "Hardware ID Script"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:55
msgid ""
"If selected, in the event a config item is present in both the remote and "
"local configuration, the remote configuration takes prescedence over local "
"configuration."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
msgid ""
"If the agent is unable to reach the controller after applying the downloaded "
"config it will be reverted."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
msgid "Key"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
msgid "MAC Interface"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:52
msgid "Management Interface"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:81
msgid "Max Time"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:55
msgid "Merge Config"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
msgid "OpenWISP"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:95
msgid ""
"Path to post reload hook script. The hook is not called if the path does not "
"point to an executable script file. This hook is called each time openwisp-"
"config applies a configuration, but after services are reloaded."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:91
msgid ""
"Path to pre-reload hook. The hook is not called if the path does not point "
"to an executable script file. This hook is called each time openwisp-config "
"applies a configuration, but before services are reloaded."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:95
msgid "Post-reload Hook"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:91
msgid "Pre-reload Hook"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:32
msgid "Server URL"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:35
msgid "Shared Secret"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:58
msgid "Tags"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:58
msgid "Tags applied to this device."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
msgid "Test Config"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:62
msgid "Test Script"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
msgid "The Key of this device in the OpenWISP server."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:32
msgid ""
"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
msgid "The UUID of this device in the OpenWISP server."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
msgid "The interface to use for getting the MAC for this device."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:52
msgid "The interface to use for management and control."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:35
msgid "The organization shared secret for auto enrollment."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
msgid "UUID"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:38
msgid "Update Interval"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
msgid ""
"Use a unique hardware ID for device identification, for example a serial "
"number."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:88
msgid ""
"Use the specified certificate directory to verify the peer. The certificates "
"must be in PEM format, and the directory must have been processed using the "
"c_rehash utility supplied with openssl."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:85
msgid ""
"Use the specified certificate file to verify the peer. The file may contain "
"multiple CA certificates. The certificate(s) must be in PEM format."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:81
msgid ""
"Value passed to curl --max-time argument, defaults to 30. Expressed in "
"seconds."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:43
msgid "Verify SSL"
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:43
msgid "Verify the server SSL certificate."
msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:46
msgid ""
"When using Automatic registration, this feature allows devices to keep the "
"same configuration even if reset or reflashed. This feature is enabled by "
"default, but must be enabled also in the controller application in order to "
"work."
msgstr ""

View file

@ -0,0 +1,13 @@
{
"admin/services/openwisp": {
"title": "OpenWISP",
"order": 90,
"action": {
"type": "view",
"path": "openwisp"
},
"depends": {
"acl": [ "luci-app-openwisp" ]
}
}
}

View file

@ -0,0 +1,11 @@
{
"luci-app-openwisp": {
"description": "Grant access to luci-app-openwisp",
"read": {
"uci": [ "openwisp" ]
},
"write": {
"uci": [ "openwisp" ]
}
}
}