32 lines
699 B
Lua
32 lines
699 B
Lua
local M = {}
|
|
local iputils = require "resty.iputils"
|
|
|
|
function M.load_ip (path, dict)
|
|
local file = io.open(path, "r")
|
|
if not file then
|
|
ngx.log(ngx.ERR, "[INIT] can't open " .. path)
|
|
else
|
|
io.input(file)
|
|
local i = 0
|
|
for line in io.lines() do
|
|
if string.match(line, "/") then
|
|
local lower, upper = iputils.parse_cidr(line)
|
|
local bin_ip = lower
|
|
while bin_ip <= upper do
|
|
dict:set(bin_ip, true, 0)
|
|
bin_ip = bin_ip + 1
|
|
i = i + 1
|
|
end
|
|
else
|
|
local bin_ip, bin_octets = iputils.ip2bin(line)
|
|
dict:set(bin_ip, true, 0)
|
|
i = i + 1
|
|
end
|
|
end
|
|
ngx.log(ngx.ERR, "[INIT] loaded " .. tostring(i) .. " IPs from " .. path)
|
|
io.close(file)
|
|
end
|
|
end
|
|
|
|
return M
|