Vai al contenuto

Modulo:IP validator

Questa pagina è protetta dallo spostamento
Questa pagina è protetta
Da Wikipedia, l'enciclopedia libera.
Versione del 21 feb 2018 alle 19:05 di Horcrux (discussione | contributi) (Nuova pagina: local str = {} function str.is_ipv4( frame ) local new_args = str._getParameters( frame.args, { 's' } ); local s = new_args['s'] or ''; local LEN = 4;...)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Modulo per verificare se una data stringa rappresenta un indirizzo IP valido. Il template corrispondente è Template:IP?.

Le funzioni disponibili sono is_ipv4, is_ipv6 e is_ip da usare per convalidare, rispettivamente, secondo lo standard IPv4, IPv6 o uno dei due indistintamente. Non è prevista la convalida di IPv4-mapped address né di IPv4-compatible address.

Di seguito alcuni esempi d'uso:

Funzione Stringa da analizzare Codice da usare Risultato
is_ipv4 0.0.0.0 {{#invoke:IP validator|is_ipv4|0.0.0.0}} Errore Lua alla linea 4: attempt to call field '_getParameters' (a nil value).
93.2.50.255 {{#invoke:IP validator|is_ipv4|93.2.50.255}} Errore Lua alla linea 4: attempt to call field '_getParameters' (a nil value).
93.2.50.256 {{#invoke:IP validator|is_ipv4|93.2.50.256}} Errore Lua alla linea 4: attempt to call field '_getParameters' (a nil value).
93.2.50 {{#invoke:IP validator|is_ipv4|93.2.50}} Errore Lua alla linea 4: attempt to call field '_getParameters' (a nil value).
A.2.50.255 {{#invoke:IP validator|is_ipv4|A.2.50.255}} Errore Lua alla linea 4: attempt to call field '_getParameters' (a nil value).
is_ipv6 2001:13:A1B:90F:512:FFFF:88:AF3 {{#invoke:IP validator|is_ipv6|2001:13:A1B:90F:512:FFFF:88:AF3}} Errore Lua alla linea 24: attempt to call field '_getParameters' (a nil value).
4:4:4:4:4:4:4:4 {{#invoke:IP validator|is_ipv6|4:4:4:4:4:4:4:4}} Errore Lua alla linea 24: attempt to call field '_getParameters' (a nil value).
2001:13:A1B::FFFF:AF3 {{#invoke:IP validator|is_ipv6|2001:13:A1B::FFFF:AF3}} Errore Lua alla linea 24: attempt to call field '_getParameters' (a nil value).
2001:13:A1B:90F::FFFF:88:AF3 {{#invoke:IP validator|is_ipv6|2001:13:A1B:90F::FFFF:88:AF3}} Errore Lua alla linea 24: attempt to call field '_getParameters' (a nil value).
2001::90F::FFFF:88:AF3 {{#invoke:IP validator|is_ipv6|2001::90F::FFFF:88:AF3}} Errore Lua alla linea 24: attempt to call field '_getParameters' (a nil value).
2001:13:A1B:90F:512:FFFF:88 {{#invoke:IP validator|is_ipv6|2001:13:A1B:90F:512:FFFF:88}} Errore Lua alla linea 24: attempt to call field '_getParameters' (a nil value).
2001.13.A1B.90F.512.FFFF.88.AF3 {{#invoke:IP validator|is_ipv6|2001.13.A1B.90F.512.FFFF.88.AF3}} Errore Lua alla linea 24: attempt to call field '_getParameters' (a nil value).
is_ip 1.2.3.4 {{#invoke:IP validator|is_ip|1.2.3.4}} Errore Lua alla linea 4: attempt to call field '_getParameters' (a nil value).
2001:13:A1B:90F:512:FFFF:88:AF3 {{#invoke:IP validator|is_ip|2001:13:A1B:90F:512:FFFF:88:AF3}} Errore Lua alla linea 4: attempt to call field '_getParameters' (a nil value).
4:4:4:4 {{#invoke:IP validator|is_ip|4:4:4:4}} Errore Lua alla linea 4: attempt to call field '_getParameters' (a nil value).
test {{#invoke:IP validator|is_ip|test}} Errore Lua alla linea 4: attempt to call field '_getParameters' (a nil value).

local str = {}

function str.is_ipv4( frame )
    local new_args = str._getParameters( frame.args, { 's' } );
    local s = new_args['s'] or '';
    local LEN = 4;
    
    if not string.gmatch(s, "^%d+\.%d+\.%d+\.%d+$") then
        return '0'
    end
    
    local count = 0;
    for substr in string.gmatch(s, "(%w+)") do
        count = count + 1;
        if count > LEN or not string.gmatch(substr, "^([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$") then
            return '0'
        end
    end
    
    return '1';
end

function str.is_ipv6( frame )
    local new_args = str._getParameters( frame.args, { 's' } );
    local s = new_args['s'] or '';
    local LEN = 4;
    
    if not string.gmatch(s, "^%w*:%w*:%w*:%w*$") then
        return '0'
    end
    
    local count = 0;
    for substr in string.gmatch(s, "(%w+)") do
        count = count + 1;
        if count > LEN or not string.gmatch(substr, "^([0-9A-Fa-f]|[1-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]?[0-9A-Fa-f]?)$") then
            return '0'
        end
    end
    
    return '1';
end

function str.is_ip( frame )
    local ipv4 = str.is_ipv4( frame ) == '1';
    local ipv6 = str.is_ipv6( frame ) == '1';
    
    if ipv4 or ipv6 then 
        return '1';
    else
    	return '0';
    end
end

return str