luci-base: Add time and data datatypes for use with firewall app

Adding LuCI configuation of the firewall time and data uci options
is in progress and this adds the necessary datatypes for validating
those fields.
This commit is contained in:
Daniel Dickinson 2015-12-01 23:43:18 -05:00
parent 63155e9932
commit 6318f67fd4
2 changed files with 86 additions and 0 deletions

View file

@ -322,6 +322,47 @@ var cbi_validators = {
'phonedigit': function()
{
return (this.match(/^[0-9\*#!\.]+$/) != null);
},
'timehhmmss': function()
{
return (this.match(/^[0-6][0-9]:[0-6][0-9]:[0-6][0-9]$/) != null);
},
'dateyyyymmdd': function()
{
if (this == null) {
return false;
}
if (this.match(/^(\d\d\d\d)-(\d\d)-(\d\d)/)) {
var year = RegExp.$1;
var month = RegExp.$2;
var day = RegExp.$2
var days_in_month = [ 31, 28, 31, 30, 31, 30, 31, 31, 30 , 31, 30, 31 ];
function is_leap_year(year) {
return ((year % 4) == 0) && ((year % 100) != 0) || ((year % 400) == 0);
}
function get_days_in_month(month, year) {
if ((month == 2) && is_leap_year(year)) {
return 29;
} else {
return days_in_month[month];
}
}
/* Firewall rules in the past don't make sense */
if (year < 2015) {
return false;
}
if ((month <= 0) || (month > 12)) {
return false;
}
if ((day <= 0) || (day > get_days_in_month(month, year))) {
return false;
}
return true;
} else {
return false;
}
}
};

View file

@ -341,3 +341,48 @@ end
function phonedigit(val)
return (val:match("^[0-9\*#!%.]+$") ~= nil)
end
function timehhmmss(val)
return (val:match("^[0-6][0-9]:[0-6][0-9]:[0-6][0-9]$") ~= nil)
end
function dateyyyymmdd(val)
if val ~= nil then
yearstr, monthstr, daystr = val:match("^(%d%d%d%d)-(%d%d)-(%d%d)$")
if (yearstr == nil) or (monthstr == nil) or (daystr == nil) then
return false;
end
year = tonumber(yearstr)
month = tonumber(monthstr)
day = tonumber(daystr)
if (year == nil) or (month == nil) or (day == nil) then
return false;
end
local days_in_month = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
local function is_leap_year(year)
return (year % 4 == 0) and ((year % 100 ~= 0) or (year % 400 == 0))
end
function get_days_in_month(month, year)
if (month == 2) and is_leap_year(year) then
return 29
else
return days_in_month[month]
end
end
if (year < 2015) then
return false
end
if ((month == 0) or (month > 12)) then
return false
end
if ((day == 0) or (day > get_days_in_month(month, year))) then
return false
end
return true
end
return false
end