luci-base: add a strict flag to the hostname validator
Some applications, e.g. dnsmasq, do not allow hostnames starting with an underscore, therefor extend the existing hostname datatype validator with a `strict` which disallows a leading underscore. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
4024d4f224
commit
70ffbe65a0
2 changed files with 6 additions and 5 deletions
|
@ -218,12 +218,13 @@ var cbi_validators = {
|
||||||
((ipv4only == 1) && cbi_validators.ip4addr.apply(this));
|
((ipv4only == 1) && cbi_validators.ip4addr.apply(this));
|
||||||
},
|
},
|
||||||
|
|
||||||
'hostname': function()
|
'hostname': function(strict)
|
||||||
{
|
{
|
||||||
if (this.length <= 253)
|
if (this.length <= 253)
|
||||||
return (this.match(/^[a-zA-Z0-9]+$/) != null ||
|
return (this.match(/^[a-zA-Z0-9_]+$/) != null ||
|
||||||
(this.match(/^[a-zA-Z0-9_][a-zA-Z0-9_\-.]*[a-zA-Z0-9]$/) &&
|
(this.match(/^[a-zA-Z0-9_][a-zA-Z0-9_\-.]*[a-zA-Z0-9]$/) &&
|
||||||
this.match(/[^0-9.]/)));
|
this.match(/[^0-9.]/))) &&
|
||||||
|
(!strict || !this.match(/^_/));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
|
|
@ -199,13 +199,13 @@ function macaddr(val)
|
||||||
return ip.checkmac(val) and true or false
|
return ip.checkmac(val) and true or false
|
||||||
end
|
end
|
||||||
|
|
||||||
function hostname(val)
|
function hostname(val, strict)
|
||||||
if val and (#val < 254) and (
|
if val and (#val < 254) and (
|
||||||
val:match("^[a-zA-Z_]+$") or
|
val:match("^[a-zA-Z_]+$") or
|
||||||
(val:match("^[a-zA-Z0-9_][a-zA-Z0-9_%-%.]*[a-zA-Z0-9]$") and
|
(val:match("^[a-zA-Z0-9_][a-zA-Z0-9_%-%.]*[a-zA-Z0-9]$") and
|
||||||
val:match("[^0-9%.]"))
|
val:match("[^0-9%.]"))
|
||||||
) then
|
) then
|
||||||
return true
|
return (not strict or not val:match("^_"))
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue