Validatori Rete
Panoramica
I validatori rete coprono gli identificatori tecnici e geografici usati in contesti IT e telco: indirizzi IP (v4/v6), indirizzi MAC, hostname DNS, UUID/GUID, numeri di previdenza sociale, coordinate geografiche, identificativi mobili (IMSI/IMEI), porte di rete e notazione CIDR.
Validatori
ipaddress
Sintassi: ipaddress oppure ipaddress:versione
Descrizione: Verifica la validità di un indirizzo IP. Senza parametro accetta sia IPv4 che IPv6. Con parametro, valida solo la versione specificata. Limite di 45 caratteri per protezione anti-ReDoS.
Parametro: (opzionale) v4 oppure v6
Esempi:
// IPv4
ValidationService.validate('192.168.1.1', 'ipaddress') // qualsiasi versione
ValidationService.validate('192.168.1.1', 'ipaddress:v4') // solo IPv4
ValidationService.validate('255.255.255.255', 'ipaddress:v4')
ValidationService.validate('0.0.0.0', 'ipaddress:v4')
// IPv6
ValidationService.validate('::1', 'ipaddress:v6') // localhost
ValidationService.validate('2001:db8::1', 'ipaddress:v6') // abbreviato
ValidationService.validate('fe80::1%eth0', 'ipaddress:v6') // link-local
// Non valido
ValidationService.validate('256.0.0.1', 'ipaddress:v4') // ottetto fuori range
ValidationService.validate('192.168.1', 'ipaddress:v4') // manca un ottetto
// In schema DynamicFormLayouts
{ name: 'indirizzoip', type: 'text', validation: 'required|ipaddress:v4' }
macaddress
Sintassi: macaddress oppure macaddress:formato
Descrizione: Verifica la validità di un indirizzo MAC. Senza parametro accetta tutti i formati standard. Con parametro, valida solo il formato specificato.
Parametro: (opzionale) colon (AA:BB:CC), hyphen (AA-BB-CC), dot (AABB.CCDD.EEFF)
Esempi:
// Accetta tutti i formati
ValidationService.validate('00:1A:2B:3C:4D:5E', 'macaddress') // colon
ValidationService.validate('00-1A-2B-3C-4D-5E', 'macaddress') // hyphen
ValidationService.validate('001A.2B3C.4D5E', 'macaddress') // dot
// Formato specifico
ValidationService.validate('00:1A:2B:3C:4D:5E', 'macaddress:colon') // valido
ValidationService.validate('00-1A-2B-3C-4D-5E', 'macaddress:hyphen') // valido
ValidationService.validate('001A.2B3C.4D5E', 'macaddress:dot') // valido
// In schema DynamicFormLayouts
{ name: 'macdispositivo', type: 'text', validation: 'required|macaddress:colon' }
hostname
Sintassi: hostname
Descrizione: Verifica che il valore sia un hostname DNS valido. Controlla: lunghezza massima 255 caratteri, ogni label massimo 63 caratteri, solo caratteri alfanumerici e trattini (RFC 1035). Il trattino non può essere in posizione iniziale o finale.
Esempi:
// Valido
ValidationService.validate('server01', 'hostname')
ValidationService.validate('web.example.com', 'hostname')
ValidationService.validate('my-server.local', 'hostname')
ValidationService.validate('sub.domain.example.com', 'hostname')
// Non valido
ValidationService.validate('-server', 'hostname') // inizia con -
ValidationService.validate('server-', 'hostname') // finisce con -
ValidationService.validate('server name', 'hostname') // spazio non ammesso
ValidationService.validate('server_01', 'hostname') // underscore non ammesso
// In schema DynamicFormLayouts
{ name: 'hostname', type: 'text', validation: 'required|hostname' }
uuid
Sintassi: uuid oppure uuid:versione
Descrizione: Verifica che il valore sia un UUID/GUID valido nel formato standard xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Con parametro, valida solo la versione specificata.
Parametro: (opzionale) v4, v5, any (default: any)
Esempi:
// Qualsiasi versione UUID
ValidationService.validate('550e8400-e29b-41d4-a716-446655440000', 'uuid')
// UUID v4 (random)
ValidationService.validate('550e8400-e29b-41d4-a716-446655440000', 'uuid:v4') // valido
ValidationService.validate('550e8400-e29b-51d4-a716-446655440000', 'uuid:v4') // non valido (v5)
// UUID v5 (namespace-based)
ValidationService.validate('550e8400-e29b-51d4-a716-446655440000', 'uuid:v5') // valido
// Non valido
ValidationService.validate('not-a-uuid', 'uuid')
ValidationService.validate('550e8400e29b41d4a716446655440000', 'uuid') // senza trattini
// In schema DynamicFormLayouts
{ name: 'idesterno', type: 'text', validation: 'required|uuid:v4' }
socialsecuritynumber
Sintassi: socialsecuritynumber oppure socialsecuritynumber:paese
Descrizione: Verifica la validità di un numero di previdenza sociale. Senza paese tenta tutti i formati noti. Con paese valida solo quel formato.
Parametro: (opzionale) US, FR, ES
| Paese | Formato |
|---|---|
US | XXX-XX-XXXX (con o senza trattini) |
FR | 15 caratteri: sesso + anno + mese + dipartimento + comune |
ES | 2 cifre + carattere + 7 cifre |
Esempi:
// US Social Security Number
ValidationService.validate('123-45-6789', 'socialsecuritynumber:US')
ValidationService.validate('123456789', 'socialsecuritynumber:US') // senza trattini
// Francese
ValidationService.validate('180012A00000100', 'socialsecuritynumber:FR')
// Spagnolo
ValidationService.validate('12A1234567', 'socialsecuritynumber:ES')
// In schema DynamicFormLayouts
{ name: 'ssn', type: 'text', validation: 'required|socialsecuritynumber:US' }
coordinates
Sintassi: coordinates
Descrizione: Verifica che il valore sia una coppia di coordinate geografiche nel formato latitudine,longitudine. Valida i range: latitudine -90/+90, longitudine -180/+180. Restituisce errori separati per latitudine e longitudine non valide.
Esempi:
// Valido
ValidationService.validate('45.4642,9.1900', 'coordinates') // Milano
ValidationService.validate('41.9028,12.4964', 'coordinates') // Roma
ValidationService.validate('0,0', 'coordinates') // origin
// Non valido
ValidationService.validate('91,0', 'coordinates') // lat fuori range
ValidationService.validate('0,181', 'coordinates') // lng fuori range
ValidationService.validate('45.46', 'coordinates') // manca longitudine
// In schema DynamicFormLayouts
{ name: 'posizione', type: 'text', validation: 'required|coordinates' }
imsi
Sintassi: imsi
Descrizione: Verifica la validità di un IMSI (International Mobile Subscriber Identity): 14-15 cifre numeriche. Le prime 3 cifre sono il MCC (Mobile Country Code), valori validi: 001 (test) o 200-999.
Esempi:
// Valido
ValidationService.validate('310150123456789', 'imsi') // US (MCC 310)
ValidationService.validate('22201234567890', 'imsi') // Italia (MCC 222)
// Non valido
ValidationService.validate('123456789', 'imsi') // troppo corto
ValidationService.validate('1234567890123456', 'imsi') // troppo lungo
ValidationService.validate('100123456789012', 'imsi') // MCC non valido (100)
// In schema DynamicFormLayouts
{ name: 'imsi', type: 'text', validation: 'required|imsi' }
imei
Sintassi: imei
Descrizione: Verifica la validità di un IMEI (International Mobile Equipment Identity): esattamente 15 cifre numeriche con verifica checksum tramite algoritmo di Luhn. Spazi e trattini vengono rimossi automaticamente.
Esempi:
// Valido (IMEI con checksum Luhn corretto)
ValidationService.validate('490154203237518', 'imei')
// Con separatori (vengono rimossi)
ValidationService.validate('490154-203237-518', 'imei')
ValidationService.validate('490154 203237 518', 'imei')
// Non valido
ValidationService.validate('12345678901234', 'imei') // 14 cifre
ValidationService.validate('490154203237519', 'imei') // Luhn fallisce
// In schema DynamicFormLayouts
{ name: 'imeidispositivo', type: 'text', validation: 'required|imei' }
port
Sintassi: port
Descrizione: Verifica che il valore sia un numero di porta TCP/UDP valido (intero da 0 a 65535). Accetta sia stringhe numeriche che numeri interi.
Esempi:
// Valido
ValidationService.validate(80, 'port')
ValidationService.validate(8080, 'port')
ValidationService.validate('443', 'port')
ValidationService.validate(0, 'port')
ValidationService.validate(65535, 'port')
// Non valido
ValidationService.validate(-1, 'port') // negativo
ValidationService.validate(65536, 'port') // fuori range
ValidationService.validate('abc', 'port') // non numerico
// In schema DynamicFormLayouts
{ name: 'portaserver', type: 'number', validation: 'required|port' }
cidr
Sintassi: cidr
Descrizione: Verifica che il valore sia una notazione CIDR valida (IP/prefix). Supporta IPv4 (prefisso 0-32) e IPv6 (prefisso 0-128).
Esempi:
// CIDR IPv4
ValidationService.validate('192.168.1.0/24', 'cidr') // rete di classe C
ValidationService.validate('10.0.0.0/8', 'cidr') // rete di classe A
ValidationService.validate('192.168.1.1/32', 'cidr') // singolo host
// CIDR IPv6
ValidationService.validate('2001:db8::/32', 'cidr')
// Non valido
ValidationService.validate('192.168.1.0/33', 'cidr') // prefisso IPv4 > 32
ValidationService.validate('192.168.1.0', 'cidr') // manca prefisso
ValidationService.validate('not-an-ip/24', 'cidr') // IP non valido
// In schema DynamicFormLayouts
{ name: 'subnetcidr', type: 'text', validation: 'required|cidr' }