libs/web: add new datatypes min(...), max(...) and neg_network_ip4addr

This commit is contained in:
Jo-Philipp Wich 2011-06-17 10:52:49 +00:00
parent 64c6f8f4b6
commit 354aeb44f6
2 changed files with 60 additions and 1 deletions

View file

@ -2,7 +2,7 @@
LuCI - Lua Configuration Interface LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org> Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2008-2010 Jo-Philipp Wich <xm@subsignal.org> Copyright 2008-2011 Jo-Philipp Wich <xm@subsignal.org>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -153,6 +153,8 @@ var cbi_validators = {
'hostname': function(v) 'hostname': function(v)
{ if ( v.length <= 253 ) { if ( v.length <= 253 )
return (v.match(/^[a-zA-Z0-9][a-zA-Z0-9\-.]*[a-zA-Z0-9]$/) != null); return (v.match(/^[a-zA-Z0-9][a-zA-Z0-9\-.]*[a-zA-Z0-9]$/) != null);
return false;
}, },
'wpakey': function(v) 'wpakey': function(v)
@ -179,6 +181,12 @@ var cbi_validators = {
return (v.match(/^[a-zA-Z0-9_]+$/) != null); return (v.match(/^[a-zA-Z0-9_]+$/) != null);
}, },
'neg_network_ip4addr': function(v)
{
v = v.replace(/^\s*!/, "");
return cbi_validators.uciname(v) || cbi_validators.ip4addr(v);
},
'range': function(v, args) 'range': function(v, args)
{ {
var min = parseInt(args[0]); var min = parseInt(args[0]);
@ -188,6 +196,28 @@ var cbi_validators = {
if (!isNaN(min) && !isNaN(max) && !isNaN(val)) if (!isNaN(min) && !isNaN(max) && !isNaN(val))
return ((val >= min) && (val <= max)); return ((val >= min) && (val <= max));
return false;
},
'min': function(v, args)
{
var min = parseInt(args[0]);
var val = parseInt(v);
if (!isNaN(min) && !isNaN(val))
return (val >= min);
return false;
},
'max': function(v, args)
{
var max = parseInt(args[0]);
var val = parseInt(v);
if (!isNaN(max) && !isNaN(val))
return (val <= max);
return false; return false;
} }
}; };

View file

@ -227,6 +227,13 @@ function uciname(val)
return (val:match("^[a-zA-Z0-9_]+$") ~= nil) return (val:match("^[a-zA-Z0-9_]+$") ~= nil)
end end
function neg_network_ip4addr(val)
if type(v) == "string" then
v = v:gsub("^%s*!", "")
return (uciname(v) or ip4addr(v))
end
end
function range(val, min, max) function range(val, min, max)
val = tonumber(val) val = tonumber(val)
min = tonumber(min) min = tonumber(min)
@ -238,3 +245,25 @@ function range(val, min, max)
return false return false
end end
function min(val, min)
val = tonumber(val)
min = tonumber(min)
if val ~= nil and min ~= nil then
return (val >= min)
end
return false
end
function max(val, max)
val = tonumber(val)
max = tonumber(max)
if val ~= nil and max ~= nil then
return (val <= max)
end
return false
end