luci-base: backport cbi datatype changes
authorHannu Nyman <hannu.nyman@iki.fi>
Tue, 28 Feb 2017 14:22:52 +0000 (16:22 +0200)
committerHannu Nyman <hannu.nyman@iki.fi>
Tue, 28 Feb 2017 14:22:52 +0000 (16:22 +0200)
Backport the new cbi datatypes and whitespace fixes from master.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
modules/luci-base/luasrc/cbi/datatypes.lua

index 0a180d366455e1e823c349f537ba21b98d1f789d..036d6ff5e31f9b60e90bf03568eaf1e0403c9b73 100644 (file)
@@ -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)