From 12f98db8ba210d5a4590f58c7298ef16275f6a08 Mon Sep 17 00:00:00 2001 From: Hannu Nyman Date: Tue, 28 Feb 2017 16:22:52 +0200 Subject: [PATCH] luci-base: backport cbi datatype changes Backport the new cbi datatypes and whitespace fixes from master. Signed-off-by: Hannu Nyman --- modules/luci-base/luasrc/cbi/datatypes.lua | 31 +++++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/modules/luci-base/luasrc/cbi/datatypes.lua b/modules/luci-base/luasrc/cbi/datatypes.lua index 0a180d3664..036d6ff5e3 100644 --- a/modules/luci-base/luasrc/cbi/datatypes.lua +++ b/modules/luci-base/luasrc/cbi/datatypes.lua @@ -165,6 +165,14 @@ function ipmask6(val) return ip6addr(ip or val) end +function ip6hostid(val) + if val and val:match("^[a-fA-F0-9:]+$") and (#val > 2) then + return (ip6addr("2001:db8:0:0" .. val) or ip6addr("2001:db8:0:0:" .. val)) + end + + return false +end + function port(val) val = tonumber(val) return ( val and val >= 0 and val <= 65535 ) @@ -268,10 +276,25 @@ function wepkey(val) end function hexstring(val) - if val then - return (val:match("^[a-fA-F0-9]+$") ~= nil) - end - return false + if val then + return (val:match("^[a-fA-F0-9]+$") ~= nil) + end + return false +end + +function hex(val, maxbytes) + maxbytes = tonumber(maxbytes) + if val and maxbytes ~= nil then + return ((val:match("^0x[a-fA-F0-9]+$") ~= nil) and (#val <= 2 + maxbytes * 2)) + end + return false +end + +function base64(val) + if val then + return (val:match("^[a-zA-Z0-9/+]+=?=?$") ~= nil) and (math.fmod(#val, 4) == 0) + end + return false end function string(val) -- 2.30.2