lua-resty-iputils, 在Openresty中,用于处理IP地址的实用程序函数
?
- 源代碼名稱:lua-resty-iputils
- 源代碼網(wǎng)址:http://www.github.com/hamishforbes/lua-resty-iputils
- lua-resty-iputils源代碼文檔
- lua-resty-iputils源代碼下載
- Git URL:
復(fù)制代碼
git://www.github.com/hamishforbes/lua-resty-iputils.git - Git Clone代碼到本地:
復(fù)制代碼
git clone http://www.github.com/hamishforbes/lua-resty-iputils - Subversion代碼到本地:
復(fù)制代碼
$ svn co --depth empty http://www.github.com/hamishforbes/lua-resty-iputils Checked out revision 1. $ cd repo $ svn up trunk
lua-resty-iputils
用于處理IP地址的實(shí)用程序函數(shù)集合。
概述
復(fù)制代碼
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-workerwhitelist = 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) thenreturn ngx.exit(ngx.HTTP_FORBIDDEN)end}方法
enable_lrucache
syntax: ok, err = iputils.enable_lrucache(size?)
創(chuàng)建一個(gè)全局LruCache對(duì)象用于緩存ip2bin查找。
大小是可選的,默認(rèn)值為 4000條( 每個(gè)工作線程 ~1MB )
反復(fù)調(diào)用將重置緩存
ip2bin
syntax: bin_ip, bin_octets = iputils.ip2bin(ip)
返回IPv4地址和包含每個(gè)八位字節(jié)的二進(jìn)制表示形式的表的二進(jìn)制表示。
返回錯(cuò)誤消息的nil?和錯(cuò)誤消息
parse_cidr
syntax: lower, upper = iputils.parse_cidr(cidr)
返回IPv4網(wǎng)絡(luò)最低( 網(wǎng)絡(luò)) 和最高( 廣播) 地址的二進(jìn)制表示形式。
parse_cidrs
syntax: parsed = iputils.parse_cidrs(cidrs)
獲取一個(gè)表格格式的IPV4網(wǎng)絡(luò)表,并返回一個(gè)表格containg的表格,下面的地址。
如果表中存在無效網(wǎng)絡(luò),則記錄錯(cuò)誤并返回其他網(wǎng)絡(luò)
ip_in_cidrs
syntax: bool, err = iputils.ip_in_cidrs(ip, cidrs)
獲取一個(gè)字符串IPv4地址和一個(gè)已經(jīng)解析的CIDRs表( 比如。 來自?iputils.parse_cidrs?)。
如果IP中存在 IP,則返回一個(gè)?true?或者?false?;指定的網(wǎng)絡(luò)的任何子節(jié)點(diǎn)。
返回?nil?和帶有無效IP的錯(cuò)誤消息
binip_in_cidrs
syntax: bool, err = iputils.binip_in_cidrs(bin_ip, cidrs)
獲取 Nginx 二進(jìn)制IPv4地址( 比如。?ngx.var.binary_remote_addr?) 和解析的CIDRs表( 比如。 來自?iputils.parse_cidrs?)。
如果所檢查的IP已經(jīng)作為二進(jìn)制表示形式可用,這里方法比?ip_in_cidrs()?快得多。
如果IP中存在 IP,則返回一個(gè)?true?或者?false?;指定的網(wǎng)絡(luò)的任何子節(jié)點(diǎn)。
返回?nil?和帶有無效IP的錯(cuò)誤消息
待辦事項(xiàng)
- IPv6支持- 支持IPv6的備用庫-?lua-libcidr-ffi
總結(jié)
以上是生活随笔為你收集整理的lua-resty-iputils, 在Openresty中,用于处理IP地址的实用程序函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《视频直播技术详解》系列之七:现代播放器
- 下一篇: OpenResty简介及学习笔记