summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-firewall/htdocs/luci-static/resources/view
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2020-01-16 22:13:34 +0100
committerJo-Philipp Wich <jo@mein.io>2020-01-16 22:16:53 +0100
commit0608ff09f8a3b4e558c44ec73b1ef62e19666bac (patch)
tree399bd1e72602c3314ea960945503d1da9f7f21ee /applications/luci-app-firewall/htdocs/luci-static/resources/view
parentb752cf35bdb8dbde33914ca7726cd8eaf7e3bc86 (diff)
luci-app-firewall: consolidate duplicate option code
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'applications/luci-app-firewall/htdocs/luci-static/resources/view')
-rw-r--r--applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js54
-rw-r--r--applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js162
-rw-r--r--applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js54
3 files changed, 13 insertions, 257 deletions
diff --git a/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js b/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js
index f8b9e19e1..500e68fb1 100644
--- a/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js
+++ b/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js
@@ -299,57 +299,9 @@ return L.view.extend({
return _('Unknown or not installed conntrack helper "%s"').format(value);
};
- o = s.taboption('advanced', form.Value, 'mark', _('Match mark'),
- _('Matches a specific firewall mark or a range of different marks.'));
- o.modalonly = true;
- o.rmempty = true;
- o.validate = function(section_id, value) {
- if (value == '')
- return true;
-
- var m = String(value).match(/^(?:!\s*)?(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i);
-
- if (!m || +m[1] > 0xffffffff || (m[2] != null && +m[2] > 0xffffffff))
- return _('Expecting: %s').format(_('valid firewall mark'));
-
- return true;
- };
-
- o = s.taboption('advanced', form.Value, 'limit', _('Limit matching'),
- _('Limits traffic matching to the specified rate.'));
- o.modalonly = true;
- o.rmempty = true;
- o.placeholder = _('unlimited');
- o.value('10/second');
- o.value('60/minute');
- o.value('3/hour');
- o.value('500/day');
- o.validate = function(section_id, value) {
- if (value == '')
- return true;
-
- var m = String(value).toLowerCase().match(/^(?:0x[0-9a-f]{1,8}|[0-9]{1,10})\/([a-z]+)$/),
- u = ['second', 'minute', 'hour', 'day'],
- i = 0;
-
- if (m)
- for (i = 0; i < u.length; i++)
- if (u[i].indexOf(m[1]) == 0)
- break;
-
- if (!m || i >= u.length)
- return _('Invalid limit value');
-
- return true;
- };
-
- o = s.taboption('advanced', form.Value, 'limit_burst', _('Limit burst'),
- _('Maximum initial number of packets to match: this number gets recharged by one every time the limit specified above is not reached, up to this number.'));
- o.modalonly = true;
- o.rmempty = true;
- o.placeholder = '5';
- o.datatype = 'uinteger';
- o.depends({ limit: null, '!reverse': true });
+ fwtool.addMarkOption(s, false);
+ fwtool.addLimitOption(s);
+ fwtool.addLimitBurstOption(s);
o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'),
_('Passes additional arguments to iptables. Use with care!'));
diff --git a/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js b/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js
index a5b27ccf3..6c6efc805 100644
--- a/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js
+++ b/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js
@@ -409,69 +409,9 @@ return L.view.extend({
return this.super('write', [section_id, (value == 'MARK_SET' || value == 'MARK_XOR') ? 'MARK' : value]);
};
- o = s.taboption('general', form.Value, 'set_mark', _('Set mark'), _('Set the given mark value on established connections. Format is value[/mask]. If a mask is specified then only those bits set in the mask are modified.'));
- o.modalonly = true;
- o.rmempty = false;
- o.depends('target', 'MARK_SET');
- o.validate = function(section_id, value) {
- var m = String(value).match(/^(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i);
-
- if (!m || +m[1] > 0xffffffff || (m[2] != null && +m[2] > 0xffffffff))
- return _('Expecting: %s').format(_('valid firewall mark'));
-
- return true;
- };
-
- o = s.taboption('general', form.Value, 'set_xmark', _('XOR mark'), _('Apply a bitwise XOR of the given value and the existing mark value on established connections. Format is value[/mask]. If a mask is specified then those bits set in the mask are zeroed out.'));
- o.modalonly = true;
- o.rmempty = false;
- o.depends('target', 'MARK_XOR');
- o.validate = function(section_id, value) {
- var m = String(value).match(/^(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i);
-
- if (!m || +m[1] > 0xffffffff || (m[2] != null && +m[2] > 0xffffffff))
- return _('Expecting: %s').format(_('valid firewall mark'));
-
- return true;
- };
-
- o = s.taboption('general', form.Value, 'set_dhcp', _('DSCP mark'), _('Apply the given DSCP class or value to established connections.'));
- o.modalonly = true;
- o.rmempty = false;
- o.depends('target', 'DSCP');
- o.value('CS0');
- o.value('CS1');
- o.value('CS2');
- o.value('CS3');
- o.value('CS4');
- o.value('CS5');
- o.value('CS6');
- o.value('CS7');
- o.value('BE');
- o.value('AF11');
- o.value('AF12');
- o.value('AF13');
- o.value('AF21');
- o.value('AF22');
- o.value('AF23');
- o.value('AF31');
- o.value('AF32');
- o.value('AF33');
- o.value('AF41');
- o.value('AF42');
- o.value('AF43');
- o.value('EF');
- o.validate = function(section_id, value) {
- if (value == '')
- return _('DSCP mark required');
-
- var m = String(value).match(/^(?:CS[0-7]|BE|AF[1234][123]|EF|(0x[0-9a-f]{1,2}|[0-9]{1,2}))$/);
-
- if (!m || (m[1] != null && +m[1] > 0x3f))
- return _('Invalid DSCP mark');
-
- return true;
- };
+ fwtool.addMarkOption(s, 1);
+ fwtool.addMarkOption(s, 2);
+ fwtool.addDSCPOption(s, true);
o = s.taboption('general', form.ListValue, 'set_helper', _('Tracking helper'), _('Assign the specified connection tracking helper to matched traffic.'));
o.modalonly = true;
@@ -498,98 +438,10 @@ return L.view.extend({
return _('Unknown or not installed conntrack helper "%s"').format(value);
};
- o = s.taboption('advanced', form.Value, 'mark', _('Match mark'),
- _('Matches a specific firewall mark or a range of different marks.'));
- o.modalonly = true;
- o.rmempty = true;
- o.validate = function(section_id, value) {
- if (value == '')
- return true;
-
- var m = String(value).match(/^(?:!\s*)?(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i);
-
- if (!m || +m[1] > 0xffffffff || (m[2] != null && +m[2] > 0xffffffff))
- return _('Expecting: %s').format(_('valid firewall mark'));
-
- return true;
- };
-
- o = s.taboption('advanced', form.Value, 'dscp', _('Match DSCP'),
- _('Matches traffic carrying the specified DSCP marking.'));
- o.modalonly = true;
- o.rmempty = true;
- o.placeholder = _('any');
- o.value('CS0');
- o.value('CS1');
- o.value('CS2');
- o.value('CS3');
- o.value('CS4');
- o.value('CS5');
- o.value('CS6');
- o.value('CS7');
- o.value('BE');
- o.value('AF11');
- o.value('AF12');
- o.value('AF13');
- o.value('AF21');
- o.value('AF22');
- o.value('AF23');
- o.value('AF31');
- o.value('AF32');
- o.value('AF33');
- o.value('AF41');
- o.value('AF42');
- o.value('AF43');
- o.value('EF');
- o.validate = function(section_id, value) {
- if (value == '')
- return true;
-
- value = String(value).replace(/^!\s*/, '');
-
- var m = value.match(/^(?:CS[0-7]|BE|AF[1234][123]|EF|(0x[0-9a-f]{1,2}|[0-9]{1,2}))$/);
-
- if (!m || +m[1] > 0xffffffff || (m[2] != null && +m[2] > 0xffffffff))
- return _('Invalid DSCP mark');
-
- return true;
- };
-
- o = s.taboption('advanced', form.Value, 'limit', _('Limit matching'),
- _('Limits traffic matching to the specified rate.'));
- o.modalonly = true;
- o.rmempty = true;
- o.placeholder = _('unlimited');
- o.value('10/second');
- o.value('60/minute');
- o.value('3/hour');
- o.value('500/day');
- o.validate = function(section_id, value) {
- if (value == '')
- return true;
-
- var m = String(value).toLowerCase().match(/^(?:0x[0-9a-f]{1,8}|[0-9]{1,10})\/([a-z]+)$/),
- u = ['second', 'minute', 'hour', 'day'],
- i = 0;
-
- if (m)
- for (i = 0; i < u.length; i++)
- if (u[i].indexOf(m[1]) == 0)
- break;
-
- if (!m || i >= u.length)
- return _('Invalid limit value');
-
- return true;
- };
-
- o = s.taboption('advanced', form.Value, 'limit_burst', _('Limit burst'),
- _('Maximum initial number of packets to match: this number gets recharged by one every time the limit specified above is not reached, up to this number.'));
- o.modalonly = true;
- o.rmempty = true;
- o.placeholder = '5';
- o.datatype = 'uinteger';
- o.depends({ limit: null, '!reverse': true });
+ fwtool.addMarkOption(s, false);
+ fwtool.addDSCPOption(s, false);
+ fwtool.addLimitOption(s);
+ fwtool.addLimitBurstOption(s);
o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'),
_('Passes additional arguments to iptables. Use with care!'));
diff --git a/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js b/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js
index b46791587..919a418fe 100644
--- a/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js
+++ b/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js
@@ -313,57 +313,9 @@ return L.view.extend({
o.modalonly = true;
o.rmempty = true;
- o = s.taboption('advanced', form.Value, 'mark', _('Match mark'),
- _('Matches a specific firewall mark or a range of different marks.'));
- o.modalonly = true;
- o.rmempty = true;
- o.validate = function(section_id, value) {
- if (value == '')
- return true;
-
- var m = String(value).match(/^(?:!\s*)?(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i);
-
- if (!m || +m[1] > 0xffffffff || (m[2] != null && +m[2] > 0xffffffff))
- return _('Expecting: %s').format(_('valid firewall mark'));
-
- return true;
- };
-
- o = s.taboption('advanced', form.Value, 'limit', _('Limit matching'),
- _('Limits traffic matching to the specified rate.'));
- o.modalonly = true;
- o.rmempty = true;
- o.placeholder = _('unlimited');
- o.value('10/second');
- o.value('60/minute');
- o.value('3/hour');
- o.value('500/day');
- o.validate = function(section_id, value) {
- if (value == '')
- return true;
-
- var m = String(value).toLowerCase().match(/^(?:0x[0-9a-f]{1,8}|[0-9]{1,10})\/([a-z]+)$/),
- u = ['second', 'minute', 'hour', 'day'],
- i = 0;
-
- if (m)
- for (i = 0; i < u.length; i++)
- if (u[i].indexOf(m[1]) == 0)
- break;
-
- if (!m || i >= u.length)
- return _('Invalid limit value');
-
- return true;
- };
-
- o = s.taboption('advanced', form.Value, 'limit_burst', _('Limit burst'),
- _('Maximum initial number of packets to match: this number gets recharged by one every time the limit specified above is not reached, up to this number.'));
- o.modalonly = true;
- o.rmempty = true;
- o.placeholder = '5';
- o.datatype = 'uinteger';
- o.depends({ limit: null, '!reverse': true });
+ fwtool.addMarkOption(s, false);
+ fwtool.addLimitOption(s);
+ fwtool.addLimitBurstOption(s);
o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'),
_('Passes additional arguments to iptables. Use with care!'));