diff options
author | Steven Barth <steven@midlink.org> | 2008-06-27 20:29:05 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-06-27 20:29:05 +0000 |
commit | 289b8fc1b6b41829c6077893f9dd1d7181551332 (patch) | |
tree | 251fdc764722b63c7b24ce6cb538b2ccd96887af /libs | |
parent | 78110807c2bf4f8eeafca2eb975ede42cf13938c (diff) |
* libs/web: Prepare session authentication
Diffstat (limited to 'libs')
-rw-r--r-- | libs/web/luasrc/sauth.lua | 58 | ||||
-rw-r--r-- | libs/web/root/etc/config/luci | 4 |
2 files changed, 62 insertions, 0 deletions
diff --git a/libs/web/luasrc/sauth.lua b/libs/web/luasrc/sauth.lua new file mode 100644 index 000000000..724e22d20 --- /dev/null +++ b/libs/web/luasrc/sauth.lua @@ -0,0 +1,58 @@ +--[[ + +Session authentication +(c) 2008 Steven Barth <steven@midlink.org> + +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$ + +]]-- +module("luci.sauth", package.seeall) +require("luci.fs") +require("luci.config") + + +luci.config.sauth = luci.config.sauth or {} +sessionpath = luci.config.sauth.sessionpath +sessiontime = luci.config.sauth.sessiontime + + +function clean() + local now = os.time() + local files = luci.fs.dir(sessionpath) + + if not files then + return nil + end + + for i, file in files do + local fname = sessionpath .. "/" .. file + local stat = luci.fs.stat(fname) + if stat and stat.type == "regular" and stat.atime + sessiontime < now then + luci.fs.unlink(fname) + end + end +end + +function prepare() + luci.fs.mkdir(sessionpath) + luci.fs.chmod(sessionpath, "a-rwx,u+rw") +end + +function read(id) + cleansessions() + return luci.fs.readfile(sessionpath .. "/" .. id) +end + +function write(id, data) + if not luci.fs.stat(sessionpath) then + prepare() + end + luci.fs.writefile(sessionpath .. "/" .. id, data) + luci.fs.chmod(sessionpath .. "/" .. id, "a-rwx,u+rw") +end
\ No newline at end of file diff --git a/libs/web/root/etc/config/luci b/libs/web/root/etc/config/luci index 3e1e7db4f..2d5f1e4b2 100644 --- a/libs/web/root/etc/config/luci +++ b/libs/web/root/etc/config/luci @@ -35,6 +35,10 @@ config internal languages option de "Deutsch" option en "English" +config internal sauth + option sessionpath "/tmp/.lucisessions" + option sessiontime 3600 + config internal template option compiler_mode file option compiledir "/tmp/.lucitplcache" |