treewide: Sync translations - i18n
[project/luci.git] / applications / luci-app-firewall / htdocs / luci-static / resources / view / firewall / rules.js
index df49dcf80c71ea8af135015aa800846f68bd7ceb..b727f4e79826c78fa8059de1575de43337cc29f5 100644 (file)
@@ -22,7 +22,7 @@ function rule_proto_txt(s, ctHelpers) {
                };
        });
 
-       m = String(uci.get('firewall', s, 'helper') || '').match(/^(!\s*)?(\S+)$/);
+       var m = String(uci.get('firewall', s, 'helper') || '').match(/^(!\s*)?(\S+)$/);
        var h = m ? {
                val:  m[0].toUpperCase(),
                inv:  m[1],
@@ -62,7 +62,7 @@ function rule_src_txt(s, hosts) {
            d = (uci.get('firewall', s, 'direction') == 'in') ? uci.get('firewall', s, 'device') : null;
 
        return fwtool.fmt(_('From %{src}%{src_device?, interface <var>%{src_device}</var>}%{src_ip?, IP %{src_ip#%{next?, }<var%{item.inv? data-tooltip="Match IP addresses except %{item.val}."}>%{item.ival}</var>}}%{src_port?, port %{src_port#%{next?, }<var%{item.inv? data-tooltip="Match ports except %{item.val}."}>%{item.ival}</var>}}%{src_mac?, MAC %{src_mac#%{next?, }<var%{item.inv? data-tooltip="Match MACs except %{item.val}%{item.hint.name? a.k.a. %{item.hint.name}}.":%{item.hint.name? data-tooltip="%{item.hint.name}"}}>%{item.ival}</var>}}'), {
-               src: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName((z && z != '*') ? z : null) }, [(z == '*') ? E('em', _('any zone')) : (z || E('em', _('this device')))]),
+               src: E('span', { 'class': 'zonebadge', 'style': fwmodel.getZoneColorStyle(z) }, [(z == '*') ? E('em', _('any zone')) : (z ? E('strong', z) : E('em', _('this device')))]),
                src_ip: fwtool.map_invert(uci.get('firewall', s, 'src_ip'), 'toLowerCase'),
                src_mac: fwtool.map_invert(uci.get('firewall', s, 'src_mac'), 'toUpperCase').map(function(v) { return Object.assign(v, { hint: hosts[v.val] }) }),
                src_port: fwtool.map_invert(uci.get('firewall', s, 'src_port')),
@@ -75,7 +75,7 @@ function rule_dest_txt(s) {
            d = (uci.get('firewall', s, 'direction') == 'out') ? uci.get('firewall', s, 'device') : null;
 
        return fwtool.fmt(_('To %{dest}%{dest_device?, interface <var>%{dest_device}</var>}%{dest_ip?, IP %{dest_ip#%{next?, }<var%{item.inv? data-tooltip="Match IP addresses except %{item.val}."}>%{item.ival}</var>}}%{dest_port?, port %{dest_port#%{next?, }<var%{item.inv? data-tooltip="Match ports except %{item.val}."}>%{item.ival}</var>}}'), {
-               dest: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName((z && z != '*') ? z : null) }, [(z == '*') ? E('em', _('any zone')) : (z || E('em', _('this device')))]),
+               dest: E('span', { 'class': 'zonebadge', 'style': fwmodel.getZoneColorStyle(z) }, [(z == '*') ? E('em', _('any zone')) : (z ? E('strong', z) : E('em', _('this device')))]),
                dest_ip: fwtool.map_invert(uci.get('firewall', s, 'dest_ip'), 'toLowerCase'),
                dest_port: fwtool.map_invert(uci.get('firewall', s, 'dest_port')),
                dest_device: d
@@ -240,7 +240,7 @@ return view.extend({
                        var stop_date = uci.get('firewall', section_id, 'stop_date');
 
                        if (weekdays || monthdays || start_time || stop_time || start_date || stop_date )
-                               return _('Time restritions are enabled for this rule');
+                               return _('Time restrictions are enabled for this rule');
 
                        return null;
                };
@@ -294,27 +294,52 @@ return view.extend({
                o.multiple = true;
                o.custom = true;
                o.cast = 'table';
-               o.placeholder = _('any');
-               o.value('', 'any');
+               o.placeholder = _('any/all');
                o.value('address-mask-reply');
                o.value('address-mask-request');
+               o.value('address-unreachable'); /* icmpv6 1:3 */
+               o.value('bad-header');  /* icmpv6 4:0 */
+               o.value('certification-path-solicitation-message'); /* icmpv6 148 */
+               o.value('certification-path-advertisement-message'); /* icmpv6 149 */
                o.value('communication-prohibited');
                o.value('destination-unreachable');
+               o.value('duplicate-address-request'); /* icmpv6 157 */
+               o.value('duplicate-address-confirmation'); /* icmpv6 158 */
                o.value('echo-reply');
                o.value('echo-request');
+               o.value('extended-echo-request'); /* icmpv6 160 */
+               o.value('extended-echo-reply'); /* icmpv6 161 */
+               o.value('fmipv6-message'); /* icmpv6 154 */
                o.value('fragmentation-needed');
+               o.value('home-agent-address-discovery-reply-message'); /* icmpv6 145 */
+               o.value('home-agent-address-discovery-request-message'); /* icmpv6 144 */
                o.value('host-precedence-violation');
                o.value('host-prohibited');
                o.value('host-redirect');
                o.value('host-unknown');
                o.value('host-unreachable');
+               o.value('ilnpv6-locator-update-message'); /* icmpv6 156 */
+               o.value('inverse-neighbour-discovery-advertisement-message'); /* icmpv6 142 */
+               o.value('inverse-neighbour-discovery-solicitation-message'); /* icmpv6 141 */
                o.value('ip-header-bad');
+               o.value('mobile-prefix-advertisement'); /* icmpv6 147 */
+               o.value('mobile-prefix-solicitation'); /* icmpv6 146 */
+               o.value('mpl-control-message'); /* icmpv6 159 */
+               o.value('multicast-listener-query'); /* icmpv6 130 */
+               o.value('multicast-listener-report'); /* icmpv6 131 */
+               o.value('multicast-listener-done'); /* icmpv6 132 */
+               o.value('multicast-router-advertisement'); /* icmpv6 151 */
+               o.value('multicast-router-solicitation'); /* icmpv6 152 */
+               o.value('multicast-router-termination'); /* icmpv6 153 */
                o.value('neighbour-advertisement');
                o.value('neighbour-solicitation');
                o.value('network-prohibited');
                o.value('network-redirect');
                o.value('network-unknown');
                o.value('network-unreachable');
+               o.value('no-route'); /* icmpv6 1:0 */
+               o.value('node-info-query'); /* icmpv6 139 */
+               o.value('node-info-response'); /* icmpv6 140 */
                o.value('packet-too-big');
                o.value('parameter-problem');
                o.value('port-unreachable');
@@ -323,7 +348,9 @@ return view.extend({
                o.value('redirect');
                o.value('required-option-missing');
                o.value('router-advertisement');
+               o.value('router-renumbering'); /* icmpv6 138 */
                o.value('router-solicitation');
+               o.value('rpl-control-message'); /* icmpv6 155 */
                o.value('source-quench');
                o.value('source-route-failed');
                o.value('time-exceeded');
@@ -335,6 +362,9 @@ return view.extend({
                o.value('TOS-network-unreachable');
                o.value('ttl-zero-during-reassembly');
                o.value('ttl-zero-during-transit');
+               o.value('v2-multicast-listener-report'); /* icmpv6 143 */
+               o.value('unknown-header-type'); /* icmpv6 4:1 */
+               o.value('unknown-option'); /* icmpv6 4:2 */
                o.depends({ proto: 'icmp', '!contains': true });
                o.depends({ proto: 'icmpv6', '!contains': true });
 
@@ -344,6 +374,14 @@ return view.extend({
                o.allowany = true;
                o.allowlocal = 'src';
 
+               o = s.taboption('advanced', form.Value, 'ipset', _('Use ipset'));
+               uci.sections('firewall', 'ipset', function(s) {
+                       if (typeof(s.name) == 'string')
+                               o.value(s.name, s.comment ? '%s (%s)'.format(s.name, s.comment) : s.name);
+               });
+               o.modalonly = true;
+               o.rmempty = true;
+
                fwtool.addMACOption(s, 'advanced', 'src_mac', _('Source MAC address'), null, hosts);
                fwtool.addIPOption(s, 'general', 'src_ip', _('Source address'), null, '', hosts, true);
 
@@ -427,9 +465,11 @@ return view.extend({
                fwtool.addLimitOption(s);
                fwtool.addLimitBurstOption(s);
 
-               o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'),
-                       _('Passes additional arguments to iptables. Use with care!'));
-               o.modalonly = true;
+               if (!L.hasSystemFeature('firewall4')) {
+                       o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'),
+                               _('Passes additional arguments to iptables. Use with care!'));
+                       o.modalonly = true;
+               }
 
                o = s.taboption('timed', form.MultiValue, 'weekdays', _('Week Days'));
                o.modalonly = true;
@@ -458,11 +498,11 @@ return view.extend({
                for (var i = 1; i <= 31; i++)
                        o.value(i);
 
-               o = s.taboption('timed', form.Value, 'start_time', _('Start Time (hh.mm.ss)'));
+               o = s.taboption('timed', form.Value, 'start_time', _('Start Time (hh:mm:ss)'));
                o.modalonly = true;
                o.datatype = 'timehhmmss';
 
-               o = s.taboption('timed', form.Value, 'stop_time', _('Stop Time (hh.mm.ss)'));
+               o = s.taboption('timed', form.Value, 'stop_time', _('Stop Time (hh:mm:ss)'));
                o.modalonly = true;
                o.datatype = 'timehhmmss';