lua - resty - iputils, Openresty 에서 IP 주 소 를 처리 하 는 실 용적 인 프로그램 함수

2938 단어 openresty
  • 소스 코드 이름: lua - resty - iputils
  • 소스 코드 사이트 주소:http://www.github.com/hamishforbes/lua-resty-iputils
  • lua - resty - iputils 소스 코드 문서
  • lua - resty - iputils 소스 코드 다운로드
  • Git URL:
    git://www.github.com/hamishforbes/lua-resty-iputils.git
  • Git Clone 코드 를 로 컬 로:
    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?)
    ip2bin 검색 을 위해 전역 LruCache 대상 을 만 듭 니 다.
    크기 는 선택 할 수 있 습 니 다. 기본 값 은 4000 개 입 니 다. (작업 라인 당 ~ 1MB)
    반복 호출 캐 시 리 셋
    ip2bin syntax: bin_ip, bin_octets = iputils.ip2bin(ip)
    IPv 4 주소 와 8 비트 바이트 당 바 이 너 리 표시 형식 을 포함 하 는 표 의 바 이 너 리 표 시 를 되 돌려 줍 니 다.
    오류 메 시 지 를 되 돌려 주 는 nil 오류 메시지
    parse_cidr syntax: lower, upper = iputils.parse_cidr(cidr)
    IPv 4 네트워크 최저 (네트워크) 와 최고 (방송) 주소 의 바 이 너 리 표시 형식 을 되 돌려 줍 니 다.
    parse_cidrs syntax: parsed = iputils.parse_cidrs(cidrs)
    표 형식의 IPV 4 네트워크 표를 가 져 오고 표 containeg 의 표, 아래 주 소 를 되 돌려 줍 니 다.
    표 에 잘못된 네트워크 가 존재 하면 오 류 를 기록 하고 다른 네트워크 로 돌아 갑 니 다.
    ip_in_cidrs syntax: bool, err = iputils.ip_in_cidrs(ip, cidrs)
    IPv 4 주소 와 해 석 된 CIDRs 표 (예:...  iputils.parse_cidrs  )。
    IP 에 IP 가 존재 하면 되 돌려 줍 니 다.  true  혹은  false  ;지정 한 네트워크 의 모든 하위 노드 입 니 다.
    되돌아오다  nil  잘못된 IP 가 있 는 오류 메시지
    binip_in_cidrs syntax: bool, err = iputils.binip_in_cidrs(bin_ip, cidrs)
    Nginx 바 이 너 리 IPv 4 주소 가 져 오기 (예:.  ngx.var.binary_remote_addr  ) CIDRs 표  iputils.parse_cidrs  )。
    만약 검 사 된 IP 가 바 이 너 리 표시 형식 으로 사용 된다 면, 이 방법 은  ip_in_cidrs()  훨씬 빠르다.
    IP 에 IP 가 존재 하면 되 돌려 줍 니 다.  true  혹은  false  ;지정 한 네트워크 의 모든 하위 노드 입 니 다.
    되돌아오다  nil  잘못된 IP 가 있 는 오류 메시지
    업무
  • IPv 6 지원 - IPv 6 지원 예비 라 이브 러 리 - lua-libcidr-ffi
  • 좋은 웹페이지 즐겨찾기