summaryrefslogtreecommitdiffstats
path: root/lib/session.lua
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2013-10-17 18:59:27 +0000
committerTed Trask <ttrask01@yahoo.com>2013-10-17 18:59:27 +0000
commitc0e0377e384c8167172ee06d8c11ef2f782522c7 (patch)
treebb89301e467ff61d93a39642354bcfe382571529 /lib/session.lua
parentfcaab1b363fcd5ff2dccce8f98cacabc5635ba5f (diff)
downloadacf-core-c0e0377e384c8167172ee06d8c11ef2f782522c7.tar.bz2
acf-core-c0e0377e384c8167172ee06d8c11ef2f782522c7.tar.xz
Remove all calls to 'module' in preparation for move to Lua 5.2
Use mymodule parameter for module definition. This was also helpfule in revealing places where the code relied on the global environment.
Diffstat (limited to 'lib/session.lua')
-rw-r--r--lib/session.lua33
1 files changed, 15 insertions, 18 deletions
diff --git a/lib/session.lua b/lib/session.lua
index 12f0c28..34b9789 100644
--- a/lib/session.lua
+++ b/lib/session.lua
@@ -1,7 +1,6 @@
-- Session handling routines - written for acf
-- Copyright (C) 2007 N. Angelacos - GPL2 License
-
--[[ Note that in this library, we use empty (0 byte) files
-- everwhere we can, as they only take up dir entries, not inodes
-- as the tmpfs blocksize is 4K, and under denial of service
@@ -10,7 +9,7 @@
-- not take this precaution.
-- ]]--
-module (..., package.seeall)
+local mymodule = {}
posix = require("posix")
@@ -23,7 +22,7 @@ cached_content=nil
local b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-"
-- Return a sessionid of at least size bits length
-random_hash = function (size)
+mymodule.random_hash = function (size)
local file = io.open("/dev/urandom")
local str = ""
if file == nil then return nil end
@@ -36,8 +35,7 @@ random_hash = function (size)
end
-- FIXME: only hashes ipv4
-
-hash_ip_addr = function (string)
+mymodule.hash_ip_addr = function (string)
local str = ""
for i in string.gmatch(string, "%d+") do
str = str .. string.format("%02x", i )
@@ -45,7 +43,7 @@ hash_ip_addr = function (string)
return str
end
-ip_addr_from_hash = function (string)
+mymodule.ip_addr_from_hash = function (string)
local str = ""
for i in string.gmatch(string, "..") do
str = str .. string.format("%d", "0x" .. i) .. "."
@@ -53,7 +51,6 @@ ip_addr_from_hash = function (string)
return string.sub(str, 1, string.len(str)-1)
end
-
--[[
These functions serialize a table, including nested tables.
The code based on code in PiL 2nd edition p113
@@ -66,8 +63,7 @@ local function basicSerialize (o)
end
end
-
-function serialize (name, value, saved, output )
+mymodule.serialize = function(name, value, saved, output )
local need_to_concat = (output == nil)
output = output or {}
saved = saved or {}
@@ -82,7 +78,7 @@ function serialize (name, value, saved, output )
table.insert(output, str .. "{}")
for k,v in pairs(value) do
local fieldname = string.format("%s[%s]", name, basicSerialize(k))
- serialize (fieldname, v, saved, output)
+ mymodule.serialize (fieldname, v, saved, output)
end
end
elseif type(value) == "boolean" then
@@ -99,7 +95,7 @@ end
-- Save the session (unless all it contains is the id)
-- return true or false for success
-save_session = function( sessionpath, sessiontable)
+mymodule.save_session = function( sessionpath, sessiontable)
if nil == sessiontable or nil == sessiontable.id then return false end
-- clear the id key, don't need to store that
@@ -110,7 +106,7 @@ save_session = function( sessionpath, sessiontable)
if #sessiontable then
local output = {}
output[#output+1] = "-- This is an ACF session table."
- output[#output+1] = "local " .. serialize("s", sessiontable)
+ output[#output+1] = "local " .. mymodule.serialize("s", sessiontable)
output[#output+1] = "return s"
local content = table.concat(output, "\n") .. "\n"
@@ -132,11 +128,10 @@ save_session = function( sessionpath, sessiontable)
return true
end
-
-- Loads a session
-- Returns a timestamp (when the session data was saved) and the session table.
-- Insert the session into the "id" field
-load_session = function ( sessionpath, session )
+mymodule.load_session = function ( sessionpath, session )
if type(session) ~= "string" then return nil, {} end
local s = {}
-- session can only have b64 characters in it
@@ -171,7 +166,7 @@ end
-- Unlinks a session (deletes the session file)
-- return nil for failure, ?? for success
-unlink_session = function (sessionpath, session)
+mymodule.unlink_session = function (sessionpath, session)
if type(session) ~= "string" then return nil end
local s = string.gsub (session, "[^" .. b64 .. "]", "")
if s ~= session then
@@ -185,7 +180,7 @@ end
-- Record an invalid logon event
-- ID would typically be an ip address or username
-- the format is lockevent.id.datetime.processid
-record_event = function( sessionpath, id_u, id_ip )
+mymodule.record_event = function( sessionpath, id_u, id_ip )
local x = io.open (string.format ("%s/lockevent.%s.%s.%s.%s",
sessionpath or "/", id_u or "", id_ip or "", os.time(),
(posix.getpid("pid")) or "" ), "w")
@@ -195,7 +190,7 @@ end
-- Check how many invalid logon events
-- have happened for this id in the last n minutes
-- this will only effect the lockevent files
-count_events = function (sessionpath, id_user, ipaddr, minutes, limit)
+mymodule.count_events = function (sessionpath, id_user, ipaddr, minutes, limit)
--we need to have the counts added up? deny off any and or all
local now = os.time()
local minutes_ago = now - ((minutes or minutes_count_events) * 60)
@@ -225,7 +220,7 @@ count_events = function (sessionpath, id_user, ipaddr, minutes, limit)
end
-- Clear events that are older than n minutes
-expired_events = function (sessionpath, minutes)
+mymodule.expired_events = function (sessionpath, minutes)
--current os time in seconds
local now = os.time()
--take minutes and convert to seconds
@@ -252,3 +247,5 @@ expired_events = function (sessionpath, minutes)
end
return 0
end
+
+return mymodule