gluon-web-admin: add option to show/hide password-login and add minimum password length

This commit is contained in:
Ruben Barkow 2017-06-23 00:17:37 +02:00 committed by Matthias Schiffer
parent b5a8959f59
commit 84d117ff73
No known key found for this signature in database
GPG Key ID: 16EF3F64CB201D9C
8 changed files with 72 additions and 8 deletions

View File

@ -59,6 +59,7 @@ Several Freifunk communities in Germany use Gluon as the foundation of their Fre
package/gluon-ebtables-filter-ra-dhcp
package/gluon-ebtables-segment-mld
package/gluon-ebtables-source-filter
package/gluon-web-admin
.. toctree::
:caption: Releases

View File

@ -0,0 +1,27 @@
gluon-web-admin
===============
This package allows the user to set options like the password for ssh access
within config mode. You can define in your ``site.conf`` whether it should be
possible to access the nodes via ssh with a password or not and what the mimimum
password length must be.
site.conf
---------
config_mode.remote_login.show_password_form \: optional (defaults to ``false``)
If ``show_password_form`` is set to ``true``, the password section in
config mode is shown.
config_mode.remote_login.min_password_length \: optional (defaults to ``12``)
This sets the minimum allowed password length. Set this to ``1`` to
disable the length check.
If you want to enable the password login you can use this example::
config_mode = {
remote_login = {
show_password_form = true, -- default false
min_password_length = 12
}
}

View File

@ -39,4 +39,9 @@ define Package/gluon-web-admin/install
$(call GluonInstallI18N,gluon-web-admin,$(1))
endef
define Package/gluon-web-admin/postinst
#!/bin/sh
$(call GluonCheckSite,check_site.lua)
endef
$(eval $(call BuildPackage,gluon-web-admin))

View File

@ -0,0 +1,4 @@
if need_table('config_mode', nil, false) and need_table('config_mode.remote_login', nil, false) then
need_boolean('config_mode.remote_login.show_password_form', false)
need_number('config_mode.remote_login.min_password_length', false)
end

View File

@ -32,6 +32,9 @@ msgstr "Abbrechen"
msgid "Confirmation"
msgstr "Bestätigung"
msgid "%u characters min."
msgstr "Mindestens %u Zeichen"
msgid "Continue"
msgstr "Fortfahren"

View File

@ -33,6 +33,9 @@ msgstr "Annuler"
msgid "Confirmation"
msgstr "Confirmation"
msgid "%u characters min."
msgstr "Au moins %u caractères"
msgid "Continue"
msgstr "Continuer"

View File

@ -19,6 +19,9 @@ msgstr ""
msgid "Confirmation"
msgstr ""
msgid "%u characters min."
msgstr ""
msgid "Continue"
msgstr ""

View File

@ -13,12 +13,13 @@ You may obtain a copy of the License at
local nixio = require "nixio"
local fs = require "nixio.fs"
local util = require "gluon.util"
local site = require 'gluon.site_config'
local f_keys = Form(translate("SSH keys"), translate("You can provide your SSH keys here (one per line):"), 'keys')
local s = f_keys:section(Section)
local keys = s:option(TextValue, "keys")
keys.wrap = "off"
keys.rows = 5
keys.wrap = "off"
keys.rows = 5
keys.default = fs.readfile("/etc/dropbear/authorized_keys") or ""
function keys:write(value)
@ -30,11 +31,24 @@ function keys:write(value)
end
end
local config = (site.config_mode or {}).remote_login or {}
if not config.show_password_form then
-- password login is disabled in site.conf
return f_keys
end
local f_password = Form(translate("Password"),
translate(
"Alternatively, you can set a password to access your node. Please choose a secure password you don't use anywhere else.<br /><br />"
.. "If you set an empty password, login via password will be disabled. This is the default."
local min_password_length = config.min_password_length or 12
local mintype = 'minlength(' .. min_password_length .. ')'
local length_hint
if min_password_length > 1 then
length_hint = translatef("%u characters min.", min_password_length)
end
local f_password = Form(translate("Password"), translate(
"Alternatively, you can set a password to access your node. Please choose a "
.. "secure password you don't use anywhere else.<br /><br />If you set an empty "
.. "password, login via password will be disabled. This is the default."
), 'password'
)
f_password.reset = false
@ -43,12 +57,16 @@ local s = f_password:section(Section)
local pw1 = s:option(Value, "pw1", translate("Password"))
pw1.password = true
pw1.optional = true
pw1.datatype = mintype
function pw1.cfgvalue()
return ''
end
local pw2 = s:option(Value, "pw2", translate("Confirmation"))
local pw2 = s:option(Value, "pw2", translate("Confirmation"), length_hint)
pw2.password = true
pw2.optional = true
pw2.datatype = mintype
function pw2.cfgvalue()
return ''
end
@ -93,7 +111,7 @@ function f_password:write()
local pw = pw1.data
if #pw > 0 then
if pw ~= nil and #pw > 0 then
if set_password(pw) then
f_password.message = translate("Password changed.")
else