Config Mode =========== The `Config Mode` consists of several modules that provide a range of different configuration options: gluon-config-mode-core This modules provides the core functionality for the config mode. All modules must depend on it. gluon-config-mode-hostname Provides a hostname field. gluon-config-mode-autoupdater Informs whether the autoupdater is enabled. gluon-config-mode-mesh-vpn Allows toggling of mesh-vpn-fastd and setting a bandwidth limit. gluon-config-mode-geo-location Enables the user to set the geographical location of the node. gluon-config-mode-contact-info Adds a field where the user can provide contact information. Writing Config Mode modules ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Config mode modules are located at ``/lib/gluon/config-mode/wizard`` and ``/lib/gluon/config-mode/reboot``. Modules are named like ``0000-name.lua`` and are executed in lexical order. In the standard package set, the order is, for wizard modules: - 0050-autoupdater-info - 0100-hostname - 0300-mesh-vpn - 0400-geo-location - 0500-contact-info The reboot module order is: - 0100-mesh-vpn - 0900-msg-reboot All modules are run in the gluon-web model context and have access to the same variables as "full" gluon-web modules. Wizards ------- Wizard modules must return a function that is provided with the wizard form and an UCI cursor. The function can create configuration sections in the form: .. code-block:: lua return function(form, uci) local s = form:section(Section) local o = s:option(Value, "hostname", "Hostname") o.default = uci:get_first("system", "system", "hostname") o.datatype = "hostname" function o:write(data) uci:set("system", uci:get_first("system", "system"), "hostname", data) end return {'system'} end The function may return a table of UCI packages to commit after the individual fields' `write` methods have been executed. This is done to avoid committing the packages repeatedly when multiple wizard modules modify the same package. Reboot page ----------- Reboot modules are simply executed when the reboot page is rendered: .. code-block:: lua renderer.render_string("Hello World!")