Openresty、IPアドレスを処理するためのユーティリティ関数でLUA-resty-のiputils、

 

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の持つメッセージとエラーメッセージ

行うために

おすすめ

転載: blog.csdn.net/ai2000ai/article/details/95306723