From 32d667edbbeab29005000ea6cb0b1604cf4228c4 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Tue, 3 May 2011 03:35:56 +0000 Subject: [PATCH] modules/admin-full: merge system/password, system/sshkeys and service/dropbear into system/admin --- .../luasrc/controller/admin/services.lua | 13 +- .../luasrc/controller/admin/system.lua | 3 +- .../model/cbi/admin_services/dropbear.lua | 28 ---- .../luasrc/model/cbi/admin_system/admin.lua | 127 ++++++++++++++++++ .../luasrc/model/cbi/admin_system/passwd.lua | 45 ------- .../luasrc/model/cbi/admin_system/sshkeys.lua | 35 ----- 6 files changed, 132 insertions(+), 119 deletions(-) delete mode 100644 modules/admin-full/luasrc/model/cbi/admin_services/dropbear.lua create mode 100644 modules/admin-full/luasrc/model/cbi/admin_system/admin.lua delete mode 100644 modules/admin-full/luasrc/model/cbi/admin_system/passwd.lua delete mode 100644 modules/admin-full/luasrc/model/cbi/admin_system/sshkeys.lua diff --git a/modules/admin-full/luasrc/controller/admin/services.lua b/modules/admin-full/luasrc/controller/admin/services.lua index b88e8ab57..38e3448f0 100644 --- a/modules/admin-full/luasrc/controller/admin/services.lua +++ b/modules/admin-full/luasrc/controller/admin/services.lua @@ -16,7 +16,7 @@ module("luci.controller.admin.services", package.seeall) function index() luci.i18n.loadc("base") local i18n = luci.i18n.translate - + local page = node("admin", "services", "crontab") page.target = form("admin_services/crontab") page.title = i18n("Scheduled Tasks") @@ -24,10 +24,10 @@ function index() local page = node("admin", "services") page.target = template("admin_services/index") - page.title = i18n("Services") + page.title = i18n("Services") page.order = 40 page.index = true - + if nixio.fs.access("/etc/config/lucittpd") then local page = node("admin", "services", "lucittpd") page.target = cbi("admin_services/lucittpd") @@ -41,13 +41,8 @@ function index() page.title = "Busybox HTTPd" page.order = 11 end - - local page = node("admin", "services", "dropbear") - page.target = cbi("admin_services/dropbear") - page.title = "Dropbear SSHd" - page.order = 20 - if nixio.fs.access("/etc/config/dhcp") then + if nixio.fs.access("/etc/config/dhcp") then local page = node("admin", "services", "dnsmasq") page.target = cbi("admin_services/dnsmasq") page.title = "Dnsmasq" diff --git a/modules/admin-full/luasrc/controller/admin/system.lua b/modules/admin-full/luasrc/controller/admin/system.lua index 95961f49d..da2ad9500 100644 --- a/modules/admin-full/luasrc/controller/admin/system.lua +++ b/modules/admin-full/luasrc/controller/admin/system.lua @@ -21,10 +21,9 @@ function index() entry({"admin", "system"}, alias("admin", "system", "system"), i18n("System"), 30).index = true entry({"admin", "system", "system"}, cbi("admin_system/system"), i18n("System"), 1) + entry({"admin", "system", "admin"}, form("admin_system/admin"), i18n("Administration"), 2) entry({"admin", "system", "packages"}, call("action_packages"), i18n("Software"), 10) entry({"admin", "system", "packages", "ipkg"}, form("admin_system/ipkg")) - entry({"admin", "system", "passwd"}, form("admin_system/passwd"), i18n("Admin Password"), 20) - entry({"admin", "system", "sshkeys"}, form("admin_system/sshkeys"), i18n("SSH-Keys"), 30) entry({"admin", "system", "processes"}, form("admin_system/processes"), i18n("Processes"), 45) if nixio.fs.access("/etc/config/fstab") then diff --git a/modules/admin-full/luasrc/model/cbi/admin_services/dropbear.lua b/modules/admin-full/luasrc/model/cbi/admin_services/dropbear.lua deleted file mode 100644 index ce6836001..000000000 --- a/modules/admin-full/luasrc/model/cbi/admin_services/dropbear.lua +++ /dev/null @@ -1,28 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright 2008 Steven Barth - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ -]]-- -m = Map("dropbear", "Dropbear SSHd", translate("Dropbear offers SSH network shell access and an integrated SCP server")) - -s = m:section(TypedSection, "dropbear", "") -s.anonymous = true -s.addremove = true - -port = s:option(Value, "Port", translate("Port")) -port.isinteger = true - -pwauth = s:option(Flag, "PasswordAuth", translate("Password authentication"), translate("Allow SSH password authentication")) -pwauth.enabled = 'on' -pwauth.disabled = 'off' -pwauth.rmempty = false - -return m diff --git a/modules/admin-full/luasrc/model/cbi/admin_system/admin.lua b/modules/admin-full/luasrc/model/cbi/admin_system/admin.lua new file mode 100644 index 000000000..94066e93c --- /dev/null +++ b/modules/admin-full/luasrc/model/cbi/admin_system/admin.lua @@ -0,0 +1,127 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2008 Steven Barth +Copyright 2011 Jo-Philipp Wich + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +$Id$ +]]-- + +local fs = require "nixio.fs" + +m = Map("system", translate("Router Password"), + translate("Changes the administrator password for accessing the device")) + +s = m:section(TypedSection, "_dummy", "") +s.addremove = false +s.anonymous = true + +pw1 = s:option(Value, "pw1", translate("Password")) +pw1.password = true + +pw2 = s:option(Value, "pw2", translate("Confirmation")) +pw2.password = true + +function s.cfgsections() + return { "_pass" } +end + +function m.on_commit(map) + local v1 = pw1:formvalue("_pass") + local v2 = pw2:formvalue("_pass") + + if v1 and v2 and #v1 > 0 and #v2 > 0 then + if v1 == v2 then + if luci.sys.user.setpasswd("root", v1) == 0 then + m.message = translate("Password successfully changed!") + else + m.message = translate("Unknown Error, password not changed!") + end + else + m.message = translate("Given password confirmation did not match, password not changed!") + end + end +end + + + +m2 = Map("dropbear", translate("SSH Access"), + translate("Dropbear offers SSH network shell access and an integrated SCP server")) + +s = m2:section(TypedSection, "dropbear", translate("Dropbear Instance")) +s.anonymous = true +s.addremove = true + + +ni = s:option(Value, "Interface", translate("Interface"), + translate("Listen only on the given interface or, if unspecified, on all")) + +ni.template = "cbi/network_netlist" +ni.nocreate = true +ni.unspecified = true + + +pt = s:option(Value, "Port", translate("Port"), + translate("Specifies the listening port of this Dropbear instance")) + +pt.datatype = "port" +pt.default = 22 + + +pa = s:option(Flag, "PasswordAuth", translate("Password authentication"), + translate("Allow SSH password authentication")) + +pa.enabled = "on" +pa.disabled = "off" +pa.default = pa.enabled +pa.rmempty = false + + +ra = s:option(Flag, "RootPasswordAuth", translate("Allow root logins with password"), + translate("Allow the root user to login with password")) + +ra.enabled = "on" +ra.disabled = "off" +ra.default = ra.enabled + + +gp = s:option(Flag, "GatewayPorts", translate("Gateway ports"), + translate("Allow remote hosts to connect to local SSH forwarded ports")) + +gp.enabled = "on" +gp.disabled = "off" +gp.default = gp.disabled + + +s2 = m2:section(TypedSection, "_dummy", translate("SSH-Keys"), + translate("Here you can paste public SSH-Keys (one per line) for SSH public-key authentication.")) +s2.addremove = false +s2.anonymous = true +s2.template = "cbi/tblsection" + +function s2.cfgsections() + return { "_keys" } +end + +keys = s2:option(TextValue, "_data", "") +keys.wrap = "off" +keys.rows = 3 +keys.rmempty = false + +function keys.cfgvalue() + return fs.readfile("/etc/dropbear/authorized_keys") or "" +end + +function keys.write(self, section, value) + if value then + fs.writefile("/etc/dropbear/authorized_keys", value:gsub("\r\n", "\n")) + end +end + +return m, m2 diff --git a/modules/admin-full/luasrc/model/cbi/admin_system/passwd.lua b/modules/admin-full/luasrc/model/cbi/admin_system/passwd.lua deleted file mode 100644 index 6f13bb0fc..000000000 --- a/modules/admin-full/luasrc/model/cbi/admin_system/passwd.lua +++ /dev/null @@ -1,45 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright 2008 Steven Barth -Copyright 2008 Jo-Philipp Wich - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ -]]-- -f = SimpleForm("password", translate("Admin Password"), translate("Change the password of the system administrator (User root)")) - -pw1 = f:field(Value, "pw1", translate("Password")) -pw1.password = true -pw1.rmempty = false - -pw2 = f:field(Value, "pw2", translate("Confirmation")) -pw2.password = true -pw2.rmempty = false - -function pw2.validate(self, value, section) - return pw1:formvalue(section) == value and value -end - -function f.handle(self, state, data) - if state == FORM_VALID then - local stat = luci.sys.user.setpasswd("root", data.pw1) == 0 - - if stat then - f.message = translate("Password successfully changed") - else - f.errmessage = translate("Unknown Error") - end - - data.pw1 = nil - data.pw2 = nil - end - return true -end - -return f \ No newline at end of file diff --git a/modules/admin-full/luasrc/model/cbi/admin_system/sshkeys.lua b/modules/admin-full/luasrc/model/cbi/admin_system/sshkeys.lua deleted file mode 100644 index c18539c8e..000000000 --- a/modules/admin-full/luasrc/model/cbi/admin_system/sshkeys.lua +++ /dev/null @@ -1,35 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright 2008 Steven Barth -Copyright 2008 Jo-Philipp Wich - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ -]]-- -local keyfile = "/etc/dropbear/authorized_keys" - -f = SimpleForm("sshkeys", translate("SSH-Keys"), translate("Here you can paste public SSH-Keys (one per line) for SSH public-key authentication.")) - -t = f:field(TextValue, "keys") -t.rmempty = true -t.rows = 10 -function t.cfgvalue() - return nixio.fs.readfile(keyfile) or "" -end - -function f.handle(self, state, data) - if state == FORM_VALID then - if data.keys then - nixio.fs.writefile(keyfile, data.keys:gsub("\r\n", "\n")) - end - end - return true -end - -return f -- 2.25.1