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

版本