Первый вариант. Внешний ACL-helper для идентификации пользователей прозрачного squid...
[lua-squid-acl-helper.git] / src / helper.lua
1 #!/usr/bin/lua
2
3 config     = require "config"
4 connection = require "connection"
5
6 io.stdout:setvbuf 'no'
7 io.stdin:setvbuf 'no'
8
9 if arg then
10   cf = arg[1]
11 else 
12   cf = nil
13 end    
14
15 config.read(cf)
16
17 function string:split(sep)
18    local sep, fields = sep or ":", {}
19    local pattern = string.format("([^%s]+)", sep)
20    self:gsub(pattern, function(c) fields[#fields+1] = c end)
21    return fields
22 end
23
24 function main()
25   while true do
26     str=io.read()
27     vals = str:split(" ")
28     status, res = pcall(connection.auth,vals[1],vals[2],vals[3])
29     if status then
30       if res and res ~= "" then
31         io.write("OK user="..res.."\n")
32       else 
33         io.write("OK\n")
34       end
35     else
36       io.write("BH\n")
37     end    
38   end
39 end
40
41 main()
42