모듈:IP 블록/샌드박스

Module
각 주소를 포함하는 IP 주소의 최소 크기 블록 계산 인수에 IPv4 또는 IPv6 주소를 입력했습니다.  현지의 비트32 = 요구하다('bit32')  현지의 수집  물품을 보관하는 탁자 수집 = {  더하다 = 기능. (자신, 항목)   한다면 항목 ~= 영의 그리고나서    자신.n = 자신.n + 1    자신[자신.n] = 항목   끝.  끝.,  합류하다 = 기능. (자신, )   돌아가다 테이블.콘캣(자신, )  끝.,  제거한다. = 기능. (자신, 포스)   한다면 자신.n > 0 그리고. (포스 == 영의 또는 (0 < 포스 그리고. 포스 <= 자신.n)) 그리고나서    자신.n = 자신.n - 1    돌아가다 테이블.제거(자신, 포스)   끝.  끝.,  종류 = 기능. (자신, 컴프)   테이블. 테이블.(자신, 컴프)  끝.,  신규 = 기능. ()   돌아가다 상을 차리다({n = 0}, 수집)  끝. } 수집.__index = 수집  현지의 기능. (본문)  텍스트가 0이거나 비어 있으면 true를 반환합니다(문자열로 가정).  돌아가다 본문 == 영의 또는 본문 == '' 끝.  현지의 타임스탬프 = {}  캐시 현지의 기능. start_date(코드, 몇달.)  사용자 기여를 나열할 URL의 타임스탬프 문자열 반환  반납일 이후에  코드는 원하는 형식을 지정합니다.  이 모듈의 경우 최근 기여만 필요하므로,  timestamp는 오늘 날짜에서 지정된 월 수(1 ~ 12)를 뺀 날짜입니다.  현지의 열쇠 = 코드 .. 몇달.  한다면 것은 아니다. 타임스탬프[열쇠] 그리고나서   현지의 날짜. = os.날짜('!*t')  오늘의 UTC 날짜   현지의 y, m, d = 날짜..연도, 날짜.., 날짜..낮의  전체 연도, 월(1-12), 일(1-31)   m = m - 몇달.   한다면 m <= 0 그리고나서    m = m + 12    y = y - 1   끝.   현지의 제한. = m == 2 그리고. 28 또는 30   한다면 d > 제한. 그리고나서    d = 제한.  날짜가 유효하다는 것을 확실히 하기에 충분한.   끝.   타임스탬프['y-m-d' .. 몇달.] = string.형식('%d-%02d-%02d', y, m, d)   타임스탬프['ymdHMS' .. 몇달.] = string.형식('%d%02d%02d000000', y, m, d)  끝.  돌아가다 타임스탬프[열쇠] 또는 '' 끝.  현지의 note_text = {  범위 = '*범위 링크는 이전 %s의 기여도를 나타냅니다.',  가젯 = [=[ *<span id="need-gadget"></span>IPv6 범위에 대한 기여 링크에는 "<span style="color:green;"이 필요합니다.특수한 경우 /16, /24 및 /27 – /32 CIDR 범위 허용:기부 양식 </span>" 가젯은 특수:기본 설정 #mw-prefection-gadgets Special:[환경설정]], 및 브라우저에서 스크립팅을 사용할 수 있습니다.]=], }  현지의 기능. 메모를 하다(줄들, 열쇠)  특정 노트가 필요하다는 사실을 기록하고 반환합니다.  wikitext를 사용하여 노트에 대한 링크를 찾거나 링크가 필요하지 않은 경우 ''을 클릭합니다.  한다면 것은 아니다. 줄들.노노트 그리고나서   줄들.메모들 = 줄들.메모들 또는 {}   한다면 것은 아니다. 줄들.메모들[열쇠] 그리고나서    한다면 열쇠 == '''비공식''' 그리고나서     줄들.메모들[열쇠] = note_text[열쇠]    그렇지 않으면 열쇠 == '범위' 그리고나서     현지의 언제 = '월'     한다면 줄들.몇달. > 1 그리고나서      언제 = 줄들.몇달. .. 개월간의     끝.     줄들.메모들[열쇠] = string.형식(note_text.범위, 언제)    또 다른     오류('make_note: 예기치 않은 키')    끝.   끝.   한다면 열쇠 == '''비공식''' 그리고나서    돌아가다 [[#http-http <sup>[note]</sup>]]]'   끝.  끝.  돌아가다 '' 끝.  현지의 기능. description_총계(, isalloc)  지정된 주소 수 또는 /64 할당을 설명하는 텍스트를 반환합니다.  한다면  <= 9999 그리고나서   총 할당 수가 /64인 경우 분수를 가질 수 있습니다.   한다면  < 9 그리고나서    돌아가다 (string.형식('%.1f', ):gsub('%.0
                
, '')) 끝. 돌아가다 string.형식('%.0f', ) 끝. 한다면 것은 아니다. isalloc 그리고나서 현지의 할당 = 2^64 한다면 >= 할당 그리고나서 돌아가다 description_총계( / 할당, 진실의) .. ' /64' 끝. 끝. = /1024 현지의 접미사 = 'K' 한다면 >= 1024 그리고나서 = /1024 접미사 = 'M' 한다면 >= 1024 그리고나서 = /1024 접미사 = 'G' 한다면 > 64 그리고나서 돌아가다 '>64G' 끝. 끝. 끝. 돌아가다 string.형식('%.0f', ) .. 접미사 끝. 현지의 기능. descript_size(ipsize, 크기) 크기가 = 접두사 길이인 범위에 있는 IP 수를 설명하는 텍스트를 반환합니다. 현지의 기능. 문자 그대로의(n) 한다면 n <= 16 그리고나서 돌아가다 끈으로 묶는(2^n) 끝. 한다면 n <= 19 그리고나서 돌아가다 끈으로 묶는(2^(n - 10)) .. 'K' 끝. 한다면 n <= 29 그리고나서 돌아가다 끈으로 묶는(2^(n - 20)) .. 'M' 끝. 한다면 n <= 36 그리고나서 돌아가다 끈으로 묶는(2^(n - 30)) .. 'G' 끝. 돌아가다 '>64G' 끝. 현지의 주인 = ipsize - 크기 한다면 주인 <= 32 그리고나서 IPv4 또는 IPv6. 돌아가다 문자 그대로의(주인) 끝. IPv6이어야 합니다. 한다면 주인 <= 64 그리고나서 현지의 s = ({ [64] = '1', [63] = '50%', [62] = '25%', [61] = '12%', [60] = '6%', [59] = '3%', [58] = '2%' })[주인] 또는 '<1%' 돌아가다 s .. ' /64' 끝. 크기가 64 미만인 IPv6. 돌아가다 문자 그대로의(주인 - 64) .. ' /64' 끝. 현지의 기능. ipv6_string(ip) 지정된 IPv6 주소와 동일한 문자열을 반환합니다. 현지의 z1, z2 "::"로 표시되는 0 런의 인덱스 현지의 zstart, z 카운트 위해서 i = 1, 9 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 두 개 이상의 0에서 가장 긴 런의 왼쪽 끝을 찾습니다. 한다면 i < 9 그리고. ip[i] == 0 그리고나서 한다면 zstart 그리고나서 z 카운트 = z 카운트 + 1 또 다른 zstart = i z 카운트 = 1 끝. 또 다른 한다면 z 카운트 그리고. z 카운트 > 1 그리고나서 한다면 것은 아니다. z1 또는 z 카운트 > z2 - z1 + 1 그리고나서 z1 = zstart z2 = zstart + z 카운트 - 1 끝. 끝. zstart = 영의 z 카운트 = 영의 끝. 끝. 현지의 부품. = 수집.신규() 위해서 i = 1, 8 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 한다면 z1 그리고. z1 <= i 그리고. i <= z2 그리고나서 한다면 i == z1 그리고나서 한다면 z1 == 1 또는 z2 == 8 그리고나서 한다면 z1 == 1 그리고. z2 == 8 그리고나서 돌아가다 '::' 끝. 부품.:더하다(':') 또 다른 부품.:더하다('') 끝. 끝. 또 다른 부품.:더하다(string.형식('%x', ip[i])) 끝. 끝. 돌아가다 부품.:합류하다(':') 끝. 현지의 기능. ip_string(ip) 지정된 IP 주소(IPv4 또는 IPv6)와 동일한 문자열을 반환합니다. 한다면 ip.n == 2 그리고나서 IPv4. 현지의 부품. = {} 위해서 i = 1, 2 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 현지의 w = ip[i] 현지의 q = i == 1 그리고. 1 또는 3 부품.[q] = 수학.플로어(w / 256) 부품.[q+1] = w % 256 끝. 돌아가다 테이블.콘캣(부품., '.') 끝. 돌아가다 ipv6_string(ip) 끝. IP 주소에 대한 일부 작업에 대해 적합합니다. 현지의 입mt = { __eq = 기능. (lhs, rhs) 번호가 매겨진 테이블의 값이 일치하면 true를 반환합니다. 한다면 lhs.n == rhs.n 그리고나서 위해서 i = 1, lhs.n 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 한다면 lhs[i] ~= rhs[i] 그리고나서 돌아가다 거짓의 끝. 끝. 돌아가다 진실의 끝. 돌아가다 거짓의 끝., __lt = 기능. (lhs, rhs) lhs < rhs이면 true를 반환합니다. 한다면 lhs.n == rhs.n 그리고나서 위해서 i = 1, lhs.n 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 한다면 lhs[i] ~= rhs[i] 그리고나서 돌아가다 lhs[i] < rhs[i] 끝. 끝. 돌아가다 거짓의 끝. 돌아가다 lhs.n < rhs.n IPv6 이전에 IPv4 정렬(필요하지는 않지만) 끝., } 현지의 기능. ipv4_address(ip_str) 동등한 두 개의 16비트 단어(숫자) 컬렉션을 반환 쿼드 점 문자열로 지정된 IPv4 주소로, 또는 무효인 경우 0을 반환합니다. 이 표현은 IPv6 주소와의 호환성을 위한 것입니다. 현지의 부품. = 수집.신규() 현지의 s = ip_str:경기('^%s*(.)%s*
$$SIDE_BOTTOM$$
    $$BOTTOM$$