},
'hostname': function(v)
- { if ( v.length <= 253 )
- return (v.match(/^[a-zA-Z0-9][a-zA-Z0-9\-.]*[a-zA-Z0-9]$/) != null);
+ {
+ if (v.length <= 253)
+ return (v.match(/^[a-zA-Z]+$/) != null ||
+ (v.match(/^[a-zA-Z0-9][a-zA-Z0-9\-.]*[a-zA-Z0-9]$/) &&
+ v.match(/[^0-9.]/)));
return false;
},
+ 'network': function(v)
+ {
+ return cbi_validators.uciname(v) || cbi_validators.host(v);
+ },
+
'wpakey': function(v)
{
if( v.length == 64 )
'neg_network_ip4addr': function(v)
{
v = v.replace(/^\s*!/, "");
- return cbi_validators.uciname(v) || cbi_validators.ip4addr(v);
+ return cbi_validators.uciname(v) || cbi_validators.ip4addr(v);
},
'range': function(v, args)
return cbi_validators[args[0]](v.replace(/^\s*!\s*/, ''));
return false;
+ },
+
+ 'list': function(v, args)
+ {
+ var cb = cbi_validators[args[0] || 'string'];
+ if (typeof cb == "function")
+ {
+ var cbargs = args.slice(1);
+ var values = v.match(/[^\s]+/g);
+
+ for (var i = 0; i < values.length; i++)
+ if (!cb(values[i], cbargs))
+ return false;
+
+ return true;
+ }
+
+ return false;
}
};