gluon-config-mode-hostname: add config_mode.hostname.optional site option

This setting allows to enforce manually setting a hostname.

In the initial configuration, the hostname field is now left empty; when
setting the hostname is not enforced, the default hostname is shown as the
field placeholder.

Fixes #1139
This commit is contained in:
Matthias Schiffer 2018-03-17 12:48:11 +01:00
parent 486c2e4821
commit 7827f8960f
No known key found for this signature in database
GPG Key ID: 16EF3F64CB201D9C
3 changed files with 24 additions and 3 deletions

View File

@ -370,6 +370,10 @@ config_mode \: optional
Additional configuration for the configuration web interface. All values are Additional configuration for the configuration web interface. All values are
optional. optional.
When no hostname is specified, a default hostname based on the *hostname_prefix*
and the node's primary MAC address is assigned. Manually setting a hostname
can be enforced by setting *hostname.optional* to *false*.
By default, no altitude fields are shown by the *gluon-config-mode-geo-location* By default, no altitude fields are shown by the *gluon-config-mode-geo-location*
package. If *geo_location.show_altitude* is set to *true*, the *gluon-config-mode:altitude-label* package. If *geo_location.show_altitude* is set to *true*, the *gluon-config-mode:altitude-label*
and *gluon-config-mode:altitude-help* strings must be provided in the site i18n and *gluon-config-mode:altitude-help* strings must be provided in the site i18n
@ -385,6 +389,9 @@ config_mode \: optional
:: ::
config_mode = { config_mode = {
hostname = {
optional = false,
},
geo_location = { geo_location = {
show_altitude = true, show_altitude = true,
}, },

View File

@ -0,0 +1 @@
need_boolean(in_site({'config_mode', 'hostname', 'optional'}), false)

View File

@ -1,19 +1,32 @@
return function(form, uci) return function(form, uci)
local pkg_i18n = i18n 'gluon-config-mode-hostname' local pkg_i18n = i18n 'gluon-config-mode-hostname'
local pretty_hostname = require "pretty_hostname" local pretty_hostname = require 'pretty_hostname'
local site = require 'gluon.site'
local util = require 'gluon.util'
form:section(Section, nil, pkg_i18n.translate( form:section(Section, nil, pkg_i18n.translate(
"The node name is used solely for identification of your node, e.g. on a " "The node name is used solely for identification of your node, e.g. on a "
.. "node map. It does not affect the name (SSID) of the broadcasted WLAN." .. "node map. It does not affect the name (SSID) of the broadcasted WLAN."
)) ))
local current_hostname = pretty_hostname.get(uci)
local default_hostname = util.default_hostname()
local configured = uci:get_first('gluon-setup-mode', 'setup_mode', 'configured', false) or (current_hostname ~= default_hostname)
local s = form:section(Section) local s = form:section(Section)
local o = s:option(Value, "hostname", pkg_i18n.translate("Node name")) local o = s:option(Value, "hostname", pkg_i18n.translate("Node name"))
o.default = pretty_hostname.get(uci) o.datatype = 'minlength(1)'
if site.config_mode.hostname.optional(true) then
o.optional = true
o.placeholder = default_hostname
end
if configured then
o.default = current_hostname
end
function o:write(data) function o:write(data)
pretty_hostname.set(uci, data) pretty_hostname.set(uci, data or default_hostname)
end end
return {'system'} return {'system'}