summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/session.lua59
1 files changed, 50 insertions, 9 deletions
diff --git a/lib/session.lua b/lib/session.lua
index 57b14d2..3915329 100644
--- a/lib/session.lua
+++ b/lib/session.lua
@@ -13,7 +13,7 @@
module (..., package.seeall)
require "posix"
-require "fs"
+require "format"
local b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-"
@@ -158,9 +158,9 @@ check_session = function (sessionpath, session)
end
check_size = posix.stat(fullpath,"size")
if check_size == 0 then
- return "Null Session"
+ return "an unknown user"
else
- local c = fs.read_file(fullpath)
+ local c = dofile(fullpath).userinfo.userid
return c
end
@@ -178,13 +178,54 @@ end
-- Check how many invalid login events
-- have happened for this id in the last n minutes
-count_events = function ( sessionpath, id, minutes)
- -- FIXME
- return 0
+-- this will only effect the lockevent files
+count_events = function (sessionpath, id, minutes, limit)
+ if id == nil then
+ return true
+ else
+ local now = os.time()
+ local minutes_ago = now - (minutes * 60)
+ local searchfor = sessionpath .. "/lockevent." .. id .. ".*"
+ local t = posix.glob(searchfor)
+
+ if t == nil then
+ return true
+ end
+
+ if #t > limit then
+ --may need to add checks for time here, we are passing it...
+ return false
+ else
+ return true
+ end
+ end
end
-- Clear events that are older than n minutes
-expire_events = function (sessionpath, minutes)
- -- FIXME
- return 0
+expired_events = function (sessionpath, minutes)
+ --current os time in seconds
+ local now = os.time()
+ --take minutes and convert to seconds
+ local minutes_ago = now - (minutes * 60)
+ local searchfor = sessionpath .. "/lockevent.*"
+ --first do the lockevent files
+ local temp = posix.glob(searchfor)
+ if temp ~= nil then
+ for a,b in pairs(temp) do
+ if posix.stat(b,"mtime") < minutes_ago then
+ os.remove(b)
+ end
+ end
+ end
+ --now do the session files
+ searchfor = sessionpath .. "/session.*"
+ local temp = posix.glob(searchfor)
+ if temp ~= nil then
+ for a,b in pairs(temp) do
+ if posix.stat(b,"mtime") < minutes_ago then
+ os.remove(b)
+ end
+ end
+ end
+ return 0
end