Добыча MAC для IPv6 (с предварительным "прощупыванием" хоста для его попадания в...
[lua-squid-acl-helper.git] / src / config.lua
1 json = require "json"
2
3 _config = {}
4
5 function _config.read(file)
6
7   local file = file or "/opt/squid-auth-helper/config.json"
8   local f = assert(io.open(file))
9   local cfg = json.decode(f:read("*all"))
10
11   _config.pmap = cfg["portmap"] or {}  
12
13   _config.ident_timeout = 2
14   _config.ident_default = nil
15
16   if cfg["ident"] then
17     _config.ident_timeout = cfg["ident"]["timeout"] or _config.ident_timeout
18     _config.ident_default = cfg["ident"]["default"] or _config.ident_default
19   end
20
21   _config.ipmap = {}
22   _config.macmap = {}
23   
24   if cfg["hosts"] then
25     if cfg["hosts"]["ip"] then
26       for k, v in pairs(cfg["hosts"]["ip"]) do
27         local k, n = string.gsub(k, "%.", "%%.")
28         local k, n = string.gsub(k,"%*",".*")
29         _config.ipmap["^"..k.."$"] = v 
30       end
31     end
32     if cfg["hosts"]["mac"] then
33       for k, v in pairs(cfg["hosts"]["mac"]) do
34         local k, n = string.gsub(k,"%*",".*")
35         _config.macmap["^"..k.."$"] = v 
36       end
37     end 
38   end
39
40   _config.arp_ttl = 60
41
42   if cfg["arp-ttl"] then
43     _config.arp_ttl = tonumber(cfg["arp-ttl"])
44   end
45   
46 end
47
48 function _config.map_port(port)
49   return _config.pmap[tostring(port)] or port
50 end
51
52 function _config.map_ip(ip)
53   for k,v in pairs(_config.ipmap) do
54     if string.match(ip,k) then
55       return v
56     end  
57   end
58   return nil
59 end
60
61 function _config.map_mac(mac)
62   for k,v in pairs(_config.macmap) do
63     if string.match(mac,k) then
64       return v
65     end  
66   end
67   return nil
68 end
69
70 return _config