SSOwat/init.lua

57 lines
1.5 KiB
Lua

--
-- init.lua
--
-- This is the initialization file of SSOwat. It is called once at the Nginx
-- server's start.
-- Consequently, all the variables declared (along with libraries and
-- translations) in this file will be *persistent* from one HTTP request to
-- another.
--
-- Remove prepending '@' & trailing 'init.lua'
script_path = string.sub(debug.getinfo(1).source, 2, -9)
-- Include local libs in package.path
package.path = package.path .. ";"..script_path.."?.lua"
-- Load libraries
local json = require "json"
local lualdap = require "lualdap"
local math = require "math"
local hige = require "hige"
local lfs = require "lfs"
local socket = require "socket"
local config = require "config"
-- Persistent shared table
flashs = {}
i18n = {}
-- convert a string to a hex
function tohex(str)
return (str:gsub('.', function (c)
return string.format('%02X', string.byte(c))
end))
end
-- Efficient function to get a random string
function random_string()
local random_bytes = io.open("/dev/urandom"):read(64);
return tohex(random_bytes);
end
-- Load translations in the "i18n" above table
local locale_dir = script_path.."portal/locales/"
for file in lfs.dir(locale_dir) do
if string.sub(file, -4) == "json" then
local lang = string.sub(file, 1, 2)
local locale_file = io.open(locale_dir..file, "r")
i18n[lang] = json.decode(locale_file:read("*all"))
end
end
-- Path of the configuration
conf_path = "/etc/ssowat/conf.json"
-- You should see that in your Nginx error logs by default
ngx.log(ngx.INFO, "SSOwat ready")