当前位置: 首页 > 工具软件 > lua-resty-ffi > 使用案例 >

lua-resty-iputils, 在Openresty中,用于处理IP地址的实用程序函数

葛修筠
2023-12-01

 

lua-resty-iputils

用于处理IP地址的实用程序函数集合。

概述

复制代码


init_by_lua_block {


 local iputils = require("resty.iputils")


 iputils.enable_lrucache()


 local whitelist_ips = {


"127.0.0.1",


"10.10.10.0/24",


"192.168.0.0/16",


 }



 -- WARNING: Global variable, recommend this is cached at the module level


 -- https://github.com/openresty/lua-nginx-module#data-sharing-within-an-nginx-worker


 whitelist = iputils.parse_cidrs(whitelist_ips)


}



access_by_lua_block {


 local iputils = require("resty.iputils")


 if not iputils.ip_in_cidrs(ngx.var.remote_addr, whitelist) then


 return ngx.exit(ngx.HTTP_FORBIDDEN)


 end


}


方法

enable_lrucache

syntax: ok, err = iputils.enable_lrucache(size?)

创建一个全局LruCache对象用于缓存ip2bin查找。

大小是可选的,默认值为 4000条( 每个工作线程 ~1MB )

反复调用将重置缓存

ip2bin

syntax: bin_ip, bin_octets = iputils.ip2bin(ip)

返回IPv4地址和包含每个八位字节的二进制表示形式的表的二进制表示。

返回错误消息的nil 和错误消息

parse_cidr

syntax: lower, upper = iputils.parse_cidr(cidr)

返回IPv4网络最低( 网络) 和最高( 广播) 地址的二进制表示形式。

parse_cidrs

syntax: parsed = iputils.parse_cidrs(cidrs)

获取一个表格格式的IPV4网络表,并返回一个表格containg的表格,下面的地址。

如果表中存在无效网络,则记录错误并返回其他网络

ip_in_cidrs

syntax: bool, err = iputils.ip_in_cidrs(ip, cidrs)

获取一个字符串IPv4地址和一个已经解析的CIDRs表( 比如。 来自 iputils.parse_cidrs )。

如果IP中存在 IP,则返回一个 true 或者 false ;指定的网络的任何子节点。

返回 nil 和带有无效IP的错误消息

binip_in_cidrs

syntax: bool, err = iputils.binip_in_cidrs(bin_ip, cidrs)

获取 Nginx 二进制IPv4地址( 比如。 ngx.var.binary_remote_addr ) 和解析的CIDRs表( 比如。 来自 iputils.parse_cidrs )。

如果所检查的IP已经作为二进制表示形式可用,这里方法比 ip_in_cidrs() 快得多。

如果IP中存在 IP,则返回一个 true 或者 false ;指定的网络的任何子节点。

返回 nil 和带有无效IP的错误消息

待办事项

 类似资料: