SSOwat/init.lua

68 lines
1.9 KiB
Lua
Raw Permalink Normal View History

--
-- 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.
--
-- Path of the configuration
conf_path = "/etc/ssowat/conf.json"
log_file = "/var/log/nginx/ssowat.log"
2013-10-20 16:38:49 +02:00
-- 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"
2013-10-15 10:11:39 +02:00
-- Load libraries
local json = require "json"
local lualdap = require "lualdap"
local math = require "math"
local lfs = require "lfs"
local socket = require "socket"
local config = require "config"
lustache = require "lustache"
2013-10-15 10:11:39 +02:00
-- Make sure the log file exists and we can write in it
io.popen("touch "..log_file)
io.popen("chown www-data "..log_file)
io.popen("chmod u+w "..log_file)
-- Persistent shared table
2013-10-20 22:07:26 +02:00
flashs = {}
2014-05-12 14:32:56 +02:00
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()
2019-07-11 15:32:51 +02:00
local length = 64
local random_bytes = io.open("/dev/urandom"):read(length);
if string.len(random_bytes) ~= length then
error("Not enough random bytes read")
end
return tohex(random_bytes);
end
-- Load translations in the "i18n" above table
2014-05-12 14:32:56 +02:00
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
2013-10-16 11:27:18 +02:00
-- You should see that in your Nginx error logs by default
2013-10-20 17:24:44 +02:00
ngx.log(ngx.INFO, "SSOwat ready")