openwrt-packages/net/luci-app-ocserv/files/usr/lib/lua/luci/model/cbi/ocserv/users.lua

88 lines
2.3 KiB
Lua

--[[
LuCI - Lua Configuration Interface
Copyright 2014 Nikos Mavrogiannopoulos <n.mavrogiannopoulos@gmail.com>
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 dsp = require "luci.dispatcher"
local nixio = require "nixio"
m = Map("ocserv", translate("OpenConnect VPN"))
if m.uci:get("ocserv", "config", "auth") == "plain" then
--[[Users]]--
function m.on_commit(map)
luci.sys.call("/etc/init.d/ocserv restart >/dev/null 2>&1")
end
s = m:section(TypedSection, "ocservusers", translate("Available users"))
s.anonymous = true
s.addremove = true
s.template = "cbi/tblsection"
s:option(Value, "name", translate("Name")).rmempty = true
s:option(DummyValue, "group", translate("Group")).rmempty = true
pwd = s:option(Value, "password", translate("Password"))
pwd.password = false
function pwd.write(self, section, value)
local pass
if string.match(value, "^\$%d\$.*") then
pass = value
else
local t = tonumber(nixio.getpid()*os.time())
local salt = "$5$" .. t .. "$"
pass = nixio.crypt(value, salt)
end
Value.write(self, section, pass)
end
--[[if plain]]--
end
local lusers = { }
local fd = io.popen("/usr/bin/occtl show users", "r")
if fd then local ln
repeat
ln = fd:read("*l")
if not ln then break end
local id, user, group, vpn_ip, ip, device, time, cipher, status =
ln:match("^%s*(%d+)%s+([-_%w]+)%s+([%.%*-_%w]+)%s+([%:%.-_%w]+)%s+([%:%.-_%w]+)%s+([%:%.-_%w]+)%s+([%:%.-_%w]+)%s+([%:%.-_%w]+)%s+([%:%.-_%w]+).*")
if id then
table.insert(lusers, {id, user, group, vpn_ip, ip, device, time, cipher, status})
end
until not ln
fd:close()
end
--[[Active Users]]--
local s = m:section(Table, lusers, translate("Active users"))
s.anonymous = true
s.rmempty = true
s.template = "cbi/tblsection"
s:option(DummyValue, 1, translate("ID"))
s:option(DummyValue, 2, translate("Username"))
s:option(DummyValue, 3, translate("Group"))
s:option(DummyValue, 4, translate("IP"))
s:option(DummyValue, 5, translate("VPN IP"))
s:option(DummyValue, 6, translate("Device"))
s:option(DummyValue, 7, translate("Time"))
s:option(DummyValue, 8, translate("Cipher"))
s:option(DummyValue, 9, translate("Status"))
return m