diff options
-rw-r--r-- | modules/luci-base/luasrc/cbi/datatypes.lua | 8 | ||||
-rw-r--r-- | protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua | 20 |
2 files changed, 24 insertions, 4 deletions
diff --git a/modules/luci-base/luasrc/cbi/datatypes.lua b/modules/luci-base/luasrc/cbi/datatypes.lua index 62b0e0f61..cf5656628 100644 --- a/modules/luci-base/luasrc/cbi/datatypes.lua +++ b/modules/luci-base/luasrc/cbi/datatypes.lua @@ -283,6 +283,14 @@ function hexstring(val) 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) diff --git a/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua b/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua index d95008119..11ef10b5a 100644 --- a/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua +++ b/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua @@ -19,7 +19,7 @@ private_key = section:taboption( translate("Required. Base64-encoded private key for this interface.") ) private_key.password = true -private_key.datatype = "and(base64,rangelength(44, 44))" +private_key.datatype = "and(base64,rangelength(44,44))" private_key.optional = false @@ -81,10 +81,22 @@ preshared_key = section:taboption( "cryptography for post-quantum resistance.") ) preshared_key.password = true -preshared_key.datatype = "and(base64,rangelength(44, 44))" +preshared_key.datatype = "and(base64,rangelength(44,44))" preshared_key.optional = true +fwmark = section:taboption( + "advanced", + Value, + "fwmark", + translate("Firewall Mark"), + translate("Optional. 32-bit mark for outgoing encrypted packets. " .. + "Enter value in hex, starting with <code>0x</code>.") +) +fwmark.datatype = "hex(4)" +fwmark.optional = true + + -- peers ----------------------------------------------------------------------- peers = map:section( @@ -105,7 +117,7 @@ public_key = peers:option( translate("Public Key"), translate("Required. Base64-encoded public key of peer.") ) -public_key.datatype = "and(base64,rangelength(44, 44))" +public_key.datatype = "and(base64,rangelength(44,44))" public_key.optional = false @@ -155,5 +167,5 @@ persistent_keepalive = peers:option( translate("Optional. Seconds between keep alive messages. " .. "Default is 0 (disabled). Recommended value if " .. "this device is behind a NAT is 25.")) -persistent_keepalive.datatype = "range(0, 65535)" +persistent_keepalive.datatype = "range(0,65535)" persistent_keepalive.placeholder = "0" |