- ソースコード名:Luaの-Resty-のiputils
- ソースURL:http://www.github.com/hamishforbes/lua-resty-iputils
- LUA-resty-のiputilsソースコードのドキュメント
- LUA-resty-のiputilsのソースコード
- URLにアクセスします。
コードをコピー
git://www.github.com/hamishforbes/lua-resty-iputils.git
- ローカルにGitのクローンコード:
コードをコピー
git clone http://www.github.com/hamishforbes/lua-resty-iputils
- 地元へのSubversionのコード:
コードをコピー
$ 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アドレスを処理するためのコレクションのユーティリティ関数です。
アウトライン
コードをコピー
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(各ワーカースレッド〜1メガバイト)
繰り返し呼び出しがキャッシュをリセットします
ip2bin
syntax: bin_ip, bin_octets = iputils.ip2bin(ip)
図3の表の各バイナリ表現の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アドレスを取得し、文字列(例えば。からのCIDRテーブルを解析されました 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
(たとえば。から)のCIDRテーブルを解析します iputils.parse_cidrs
)。
確認IPが利用できるようにバイナリ形式で表現されている場合は、ここではより方法 ip_in_cidrs()
速いです。
IPでのIPは、存在する場合はリターン true
または false
、指定されたネットワークの任意の子ノード。
リターン nil
無効なIPの持つメッセージとエラーメッセージ
行うために
- IPv6のサポート- IPv6のバックアップライブラリ- Luaの-libcidr-FFI