diff options
author | Hans Hagen <pragma@wxs.nl> | 2018-03-10 19:29:49 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2018-03-10 19:29:49 +0100 |
commit | f923c957a3b322ae3ee8e7a0b20df1580869bee7 (patch) | |
tree | 988b46f68add1068e6110a9b9223d0106a888e00 /tex/context/base/mkiv/util-sql-logins.lua | |
parent | 62185974cd9c16ad11788dbeebb30f466a2fb38c (diff) | |
download | context-f923c957a3b322ae3ee8e7a0b20df1580869bee7.tar.gz |
2018-03-10 15:02:00
Diffstat (limited to 'tex/context/base/mkiv/util-sql-logins.lua')
-rw-r--r-- | tex/context/base/mkiv/util-sql-logins.lua | 136 |
1 files changed, 65 insertions, 71 deletions
diff --git a/tex/context/base/mkiv/util-sql-logins.lua b/tex/context/base/mkiv/util-sql-logins.lua index e4329ecc2..9717a8175 100644 --- a/tex/context/base/mkiv/util-sql-logins.lua +++ b/tex/context/base/mkiv/util-sql-logins.lua @@ -27,7 +27,13 @@ logins.cooldowntime = logins.cooldowntime or 10 * 60 logins.purgetime = logins.purgetime or 1 * 60 * 60 logins.autopurge = true -local template_create = [[ +local function checkeddb(presets,datatable) + return sql.usedatabase(presets,datatable or presets.datatable or "logins") +end + +logins.usedb = checkeddb + +local template = [[ CREATE TABLE `logins` ( @@ -46,6 +52,42 @@ CREATE TABLE COMMENT='state: 0=unset 1=known 2=unknown' ]] +function logins.createdb(presets,datatable) + + local db = checkeddb(presets,datatable) + + local data, keys = db.execute { + template = template, + variables = { + basename = db.basename, + }, + } + + report_logins("datatable %a created in %a",db.name,db.base) + + return db + +end + +local template =[[ + DROP TABLE IF EXISTS %basename% ; +]] + +function logins.deletedb(presets,datatable) + + local db = checkeddb(presets,datatable) + + local data, keys = db.execute { + template = template, + variables = { + basename = db.basename, + }, + } + + report_logins("datatable %a removed in %a",db.name,db.base) + +end + local states = { [0] = "unset", [1] = "known", @@ -105,58 +147,54 @@ local template_purge = [[ local cache = { } setmetatable(cache, { __mode = 'v' }) -local function usercreate(presets) - sqlexecute { - template = template_create, - presets = presets, - } -end +-- local function usercreate(presets) +-- sqlexecute { +-- template = template_create, +-- presets = presets, +-- } +-- end -local function userunknown(presets,name) +function logins.userunknown(db,name) local d = { name = name, state = 2, time = ostime(), n = 0, } - sqlexecute { + db.execute { template = template_update, - presets = presets, variables = d, } cache[name] = d report_logins("user %a is registered as unknown",name) end -local function userknown(presets,name) +function logins.userknown(db,name) local d = { name = name, state = 1, time = ostime(), n = 0, } - sqlexecute { + db.execute { template = template_update, - presets = presets, variables = d, } cache[name] = d report_logins("user %a is registered as known",name) end -local function userreset(presets,name) - sqlexecute { +function logins.userreset(db,name) + db.execute { template = template_delete, - presets = presets, } cache[name] = nil report_logins("user %a is reset",name) end -local function userpurge(presets,delay) - sqlexecute { +local function userpurge(db,delay) + db.execute { template = template_purge, - presets = presets, variables = { time = ostime() - (delay or logins.purgetime), } @@ -165,6 +203,8 @@ local function userpurge(presets,delay) report_logins("users are purged") end +logins.userpurge = userpurge + local function verdict(okay,...) if not trace_logins then -- no tracing @@ -178,11 +218,11 @@ end local lasttime = 0 -local function userpermitted(presets,name) +function logins.userpermitted(db,name) local currenttime = ostime() if logins.autopurge and (lasttime == 0 or (currenttime - lasttime > logins.purgetime)) then report_logins("automatic purge triggered") - userpurge(presets) + userpurge(db) lasttime = currenttime end local data = cache[name] @@ -190,9 +230,8 @@ local function userpermitted(presets,name) report_logins("user %a is cached",name) else report_logins("user %a is fetched",name) - data = sqlexecute { + data = db.execute { template = template_fetch, - presets = presets, converter = converter_fetch, variables = { name = name, @@ -206,9 +245,8 @@ local function userpermitted(presets,name) time = currenttime, n = 1, } - sqlexecute { + db.execute { template = template_insert, - presets = presets, variables = d, } cache[name] = d @@ -237,9 +275,8 @@ local function userpermitted(presets,name) time = currenttime, n = 1, } - sqlexecute { + db.execute { template = template_update, - presets = presets, variables = d, } cache[name] = d @@ -251,9 +288,8 @@ local function userpermitted(presets,name) time = currenttime, n = n + 1, } - sqlexecute { + db.execute { template = template_update, - presets = presets, variables = d, } cache[name] = d @@ -261,46 +297,4 @@ local function userpermitted(presets,name) end end -logins.create = usercreate -logins.known = userknown -logins.unknown = userunknown -logins.reset = userreset -logins.purge = userpurge -logins.permitted = userpermitted - return logins - --- -- - --- sql.setmethod("client") - --- local presets = { --- database = "test", --- username = "root", --- password = "something", --- } - --- logins.cooldowntime = 2*60 --- logins.maxnoflogins = 3 - --- sql.logins.purge(presets,0) - --- for i=1,6 do --- print("") --- sql.logins.permitted(presets,"hans") --- sql.logins.permitted(presets,"kees") --- sql.logins.permitted(presets,"ton") --- if i == 1 then --- -- sql.logins.unknown(presets,"hans") --- -- sql.logins.known(presets,"kees") --- end --- end - --- if loginpermitted(presets,username) then --- if validlogin(username,...) then --- -- sql.logins.known(presets,username) --- elseif unknownuser(username) then --- sql.logins.unknown(presets,username) --- end --- end - |