luci-base: fix ip6hint option dependencies and validation
authorJo-Philipp Wich <jo@mein.io>
Fri, 13 Sep 2019 10:57:08 +0000 (12:57 +0200)
committerJo-Philipp Wich <jo@mein.io>
Fri, 13 Sep 2019 10:57:08 +0000 (12:57 +0200)
Ref: https://forum.openwrt.org/t/odhcpd-make-lease-file-persistent/44118/8
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-base/htdocs/luci-static/resources/protocol/static.js

index f8a6d9486e75c9ba8880e01fea92cf70aa6accfa..8470e0a20eca32387653de5dd893f2f682712809 100644 (file)
@@ -187,8 +187,17 @@ return network.registerProtocol('static', {
                o.datatype = 'max(64)';
 
                o = s.taboption('general', form.Value, 'ip6hint', _('IPv6 assignment hint'), _('Assign prefix parts using this hexadecimal subprefix ID for this interface.'));
+               o.placeholder = '0';
+               o.validate = function(section_id, value) {
+                       var n = parseInt(value, 16);
+
+                       if (!/^(0x)?[0-9a-fA-F]+$/.test(value) || isNaN(n) || n >= 0xffffffff)
+                               return _('Expecting an hexadecimal assignment hint');
+
+                       return true;
+               };
                for (var i = 33; i <= 64; i++)
-                       o.depends('ip6assign', i);
+                       o.depends('ip6assign', String(i));
 
                o = s.taboption('general', form.DynamicList, 'ip6addr', _('IPv6 address'));
                o.datatype = 'ip6addr';