lua-resty-ipmatcher2
用于 OpenResty Lua 的高性能 IP 地址匹配,使用前缀树
$ opm get potats0/lua-resty-ipmatcher2
名称
用于 OpenResty Lua 的高性能 IP 地址匹配,使用前缀树。支持最长前缀匹配
概述
location / {
content_by_lua_block {
local ipmatcher = require "resty.ipmatcher"
local m = ipmatcher.new()
m:insert_ipv4_with_mask("192.168.3.1/24", 1)
m:remove_ipv4_with_mask("192.168.3.1/24")
local a = m:match_ipv4("192.168.3.1")
ngx.say(a)
}
}
方法
ipmatcher.new
创建一个新的哈希表来存储 IP 地址。
用法
ok = ipmatcher.new()
示例
local ip= ipmatcher.new()
ipmatcher.insert_ipv4_host
将主机 IPv4 添加到前缀树
用法
ip 是一个 IPv4 地址,例如 '192.168.1.1' action 是一个数字,例如 1 '允许' 或 '拒绝' 2 delay 是自动老化的次数,默认值为 0,表示永不自动老化
ipmatcher.insert_ipv4_host(ip, action, delay)
示例
local ip = ipmatcher.new()
ip:insert_ipv4_host("192.168.3.1", 1, 1)
ipmatcher.insert_ipv4_with_mask
将 CIDR 添加到前缀树
用法
ip 是一个 CIDR 地址,例如 '192.168.1.0/24' action 是一个数字,例如 1 '允许' 或 '拒绝' 2 delay 是自动老化的次数,默认值为 0,表示永不自动老化
ipmatcher.insert_ipv4_with_mask(ip, action, delay)
示例
local ip = ipmatcher.new()
ip:insert_ipv4_with_mask("192.168.3.0/24", 1, 1)
ipmatcher:match_ipv4
检查 IPv4 地址是否与前缀树匹配
用法
ip 是一个主机 IPv4,"192.168.3.1"
local res = ipmatcher.match_ipv4(ip)
返回 IP 的操作。
示例
local ip = ipmatcher.new()
ip:insert_ipv4_with_mask("192.168.3.0/24", 1, 1)
local res = ipmatcher.match_ipv4('192.168.3.1')
local res = ipmatcher.match_ipv4('192.168.3.2')
ipmatcher:remove_host
从前缀树中删除 IPv4 主机
用法
ip 是一个主机 IPv4,"192.168.3.1"
local res = ipmatcher.remove_host(ip)
示例
local ip = ipmatcher.new()
ip:insert_ipv4_host("192.168.3.1", 1, 1)
ip:remove_host("192.168.3.1")
ipmatcher:remove_ipv4_with_mask
从前缀树中删除 CIDR
用法
ip 是一个 CIDR IPv4,"192.168.3.1/24"
local res = ipmatcher.remove_ipv4_with_mask(ip)
示例
local ip = ipmatcher.new()
ip:insert_ipv4_with_mask("192.168.3.0/24", 1, 1)
ip:remove_ipv4_with_mask("192.168.3.0/24")
安装
在编译 lua-resty-ipmatcher2 之前,需要确保已安装 Rust 稳定版
从 LuaRocks
luarocks install lua-resty-ipmatcher2
从源代码
make install
作者
potatso
许可证
apache2
依赖
luajit
版本
-
用于 OpenResty Lua 的高性能 IP 地址匹配,使用前缀树 2024-03-20 05:42:36
-
用于 OpenResty Lua 的高性能 IP 地址匹配,使用前缀树 2024-03-20 01:04:16