diff --git a/luci-app-passwall/Makefile b/luci-app-passwall/Makefile index 030e4829d..e5c6ecc8c 100644 --- a/luci-app-passwall/Makefile +++ b/luci-app-passwall/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall PKG_VERSION:=26.8.1 -PKG_RELEASE:=208 +PKG_RELEASE:=209 PKG_PO_VERSION:=$(PKG_VERSION) PKG_CONFIG_DEPENDS:= \ diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua index 7d4282414..fec29453a 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua @@ -49,24 +49,16 @@ m.uci:foreach(appname, "socks", function(s) end end) + local dynamicList_write = function(self, section, value) - local t = {} - local t2 = {} + local new_t = {} if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - if not t2[x] then - t2[x] = x - t[#t+1] = x - end - end - end + new_t = api.table_remove_duplicates(value) else - t = { value } + new_t = { value } end - t = table.concat(t, " ") - return DynamicList.write(self, section, t) + local new_val = table.concat(new_t, " ") + return DynamicList.write(self, section, new_val) end -- [[ ACLs Settings ]]-- diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua index c1ba96ff5..1cc2b2689 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua @@ -373,22 +373,13 @@ if api.is_finded("smartdns") then return m:get(section, self.option) or {"tcp://1.1.1.1"} end function o.write(self, section, value) - local t = {} - local t2 = {} + local new_t = {} if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - if not t2[x] then - t2[x] = x - t[#t+1] = x - end - end - end + new_t = api.table_remove_duplicates(value) else - t = { value } + new_t = { value } end - return DynamicList.write(self, section, t) + return DynamicList.write(self, section, new_t) end end diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua index 8ae6a0e60..a02db5f6b 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua @@ -165,23 +165,14 @@ source.validate = function(self, value, t) end local dynamicList_write = function(self, section, value) - local t = {} - local t2 = {} + local new_t = {} if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - if not t2[x] then - t2[x] = x - t[#t+1] = x - end - end - end + new_t = api.table_remove_duplicates(value) else - t = { value } + new_t = { value } end - t = table.concat(t, " ") - return DynamicList.write(self, section, t) + local new_val = table.concat(new_t, " ") + return DynamicList.write(self, section, new_val) end source.write = dynamicList_write diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua index b3efefdb1..ee7a72bcd 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua @@ -216,23 +216,14 @@ o:depends({ [_n("reality")] = true }) o = s:option(DynamicList, _n("reality_serverNames"), translate("serverNames")) o:depends({ [_n("reality")] = true }) -function o.write(self, section, value) - local t = {} - local t2 = {} +function o.custom_write(self, section, value) + local new_t = {} if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - if not t2[x] then - t2[x] = x - t[#t+1] = x - end - end - end + new_t = api.table_remove_duplicates(value) else - t = { value } + new_t = { value } end - return DynamicList.write(self, section, t) + m:set(section, self.option:sub(1 + #option_prefix), new_t) end o = s:option(ListValue, _n("alpn"), translate("alpn")) diff --git a/luci-app-passwall/luasrc/passwall/api.lua b/luci-app-passwall/luasrc/passwall/api.lua index 6dc1b1528..d026127d4 100644 --- a/luci-app-passwall/luasrc/passwall/api.lua +++ b/luci-app-passwall/luasrc/passwall/api.lua @@ -1874,3 +1874,20 @@ function get_network_devices() table.sort(_devices, function(a, b) return a.sort < b.sort end) return _devices end + + +function table_remove_duplicates(t) + if not t or #t == 0 then return nil end + local t_lookup = {} + local new_t = {} + local x + for _, x in ipairs(t) do + if x and #x > 0 then + if not t_lookup[x] then + t_lookup[x] = x + new_t[#new_t+1] = x + end + end + end + return new_t +end diff --git a/luci-app-upnp/Makefile b/luci-app-upnp/Makefile index 6b91e069b..649c5deec 100644 --- a/luci-app-upnp/Makefile +++ b/luci-app-upnp/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk -LUCI_TITLE:=UPnP IGD & PCP/NAT-PMP configuration module | Universal Plug and Play +LUCI_TITLE:=LuCI support for UPnP IGD & PCP/NAT-PMP service | originally: Universal Plug and Play LUCI_DEPENDS:=+luci-base +miniupnpd +rpcd-mod-ucode PKG_LICENSE:=Apache-2.0 diff --git a/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js b/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js index c82a10823..7d06b2a56 100644 --- a/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js +++ b/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js @@ -70,15 +70,19 @@ return baseclass.extend({ rule.proto, expires_str, '%h'.format(rule.descr), - E('button', { + rule.num != '0' ? E('button', { 'class': 'btn cbi-button-remove', 'click': L.bind(handleDelRule, this, rule.num), 'title': _('Delete') + }, [_('Delete')]) : E('button', { + 'class': 'btn cbi-button-remove', + 'title': _('Not yet deletable; UPnP IGDv2 IPv6 port maps expire sooner, have no description'), + 'style': 'cursor: not-allowed' }, [_('Delete')]) ]; }); - cbi_update_table(table, rows, E('em', _('There are no active port maps.'))); + cbi_update_table(table, rows, E('em', _('There are no active IPv4/IPv6 port maps'))); return table; } diff --git a/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js b/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js index e1eb76926..68de0e56a 100644 --- a/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js +++ b/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js @@ -6,6 +6,7 @@ 'require ui'; 'require rpc'; 'require form'; +'require tools.widgets as widgets'; const callInitAction = rpc.declare({ object: 'luci', @@ -67,15 +68,19 @@ return view.extend({ rule.proto, expires_str, '%h'.format(rule.descr), - E('button', { + rule.num != '0' ? E('button', { 'class': 'btn cbi-button-remove', 'click': L.bind(handleDelRule, this, rule.num), 'title': _('Delete') + }, [_('Delete')]) : E('button', { + 'class': 'btn cbi-button-remove', + 'title': _('Not yet deletable; UPnP IGDv2 IPv6 port maps expire sooner, have no description'), + 'style': 'cursor: not-allowed' }, [_('Delete')]) ]; }); - cbi_update_table(nodes.querySelector('#upnp_status_table'), rows, E('em', _('There are no active port maps.'))); + cbi_update_table(nodes.querySelector('#upnp_status_table'), rows, E('em', _('There are no active IPv4/IPv6 port maps'))); }, render: function(data) { @@ -87,19 +92,20 @@ return view.extend({ 'PCP', 'NAT-PMP'); m = new form.Map('upnpd', _('UPnP IGD & PCP/NAT-PMP Service'), - _('The %s protocols allow clients on the local network to configure port maps/forwards on the router autonomously.', - 'The %s (%s = UPnP IGD & PCP/NAT-PMP) protocols allow clients on the local network to configure port maps/forwards on the router autonomously.') + _('The %s protocols/service enable permitted devices on local networks to autonomously set up IPv4/IPv6 port maps/forwards on this router.', + 'The %s (%s = UPnP IGD & PCP/NAT-PMP) protocols/service enable permitted devices on local networks to autonomously set up IPv4/IPv6 port maps/forwards on this router.') .format(protocols) ); - if (!uci.get('upnpd', 'config')) { + if (!uci.get('upnpd', 'settings')) { ui.addNotification(null, E('div', '

' + _('No suitable configuration was found!') + '

' + - _('No suitable config (LuCI app %s) found in %s. A related package update (daemon or LuCI app) may be missing.').format('v1.0', '/etc/config/upnpd') + '
' + + _('No suitable config (LuCI app %s) found in %s. A related package update (daemon or LuCI app) may be missing.').format('v2.0', '/etc/config/upnpd') + '
' + _('Use the software package manager, update lists, and install the related update. Config is migrated with the daemon package update.') + '

' + '' + _('Go to package manager…') + ''), 'warning'); m.readonly = true; } s = m.section(form.GridSection, '_active_rules'); + s.disable = uci.get('upnpd', 'settings', 'enabled') == '0'; s.render = L.bind(function(view, section_id) { const table = E('table', { 'class': 'table cbi-section-table', 'id': 'upnp_status_table' }, [ @@ -124,156 +130,264 @@ return view.extend({ rule.intport, rule.extport, rule.proto, - rule.descr, - E('button', { + '', // expires + '%h'.format(rule.descr), + rule.num != '0' ? E('button', { 'class': 'btn cbi-button-remove', 'click': L.bind(handleDelRule, this, rule.num), 'title': _('Delete') + }, [_('Delete')]) : E('button', { + 'class': 'btn cbi-button-remove', + 'title': _('Not yet deletable; UPnP IGDv2 IPv6 port maps expire sooner, have no description'), + 'style': 'cursor: not-allowed' }, [_('Delete')]) ]; }); - cbi_update_table(table, rows, E('em', _('There are no active port maps.'))); + cbi_update_table(table, rows, E('em', _('There are no active IPv4/IPv6 port maps'))); return E('div', { 'class': 'cbi-section cbi-tblsection' }, [ E('h3', _('Active Port Maps')), table ]); }, o, this); - s = m.section(form.NamedSection, 'config', 'upnpd', _('Service Settings')); + s = m.section(form.NamedSection, 'settings', 'upnpd', _('Service Settings')); s.addremove = false; s.tab('setup', _('Service Setup')); + s.tab('access_control', _('Access Control')); s.tab('advanced', _('Advanced Settings')); + s.tab('igd', _('UPnP IGD Adjustments')); o = s.taboption('setup', form.Flag, 'enabled', _('Enable service'), _('Enable the autonomous port mapping service')); o.rmempty = false; - o = s.taboption('setup', form.Flag, 'enable_upnp', _('Enable UPnP IGD protocol')); - o.default = '1'; + o = s.taboption('setup', form.ListValue, 'enable_protocols', _('Enable protocols')); + o.value('all', _('All protocols')); + o.value('upnp-igd', _('UPnP IGD')); + o.value('pcp+nat-pmp', _('PCP and NAT-PMP')); + o.default = 'all'; + o.widget = 'radio'; - o = s.taboption('setup', form.Flag, 'enable_natpmp', _('Enable PCP/NAT-PMP protocols')); - o.default = '1'; - - o = s.taboption('setup', form.Flag, 'igdv1', _('UPnP IGDv1 compatibility mode'), - _('Advertise as IGDv1 (IPv4 only) device instead of IGDv2')); - o.default = '1'; + o = s.taboption('setup', widgets.NetworkSelect, 'internal_iface', _('Enable networks'), + _('Select local/internal (LAN) network interfaces to enable the service for')); + o.nocreate = true; + o.multiple = true; o.rmempty = false; - o.depends('enable_upnp', '1'); + o.filter = function(section_id, value) { + return (value == 'wan' || value == 'wan6') ? '' : value; + }; + o.write = function(section_id, formvalue) { + uci.set('upnpd', section_id, 'internal_iface', Array.isArray(formvalue) ? formvalue.join(' ') : formvalue); + }; + + o = s.taboption('setup', form.ListValue, 'upnp_igd_compat', _('UPnP IGD compatibility'), + _('Set compatibility mode (act as device) to workaround IGDv2-incompatible clients; %s are known to only work with %s (or)
Emulate/report a specific/different device to workaround/support/handle/bypass/assist/mitigate... (Alternative text welcome)').format('Sony PS, Activision CoD…', 'IGDv1')); + o.value('igdv1', _('IGDv1 (IPv4 only)')); + o.value('igdv2', _('IGDv2 (with workarounds)')); + o.depends('enable_protocols', 'upnp-igd'); + o.depends('enable_protocols', 'all'); o.retain = true; - o = s.taboption('setup', form.Value, 'download', _('Download speed'), - _('Report maximum download speed in kByte/s')); - o.depends('enable_upnp', '1'); - o.retain = true; + o = s.taboption('access_control', form.ListValue, 'access_defaults', _('Access defaults'), + _('Set access control defaults for ports that all devices can map')); + o.value('', _('None / accept extra ports only')); + o.value('accept-high-ports', _('Accept ports >= 1024')); + o.value('accept-web+high-ports', _('Accept HTTP/HTTPS + ports >= 1024')); + o.value('accept-web-ports', _('Accept HTTP/HTTPS ports')); + o.value('accept-all-ports', _('Accept all ports')); - o = s.taboption('setup', form.Value, 'upload', _('Upload speed'), - _('Report maximum upload speed in kByte/s')); - o.depends('enable_upnp', '1'); - o.retain = true; + o = s.taboption('access_control', form.Value, 'accept_ports', _('Accept extra ports')); + o.datatype = 'list(portrange)'; - s.taboption('advanced', form.Flag, 'use_stun', _('Use %s', 'Use %s (%s = STUN)') - .format('STUN'), - _('To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs')); + o = s.taboption('access_control', form.Value, 'reject_ports', _('Reject ports'), + _('Reject unsafe/insecure/risky FTP/Telnet/DCE/NetBIOS/SMB/RDP ports by default; overrides other settings; use %s for none').format('0')); + o.datatype = 'list(portrange)'; + o.placeholder = '21 23 135 137-139 445 3389'; + o.modalonly = true; - o = s.taboption('advanced', form.Value, 'stun_host', _('STUN host')); - o.datatype = 'host'; - o.depends('use_stun', '1'); - o.retain = true; - - o = s.taboption('advanced', form.Value, 'stun_port', _('STUN port')); - o.datatype = 'port'; - o.placeholder = '3478'; - o.depends('use_stun', '1'); - o.retain = true; - - s.taboption('advanced', form.Flag, 'force_forwarding', _('Force forwarding'), - _('Force forwarding ports even the network is behind NAT')); - - o = s.taboption('advanced', form.Flag, 'secure_mode', _('Enable secure mode'), - _('Allow adding port maps for requesting IP addresses only')); + o = s.taboption('access_control', form.Flag, 'check_acl', _('Check ACL'), + _('Extend or override access defaults by device-specific permissions using the access control list (ACL)') + '
' + + _('Sequence:') + ' 1. ' + _('Reject ports') + ', 2. ' + _('ACL entries (if checked)') + ', 3. ' + _('Access defaults') + ', 4. ' + _('Accept extra ports')); o.default = '1'; - o.depends('enable_upnp', '1'); + o.onchange = function(ev, section_id, value) { + let acl = document.getElementById('cbi-upnpd-acl_entry'); + value == 0 ? acl.style.display = 'none' : acl.style.display = 'block'; + }; + + s.taboption('access_control', form.Flag, 'ipv6_disable', _('Disable IPv6 mapping'), + _('IPv6 is currently always accepted unless disabled')); + + o = s.taboption('advanced', form.RichListValue, 'allow_cgnat', _('Allow %s/%s', 'Allow %s/%s (%s = CGNAT, %s = STUN)') + .format('CGNAT', + 'STUN'), + _('Allow use of unrestricted endpoint-independent (1:1) CGNATs and detect the public IPv4')); + o.value('', _('Disabled'), _('Manually override external IPv4 with public')); + o.value('1', _('Enabled'), _('Filtering test currently requires an extra firewall rule')); + o.value('allow-filtered', _('Enabled') + ' (' + _('allow filtered') + ')', _('Workaround filtered IPv4 CGNAT test result')); + o.value('report-private-ipv4', _('Disabled') + ' (' + _('report private IPv4, avoid') + ')', _('No STUN public IPv4 detection; client issues')); + o.optional = true; + + o = s.taboption('advanced', form.Value, 'stun_host', _('STUN server')); + o.datatype = 'or(hostname,hostport,ip4addr("nomask"))'; + o.placeholder = 'stun.nextcloud.com'; + o.depends('allow_cgnat', '1'); + o.depends('allow_cgnat', 'allow-filtered'); o.retain = true; - s.taboption('advanced', form.Flag, 'ipv6_disable', _('Disable IPv6 mapping')); + o = s.taboption('advanced', form.Value, 'external_ip', _('Override external IPv4'), + _('Report custom public/external (WAN) IPv4 address')); + o.datatype = 'ip4addr("nomask")'; + o.depends('allow_cgnat', ''); + o.depends('allow_cgnat', 'report-private-ipv4'); - o = s.taboption('advanced', form.Value, 'notify_interval', _('Notify interval'), - _('A 900 s interval sends %s announcements with the minimum %s header', - 'A 900 s interval sends %s (%s = SSDP) announcements with the minimum %s (%s = Cache-Control: max-age=1800) header') - .format('SSDP', 'Cache-Control: max-age=1800')); - o.datatype = 'min(900)'; - o.placeholder = '900'; - o.depends('enable_upnp', '1'); - o.retain = true; - - o = s.taboption('advanced', form.Value, 'port', _('SOAP/HTTP port')); - o.datatype = 'port'; - o.placeholder = '5000'; - o.depends('enable_upnp', '1'); - o.retain = true; - - o = s.taboption('advanced', form.Value, 'presentation_url', _('Router/presentation URL'), - _('Report custom router web interface URL')); - o.placeholder = 'http://192.168.1.1/'; - o.depends('enable_upnp', '1'); - o.retain = true; - - o = s.taboption('advanced', form.Value, 'uuid', _('Device UUID')); - // o.depends('enable_upnp', '1'); - o.depends('keep-translation', 'to-disable-as-rare-use'); - o.retain = true; - - o = s.taboption('advanced', form.Value, 'model_number', _('Announced model number')); - o.depends('enable_upnp', '1'); - o.retain = true; - - o = s.taboption('advanced', form.Value, 'serial_number', _('Announced serial number')); - o.depends('enable_upnp', '1'); - o.retain = true; + o = s.taboption('advanced', form.ListValue, 'allow_third_party_mapping', _('Allow third-party mapping'), + _('Allow adding port maps for non-requesting IP addresses; use with care')); + o.value('', _('Disabled') + ' (' + _('recommended') + ')'); + o.value('1', _('Enabled')); + o.value('upnp-igd', _('Enabled') + ' (' + _('UPnP IGD only') + ')'); + o.value('pcp', _('Enabled') + ' (' + _('PCP only') + ')'); o = s.taboption('advanced', form.Flag, 'system_uptime', _('Report system instead of service uptime')); o.default = '1'; o.depends('keep-translation', 'to-disable-as-rare-use'); o.retain = true; - s.taboption('advanced', form.Flag, 'log_output', _('Enable additional logging'), - _('Puts extra debugging information into the system log')); + o = s.taboption('advanced', form.ListValue, 'log_output', _('Log level')); + o.value('default', _('Default')); + o.value('info', _('Info')); + o.value('debug', _('Debug')); + o.default = 'default'; + o.widget = 'radio'; - o = s.taboption('advanced', form.Value, 'upnp_lease_file', _('Service lease file')); + o = s.taboption('advanced', form.Value, 'lease_file', _('Service lease file')); o.depends('keep-translation', 'to-disable-as-rare-use'); o.retain = true; - s = m.section(form.GridSection, 'perm_rule', _('Service Access Control List'), - _('ACL specify which client addresses and ports can be mapped, IPv6 always allowed.')); + o = s.taboption('igd', form.Value, 'download_kbps', _('Download speed'), + _('Report maximum connection speed in kbit/s')); + o.datatype = 'uinteger'; + o.placeholder = _('Default interface link speed'); + o.depends('enable_protocols', 'upnp-igd'); + o.depends('enable_protocols', 'all'); + o.retain = true; + + o = s.taboption('igd', form.Value, 'upload_kbps', _('Upload speed'), + _('Report maximum connection speed in kbit/s')); + o.datatype = 'uinteger'; + o.placeholder = _('Default interface link speed'); + o.depends('enable_protocols', 'upnp-igd'); + o.depends('enable_protocols', 'all'); + o.retain = true; + + o = s.taboption('igd', form.Value, 'friendly_name', _('Router/friendly name')); + o.placeholder = 'OpenWrt UPnP IGD & PCP'; + o.depends('enable_protocols', 'upnp-igd'); + o.depends('enable_protocols', 'all'); + o.retain = true; + + o = s.taboption('igd', form.Value, 'model_number', _('Announced model number')); + // o.depends('enable_protocols', 'upnp-igd'); + // o.depends('enable_protocols', 'all'); + o.depends('keep-translation', 'to-disable-as-rare-use'); + o.retain = true; + + o = s.taboption('igd', form.Value, 'serial_number', _('Announced serial number')); + // o.depends('enable_protocols', 'upnp-igd'); + // o.depends('enable_protocols', 'all'); + o.depends('keep-translation', 'to-disable-as-rare-use'); + o.retain = true; + + o = s.taboption('igd', form.Value, 'presentation_url', _('Router/presentation URL'), + _('Report custom router web interface URL')); + o.placeholder = 'http://192.168.1.1/'; + o.depends('enable_protocols', 'upnp-igd'); + o.depends('enable_protocols', 'all'); + o.retain = true; + + o = s.taboption('igd', form.Value, 'uuid', _('Device UUID')); + // o.depends('enable_protocols', 'upnp-igd'); + // o.depends('enable_protocols', 'all'); + o.depends('keep-translation', 'to-disable-as-rare-use'); + o.retain = true; + + o = s.taboption('igd', form.Value, 'http_port', _('SOAP/HTTP port')); + o.datatype = 'port'; + o.placeholder = '5000'; + o.depends('enable_protocols', 'upnp-igd'); + o.depends('enable_protocols', 'all'); + o.retain = true; + + o = s.taboption('igd', form.Value, 'notify_interval', _('Notify interval'), + _('A 900 s interval sends %s announcements with the minimum %s header', + 'A 900 s interval sends %s (%s = SSDP) announcements with the minimum %s (%s = Cache-Control: max-age=1800) header') + .format('SSDP', 'Cache-Control: max-age=1800')); + o.datatype = 'min(900)'; + o.placeholder = '900'; + o.depends('enable_protocols', 'upnp-igd'); + o.depends('enable_protocols', 'all'); + o.retain = true; + + s = m.section(form.GridSection, 'acl_entry', '
' + _('Access Control List') + '
', + _('The access control list (ACL) specifies which IP addresses and ports can be mapped.') + ' ' + + _('ACL entries are checked in order, then rejected if not matched and not accepted by access defaults. (To do: should be part of access control tab)')); s.anonymous = true; s.addremove = true; + s.cloneable = true; s.sortable = true; + s.modaltitle = _('UPnP IGD & PCP/NAT-PMP') + ' - ' + _('Edit ACL Entry'); + // To do: ACL part of access control tab and hide (or dependency on option) instead of disable as immediately, and to not break onchange function + s.disable = uci.get('upnpd', 'settings', 'check_acl') == '0'; - s.option(form.Value, 'comment', _('Comment')); + o = s.option(form.Value, 'comment', _('Comment')); + o.default = _('unspecified'); o = s.option(form.Value, 'int_addr', _('IP address')); o.datatype = 'ip4addr'; - o.placeholder = '0.0.0.0/0'; + o.rmempty = false; + o.editable = true; + o.retain = true; + o.modalonly = false; - o = s.option(form.Value, 'int_ports', _('Port')); - o.datatype = 'portrange'; - o.placeholder = '1-65535'; + o = s.option(form.Value, 'int_addr', _('IP address'), + _('Enter device\'s IPv4 address, or an address with netmask')); + o.datatype = 'ip4addr'; + o.rmempty = false; + o.retain = true; + o.modalonly = true; - o = s.option(form.Value, 'ext_ports', _('External port')); + o = s.option(form.Value, 'int_port', _('Port')); o.datatype = 'portrange'; - o.placeholder = '1-65535'; + o.placeholder = '1-65535 (' + _('any port') + ')'; + o.editable = true; + o.retain = true; + + o = s.option(form.Value, 'ext_port', _('External port')); + o.datatype = 'portrange'; + o.placeholder = '1-65535 (' + _('any port') + ')'; + o.editable = true; + o.retain = true; + + o = s.option(form.Value, 'descr_filter', _('Description filter'), + _('Regular expression to check description of UPnP IGD IPv4 port maps')); + o.placeholder = '.* (' + _('any description') + ')'; + o.modalonly = true; o = s.option(form.ListValue, 'action', _('Action')); - o.value('allow', _('Allow')); - o.value('deny', _('Deny')); + o.value('accept', _('Accept')); + o.value('reject', _('Reject')); + o.value('disabled', _('Disabled')); + o.editable = true; + o.retain = true; return m.render().then(L.bind(function(m, nodes) { - poll.add(L.bind(function() { - return Promise.all([ - callUpnpGetStatus() - ]).then(L.bind(this.poll_status, this, nodes)); - }, this), 5); + if (uci.get('upnpd', 'settings', 'enabled') != '0') { + poll.add(L.bind(function() { + return Promise.all([ + callUpnpGetStatus() + ]).then(L.bind(this.poll_status, this, nodes)); + }, this), 5); + } return nodes; }, this, m)); } diff --git a/luci-app-upnp/po/ar/upnp.po b/luci-app-upnp/po/ar/upnp.po index 09561891e..8a0a43ef2 100644 --- a/luci-app-upnp/po/ar/upnp.po +++ b/luci-app-upnp/po/ar/upnp.po @@ -15,7 +15,7 @@ msgstr "" "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" "X-Generator: Weblate 5.17.1-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -24,13 +24,13 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "إجراء" @@ -46,29 +46,33 @@ msgstr "" msgid "Advanced Settings" msgstr "الإعدادات المتقدمة" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 -msgid "Announced model number" +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +msgid "Announced model number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "" @@ -79,11 +83,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "تعليق" @@ -93,7 +97,7 @@ msgstr "تعليق" msgid "Delete" msgstr "احدف" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -102,11 +106,11 @@ msgstr "" msgid "Description" msgstr "الوصف" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "سرعة التنزيل" @@ -118,11 +122,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "" @@ -133,7 +141,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "" @@ -141,11 +149,11 @@ msgstr "" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "" @@ -154,39 +162,39 @@ msgstr "" msgid "Protocol" msgstr "البروتوكول" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "المنفذ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -198,7 +206,7 @@ msgstr "" msgid "Service Setup" msgstr "الاعدادات العامة" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -225,7 +233,7 @@ msgstr "" msgid "There are no active port maps." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -238,7 +246,7 @@ msgstr "" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "" @@ -248,11 +256,11 @@ msgstr "" msgid "Unknown" msgstr "مجهول" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "سرعة الرفع" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "" diff --git a/luci-app-upnp/po/az/upnp.po b/luci-app-upnp/po/az/upnp.po new file mode 100644 index 000000000..4c033267f --- /dev/null +++ b/luci-app-upnp/po/az/upnp.po @@ -0,0 +1,258 @@ +msgid "" +msgstr "" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: az\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 +msgctxt "" +"A 900s interval will result in %s (%s = SSDP) notifications with the minimum " +"max-age of 1800s" +msgid "" +"A 900s interval will result in %s notifications with the minimum max-age of " +"1800s" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 +msgid "" +"ACL specify which client addresses and ports can be mapped, IPv6 always " +"allowed." +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 +msgid "Action" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:129 +msgid "Active Service Port Maps" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:29 +msgid "Active UPnP IGD & PCP/NAT-PMP Port Maps" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:135 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 +msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 +msgid "Allow" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 +msgid "Allow adding port maps for requesting IP addresses only" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +msgid "Announced model number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +msgid "Announced serial number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 +msgid "Client Address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:40 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:98 +msgid "Client Name" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 +msgid "Client Port" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 +msgid "Comment" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:76 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:72 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:122 +msgid "Delete" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 +msgid "Deny" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:104 +msgid "Description" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +msgid "Device UUID" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 +msgid "Download speed" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:144 +msgid "Enable PCP/NAT-PMP protocols" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:141 +msgid "Enable UPnP IGD protocol" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +msgid "Enable additional logging" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 +msgid "Enable secure mode" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:103 +msgid "Expires" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 +msgid "External Port" +msgstr "" + +#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3 +msgid "Grant access to UPnP IGD & PCP/NAT-PMP" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 +msgid "Notify interval" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 +msgid "Presentation URL" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:102 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 +msgid "Puts extra debugging information into the system log" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 +msgid "Report custom router web interface (presentation) URL" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +msgid "Report maximum download speed in kByte/s" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +msgid "Report maximum upload speed in kByte/s" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 +msgid "Report system instead of service uptime" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 +msgid "SOAP/HTTP port" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 +msgid "STUN host" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 +msgid "STUN port" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 +msgid "Service Access Control List" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:132 +msgid "Service Settings" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134 +msgid "Service Setup" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +msgid "Service lease file" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:138 +msgid "Start autonomous port mapping service" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137 +msgid "Start service" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88 +msgctxt "" +"The %s (%s = UPnP IGD & PCP/NAT-PMP) protocols allow clients on the local " +"network to configure port maps/forwards on the router autonomously." +msgid "" +"The %s protocols allow clients on the local network to configure port maps/" +"forwards on the router autonomously." +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:80 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:126 +msgid "There are no active port maps." +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 +msgid "" +"To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" +msgstr "" + +#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3 +msgid "UPnP IGD & PCP" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87 +msgid "UPnP IGD & PCP/NAT-PMP Service" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 +msgid "UPnP IGDv1 compatibility mode" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113 +msgid "Unknown" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 +msgid "Upload speed" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 +msgctxt "Use %s (%s = STUN)" +msgid "Use %s" +msgstr "" diff --git a/luci-app-upnp/po/be/upnp.po b/luci-app-upnp/po/be/upnp.po new file mode 100644 index 000000000..83d26d796 --- /dev/null +++ b/luci-app-upnp/po/be/upnp.po @@ -0,0 +1,259 @@ +msgid "" +msgstr "" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: be\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 +msgctxt "" +"A 900s interval will result in %s (%s = SSDP) notifications with the minimum " +"max-age of 1800s" +msgid "" +"A 900s interval will result in %s notifications with the minimum max-age of " +"1800s" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 +msgid "" +"ACL specify which client addresses and ports can be mapped, IPv6 always " +"allowed." +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 +msgid "Action" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:129 +msgid "Active Service Port Maps" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:29 +msgid "Active UPnP IGD & PCP/NAT-PMP Port Maps" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:135 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 +msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 +msgid "Allow" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 +msgid "Allow adding port maps for requesting IP addresses only" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +msgid "Announced model number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +msgid "Announced serial number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 +msgid "Client Address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:40 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:98 +msgid "Client Name" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 +msgid "Client Port" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 +msgid "Comment" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:76 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:72 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:122 +msgid "Delete" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 +msgid "Deny" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:46 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:104 +msgid "Description" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +msgid "Device UUID" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 +msgid "Download speed" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:144 +msgid "Enable PCP/NAT-PMP protocols" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:141 +msgid "Enable UPnP IGD protocol" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +msgid "Enable additional logging" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 +msgid "Enable secure mode" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:45 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:103 +msgid "Expires" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 +msgid "External Port" +msgstr "" + +#: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3 +msgid "Grant access to UPnP IGD & PCP/NAT-PMP" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 +msgid "Notify interval" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 +msgid "Presentation URL" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:44 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:102 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 +msgid "Puts extra debugging information into the system log" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 +msgid "Report custom router web interface (presentation) URL" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +msgid "Report maximum download speed in kByte/s" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +msgid "Report maximum upload speed in kByte/s" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 +msgid "Report system instead of service uptime" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 +msgid "SOAP/HTTP port" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 +msgid "STUN host" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 +msgid "STUN port" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 +msgid "Service Access Control List" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:132 +msgid "Service Settings" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:134 +msgid "Service Setup" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +msgid "Service lease file" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:138 +msgid "Start autonomous port mapping service" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:137 +msgid "Start service" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:88 +msgctxt "" +"The %s (%s = UPnP IGD & PCP/NAT-PMP) protocols allow clients on the local " +"network to configure port maps/forwards on the router autonomously." +msgid "" +"The %s protocols allow clients on the local network to configure port maps/" +"forwards on the router autonomously." +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:80 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:126 +msgid "There are no active port maps." +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 +msgid "" +"To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" +msgstr "" + +#: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3 +msgid "UPnP IGD & PCP" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:87 +msgid "UPnP IGD & PCP/NAT-PMP Service" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 +msgid "UPnP IGDv1 compatibility mode" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:66 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:62 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:113 +msgid "Unknown" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 +msgid "Upload speed" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 +msgctxt "Use %s (%s = STUN)" +msgid "Use %s" +msgstr "" diff --git a/luci-app-upnp/po/bg/upnp.po b/luci-app-upnp/po/bg/upnp.po index d0a404035..be411ecb9 100644 --- a/luci-app-upnp/po/bg/upnp.po +++ b/luci-app-upnp/po/bg/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.17-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -23,7 +23,7 @@ msgid "" "1800s" msgstr "Интервал от 900s ще доведе до %s известия с минимален max-age от 1800s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -31,7 +31,7 @@ msgstr "" "ACL указва кои клиентски адреси и портове могат да бъдат съпоставяни; IPv6 " "винаги е разрешен." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Действие" @@ -47,29 +47,33 @@ msgstr "" msgid "Advanced Settings" msgstr "Разширени настройки" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 -msgid "Announced model number" +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +msgid "Announced model number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "" @@ -80,11 +84,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Коментар" @@ -94,7 +98,7 @@ msgstr "Коментар" msgid "Delete" msgstr "Изтрий" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -103,11 +107,11 @@ msgstr "" msgid "Description" msgstr "Описание" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Скорост на теглене" @@ -119,11 +123,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "" @@ -134,7 +142,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "" @@ -142,11 +150,11 @@ msgstr "" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "" @@ -155,39 +163,39 @@ msgstr "" msgid "Protocol" msgstr "Протокол" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "Порт" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -199,7 +207,7 @@ msgstr "" msgid "Service Setup" msgstr "Общи настройки" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -226,7 +234,7 @@ msgstr "" msgid "There are no active port maps." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -239,7 +247,7 @@ msgstr "" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "" @@ -249,11 +257,11 @@ msgstr "" msgid "Unknown" msgstr "Неизвестно" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Скорост на качване" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "" diff --git a/luci-app-upnp/po/bn_BD/upnp.po b/luci-app-upnp/po/bn_BD/upnp.po index 833c9a1a8..85a6259c5 100644 --- a/luci-app-upnp/po/bn_BD/upnp.po +++ b/luci-app-upnp/po/bn_BD/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.11-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -23,13 +23,13 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "" @@ -45,29 +45,33 @@ msgstr "" msgid "Advanced Settings" msgstr "উন্নত সেটিংস" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 -msgid "Announced model number" +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +msgid "Announced model number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "" @@ -78,11 +82,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "" @@ -92,7 +96,7 @@ msgstr "" msgid "Delete" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -101,11 +105,11 @@ msgstr "" msgid "Description" msgstr "বর্ণনা" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "" @@ -117,11 +121,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "" @@ -132,7 +140,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "এক্সটার্নাল পোর্ট" @@ -140,11 +148,11 @@ msgstr "এক্সটার্নাল পোর্ট" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "" @@ -153,39 +161,39 @@ msgstr "" msgid "Protocol" msgstr "প্রোটোকল" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "পোর্ট" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -197,7 +205,7 @@ msgstr "" msgid "Service Setup" msgstr "সাধারণ সেটিংস" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -224,7 +232,7 @@ msgstr "" msgid "There are no active port maps." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -237,7 +245,7 @@ msgstr "" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "" @@ -247,11 +255,11 @@ msgstr "" msgid "Unknown" msgstr "অজানা" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "" diff --git a/luci-app-upnp/po/ca/upnp.po b/luci-app-upnp/po/ca/upnp.po index 2ff340b72..0c27ed46e 100644 --- a/luci-app-upnp/po/ca/upnp.po +++ b/luci-app-upnp/po/ca/upnp.po @@ -15,7 +15,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.17-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -24,7 +24,7 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -32,7 +32,7 @@ msgstr "" "Els ACL especifiquen quins ports externs es poden redirigir a quines adreces " "i ports interns, IPv6 always allowed." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Acció" @@ -48,29 +48,33 @@ msgstr "" msgid "Advanced Settings" msgstr "Configuració Avançada" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "Permet que s'afegeixin redireccions només a les adreces IP peticionant" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Número de model anunciat" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Número de sèrie anunciat" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Adreça de client" @@ -81,11 +85,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Port de client" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Commentari" @@ -95,7 +99,7 @@ msgstr "Commentari" msgid "Delete" msgstr "Suprimeix" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -104,11 +108,11 @@ msgstr "" msgid "Description" msgstr "Descripció" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "UUID de dispositiu" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Enllaç de baixada" @@ -120,11 +124,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Habilita el registre addicional" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Habilita mode segur" @@ -135,7 +143,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Port extern" @@ -143,11 +151,11 @@ msgstr "Port extern" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Interval de notificació" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "" @@ -156,39 +164,39 @@ msgstr "" msgid "Protocol" msgstr "Protocol" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Posa informació extra de depuració en el registre de sistema" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Informa del temps d'activitat del sistema en lloc del servei" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "port SOAP/HTTP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -200,7 +208,7 @@ msgstr "" msgid "Service Setup" msgstr "Paràmetres generals" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -228,7 +236,7 @@ msgstr "" msgid "There are no active port maps." msgstr "No hi ha redireccions actives." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -241,7 +249,7 @@ msgstr "UPnP IGD i PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "Servei UPnP IGD, PCP i NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "" @@ -251,11 +259,11 @@ msgstr "" msgid "Unknown" msgstr "Desconegut" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Enllaç de pujada" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "" diff --git a/luci-app-upnp/po/cs/upnp.po b/luci-app-upnp/po/cs/upnp.po index 8c2ba1876..0758b4829 100644 --- a/luci-app-upnp/po/cs/upnp.po +++ b/luci-app-upnp/po/cs/upnp.po @@ -12,7 +12,7 @@ msgstr "" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" "X-Generator: Weblate 2026.5.dev0\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -22,7 +22,7 @@ msgid "" msgstr "" "Interval 900s bude mít za následek %s upozornění s minimální max-age 1800s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -30,7 +30,7 @@ msgstr "" "ACL stanovují, které vnější porty by měly být přesměrovány na které vnitřní " "adresy a porty, IPv6 je povoleno vždy." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Akce" @@ -46,29 +46,33 @@ msgstr "Aktivní UPnP IGD a PCP/NAT-PMP mapy portů" msgid "Advanced Settings" msgstr "Pokročilá nastavení" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Inzerovat jako IGDv1 (pouze IPv4) zařízení namísto IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Umožnit" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "Umožnit přidávání map portů pouze pro požadující IP adresy" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "Umožnit IPv4 z rozsahu pro soukromé sítě" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Oznámené číslo modelu" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Oznámené sériové číslo" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Adresa klienta" @@ -79,11 +83,11 @@ msgstr "Název klienta" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Port klienta" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Komentář" @@ -93,7 +97,7 @@ msgstr "Komentář" msgid "Delete" msgstr "Smazat" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "Odepřít" @@ -102,11 +106,11 @@ msgstr "Odepřít" msgid "Description" msgstr "Popis" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "UUID zařízení" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Rychlost příjmu" @@ -118,11 +122,16 @@ msgstr "Zapnout protokoly PCP/NAT-PMP" msgid "Enable UPnP IGD protocol" msgstr "Zapnout protokol UPnP IGD" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Zapnout rozšířené zaznamenávání událostí" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" +"Zapnout předávání na IPv4 adresy vyhrazené / z rozsahů pro soukromé sítě" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Zapnout zabezpečený režim" @@ -133,7 +142,7 @@ msgstr "Platnost skončí" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Vnější port" @@ -141,11 +150,11 @@ msgstr "Vnější port" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "Udělit přístup k UPnP IGD a PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Interval oznamování" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "Prezentační URL" @@ -154,39 +163,39 @@ msgstr "Prezentační URL" msgid "Protocol" msgstr "Protokol" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Vypisovat extra ladící informace do systémového záznamu událostí" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "Hlásit URL uživatelsky určené webové rozhraní směrovače (prezentace)" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "Hlásit nejvyšší umožněnou rychlost stahování (v kB/s)" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "Hlásit nejvyšší umožněnou rychlost odesílání (v kB/s)" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Hlásit dobu chodu systému namísto doby chodu služby" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "SOAP/HTTP port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "STUN hostitel" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "STUN port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "Seznam řízení přístupu ke službě" @@ -198,7 +207,7 @@ msgstr "Nastavení služby" msgid "Service Setup" msgstr "Nastavení služby" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "Soubor se zápůjčkami služby" @@ -225,7 +234,7 @@ msgstr "%s umožňuje klientům v místní síti automaticky nastavovat směrova msgid "There are no active port maps." msgstr "Neexistují žádná aktivní přesměrování." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -240,7 +249,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "Služba UPnP IGD a PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Povolit režim UPnP IGDv1" @@ -250,11 +259,11 @@ msgstr "Povolit režim UPnP IGDv1" msgid "Unknown" msgstr "Neznámý" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Rychlost odesílání" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Použít %s" diff --git a/luci-app-upnp/po/da/upnp.po b/luci-app-upnp/po/da/upnp.po index c7ec9da2d..f163f7042 100644 --- a/luci-app-upnp/po/da/upnp.po +++ b/luci-app-upnp/po/da/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.9.1-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -23,7 +23,7 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -31,7 +31,7 @@ msgstr "" "ACL'er angiver, hvilke eksterne porte der kan omdirigeres til hvilke interne " "adresser og porte, IPv6 always allowed." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Handling" @@ -47,29 +47,33 @@ msgstr "" msgid "Advanced Settings" msgstr "Avancerede indstillinger" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Annoncerer som IGDv1-enhed i stedet for IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "Tillad kun at tilføje viderestillinger til IP-adresser, der anmoder om" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Annonceret modelnummer" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Annonceret serienummer" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Klient adresse" @@ -80,11 +84,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Klient port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Kommentar" @@ -94,7 +98,7 @@ msgstr "Kommentar" msgid "Delete" msgstr "Slet" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -103,11 +107,11 @@ msgstr "" msgid "Description" msgstr "Beskrivelse" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "Enhedens UUID" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Download speed" @@ -119,11 +123,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Aktiver yderligere logning" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Aktiver sikker tilstand" @@ -134,7 +142,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Ekstern port" @@ -142,11 +150,11 @@ msgstr "Ekstern port" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Underretningsinterval" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "URL til præsentation" @@ -155,39 +163,39 @@ msgstr "URL til præsentation" msgid "Protocol" msgstr "Protokol" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Sætter ekstra fejlfindingsoplysninger i systemloggen" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Rapportere system i stedet for dæmonens oppetid" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "SOAP/HTTP port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "STUN vært" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "STUN port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -199,7 +207,7 @@ msgstr "" msgid "Service Setup" msgstr "Generelle indstillinger" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -228,7 +236,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Der er ingen aktive omdirigeringer." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -241,7 +249,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Aktiver UPnP IGDv1-tilstand" @@ -251,11 +259,11 @@ msgstr "Aktiver UPnP IGDv1-tilstand" msgid "Unknown" msgstr "Ukendt" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Upload speed" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Brug %s" diff --git a/luci-app-upnp/po/de/upnp.po b/luci-app-upnp/po/de/upnp.po index c1d75f6cb..f3ed2d3cc 100644 --- a/luci-app-upnp/po/de/upnp.po +++ b/luci-app-upnp/po/de/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.17.1\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -25,7 +25,7 @@ msgstr "" "Ein Intervall von 900 Sekunden führt zu SSDP-Benachrichtigungen mit dem " "minimalen Maximalalter von 1800 Sekunden" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -33,7 +33,7 @@ msgstr "" "ACL definieren, welche externen Ports zu welchen internen Adressen und Ports " "weitergeleitet werden dürfen, IPv6 always allowed." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Aktion" @@ -49,29 +49,33 @@ msgstr "Aktive UPnP IGD & PCP/NAT-PMP Portzuweisungen" msgid "Advanced Settings" msgstr "Erweiterte Einstellungen" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Als IGDv1-Gerät anstelle von IGDv2 bekanntgeben" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Erlauben" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "Nur Weiterleitungen zurück zum anfordernden Client zulassen" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "Private IPv4 erlauben" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Angekündigte Modellnummer" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Angekündigte Seriennummer" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Clientadresse" @@ -82,11 +86,11 @@ msgstr "Gerätename" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Clientport" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Kommentar" @@ -96,7 +100,7 @@ msgstr "Kommentar" msgid "Delete" msgstr "Löschen" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "Ablehnen" @@ -105,11 +109,11 @@ msgstr "Ablehnen" msgid "Description" msgstr "Beschreibung" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "Geräte-UUID" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Download-Geschwindigkeit" @@ -121,11 +125,15 @@ msgstr "Protokolle PCP/NAT-PMP aktivieren" msgid "Enable UPnP IGD protocol" msgstr "UPnP IGD-Protokoll aktivieren" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Erweiterte Protokollierung aktivieren" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "Weiterleitung für private/reservierte IPv4-Adresse aktivieren" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Sicheren Modus aktivieren" @@ -136,7 +144,7 @@ msgstr "Läuft ab" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Externer Port" @@ -144,11 +152,11 @@ msgstr "Externer Port" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "Zugriff zu UPnP IGD & PCP/NAT-PMP gewähren" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Benachrichtigungsintervall" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "Präsentations-URL" @@ -157,40 +165,40 @@ msgstr "Präsentations-URL" msgid "Protocol" msgstr "Protokoll" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Schreibt zusätzliche Debug-Informationen in das Systemprotokoll" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" "URL der benutzerdefinierten Router-Webschnittstelle (Präsentation) melden" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "Maximale Downloadgeschwindigkeit in kByte/s melden" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "Maximale Hochladegeschwindigkeit in kByte/s melden" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Systemlaufzeit statt Prozesslaufzeit melden" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "SOAP/HTTP port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "STUN-Host" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "STUN-Port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "Dienst-Zugriffskontrollliste" @@ -202,7 +210,7 @@ msgstr "Diensteinstellungen" msgid "Service Setup" msgstr "Allgemeine Einstellungen" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "Service Lease-Datei" @@ -231,7 +239,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Es gibt keine aktiven Weiterleitungen." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -246,7 +254,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "UPnP IGD & PCP/NAT-PMP Service" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "UPnP IGDv1 Modus aktivieren" @@ -256,11 +264,11 @@ msgstr "UPnP IGDv1 Modus aktivieren" msgid "Unknown" msgstr "Unbekannt" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Hochladegeschwindigkeit" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "%s verwenden" diff --git a/luci-app-upnp/po/el/upnp.po b/luci-app-upnp/po/el/upnp.po index e3ef7a110..1542fc180 100644 --- a/luci-app-upnp/po/el/upnp.po +++ b/luci-app-upnp/po/el/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.8.2\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -23,13 +23,13 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Δράση" @@ -45,29 +45,33 @@ msgstr "" msgid "Advanced Settings" msgstr "Ρυθμίσεις για προχωρημένους" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 -msgid "Announced model number" +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +msgid "Announced model number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "" @@ -78,11 +82,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Σχόλιο" @@ -92,7 +96,7 @@ msgstr "Σχόλιο" msgid "Delete" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -101,11 +105,11 @@ msgstr "" msgid "Description" msgstr "Περιγραφή" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "" @@ -117,11 +121,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "" @@ -132,7 +140,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "" @@ -140,11 +148,11 @@ msgstr "" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "" @@ -153,39 +161,39 @@ msgstr "" msgid "Protocol" msgstr "Πρωτόκολλο" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "Θύρα" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -197,7 +205,7 @@ msgstr "" msgid "Service Setup" msgstr "Γενικές ρυθμίσεις" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -224,7 +232,7 @@ msgstr "" msgid "There are no active port maps." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -237,7 +245,7 @@ msgstr "" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "" @@ -247,11 +255,11 @@ msgstr "" msgid "Unknown" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Ταχύτητα μεταφόρτωσης" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "" diff --git a/luci-app-upnp/po/es/upnp.po b/luci-app-upnp/po/es/upnp.po index a9811017c..267be9cae 100644 --- a/luci-app-upnp/po/es/upnp.po +++ b/luci-app-upnp/po/es/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.17.1\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -25,7 +25,7 @@ msgstr "" "Un intervalo de 900 s dará lugar a %s notificaciones con una edad máxima " "mínima de 1800 s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -34,7 +34,7 @@ msgstr "" "pueden ser reenviados hacía las direcciones IP y puertos del cliente. Las " "direcciones IPv6 siempre son permitidas." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Acción" @@ -50,30 +50,34 @@ msgstr "Mapas de puertos UPnP IGD y PCP/NAT-PMP activos" msgid "Advanced Settings" msgstr "Ajustes avanzados" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Anunciar como dispositivo UPnP IGDv1 (sin IPv6) en lugar de IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Permitir" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" "Permitir agregar reenvíos de puertos solo a direcciones IP solicitantes" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "Permitir IPv4 privada" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Número de modelo anunciado" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Número de serie anunciado" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Dirección del cliente" @@ -84,11 +88,11 @@ msgstr "Nombre del cliente" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Puerto del cliente" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Comentario" @@ -98,7 +102,7 @@ msgstr "Comentario" msgid "Delete" msgstr "Eliminar" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "Denegar" @@ -107,11 +111,11 @@ msgstr "Denegar" msgid "Description" msgstr "Descripción" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "UUID del dispositivo" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Velocidad de descarga" @@ -123,11 +127,15 @@ msgstr "Activar protocolos PCP/NAT-PMP" msgid "Enable UPnP IGD protocol" msgstr "Activar protocolo UPnP IGD" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Activar registro adicional" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "Activar el reenvío para direcciones IPv4 privadas/reservadas" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Activar modo seguro" @@ -138,7 +146,7 @@ msgstr "Expira" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Puerto externo" @@ -146,11 +154,11 @@ msgstr "Puerto externo" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "Conceder acceso a UPnP IGD y PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Intervalo de notificación" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "URL de presentación" @@ -159,40 +167,40 @@ msgstr "URL de presentación" msgid "Protocol" msgstr "Protocolo" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Coloca información de depuración adicional en el registro del sistema" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" "URL de la interfaz web (presentación) del enrutador personalizado del informe" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "Informar de la velocidad máxima de descarga en kByte/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "Informar de la velocidad máxima de subida en kByte/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Informar tiempo de actividad del sistema en vez de la del servicio" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "Puerto SOAP/HTTP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "Host STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "Puerto STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "Lista de control de acceso al servicio" @@ -204,7 +212,7 @@ msgstr "Ajustes del Servicio" msgid "Service Setup" msgstr "Ajustes generales" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "Archivo de tiempo de concesión del servicio" @@ -233,7 +241,7 @@ msgstr "" msgid "There are no active port maps." msgstr "No hay reenvíos de puertos vigentes." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -248,7 +256,7 @@ msgstr "UPnP IGD y PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "Servicio UPnP IGD y PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Activar UPnP modo IGDv1" @@ -258,11 +266,11 @@ msgstr "Activar UPnP modo IGDv1" msgid "Unknown" msgstr "Desconocido" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Velocidad de carga" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Utilizar %s" diff --git a/luci-app-upnp/po/fi/upnp.po b/luci-app-upnp/po/fi/upnp.po index 8568880c2..feeedf1b8 100644 --- a/luci-app-upnp/po/fi/upnp.po +++ b/luci-app-upnp/po/fi/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.12-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -25,7 +25,7 @@ msgstr "" "900 sekunnin väli johtaa %s ilmoitukseen, joiden vähimmäisikä on 1800 " "sekuntia" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -33,7 +33,7 @@ msgstr "" "ACL-pääsylista määrittää, mitkä asiakasosoitteet ja portit voidaan yhdistää " "– IPv6 aina sallittu." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Toiminta" @@ -49,29 +49,33 @@ msgstr "" msgid "Advanced Settings" msgstr "Lisäasetukset" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Mainosta IGDv1-laitteena (vain IPv4) IGDv2:n sijaan" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Salli" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Ilmoitettu mallinumero" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Ilmoitettu sarjanumero" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Asiakasosoite" @@ -82,11 +86,11 @@ msgstr "Asiakasnimi" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Asiakasportti" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Kommentti" @@ -96,7 +100,7 @@ msgstr "Kommentti" msgid "Delete" msgstr "Poista" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "Kiellä" @@ -105,11 +109,11 @@ msgstr "Kiellä" msgid "Description" msgstr "Kuvaus" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "Laitteen UUID" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "" @@ -121,11 +125,15 @@ msgstr "Ota PCP-/NAT-PMP-protokollat käyttöön" msgid "Enable UPnP IGD protocol" msgstr "Ota UPnP IGD -protokolla käyttöön" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Ota ylimääräinen lokikirjaaminen käyttöön" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Ota turvallinen tila käyttöön" @@ -136,7 +144,7 @@ msgstr "Umpeutuu" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Ulkoinen portti" @@ -144,11 +152,11 @@ msgstr "Ulkoinen portti" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "Myönnä pääsy UPnP IGD:hen ja PCP/NAT-PMP:hen" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Ilmoitusväli" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "Esityksen URL-osoite" @@ -157,39 +165,39 @@ msgstr "Esityksen URL-osoite" msgid "Protocol" msgstr "Protokolla" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Laita ylimääräisiä viankorjaustietoja järjestelmälokiin" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "Ilmoita mukautetun reitittimen verkkoliitännän (esitys) URL-osoite" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "Ilmoita enimmäislatausnopeus kilotavuina sekunnissa; kt/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "Ilmoita enimmäisuloslatausnopeus kilotavuina sekunnissa; kt/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Ilmoita järjestelmän käyttöaika palvelun käyttöajan sijaan" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "Portti" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "STUN-isäntä" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "STUN-portti" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -201,7 +209,7 @@ msgstr "Palveluasetukset" msgid "Service Setup" msgstr "Yleiset asetukset" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -228,7 +236,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Ei aktiivisia uudelleenohjauksia." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -241,7 +249,7 @@ msgstr "" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Käytä UPnP IGDv1-tilaa" @@ -251,11 +259,11 @@ msgstr "Käytä UPnP IGDv1-tilaa" msgid "Unknown" msgstr "Tuntematon" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Lähetysyhteys" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Käytä %s:ia" diff --git a/luci-app-upnp/po/fr/upnp.po b/luci-app-upnp/po/fr/upnp.po index 8d16d1faf..ddb4bfe83 100644 --- a/luci-app-upnp/po/fr/upnp.po +++ b/luci-app-upnp/po/fr/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.15-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -25,7 +25,7 @@ msgstr "" "Un intervalle de 900s indique qu'il y aura %s notifications avec une valeur " "max-age ayant pour minimum 1800s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -33,7 +33,7 @@ msgstr "" "Les ACL définissent quels ports externes peuvent être redirigés, vers " "quelles adresses et ports internes, IPv6 always allowed." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Action" @@ -49,31 +49,35 @@ msgstr "" msgid "Advanced Settings" msgstr "Paramètres avancés" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Annoncer comme dispositif IGDv1 au lieu de IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" "Permet d'ajouter des redirections seulement vers les adresses IP qui font " "des demandes" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Numéro de modèle annoncé" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Numéro de série annoncé" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Adresse du client" @@ -84,11 +88,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Port du client" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Commentaire" @@ -98,7 +102,7 @@ msgstr "Commentaire" msgid "Delete" msgstr "Effacer" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -107,11 +111,11 @@ msgstr "" msgid "Description" msgstr "Description" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "UUID du périphérique" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Liaison descendante" @@ -123,11 +127,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Activer la journalisation additionnelle" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Activer le mode sécurisé" @@ -138,7 +146,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Port externe" @@ -146,11 +154,11 @@ msgstr "Port externe" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Intervalle de notification" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "URL de présentation" @@ -159,40 +167,40 @@ msgstr "URL de présentation" msgid "Protocol" msgstr "Protocole" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Rajoute des informations de debug dans le journal-système" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "" "Indiquer la durée de fonctionnement du système plutôt que celle du démon UPnP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "SOAP/HTTP port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "Hôte STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "Port STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -204,7 +212,7 @@ msgstr "" msgid "Service Setup" msgstr "Réglages généraux" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -233,7 +241,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Il n'y a pas de redirections actives." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -246,7 +254,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Activer le mode UPnP IGDv1" @@ -256,11 +264,11 @@ msgstr "Activer le mode UPnP IGDv1" msgid "Unknown" msgstr "Inconnue" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Liaison montante" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Utiliser %s" diff --git a/luci-app-upnp/po/ga/upnp.po b/luci-app-upnp/po/ga/upnp.po index 01ca50397..37b7bce8a 100644 --- a/luci-app-upnp/po/ga/upnp.po +++ b/luci-app-upnp/po/ga/upnp.po @@ -11,11 +11,11 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :" -"(n>6 && n<11) ? 3 : 4;\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :(n>" +"6 && n<11) ? 3 : 4;\n" "X-Generator: Weblate 5.17.1\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -25,7 +25,7 @@ msgid "" msgstr "" "Mar thoradh ar eatramh 900s beidh %s fógraí leis an aois uasta íosta de 1800í" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -33,7 +33,7 @@ msgstr "" "Sonraíonn ACLanna cé na calafoirt sheachtracha is féidir a chur ar aghaidh " "chuig a seoltaí cliant agus calafoirt, IPv6 ceadaithe i gcónaí." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Gníomh" @@ -49,29 +49,33 @@ msgstr "Léarscáileanna Gníomhacha UPnP IGD & PCP/NAT-PMP Port" msgid "Advanced Settings" msgstr "Socruithe Ardleibhéil" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Fógairt mar ghléas UPnP IGDv1 (gan IPv6) in ionad IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Ceadaigh" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "Ceadaigh port a chur ar aghaidh chuig seoltaí IP amháin a iarrtar" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "Ceadaigh IPv4 príobháideach" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Uimhir mhúnla fógartha" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Sraithuimhir fógartha" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Seoladh Cliant" @@ -82,11 +86,11 @@ msgstr "Ainm an Chliaint" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Port Cliant" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Trácht" @@ -96,7 +100,7 @@ msgstr "Trácht" msgid "Delete" msgstr "Scrios" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "Shéanadh" @@ -105,11 +109,11 @@ msgstr "Shéanadh" msgid "Description" msgstr "Cur síos" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "UUID Gléas" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Gá le luas a íoslódáil" @@ -121,11 +125,15 @@ msgstr "Cumasaigh prótacal PCP/NAT-PMP" msgid "Enable UPnP IGD protocol" msgstr "Cumasaigh prótacal UPnP IGD" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Cumasaigh logáil bhreise" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "Cumasaigh atreorú le haghaidh seoladh IPv4 príobháideach/áirithe" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Cumasaigh mód slán" @@ -136,7 +144,7 @@ msgstr "In éag" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Port Seachtrach" @@ -144,11 +152,11 @@ msgstr "Port Seachtrach" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "Deonaigh rochtain ar UPnP IGD & PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Eatramh fógra" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "URL cur i láthair" @@ -157,40 +165,40 @@ msgstr "URL cur i láthair" msgid "Protocol" msgstr "Prótacal" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Cuireann sé faisnéis bhreise dífhabhtaithe isteach i loga an chórais" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" "Tuairiscigh URL comhéadan gréasáin ródaire saincheaptha (cur i láthair)" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "Tuairiscigh an t-uasluas íoslódála i kByte/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "Tuairiscigh an t-uasluas uaslódála i kByte/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Córas tuairisce in ionad aga fónaimh seirbhíse" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "Port SOAP/HTTP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "STUN Óstach" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "STUN port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "Liosta Rialaithe Rochtana Seirbhíse" @@ -202,7 +210,7 @@ msgstr "Socruithe Seirbhíse" msgid "Service Setup" msgstr "Socrú Seirbhíse" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "Comhad léasa seirbhíse" @@ -232,7 +240,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Níl aon phort gníomhach ar aghaidh." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -246,7 +254,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "UPnP IGD & Seirbhís PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Cumasaigh mód UPnP IGDv1" @@ -256,11 +264,11 @@ msgstr "Cumasaigh mód UPnP IGDv1" msgid "Unknown" msgstr "Anaithnid" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Luas uaslódála" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Bain úsáid as %s" diff --git a/luci-app-upnp/po/he/upnp.po b/luci-app-upnp/po/he/upnp.po index ce0b02219..f36486448 100644 --- a/luci-app-upnp/po/he/upnp.po +++ b/luci-app-upnp/po/he/upnp.po @@ -12,7 +12,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Weblate 5.0.1-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -21,13 +21,13 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "פעולה" @@ -43,29 +43,33 @@ msgstr "" msgid "Advanced Settings" msgstr "הגדרות מתקדמות" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 -msgid "Announced model number" +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +msgid "Announced model number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "" @@ -76,11 +80,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "תגובה" @@ -90,7 +94,7 @@ msgstr "תגובה" msgid "Delete" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -99,11 +103,11 @@ msgstr "" msgid "Description" msgstr "תיאור" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "" @@ -115,11 +119,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "" @@ -130,7 +138,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "" @@ -138,11 +146,11 @@ msgstr "" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "" @@ -151,39 +159,39 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "פתחה" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -195,7 +203,7 @@ msgstr "" msgid "Service Setup" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -222,7 +230,7 @@ msgstr "" msgid "There are no active port maps." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -235,7 +243,7 @@ msgstr "" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "" @@ -245,11 +253,11 @@ msgstr "" msgid "Unknown" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "" diff --git a/luci-app-upnp/po/hi/upnp.po b/luci-app-upnp/po/hi/upnp.po index 35b75c6ff..691db8979 100644 --- a/luci-app-upnp/po/hi/upnp.po +++ b/luci-app-upnp/po/hi/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.7-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -23,13 +23,13 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "" @@ -45,29 +45,33 @@ msgstr "" msgid "Advanced Settings" msgstr "उन्नत सेटिंग्स" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 -msgid "Announced model number" +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +msgid "Announced model number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "" @@ -78,11 +82,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "" @@ -92,7 +96,7 @@ msgstr "" msgid "Delete" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -101,11 +105,11 @@ msgstr "" msgid "Description" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "" @@ -117,11 +121,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "" @@ -132,7 +140,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "" @@ -140,11 +148,11 @@ msgstr "" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "" @@ -153,39 +161,39 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -197,7 +205,7 @@ msgstr "" msgid "Service Setup" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -224,7 +232,7 @@ msgstr "" msgid "There are no active port maps." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -237,7 +245,7 @@ msgstr "" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "" @@ -247,11 +255,11 @@ msgstr "" msgid "Unknown" msgstr "अज्ञात" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "" diff --git a/luci-app-upnp/po/hu/upnp.po b/luci-app-upnp/po/hu/upnp.po index e37b65f31..66507b215 100644 --- a/luci-app-upnp/po/hu/upnp.po +++ b/luci-app-upnp/po/hu/upnp.po @@ -12,7 +12,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.12-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -21,7 +21,7 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -29,7 +29,7 @@ msgstr "" "Az ACL-ek határozzák meg, hogy melyik külső portok melyik belső portokra és " "címekre kerülhetnek továbbításra, IPv6 mindig engedélyezett." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Művelet" @@ -45,31 +45,35 @@ msgstr "" msgid "Advanced Settings" msgstr "Haladó beállítások" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Hirdetés IGDv1 eszközként IGDv2 helyett" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" "Kizárólag a kérést küldő IP címre történő továbbítás hozzáadásának " "engedélyezése" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Bejelentett modellszám" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Bejelentett sorozatszám" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "" @@ -80,11 +84,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Megjegyzés" @@ -94,7 +98,7 @@ msgstr "Megjegyzés" msgid "Delete" msgstr "Törlés" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -103,11 +107,11 @@ msgstr "" msgid "Description" msgstr "Leírás" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "Eszköz UUID" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Befelé jövő kapcsolat" @@ -119,11 +123,15 @@ msgstr "PCP/NAT-PMP protokoll engedélyezése" msgid "Enable UPnP IGD protocol" msgstr "UPnP IGD protokoll engedélyezése" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "További naplózás engedélyezése" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Biztonságos mód engedélyezése" @@ -134,7 +142,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Külső port" @@ -142,11 +150,11 @@ msgstr "Külső port" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Értesítési időköz" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "Bemutató URL" @@ -155,39 +163,39 @@ msgstr "Bemutató URL" msgid "Protocol" msgstr "Protokoll" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "További hibakeresési információkat tesz a rendszernaplóba" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "A démon helyett a rendszer működési idejét jeleníti meg" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "SOAP/HTTP port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -199,7 +207,7 @@ msgstr "" msgid "Service Setup" msgstr "Általános beállítások" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -228,7 +236,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Nincsenek aktív átírányítások." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -241,7 +249,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "UPnP IGDv1 mód engedélyezése" @@ -251,11 +259,11 @@ msgstr "UPnP IGDv1 mód engedélyezése" msgid "Unknown" msgstr "Ismeretlen" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Kimenő sebesség" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "" diff --git a/luci-app-upnp/po/it/upnp.po b/luci-app-upnp/po/it/upnp.po index e13dda534..469aaa2f2 100644 --- a/luci-app-upnp/po/it/upnp.po +++ b/luci-app-upnp/po/it/upnp.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2026-07-23 06:18+0000\n" -"Last-Translator: Random \n" +"PO-Revision-Date: 2025-11-28 22:04+0000\n" +"Last-Translator: niky1987 \n" "Language-Team: Italian \n" "Language: it\n" @@ -12,9 +12,9 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2026.8.dev0\n" +"X-Generator: Weblate 5.15-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -25,7 +25,7 @@ msgstr "" "\"Con un intervallo di 900 secondi verranno generate notifiche SSDP (%s) con " "un max-age minimo di 1800 secondi.\"" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -33,7 +33,7 @@ msgstr "" "Le ACL specificano quali porte esterne possono essere ridirezionate a quali " "indirizzi e porte interni, IPv6 sempre consentito." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Azione" @@ -49,29 +49,33 @@ msgstr "Mappe delle porte UPnP IGD e PCP/NAT-PMP attive" msgid "Advanced Settings" msgstr "Impostazioni Avanzate" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Pubblicizza come dispositivo IGDv1 anziché IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Permetti" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "Permetti l'aggiunta della mappatura solo agli indirizzi IP richiedenti" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Numero modello annunciato" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Numero seriale annunciato" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Indirizzo IP" @@ -82,11 +86,11 @@ msgstr "Nome del Client" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Porta" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Commento" @@ -96,7 +100,7 @@ msgstr "Commento" msgid "Delete" msgstr "Elimina" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "Nega" @@ -105,27 +109,31 @@ msgstr "Nega" msgid "Description" msgstr "Descrizione" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "UUID del dispositivo" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Velocità di download" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:144 msgid "Enable PCP/NAT-PMP protocols" -msgstr "Attiva i protocolli PCP/NAT-PMP" +msgstr "Abilita il protocollo PCP/NAT-PMP" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:141 msgid "Enable UPnP IGD protocol" msgstr "Abilita il protocollo UPnP IGD" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Abilita log addizionale" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Abilita la modalità sicura" @@ -136,7 +144,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Porta Esterna" @@ -144,11 +152,11 @@ msgstr "Porta Esterna" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Intervallo di notifica" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "URL di presentazione" @@ -157,39 +165,39 @@ msgstr "URL di presentazione" msgid "Protocol" msgstr "Protocollo" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Scrivi nel log di sistema ulteriori informazioni di debug" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Mostra l'uptime del sistema invece del servizio" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "Porta" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "Host STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "Porta STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "Servizi ACL" @@ -201,7 +209,7 @@ msgstr "" msgid "Service Setup" msgstr "Impostazioni Generali" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -230,7 +238,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Non ci sono mappature attive." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -243,7 +251,7 @@ msgstr "UPnP IGD e PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Abilita modalità UPnP IGDv1" @@ -253,11 +261,11 @@ msgstr "Abilita modalità UPnP IGDv1" msgid "Unknown" msgstr "Sconosciuto" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Velocità di upload" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Usa %s" diff --git a/luci-app-upnp/po/ja/upnp.po b/luci-app-upnp/po/ja/upnp.po index f6d0f2c1a..1de28731d 100644 --- a/luci-app-upnp/po/ja/upnp.po +++ b/luci-app-upnp/po/ja/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.17-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -23,7 +23,7 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -31,7 +31,7 @@ msgstr "" "アクセス制御リスト(ACL)は、どの外部ポートからどの内部アドレス及びポートへリ" "ダイレクトするかを設定します。, IPv6 always allowed." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "アクション" @@ -47,29 +47,33 @@ msgstr "" msgid "Advanced Settings" msgstr "詳細設定" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "IGDv2 ではなく IGDv1 デバイスとしてアドバタイズ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "許可" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "要求元IPアドレスへの転送のみ、追加を許可します" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "通知するモデル番号" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "通知するシリアル番号" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "クライアント・アドレス" @@ -80,11 +84,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "クライアント・ポート" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "コメント" @@ -94,7 +98,7 @@ msgstr "コメント" msgid "Delete" msgstr "削除" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "拒否" @@ -103,11 +107,11 @@ msgstr "拒否" msgid "Description" msgstr "説明" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "デバイス UUID" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "ダウンロード速度" @@ -119,11 +123,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "UPnP IGD機能を有効にする" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "ログ機能を有効にする" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "セキュアモードを有効にする" @@ -134,7 +142,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "外部ポート" @@ -142,11 +150,11 @@ msgstr "外部ポート" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "通知間隔" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "プレゼンテーションURL" @@ -155,39 +163,39 @@ msgstr "プレゼンテーションURL" msgid "Protocol" msgstr "プロトコル" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "追加のデバッグ情報をシステムログへ挿入する" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "サービスの起動時間の代わりにシステムの起動時間を使用する" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "ポート" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "STUN ホスト" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "STUN ポート" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -199,7 +207,7 @@ msgstr "" msgid "Service Setup" msgstr "一般設定" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -228,7 +236,7 @@ msgstr "" msgid "There are no active port maps." msgstr "有効なリダイレクトはありません。" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -241,7 +249,7 @@ msgstr "UPnP IGDとPCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "UPnP IGDv1 モードを有効化" @@ -251,11 +259,11 @@ msgstr "UPnP IGDv1 モードを有効化" msgid "Unknown" msgstr "不明" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "アップロード速度" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "%s を使用" diff --git a/luci-app-upnp/po/ko/upnp.po b/luci-app-upnp/po/ko/upnp.po index 9e45c2194..c864a566d 100644 --- a/luci-app-upnp/po/ko/upnp.po +++ b/luci-app-upnp/po/ko/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.17.1\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -24,7 +24,7 @@ msgid "" msgstr "" "간격을 900초로 설정하면 최소 1800초의 max-age를 가진 %s 알림을 전파합니다" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -32,7 +32,7 @@ msgstr "" "ACL은 포트 매핑이 허용될 클라이언트 주소와 포트를 지정합니다. IPv6는 항상 허" "용됩니다." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "동작" @@ -48,29 +48,33 @@ msgstr "활성 UPnP IGD 및 PCP/NAT-PMP 포트 매핑" msgid "Advanced Settings" msgstr "고급 설정" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "IGDv2 대신 IGDv1 (IPv4 전용) 기기로 이웃 단말에 전파합니다" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "허용" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "요청한 IP 주소에 한해서만 포트 매핑 추가를 허용합니다" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "사설 IPv4 허용" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "표시 모델 번호" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "표시 일련번호" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "클라이언트 주소" @@ -81,11 +85,11 @@ msgstr "클라이언트 이름" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "클라이언트 포트" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "설명" @@ -95,7 +99,7 @@ msgstr "설명" msgid "Delete" msgstr "삭제" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "거부" @@ -104,11 +108,11 @@ msgstr "거부" msgid "Description" msgstr "설명" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "기기 UUID" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "다운로드 속도" @@ -120,11 +124,15 @@ msgstr "PCP/NAT-PMP 프로토콜 활성화" msgid "Enable UPnP IGD protocol" msgstr "UPnP IGD 프로토콜 활성화" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "추가 로그 기록 사용" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "사설 또는 예약된 IPv4 주소로 전달을 활성화합니다" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "보안 모드 활성화" @@ -135,7 +143,7 @@ msgstr "만료 시간" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "외부 포트" @@ -143,11 +151,11 @@ msgstr "외부 포트" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "UPnP IGD & PCP/NAT-PMP에 접근 권한 부여" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "알림 주기" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "관리 페이지 URL" @@ -156,39 +164,39 @@ msgstr "관리 페이지 URL" msgid "Protocol" msgstr "프로토콜" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "시스템 로그에 상세 디버그 정보를 기록합니다" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "사용자 정의 라우터 웹 인터페이스 (관리 페이지) URL를 전파합니다" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "표시할 최대 다운로드 속도 (kByte/s 단위)" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "표시할 최대 업로드 속도 (kByte/s 단위)" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "서비스 가동 시간 대신 시스템 가동 시간 보고" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "SOAP/HTTP 포트" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "STUN 호스트" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "STUN 포트" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "서비스 접근 제어 목록(ACL)" @@ -200,7 +208,7 @@ msgstr "서비스 설정" msgid "Service Setup" msgstr "기본 설정" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "서비스 임대 파일" @@ -229,7 +237,7 @@ msgstr "" msgid "There are no active port maps." msgstr "활성 포트 매핑 내역이 없습니다." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -243,7 +251,7 @@ msgstr "UPnP IGD 및 PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "UPnP IGD 및 PCP/NAT-PMP 서비스" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "UPnP IGDv1 호환 모드 활성화" @@ -253,11 +261,11 @@ msgstr "UPnP IGDv1 호환 모드 활성화" msgid "Unknown" msgstr "알 수 없음" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "업로드 속도" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "%s 사용" diff --git a/luci-app-upnp/po/lo/upnp.po b/luci-app-upnp/po/lo/upnp.po index 22ab56ec5..d654d5b64 100644 --- a/luci-app-upnp/po/lo/upnp.po +++ b/luci-app-upnp/po/lo/upnp.po @@ -10,7 +10,7 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.17.1\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -20,14 +20,14 @@ msgid "" msgstr "" "ໄລຍະຫ່າງ 900 ວິນາທີ ຈະສົ່ງຜົນໃຫ້ມີການແຈ້ງເຕືອນ %s ດ້ວຍຄ່າ max-age ຕ່ຳສຸດແມ່ນ 1800 ວິນາທີ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." msgstr "" "ACL ກຳນົດວ່າທີ່ຢູ່ ແລະ ພອດຂອງໄຄເອັນໃດແດ່ທີ່ສາມາດຈັບຄູ່ພອດໄດ້, ສ່ວນ IPv6 ແມ່ນໄດ້ຮັບອະນຸຍາດສະເໝີ." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "ການກະທຳ" @@ -43,29 +43,33 @@ msgstr "ລາຍການຈັບຄູ່ພອດ UPnP IGD & PCP/NAT-PMP ທ msgid "Advanced Settings" msgstr "ການຕັ້ງຄ່າຂັ້ນສູງ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "ປະກາດເປັນອຸປະກອນ IGDv1 (IPv4 ເທົ່ານັ້ນ) ແທນທີ່ຈະເປັນ IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "ອະນຸຍາດ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "ອະນຸຍາດໃຫ້ເພີ່ມການຈັບຄູ່ພອດສຳລັບທີ່ຢູ່ IP ທີ່ຮ້ອງຂໍເທົ່ານັ້ນ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "ອະນຸຍາດ IPv4 ສ່ວນຕົວ" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "ເລກລຸ້ນທີ່ປະກາດ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "ເລກຊີຣຽນທີ່ປະກາດ" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "ທີ່ຢູ່ໄຄເອັນ" @@ -76,11 +80,11 @@ msgstr "ຊື່ໄຄເອັນ" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "ພອດໄຄເອັນ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "ຄຳອະທິບາຍ" @@ -90,7 +94,7 @@ msgstr "ຄຳອະທິບາຍ" msgid "Delete" msgstr "ລຶບ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "ປະຕິເສດ" @@ -99,11 +103,11 @@ msgstr "ປະຕິເສດ" msgid "Description" msgstr "ຄຳອະທິບາຍ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "UUID ຂອງອຸປະກອນ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "ຄວາມໄວດາວໂຫຼດ" @@ -115,11 +119,15 @@ msgstr "ເປີດໃຊ້ງານໂປຣໂຕຄອນ PCP/NAT-PMP" msgid "Enable UPnP IGD protocol" msgstr "ເປີດໃຊ້ງານໂປຣໂຕຄອນ UPnP IGD" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "ເປີດໃຊ້ງານການບັນທຶກລັອກເພີ່ມເຕີມ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "ເປີດໃຊ້ງານການສົ່ງຕໍ່ສຳລັບທີ່ຢູ່ IPv4 ສ່ວນຕົວ ຫຼື ທີ່ຖືກສຳຮອງໄວ້" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "ເປີດໃຊ້ງານໂໝດປອດໄພ" @@ -130,7 +138,7 @@ msgstr "ໝົດອາຍຸ" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "ພອດພາຍນອກ" @@ -138,11 +146,11 @@ msgstr "ພອດພາຍນອກ" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "ອະນຸຍາດການເຂົ້າເຖິງ UPnP IGD & PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "ໄລຍະຫ່າງການແຈ້ງເຕືອນ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "URL ການນຳສະເໜີ" @@ -151,39 +159,39 @@ msgstr "URL ການນຳສະເໜີ" msgid "Protocol" msgstr "ໂປຣໂຕຄອນ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "ເພີ່ມຂໍ້ມູນການດີບັກ (debugging) ລົງໃນລັອກຂອງລະບົບ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "ລາຍງານ URL ຂອງເວັບອິນເຕີເຟສເລົາເຕີ (ການນຳສະເໜີ) ແບບກຳນົດເອງ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "ລາຍງານຄວາມໄວດາວໂຫຼດສູງສຸດເປັນ kByte/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "ລາຍງານຄວາມໄວອັບໂຫຼດສູງສຸດເປັນ kByte/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "ລາຍງານໄລຍະເວລາເຮັດວຽກຂອງລະບົບ ແທນທີ່ໄລຍະເວລາຂອງບໍລິການ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "ພອດ SOAP/HTTP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "ໂຮສ STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "ພອດ STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "ລາຍການຄວບຄຸມການເຂົ້າເຖິງບໍລິການ" @@ -195,7 +203,7 @@ msgstr "ການຕັ້ງຄ່າບໍລິການ" msgid "Service Setup" msgstr "ການຕິດຕັ້ງບໍລິການ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "ໄຟລ໌ສັນຍາເຊົ່າບໍລິການ" @@ -215,8 +223,8 @@ msgid "" "The %s protocols allow clients on the local network to configure port maps/" "forwards on the router autonomously." msgstr "" -"ໂປຣໂຕຄອນ %s ອະນຸຍາດໃຫ້ໄຄເອັນໃນເຄືອຂ່າຍທ້ອງຖິ່ນສາມາດກຳນົດຄ່າການຈັບຄູ່ ຫຼື " -"ການສົ່ງຕໍ່ພອດເທິງເລົາເຕີໄດ້ດ້ວຍຕົນເອງ." +"ໂປຣໂຕຄອນ %s ອະນຸຍາດໃຫ້ໄຄເອັນໃນເຄືອຂ່າຍທ້ອງຖິ່ນສາມາດກຳນົດຄ່າການຈັບຄູ່ ຫຼື ການສົ່ງຕໍ່ພອດເທິງເລົາເຕີໄດ້" +"ດ້ວຍຕົນເອງ." #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:80 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:76 @@ -224,10 +232,11 @@ msgstr "" msgid "There are no active port maps." msgstr "ບໍ່ມີລາຍການຈັບຄູ່ພອດທີ່ກຳລັງເຮັດວຽກ." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" -msgstr "ເພື່ອຄົ້ນຫາທີ່ຢູ່ IPv4 ສາທາລະນະ ສຳລັບ full-cone/one-to-one NATs ທີ່ບໍ່ຖືກຈຳກັດ" +msgstr "" +"ເພື່ອຄົ້ນຫາທີ່ຢູ່ IPv4 ສາທາລະນະ ສຳລັບ full-cone/one-to-one NATs ທີ່ບໍ່ຖືກຈຳກັດ" #: applications/luci-app-upnp/root/usr/share/luci/menu.d/luci-app-upnp.json:3 msgid "UPnP IGD & PCP" @@ -237,7 +246,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "ບໍລິການ UPnP IGD & PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "ໂໝດຄວາມເຂົ້າກັນໄດ້ຂອງ UPnP IGDv1" @@ -247,11 +256,11 @@ msgstr "ໂໝດຄວາມເຂົ້າກັນໄດ້ຂອງ UPnP IGD msgid "Unknown" msgstr "ບໍ່ຮູ້ຈັກ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "ຄວາມໄວອັບໂຫຼດ" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "ໃຊ້ %s" diff --git a/luci-app-upnp/po/lt/upnp.po b/luci-app-upnp/po/lt/upnp.po index 22d7254d5..dcda4bd8f 100644 --- a/luci-app-upnp/po/lt/upnp.po +++ b/luci-app-upnp/po/lt/upnp.po @@ -13,7 +13,7 @@ msgstr "" "(n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.17.1\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -24,7 +24,7 @@ msgstr "" "900 sek. intervalas lems %s pranešimų, kurių mažiausias maksimalus amžius " "yra – 1800 sek." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -32,7 +32,7 @@ msgstr "" "„ACL“ (dgs.) nurodo, į kuriuos išorinius prievadus galima persiųsti į " "nurodytus kliento adresus ir prievadus, IPv6 yra visada leidžiamas." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Veiksmas" @@ -48,31 +48,35 @@ msgstr "Aktyvūs „UPnP IGD“ ir „PCP/NAT-PMP“ prievadų atvaizdavimai" msgid "Advanced Settings" msgstr "Pažangūs nustatymai" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Reklamuoti/Skelbti kaip – „IGDv1“ įrenginį (tik IPv4), vietoj „IGDv2“" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Leisti" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" "Leisti pridėti prievadų persiuntimus tik į užklausų reikalaujančius IP " "adresus" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "Leisti privatų IPv4" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Paskelbtas modelio numeris" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Paskelbtas serijos numeris" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Kliento adresas" @@ -83,11 +87,11 @@ msgstr "Kliento pavadinimas" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Kliento prievadas" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Komentuoti" @@ -97,7 +101,7 @@ msgstr "Komentuoti" msgid "Delete" msgstr "Ištrinti" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "Atmesti/Neprileisti" @@ -106,11 +110,11 @@ msgstr "Atmesti/Neprileisti" msgid "Description" msgstr "Aprašas/-ymas" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "Įrenginio „UUID“" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Atsisiuntimo greitis" @@ -122,11 +126,15 @@ msgstr "Įjungti/Įgalinti „PCP/NAT-PMP“ protokolus" msgid "Enable UPnP IGD protocol" msgstr "Įjungti/Įgalinti „UPnP IGD“ protokolą" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Įjungti papildomą žurnalinimą" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "Įjungti/Įgalinti persiuntimą privačiam/rezervuotam IPv4 adresui" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Įjungti „saugiąją veikseną“" @@ -137,7 +145,7 @@ msgstr "Baigia galioti" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Išorinis prievadas" @@ -145,11 +153,11 @@ msgstr "Išorinis prievadas" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "Duoti prieigą prie „UPnP IGD“ ir „PCP/NAT-PMP“" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Pranešimo intervalas" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "Pateikties „URL“ – saitas" @@ -158,41 +166,41 @@ msgstr "Pateikties „URL“ – saitas" msgid "Protocol" msgstr "Protokolas" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Įdeda papildomą derinimo informaciją į sistemos žurnalą" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" "Pranešti apie pasirinktinio maršrutizatoriaus žiniatinklio sąsajos ir/arba " "sietuvo (pristatymo) „URL“ – saitą" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "Pranešti apie maksimalų atsisiuntimo greitį kb/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "Pranešti apie maksimalų įkėlimo greitį kb/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Pranešti apie sistemos veikimo laiką, o ne tarnybos" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "„SOAP“/„HTTP“ prievadas" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "„STUN“ skleidėjas/vedėjas" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "„STUN“ prievadas" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "Tarnybos prieigos kontrolės sąrašas" @@ -204,7 +212,7 @@ msgstr "Tarnybos nustatymai" msgid "Service Setup" msgstr "Paslaugos/Tarnybos sąranka" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "Tarnybos nuomos failas" @@ -233,7 +241,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Nėra aktyvių prievadų persiuntimų." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -248,7 +256,7 @@ msgstr "„UPnP“ – „IGD“ ir „PCP“" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "„UPnP“ – „IGD“ ir „PCP“ tarnyba" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Įjungti „UPnP IGDv1“ suderinamumo veikseną" @@ -258,11 +266,11 @@ msgstr "Įjungti „UPnP IGDv1“ suderinamumo veikseną" msgid "Unknown" msgstr "Nežinoma/-s/-i" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Įkėlimo greitis" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Naudoti „%s“" diff --git a/luci-app-upnp/po/mr/upnp.po b/luci-app-upnp/po/mr/upnp.po index 39a2580aa..ba80c5e92 100644 --- a/luci-app-upnp/po/mr/upnp.po +++ b/luci-app-upnp/po/mr/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 3.11-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -23,13 +23,13 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "" @@ -45,29 +45,33 @@ msgstr "" msgid "Advanced Settings" msgstr "प्रगत सेटिंग्ज" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 -msgid "Announced model number" +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +msgid "Announced model number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "" @@ -78,11 +82,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "टिप्पणी" @@ -92,7 +96,7 @@ msgstr "टिप्पणी" msgid "Delete" msgstr "हटवा" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -101,11 +105,11 @@ msgstr "" msgid "Description" msgstr "वर्णन" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "" @@ -117,11 +121,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "" @@ -132,7 +140,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "" @@ -140,11 +148,11 @@ msgstr "" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "" @@ -153,39 +161,39 @@ msgstr "" msgid "Protocol" msgstr "प्रोटोकॉल" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "पोर्ट" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -197,7 +205,7 @@ msgstr "" msgid "Service Setup" msgstr "सामान्य सेटिंग्ज" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -224,7 +232,7 @@ msgstr "" msgid "There are no active port maps." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -237,7 +245,7 @@ msgstr "" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "" @@ -247,11 +255,11 @@ msgstr "" msgid "Unknown" msgstr "अज्ञात" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "अपलिंक" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "" diff --git a/luci-app-upnp/po/ms/upnp.po b/luci-app-upnp/po/ms/upnp.po index d2ccb18f0..3b71781b5 100644 --- a/luci-app-upnp/po/ms/upnp.po +++ b/luci-app-upnp/po/ms/upnp.po @@ -12,7 +12,7 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.4-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -21,13 +21,13 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Tindakan" @@ -43,29 +43,33 @@ msgstr "" msgid "Advanced Settings" msgstr "Tetapan Lanjutan" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 -msgid "Announced model number" +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +msgid "Announced model number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "" @@ -76,11 +80,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Ulasan" @@ -90,7 +94,7 @@ msgstr "Ulasan" msgid "Delete" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -99,11 +103,11 @@ msgstr "" msgid "Description" msgstr "Keterangan" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "" @@ -115,11 +119,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "" @@ -130,7 +138,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "" @@ -138,11 +146,11 @@ msgstr "" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "" @@ -151,39 +159,39 @@ msgstr "" msgid "Protocol" msgstr "Protokol" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "SOAP/HTTP port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -195,7 +203,7 @@ msgstr "" msgid "Service Setup" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -222,7 +230,7 @@ msgstr "" msgid "There are no active port maps." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -235,7 +243,7 @@ msgstr "" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "" @@ -245,11 +253,11 @@ msgstr "" msgid "Unknown" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "" diff --git a/luci-app-upnp/po/nb_NO/upnp.po b/luci-app-upnp/po/nb_NO/upnp.po index e61f79ea2..f53eb63b6 100644 --- a/luci-app-upnp/po/nb_NO/upnp.po +++ b/luci-app-upnp/po/nb_NO/upnp.po @@ -10,7 +10,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.11-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -19,7 +19,7 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -27,7 +27,7 @@ msgstr "" "ACL angir hvilke eksterne porter som kan bli viderekoblet, og til hvilke " "interne adresser og porter, IPv6 always allowed." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Handling" @@ -43,29 +43,33 @@ msgstr "" msgid "Advanced Settings" msgstr "Avanserte innstillinger" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Annonser som IGDv1-enhet istedenfor IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "Tillat videkobling kun til IP adresser som ber om det" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Annonsert modellnummer" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Annonsert serienummer" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Klient adresse" @@ -76,11 +80,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Klient port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Kommentar" @@ -90,7 +94,7 @@ msgstr "Kommentar" msgid "Delete" msgstr "Slett" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -99,11 +103,11 @@ msgstr "" msgid "Description" msgstr "Beskrivelse" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "Enhet UUID" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Nedlastningshastighet" @@ -115,11 +119,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Aktiver tilleggs logging" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Aktiver sikker modus" @@ -130,7 +138,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Ekstern port" @@ -138,11 +146,11 @@ msgstr "Ekstern port" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Informasjons intervall" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "Presentasjon URL" @@ -151,39 +159,39 @@ msgstr "Presentasjon URL" msgid "Protocol" msgstr "Protokoll" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Setter ekstra debugging informasjon i systemloggen" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Rapporter systemets oppetid istedenfor daemon oppetid" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "SOAP/HTTP port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "STUN-vert" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "STUN-port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -195,7 +203,7 @@ msgstr "" msgid "Service Setup" msgstr "Generelle innstillinger" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -224,7 +232,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Det finnes ingen aktive viderekoblinger" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -237,7 +245,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "UPnP IGD & PCP/NAT-PMP Service" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Skru på UPnP IGDv1-modus" @@ -247,11 +255,11 @@ msgstr "Skru på UPnP IGDv1-modus" msgid "Unknown" msgstr "Ukjent" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Opplastningshastighet" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Bruk %s" diff --git a/luci-app-upnp/po/nl/upnp.po b/luci-app-upnp/po/nl/upnp.po index 146acea15..0d1e134b7 100644 --- a/luci-app-upnp/po/nl/upnp.po +++ b/luci-app-upnp/po/nl/upnp.po @@ -12,7 +12,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.15.1\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -23,13 +23,13 @@ msgstr "" "Een 900s interval zal resulteren in %s notificaties met een minimum max-" "leeftijd van 1800s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Actie" @@ -45,29 +45,33 @@ msgstr "" msgid "Advanced Settings" msgstr "Geavanceerde instellingen" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Toestaan" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 -msgid "Announced model number" +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +msgid "Announced model number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "" @@ -78,11 +82,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "" @@ -92,7 +96,7 @@ msgstr "" msgid "Delete" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -101,11 +105,11 @@ msgstr "" msgid "Description" msgstr "Beschrijving" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "" @@ -117,11 +121,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "" @@ -132,7 +140,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "" @@ -140,11 +148,11 @@ msgstr "" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "" @@ -153,39 +161,39 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -197,7 +205,7 @@ msgstr "" msgid "Service Setup" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -224,7 +232,7 @@ msgstr "" msgid "There are no active port maps." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -237,7 +245,7 @@ msgstr "" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "" @@ -247,11 +255,11 @@ msgstr "" msgid "Unknown" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "" diff --git a/luci-app-upnp/po/pl/upnp.po b/luci-app-upnp/po/pl/upnp.po index b56192d29..83a926b3b 100644 --- a/luci-app-upnp/po/pl/upnp.po +++ b/luci-app-upnp/po/pl/upnp.po @@ -13,7 +13,7 @@ msgstr "" "|| n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.17.1\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -23,7 +23,7 @@ msgid "" msgstr "" "Interwał 900s doprowadzi do powiadomień %s z minimalnym czasem życia 1800s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -31,7 +31,7 @@ msgstr "" "Lista kontroli dostępu określa, które adresy i porty klientów mogą być " "przekierowane. Protokół IPv6 jest zawsze dozwolony." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Akcja" @@ -47,29 +47,33 @@ msgstr "Aktywne przekierowania portów UPnP IGD i PCP/NAT-PMP" msgid "Advanced Settings" msgstr "Ustawienia zaawansowane" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Rozgłaszaj jako urządzenie IGDv1 (bez IPv6) zamiast IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Zezwól" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "Zezwól na dodawanie przekierowań tylko do odpytujących adresów IP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "Zezwól na prywatny IPv4" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Rozgłaszany numer modelu" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Rozgłaszany numer seryjny" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Adres klienta" @@ -80,11 +84,11 @@ msgstr "Nazwa klienta" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Port klienta" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Komentarz" @@ -94,7 +98,7 @@ msgstr "Komentarz" msgid "Delete" msgstr "Usuń" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "Odmów" @@ -103,11 +107,11 @@ msgstr "Odmów" msgid "Description" msgstr "Opis" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "UUID urządzenia" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Prędkość pobierania" @@ -119,11 +123,15 @@ msgstr "Włącz protokół PCP/NAT-PMP" msgid "Enable UPnP IGD protocol" msgstr "Włącz protokół UPnP IGD" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Włącz dodatkowe rejestrowanie" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "Włącz przekierowanie dla prywatnego/zarezerwowanego adresu IPv4" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Włącz tryb bezpieczny" @@ -134,7 +142,7 @@ msgstr "Wygasa" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Port zewnętrzny" @@ -142,11 +150,11 @@ msgstr "Port zewnętrzny" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "Udziel dostępu do UPnP IGD i PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Interwał powiadamiania" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "Adres URL prezentacji" @@ -155,41 +163,41 @@ msgstr "Adres URL prezentacji" msgid "Protocol" msgstr "Protokół" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "" "Umieszcza dodatkowe informacje dotyczące debugowania w dzienniku systemowym" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" "Zgłaszaj niestandardowy adres URL interfejsu sieciowego (prezentacji) routera" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "Zgłaszaj maksymalną prędkość pobierania w kB/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "Zgłaszaj maksymalną prędkość wysyłania w kB/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Zgłaszaj czas pracy systemu zamiast czasu pracy usługi" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "Port SOAP/HTTP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "Host STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "Port STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "Lista kontroli dostępu usługi" @@ -201,7 +209,7 @@ msgstr "Ustawienia usługi" msgid "Service Setup" msgstr "Konfiguracja usługi" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "Plik dzierżawy usługi" @@ -230,7 +238,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Nie ma aktywnych przekierowań portów." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -245,7 +253,7 @@ msgstr "UPnP IGD i PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "Usługa UPnP IGD i PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Włącz tryb UPnP IGDv1" @@ -255,11 +263,11 @@ msgstr "Włącz tryb UPnP IGDv1" msgid "Unknown" msgstr "Nieznany" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Prędkość wysyłania" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Użyj %s" diff --git a/luci-app-upnp/po/pt/upnp.po b/luci-app-upnp/po/pt/upnp.po index ad638836a..694e18ecd 100644 --- a/luci-app-upnp/po/pt/upnp.po +++ b/luci-app-upnp/po/pt/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.17.1\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -25,7 +25,7 @@ msgstr "" "Um intervalo de 900s resultará em %s notificações com o max-age mínimo de " "1800s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -33,7 +33,7 @@ msgstr "" "Os ACL especificam quais as portas externas que podem ser redirecionadas " "para que endereços internos e portas, IPv6 always allowed." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Ação" @@ -49,30 +49,34 @@ msgstr "Mapas de portas activos UPnP IGD e PCP/NAT-PMP" msgid "Advanced Settings" msgstr "Definições Avançadas" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Anuncie como aparelho IGDv1 em vez de IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Permitir" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" "Permitir a adição de encaminhamentos apenas para solicitar endereços IP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "Permitir IPv4 privado" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Número modelo anunciado" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Número de série anunciado" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Endereço do Cliente" @@ -83,11 +87,11 @@ msgstr "Nome do cliente" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Porta do Cliente" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Comentário" @@ -97,7 +101,7 @@ msgstr "Comentário" msgid "Delete" msgstr "Apagar" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "Negar" @@ -106,11 +110,11 @@ msgstr "Negar" msgid "Description" msgstr "Descrição" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "UUID do aparelho" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Velocidade de descarga" @@ -122,11 +126,15 @@ msgstr "Ativar protocolos PCP/NAT-PMP" msgid "Enable UPnP IGD protocol" msgstr "Ativar protocolo UPnP IGD" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Ativar log adicional" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "Ativar encaminhamento para endereço IPv4 privado / reservado" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Ativar o modo seguro" @@ -137,7 +145,7 @@ msgstr "Expira" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Porta externa" @@ -145,11 +153,11 @@ msgstr "Porta externa" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "Conceder acesso a UPnP IGD e PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Intervalo de Notificação" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "URL de apresentação" @@ -158,39 +166,39 @@ msgstr "URL de apresentação" msgid "Protocol" msgstr "Protocolo" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Põe informações de depuração extras no log do sistema" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "Relatar URL personalizada da interface web do roteador (apresentação)" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "Relatar a velocidade máxima de descarga em kByte/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "Relatar a velocidade máxima de upload em kByte/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Relata uptime do sistema ao invés da do daemon" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "Porta" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "Host STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "Porta STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "Lista de Controle de Acesso ao Serviço" @@ -202,7 +210,7 @@ msgstr "Configurações do Serviço" msgid "Service Setup" msgstr "Configurações gerais" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "Ficheiro de concessão do serviço" @@ -230,7 +238,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Não há redirecionamentos ativos." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -245,7 +253,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "Serviço UPnP IGD e PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Ativar o modo UPnP IGDv1" @@ -255,11 +263,11 @@ msgstr "Ativar o modo UPnP IGDv1" msgid "Unknown" msgstr "Desconhecido" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Ligação ascendente" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Utilizar %s" diff --git a/luci-app-upnp/po/pt_BR/upnp.po b/luci-app-upnp/po/pt_BR/upnp.po index c168d54a2..3abe125e5 100644 --- a/luci-app-upnp/po/pt_BR/upnp.po +++ b/luci-app-upnp/po/pt_BR/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 2026.6.dev0\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -25,7 +25,7 @@ msgstr "" "Um intervalo de 900s resultará em %s notificações com o max-age mínimo de " "1800s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -33,7 +33,7 @@ msgstr "" "As ACL especificam quais portas externas podem ser encaminhadas para quais " "endereços e portas de clientes, com IPv6 sempre será permitido." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Ação" @@ -49,30 +49,34 @@ msgstr "Mapeamentos de portas UPnP IGD e PCP/NAT-PMP ativos" msgid "Advanced Settings" msgstr "Configurações Avançadas" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Anuncie-se como um dispositivo IGDv1 ao invés de um IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Permitir" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" "Permite adicionar encaminhamento apenas para o endereço IP requisitante" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Número do modelo anunciado" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Número de série anunciado" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Endereço do cliente" @@ -83,11 +87,11 @@ msgstr "Nome do cliente" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Porta do Cliente" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Comentário" @@ -97,7 +101,7 @@ msgstr "Comentário" msgid "Delete" msgstr "Excluir" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "Negar" @@ -106,11 +110,11 @@ msgstr "Negar" msgid "Description" msgstr "Descrição" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "UUID do Dispositivo" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Velocidade de download" @@ -122,11 +126,15 @@ msgstr "Habilitar protocolos PCP/NAT-PMP" msgid "Enable UPnP IGD protocol" msgstr "Habilitar protocolo UPnP IGD" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Habilite registros adicionais" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Habilite modo seguro" @@ -137,7 +145,7 @@ msgstr "Expiração" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Porta externa" @@ -145,11 +153,11 @@ msgstr "Porta externa" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "Conceder acesso ao UPnP IGD e PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Intervalo de notificação" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "URL de Apresentação" @@ -158,39 +166,39 @@ msgstr "URL de Apresentação" msgid "Protocol" msgstr "Protocolo" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Envie informações extra de depuração ao registro do sistema" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "Relatar URL personalizada da interface web do roteador (apresentação)" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "Relatar a velocidade máxima de download em kByte/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "Relatar a velocidade máxima de upload em kByte/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Informe o tempo de vida do sistema ao invés do tempo do processo" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "Porta" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "Host STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "Porta STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "Lista de Controle de Acesso ao Serviço" @@ -202,7 +210,7 @@ msgstr "Configurações do Serviço" msgid "Service Setup" msgstr "Configuração do serviço" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "Arquivo de concessão do serviço" @@ -230,7 +238,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Não existe redirecionamentos ativos." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -245,7 +253,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "Serviço UPnP IGD e PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Habilitar o modo UPnP IGDv1" @@ -255,11 +263,11 @@ msgstr "Habilitar o modo UPnP IGDv1" msgid "Unknown" msgstr "Desconhecido" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Velocidade de envio (upload)" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Use o %s" diff --git a/luci-app-upnp/po/ro/upnp.po b/luci-app-upnp/po/ro/upnp.po index 8dda6102d..1df44dcf9 100644 --- a/luci-app-upnp/po/ro/upnp.po +++ b/luci-app-upnp/po/ro/upnp.po @@ -9,11 +9,11 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : " +"(n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;\n" "X-Generator: Weblate 5.15-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -24,7 +24,7 @@ msgstr "" "Un interval de 900s va rezulta în %s notificări cu durata maximă de viață de " "1800s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -32,7 +32,7 @@ msgstr "" "ACL-urile specifica porturile externe care pot fi redirectate si spre ce " "adrese si porturi interne, IPv6 always allowed." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Acţiune" @@ -48,29 +48,33 @@ msgstr "" msgid "Advanced Settings" msgstr "Setări Avansate" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Publicitate ca dispozitiv IGDv1 în loc de IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Permite" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "Permite adaugarea forward-urilor doar catre adresele IP solicitante" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Numărul modelului anunțat" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Număr de serie anunțat" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Adresa client" @@ -81,11 +85,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Port client" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Comentariu" @@ -95,7 +99,7 @@ msgstr "Comentariu" msgid "Delete" msgstr "Ștergeți" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -104,11 +108,11 @@ msgstr "" msgid "Description" msgstr "Descriere" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "UUID al dispozitivului" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Viteza de descărcare" @@ -120,11 +124,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Activeaza log-area aditionala" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Activeaza modul securizat" @@ -135,7 +143,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Port extern" @@ -143,11 +151,11 @@ msgstr "Port extern" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Interval de notificare" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "Adresa de prezentare" @@ -156,39 +164,39 @@ msgstr "Adresa de prezentare" msgid "Protocol" msgstr "Protocol" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Pune informatii utile suplimentare in log-ul de sistem" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Raporteaza timpul de functionare de sistem in loc de serviciu" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "SOAP/HTTP port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "Gazda STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "Portul STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -200,7 +208,7 @@ msgstr "" msgid "Service Setup" msgstr "Setări generale" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -229,7 +237,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Nu exista redirecturi active." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -242,7 +250,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Activează modul UPnP IGDv1" @@ -252,11 +260,11 @@ msgstr "Activează modul UPnP IGDv1" msgid "Unknown" msgstr "Necunoscut" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Viteza de încărcare" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Utilizați %s" diff --git a/luci-app-upnp/po/ru/upnp.po b/luci-app-upnp/po/ru/upnp.po index 477d6dff7..d787239cd 100644 --- a/luci-app-upnp/po/ru/upnp.po +++ b/luci-app-upnp/po/ru/upnp.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: LuCI: upnp\n" "POT-Creation-Date: 2009-05-19 19:36+0200\n" "PO-Revision-Date: 2026-05-02 12:03+0000\n" -"Last-Translator: SnIPeRSnIPeR " -"\n" +"Last-Translator: SnIPeRSnIPeR " +"\n" "Language-Team: Russian \n" "Language: ru\n" @@ -17,7 +17,7 @@ msgstr "" "Project-Info: Это технический перевод, не дословный. Главное-удобный русский " "интерфейс, все проверялось в графическом режиме, совместим с другими apps\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -28,7 +28,7 @@ msgstr "" "Интервал 900 сек. приведет к появлению %s уведомлений с минимальным " "максимальным возрастом 1800 сек" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -36,7 +36,7 @@ msgstr "" "Список контроля доступа (ACL) определяет, какие клиентские адресы могут быть " "перенаправлены, IPv6 всегда разрешён." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Действие" @@ -52,29 +52,33 @@ msgstr "Активные карты портов UPnP IGD и PCP/NAT-PMP" msgid "Advanced Settings" msgstr "Расширенные настройки" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Объявить как IGDv1 устройство вместо IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Разрешить" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "Разрешить перенаправление только для запрашивающих IP-адресов" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "Разрешить частные IPv4-адреса" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Объявить номер модели" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Объявить серийный номер" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Адрес клиента" @@ -85,11 +89,11 @@ msgstr "Имя клиента" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Порт клиента" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Комментарий" @@ -99,7 +103,7 @@ msgstr "Комментарий" msgid "Delete" msgstr "Удалить" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "Отказать" @@ -108,11 +112,11 @@ msgstr "Отказать" msgid "Description" msgstr "Описание" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "UUID устройства" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Скорость закачки" @@ -124,11 +128,15 @@ msgstr "Включить протоколы PCP/NAT-PMP" msgid "Enable UPnP IGD protocol" msgstr "Включить UPnP IGD" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Дополнительное журналирование" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "Включить переадресацию для частных и зарезервированных IPv4-адресов" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Защищённый режим" @@ -139,7 +147,7 @@ msgstr "Истекает" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Внешний порт" @@ -147,11 +155,11 @@ msgstr "Внешний порт" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "Предоставить доступ к UPnP IGD и PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Интервал уведомления" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "Задать URL-адрес" @@ -160,40 +168,40 @@ msgstr "Задать URL-адрес" msgid "Protocol" msgstr "Протокол" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Добавлять дополнительную отладочную информацию в системный журнал" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" "URL-адрес веб-интерфейса (презентации) пользовательского маршрутизатора" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "Сообщать максимальную скорость загрузки в кБайт/с" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "Сообщать максимальную скорость загрузки в кБайт/с" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Сообщать время работы системы вместо службы" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "Порт SOAP/HTTP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "Хост STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "Порт STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "Список контроля доступа к сервисам" @@ -205,7 +213,7 @@ msgstr "Настройки сервиса" msgid "Service Setup" msgstr "Основные настройки" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "Файл аренды сервиса" @@ -234,7 +242,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Активные переадресации отсутствуют." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -249,7 +257,7 @@ msgstr "UPnP IGD и PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "Сервис UPnP IGD и PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "UPnP IGDv1 режим" @@ -259,11 +267,11 @@ msgstr "UPnP IGDv1 режим" msgid "Unknown" msgstr "Неизвестный" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Внешнее соединение" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Использовать %s" diff --git a/luci-app-upnp/po/sk/upnp.po b/luci-app-upnp/po/sk/upnp.po index bcab28e5a..6a4265a4e 100644 --- a/luci-app-upnp/po/sk/upnp.po +++ b/luci-app-upnp/po/sk/upnp.po @@ -12,7 +12,7 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Weblate 4.0-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -21,13 +21,13 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Akcia" @@ -43,29 +43,33 @@ msgstr "" msgid "Advanced Settings" msgstr "Pokročilé nastavenia" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "Umožniť pridanie preposielaní iba požadovaným adresám IP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Ohlásené číslo modelu" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Ohlásené sériové číslo" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Adresa klienta" @@ -76,11 +80,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Port klienta" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Komentár" @@ -90,7 +94,7 @@ msgstr "Komentár" msgid "Delete" msgstr "Odstrániť" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -99,11 +103,11 @@ msgstr "" msgid "Description" msgstr "Popis" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "UUID zariadenia" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "" @@ -115,11 +119,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Povoliť dodatočné zaznamenávanie" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Povoliť zabezpečený režim" @@ -130,7 +138,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Externý port" @@ -138,11 +146,11 @@ msgstr "Externý port" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Interval upozornení" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "Prezentačná URL" @@ -151,39 +159,39 @@ msgstr "Prezentačná URL" msgid "Protocol" msgstr "Protokol" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "SOAP/HTTP port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -195,7 +203,7 @@ msgstr "" msgid "Service Setup" msgstr "Všeobecné nastavenia" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -222,7 +230,7 @@ msgstr "%s umožňuje klientom v miestnej sieti automaticky nastaviť smerovač. msgid "There are no active port maps." msgstr "Neexistujú žiadne aktívne presmerovania." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -235,7 +243,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Povoliť režim UPnP IGDv1" @@ -245,11 +253,11 @@ msgstr "Povoliť režim UPnP IGDv1" msgid "Unknown" msgstr "Neznáme" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "" diff --git a/luci-app-upnp/po/sv/upnp.po b/luci-app-upnp/po/sv/upnp.po index f5a987a38..80f4db3c7 100644 --- a/luci-app-upnp/po/sv/upnp.po +++ b/luci-app-upnp/po/sv/upnp.po @@ -12,7 +12,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.17-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -23,7 +23,7 @@ msgstr "" "Ett 900s intervall kommer att resultera i %s notifieringar med minimum " "maxålder på 1800s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -31,7 +31,7 @@ msgstr "" "ACL:er anger vilka externa portar som ska omdirigeras till vilka interna " "adresser och portar, IPv6 always allowed." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Åtgärd" @@ -47,29 +47,33 @@ msgstr "" msgid "Advanced Settings" msgstr "Avancerade inställningar" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Annonsera som IGDv1-enhet (ingen IPv6) istället för IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Tillåt" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Aviserat modellnummer" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Aviserat serienummer" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Klient-adress" @@ -80,11 +84,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Klient-port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Kommentar" @@ -94,7 +98,7 @@ msgstr "Kommentar" msgid "Delete" msgstr "Radera" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "Neka" @@ -103,11 +107,11 @@ msgstr "Neka" msgid "Description" msgstr "Beskrivning" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "Enhetens UUID" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Hämtningshastighet" @@ -119,11 +123,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Aktivera ytterligare loggning" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Aktivera säkert läge" @@ -134,7 +142,7 @@ msgstr "Utgår" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Extern port" @@ -142,11 +150,11 @@ msgstr "Extern port" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "Tillåt åtkomst till UPnP IGD & PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Intervall för avisering" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "Presentationens URL" @@ -155,39 +163,39 @@ msgstr "Presentationens URL" msgid "Protocol" msgstr "Protokoll" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Lägger extra felsökningsinformation till system-loggen" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Rapportera systemet iställer för demonens upptid" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "SOAP/HTTP port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "STUN-värd" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "STUN-port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -199,7 +207,7 @@ msgstr "" msgid "Service Setup" msgstr "Generella inställningar" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -228,7 +236,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Det finns inga aktiva omdirigeringar." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -241,7 +249,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Aktivera UPnP IGDv1-läge" @@ -251,11 +259,11 @@ msgstr "Aktivera UPnP IGDv1-läge" msgid "Unknown" msgstr "Okänd" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Uppladdningshastighet" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Använd %s" diff --git a/luci-app-upnp/po/ta/upnp.po b/luci-app-upnp/po/ta/upnp.po index 246c68f06..8be0643f4 100644 --- a/luci-app-upnp/po/ta/upnp.po +++ b/luci-app-upnp/po/ta/upnp.po @@ -10,7 +10,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.10-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -20,7 +20,7 @@ msgid "" msgstr "" "900 களின் இடைவெளி 1800 களின் குறைந்தபட்ச அதிகபட்ச வயதுடன் %s அறிவிப்புகளை ஏற்படுத்தும்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -28,7 +28,7 @@ msgstr "" "எந்த கிளையன்ட் முகவரிகள் மற்றும் துறைமுகங்களை வரைபடமாக்க முடியும் என்பதைக் குறிப்பிடவும், " "ஐபிவி 6 எப்போதும் அனுமதிக்கப்படுகிறது." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "செயல்" @@ -44,29 +44,33 @@ msgstr "ஆக்டிவ் யுபிஎன்பி ஐ.சி.டி & msgid "Advanced Settings" msgstr "மேம்பட்ட அமைப்புகள்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "IGDV2 க்கு பதிலாக IGDV1 (IPV4 மட்டும்) சாதனமாக விளம்பரம் செய்யுங்கள்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "இசைவு" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "ஐபி முகவரிகளைக் கோருவதற்கு துறைமுகம் வரைபடங்களைச் சேர்க்க அனுமதிக்கவும்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "மாதிரி எண் அறிவிக்கப்பட்டது" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "அறிவிக்கப்பட்ட வரிசை எண்" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "வாடிக்கையாளர் முகவரி" @@ -77,11 +81,11 @@ msgstr "கிளையன்ட் பெயர்" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "வாங்கி துறைமுகம்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "கருத்து" @@ -91,7 +95,7 @@ msgstr "கருத்து" msgid "Delete" msgstr "நீக்கு" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "மறுக்கவும்" @@ -100,11 +104,11 @@ msgstr "மறுக்கவும்" msgid "Description" msgstr "விவரம்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "சாதனம் uuid" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "பதிவிறக்க விரைவு" @@ -116,11 +120,15 @@ msgstr "PCP/NAT-PMP நெறிமுறைகளை இயக்கவும msgid "Enable UPnP IGD protocol" msgstr "UPNP IGD நெறிமுறையை இயக்கவும்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "கூடுதல் பதிவுகளை இயக்கவும்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "பாதுகாப்பான பயன்முறையை இயக்கவும்" @@ -131,7 +139,7 @@ msgstr "காலாவதியாகிறது" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "வெளிப்புற துறைமுகம்" @@ -139,11 +147,11 @@ msgstr "வெளிப்புற துறைமுகம்" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "UPNP IGD & PCP/NAT-PMP க்கு அணுகல் வழங்கவும்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "இடைவெளியை அறிவிக்கவும்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "விளக்கக்காட்சி முகவரி" @@ -152,39 +160,39 @@ msgstr "விளக்கக்காட்சி முகவரி" msgid "Protocol" msgstr "நெறிமுறை" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "கூடுதல் பிழைத்திருத்த தகவல்களை கணினி பதிவில் வைக்கிறது" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "தனிப்பயன் திசைவி வலை இடைமுகம் (விளக்கக்காட்சி) முகவரி ஐப் புகாரளிக்கவும்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "KByte/s இல் அதிகபட்ச பதிவிறக்க வேகத்தைப் புகாரளிக்கவும்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "KByte/s இல் அதிகபட்ச பதிவேற்ற வேகத்தைப் புகாரளிக்கவும்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "பணி நேரம் நேரத்திற்கு பதிலாக அறிக்கை முறை" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "SOAP/HTTP துறைமுகம்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "ச்டன் புரவலன்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "ச்டன் துறைமுகம்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "பணி அணுகல் கட்டுப்பாட்டு பட்டியல்" @@ -196,7 +204,7 @@ msgstr "பணி அமைப்புகள்" msgid "Service Setup" msgstr "பணி அமைப்பு" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "பணி குத்தகை கோப்பு" @@ -225,7 +233,7 @@ msgstr "" msgid "There are no active port maps." msgstr "செயலில் உள்ள துறைமுகம் வரைபடங்கள் எதுவும் இல்லை." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -239,7 +247,7 @@ msgstr "UPNP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "UPNP IGD & PCP/NAT-PMP பணி" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "UPNP IGDV1 பொருந்தக்கூடிய பயன்முறை" @@ -249,11 +257,11 @@ msgstr "UPNP IGDV1 பொருந்தக்கூடிய பயன்மு msgid "Unknown" msgstr "தெரியவில்லை" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "வேகத்தை பதிவேற்றவும்" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "%s பயன்படுத்தவும்" diff --git a/luci-app-upnp/po/templates/upnp.pot b/luci-app-upnp/po/templates/upnp.pot index 3a1dc9419..010901252 100644 --- a/luci-app-upnp/po/templates/upnp.pot +++ b/luci-app-upnp/po/templates/upnp.pot @@ -1,7 +1,7 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -10,13 +10,13 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "" @@ -32,29 +32,33 @@ msgstr "" msgid "Advanced Settings" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 -msgid "Announced model number" +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +msgid "Announced model number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "" @@ -65,11 +69,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "" @@ -79,7 +83,7 @@ msgstr "" msgid "Delete" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -88,11 +92,11 @@ msgstr "" msgid "Description" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "" @@ -104,11 +108,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "" @@ -119,7 +127,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "" @@ -127,11 +135,11 @@ msgstr "" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "" @@ -140,39 +148,39 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -184,7 +192,7 @@ msgstr "" msgid "Service Setup" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -211,7 +219,7 @@ msgstr "" msgid "There are no active port maps." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -224,7 +232,7 @@ msgstr "" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "" @@ -234,11 +242,11 @@ msgstr "" msgid "Unknown" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "" diff --git a/luci-app-upnp/po/tr/upnp.po b/luci-app-upnp/po/tr/upnp.po index e7bf9ca03..984dbfabd 100644 --- a/luci-app-upnp/po/tr/upnp.po +++ b/luci-app-upnp/po/tr/upnp.po @@ -12,7 +12,7 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.17.1-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -23,7 +23,7 @@ msgstr "" "900 saniyelik bir aralık 1800 saniyelik en düşük azami yaş değeriyle %s " "bildirimle sonuçlanacaktır" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -32,7 +32,7 @@ msgstr "" "bağlantı noktalarına yeniden yönlendirilebileceğini belirtir, IPv6 always " "allowed." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Eylem" @@ -48,29 +48,33 @@ msgstr "" msgid "Advanced Settings" msgstr "Gelişmiş Ayarlar" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "IGDv2 yerine IGDv1 aygıtı olarak duyuru yap" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "İzin ver" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "Yalnızca istekte bulunan IP adreslerine yönlendirme eklemeye izin ver" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Açıklanan model numarası" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Açıklanan seri numarası" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "İstemci Adresi" @@ -81,11 +85,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "İstemci Bağlantı Noktası" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Yorum" @@ -95,7 +99,7 @@ msgstr "Yorum" msgid "Delete" msgstr "Sil" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "Reddet" @@ -104,11 +108,11 @@ msgstr "Reddet" msgid "Description" msgstr "Açıklama" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "Aygıt UUID'si" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "İndirme hızı" @@ -120,11 +124,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Ek günlük kaydını etkinleştir" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Güvenli modu etkinleştir" @@ -135,7 +143,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Harici Bağlantı Noktası" @@ -143,11 +151,11 @@ msgstr "Harici Bağlantı Noktası" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Bildirme aralığı" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "Sunum URL'si" @@ -156,39 +164,39 @@ msgstr "Sunum URL'si" msgid "Protocol" msgstr "Protokol" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Sistem günlüğüne fazladan hata ayıklama bilgisi koyar" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Arka plan programı çalışma süresi yerine sistemi rapor et" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "Bağlantı noktası" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "STUN Ana Bilgisayarı" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "STUN Bağlantı Noktası" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -200,7 +208,7 @@ msgstr "" msgid "Service Setup" msgstr "Genel Ayarlar" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -229,7 +237,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Etkin yönlendirme yok." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -242,7 +250,7 @@ msgstr "UPnP IGD ve PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "UPnP IGDv1 modunu etkinleştir" @@ -252,11 +260,11 @@ msgstr "UPnP IGDv1 modunu etkinleştir" msgid "Unknown" msgstr "Bilinmiyor" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Yükleme hızı" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "%s kullan" diff --git a/luci-app-upnp/po/uk/upnp.po b/luci-app-upnp/po/uk/upnp.po index 1432e5536..8194bc8a5 100644 --- a/luci-app-upnp/po/uk/upnp.po +++ b/luci-app-upnp/po/uk/upnp.po @@ -13,7 +13,7 @@ msgstr "" "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 2026.5-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -24,7 +24,7 @@ msgstr "" "Інтервал у 900 секунд призведе до %s сповіщень із мінімальним максимальним " "часом дії у 1800 секунд" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -32,7 +32,7 @@ msgstr "" "Список контролю доступу (ACL) визначає, які адреси й порти клієнтів можуть " "переспрямовуватися; для IPv6 завжди дозволено." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Дія" @@ -48,30 +48,34 @@ msgstr "Активні переспрямування портів UPnP IGD & PC msgid "Advanced Settings" msgstr "Розширені налаштування" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Оголошувати як пристрій IGDv1 замість IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "Дозволити" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" "Дозволити додавання переспрямування тільки для IP-адрес, що надсилають запити" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "Дозволити приватні IPv4" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Оголошуваний номер моделі" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Оголошуваний серійний номер" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Адреса клієнта" @@ -82,11 +86,11 @@ msgstr "Імʼя клієнта" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Порт клієнта" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Примітка" @@ -96,7 +100,7 @@ msgstr "Примітка" msgid "Delete" msgstr "Видалити" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "Заборонити" @@ -105,11 +109,11 @@ msgstr "Заборонити" msgid "Description" msgstr "Опис" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "UUID пристрою" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Швидкість завантаження" @@ -121,11 +125,15 @@ msgstr "Увімкнути протоколи PCP/NAT-PMP" msgid "Enable UPnP IGD protocol" msgstr "Увімкнути протокол UPnP IGD" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Увімкнути додаткове журналювання" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "Увімкнути переспрямування для приватних/зарезервованих IPv4-адрес" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Увімкнути захищений режим" @@ -136,7 +144,7 @@ msgstr "Термін дії закінчується" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Зовнішній порт" @@ -144,11 +152,11 @@ msgstr "Зовнішній порт" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "Надати доступ до UPnP IGD & PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Інтервал сповіщення" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "URL презентації" @@ -157,41 +165,41 @@ msgstr "URL презентації" msgid "Protocol" msgstr "Протокол" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Записує додаткову інформацію для налагодження у системний журнал" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" "Повідомляти користувацьку URL-адресу вебінтерфейсу маршрутизатора " "(презентації)" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "Повідомляти максимальну швидкість завантаження у кбайт/с" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "Повідомляти максимальну швидкість вивантаження у кбайт/с" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Повідомляти час безвідмовної роботи системи, а не служби" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "Порт SOAP/HTTP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "Вузол STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "Порт STUN" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "Список контролю доступу до служби" @@ -203,7 +211,7 @@ msgstr "Налаштування служби" msgid "Service Setup" msgstr "Загальні налаштування" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "Файл оренди служби" @@ -232,7 +240,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Немає активних переспрямувань." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -247,7 +255,7 @@ msgstr "UPnP IGD та PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "Служба UPnP IGD та PCP/NAT-PMP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Режим сумісності UPnP IGDv1" @@ -257,11 +265,11 @@ msgstr "Режим сумісності UPnP IGDv1" msgid "Unknown" msgstr "Невідомо" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "Швидкість вивантаження" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Використовувати %s" diff --git a/luci-app-upnp/po/vi/upnp.po b/luci-app-upnp/po/vi/upnp.po index 141fd6c35..a77c8ccdc 100644 --- a/luci-app-upnp/po/vi/upnp.po +++ b/luci-app-upnp/po/vi/upnp.po @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.13-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 #, fuzzy msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " @@ -26,7 +26,7 @@ msgstr "" "Khoảng thời gian 900 giây sẽ dẫn đến thông báo %s với độ tuổi tối thiểu là " "1800 giây" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." @@ -34,7 +34,7 @@ msgstr "" "ACL chỉ định cổng bên ngoài nào có thể được chuyển hướng đến địa chỉ và cổng " "nội bộ nào, IPv6 always allowed." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "Hành động" @@ -50,29 +50,33 @@ msgstr "" msgid "Advanced Settings" msgstr "Cài đặt Nâng cao" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "Quảng cáo dưới dạng thiết bị IGDv1 thay vì IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "Chỉ cho phép thêm chuyển tiếp để yêu cầu địa chỉ IP" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "Announced model number" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "Announced serial number" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "Client Address" @@ -83,11 +87,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "Client Port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "Bình luận" @@ -97,7 +101,7 @@ msgstr "Bình luận" msgid "Delete" msgstr "Xoá" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -106,11 +110,11 @@ msgstr "" msgid "Description" msgstr "Mô tả" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "Device UUID" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "Download speed" @@ -122,11 +126,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "Bật ghi nhật ký bổ sung" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "Kích hoạt chế độ an toàn" @@ -137,7 +145,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "Cổng bên ngoài" @@ -145,11 +153,11 @@ msgstr "Cổng bên ngoài" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "Vòng lặp thông báo" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "Presentation URL" @@ -158,39 +166,39 @@ msgstr "Presentation URL" msgid "Protocol" msgstr "Giao thức" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "Đưa thông tin sửa lỗi bổ sung vào nhật ký hệ thống" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "Hệ thống báo cáo thay vì thời gian hoạt động của daemon" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "Cổng" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "STUN host" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "STUN port" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "Service Access Control List" @@ -202,7 +210,7 @@ msgstr "" msgid "Service Setup" msgstr "Các cài đặt chung" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -230,7 +238,7 @@ msgstr "" msgid "There are no active port maps." msgstr "Không có chuyển hướng đang hoạt động." -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -243,7 +251,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "UPnP IGD & PCP/NAT-PMP Service" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "Kích hoạt chế độ UPnP IGDv1" @@ -253,12 +261,12 @@ msgstr "Kích hoạt chế độ UPnP IGDv1" msgid "Unknown" msgstr "Không xác định" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 #, fuzzy msgid "Upload speed" msgstr "Tốc độ tải lên" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "Sử dụng %s" diff --git a/luci-app-upnp/po/yua/upnp.po b/luci-app-upnp/po/yua/upnp.po index dfc442edb..1ca02524a 100644 --- a/luci-app-upnp/po/yua/upnp.po +++ b/luci-app-upnp/po/yua/upnp.po @@ -13,7 +13,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.3-dev\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -22,13 +22,13 @@ msgid "" "1800s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "" @@ -44,29 +44,33 @@ msgstr "" msgid "Advanced Settings" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 -msgid "Announced model number" +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +msgid "Announced model number" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "" @@ -77,11 +81,11 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "" @@ -91,7 +95,7 @@ msgstr "" msgid "Delete" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "" @@ -100,11 +104,11 @@ msgstr "" msgid "Description" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "" @@ -116,11 +120,15 @@ msgstr "" msgid "Enable UPnP IGD protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "" @@ -131,7 +139,7 @@ msgstr "" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "" @@ -139,11 +147,11 @@ msgstr "" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "" @@ -152,39 +160,39 @@ msgstr "" msgid "Protocol" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "" @@ -196,7 +204,7 @@ msgstr "" msgid "Service Setup" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "" @@ -223,7 +231,7 @@ msgstr "" msgid "There are no active port maps." msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -236,7 +244,7 @@ msgstr "" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "" @@ -246,11 +254,11 @@ msgstr "" msgid "Unknown" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "" diff --git a/luci-app-upnp/po/zh_Hans/upnp.po b/luci-app-upnp/po/zh_Hans/upnp.po index 4da1f25d5..883a0ce28 100644 --- a/luci-app-upnp/po/zh_Hans/upnp.po +++ b/luci-app-upnp/po/zh_Hans/upnp.po @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.17.1\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -27,13 +27,13 @@ msgid "" "1800s" msgstr "当通知间隔为 900 秒时,%s 通知的最小 max-age 为 1800 秒" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." msgstr "ACL 用来限制哪些客户端地址和端口可以被映射,IPv6 始终被允许。" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "操作" @@ -49,29 +49,33 @@ msgstr "当前生效的 UPnP IGD 和 PCP/NAT-PMP 端口映射" msgid "Advanced Settings" msgstr "高级设置" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "将设备标识为 IGDv1(仅IPv4)设备,而不是 IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "允许" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "‌仅允许为发起请求的 IP 地址添加端口映射" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "允许 IPv4 内网地址" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "通告的设备型号" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "通告的设备序列号" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "客户端地址" @@ -82,11 +86,11 @@ msgstr "客户端名称" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "客户端端口" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "注释" @@ -96,7 +100,7 @@ msgstr "注释" msgid "Delete" msgstr "删除" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "拒绝" @@ -105,11 +109,11 @@ msgstr "拒绝" msgid "Description" msgstr "描述" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "设备 UUID" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "下行带宽" @@ -121,11 +125,15 @@ msgstr "启用 PCP/NAT-PMP 协议" msgid "Enable UPnP IGD protocol" msgstr "启用 UPnP IGD 协议" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "启用额外的日志" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "允许转发 IPv4 内网/保留地址" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "启用安全模式" @@ -136,25 +144,19 @@ msgstr "剩余有效期" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "外部端口" -msgid "Force forwarding" -msgstr "强制转发" - -msgid "Force forwarding ports even the network is behind NAT" -msgstr "即使网络位于 NAT 之后,也强制转发端口" - #: applications/luci-app-upnp/root/usr/share/rpcd/acl.d/luci-app-upnp.json:3 msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "授予访问 UPnP IGD 及 PCP/NAT-PMP 的权限" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "通知间隔" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "服务网址" @@ -163,39 +165,39 @@ msgstr "服务网址" msgid "Protocol" msgstr "协议" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "将额外的调试信息输出到系统日志中" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "自定义路由器网页界面(展示页面)网址" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "向客户端通告的最大下载速度 kByte/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "向客户端通告的最大上传速度 kByte/s" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "用系统运行时间代替进程运行时间" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "SOAP/HTTP 端口" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "STUN 主机" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "STUN 端口" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "服务访问控制列表" @@ -207,7 +209,7 @@ msgstr "服务设置" msgid "Service Setup" msgstr "常规设置" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "服务租约文件" @@ -234,7 +236,7 @@ msgstr "%s 协议允许本地网络上的客户端自主配置路由器上的端 msgid "There are no active port maps." msgstr "当前没有生效的端口映射。" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "" @@ -249,7 +251,7 @@ msgstr "UPnP IGD 和 PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "UPnP IGD 和 PCP/NAT-PMP 服务" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "UPnP IGDv1 兼容模式" @@ -259,11 +261,11 @@ msgstr "UPnP IGDv1 兼容模式" msgid "Unknown" msgstr "未知" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "上行带宽" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "使用 %s" diff --git a/luci-app-upnp/po/zh_Hant/upnp.po b/luci-app-upnp/po/zh_Hant/upnp.po index 5071f4bb7..6b53cecaa 100644 --- a/luci-app-upnp/po/zh_Hant/upnp.po +++ b/luci-app-upnp/po/zh_Hant/upnp.po @@ -15,7 +15,7 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.17.1\n" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:180 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:183 msgctxt "" "A 900s interval will result in %s (%s = SSDP) notifications with the minimum " "max-age of 1800s" @@ -24,13 +24,13 @@ msgid "" "1800s" msgstr "最小 max-age 為 1800 秒,此時每隔 900 秒將產生 %s 個通知" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:216 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:219 msgid "" "ACL specify which client addresses and ports can be mapped, IPv6 always " "allowed." msgstr "ACL 指定可被映射的用戶端位址和連接埠,IPv6 始終允許。" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:235 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:238 msgid "Action" msgstr "動作" @@ -46,29 +46,33 @@ msgstr "活動的 UPnP IGD & PCP/NAT-PMP 連接埠映射" msgid "Advanced Settings" msgstr "進階設定" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:151 msgid "Advertise as IGDv1 (IPv4 only) device instead of IGDv2" msgstr "通告為 IGDv1 (僅 IPv4) 裝置而非 IGDv2" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:236 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:239 msgid "Allow" msgstr "允許" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:175 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:178 msgid "Allow adding port maps for requesting IP addresses only" msgstr "僅允許為請求的 IP 位址新增連接埠映射" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +msgid "Allow private IPv4" +msgstr "允許私有 IPv4" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 msgid "Announced model number" msgstr "宣告的型號" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:202 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 msgid "Announced serial number" msgstr "宣告的序列號" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:41 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:99 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:223 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:226 msgid "Client Address" msgstr "用戶端位址" @@ -79,11 +83,11 @@ msgstr "用戶端名稱" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:42 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:100 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:227 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:230 msgid "Client Port" msgstr "用戶端連接埠" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:221 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:224 msgid "Comment" msgstr "註解" @@ -93,7 +97,7 @@ msgstr "註解" msgid "Delete" msgstr "刪除" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:237 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:240 msgid "Deny" msgstr "拒絕" @@ -102,11 +106,11 @@ msgstr "拒絕" msgid "Description" msgstr "描述" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:196 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:199 msgid "Device UUID" msgstr "裝置 UUID" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:153 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:156 msgid "Download speed" msgstr "下載速度" @@ -118,11 +122,15 @@ msgstr "啟用 PCP/NAT-PMP" msgid "Enable UPnP IGD protocol" msgstr "啟用 UPnP IGD" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:209 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 msgid "Enable additional logging" msgstr "啟用額外紀錄" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:174 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:148 +msgid "Enable forwarding for private/reserved IPv4 address" +msgstr "啟用私有/保留 IPv4 位址轉送" + +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:177 msgid "Enable secure mode" msgstr "啟用安全模式" @@ -133,7 +141,7 @@ msgstr "過期" #: applications/luci-app-upnp/htdocs/luci-static/resources/view/status/include/80_upnp.js:43 #: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:101 -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:231 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:234 msgid "External Port" msgstr "外部連接埠" @@ -141,11 +149,11 @@ msgstr "外部連接埠" msgid "Grant access to UPnP IGD & PCP/NAT-PMP" msgstr "授予存取 UPnP IGD & PCP/NAT-PMP 的權限" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:179 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:182 msgid "Notify interval" msgstr "通知間隔" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:191 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:194 msgid "Presentation URL" msgstr "簡報 URL" @@ -154,39 +162,39 @@ msgstr "簡報 URL" msgid "Protocol" msgstr "協定" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:210 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:213 msgid "Puts extra debugging information into the system log" msgstr "將額外的除錯資訊寫入系統紀錄" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:192 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:195 msgid "Report custom router web interface (presentation) URL" msgstr "報告路由器 web 介面自訂 (簡報) URL" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:154 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 msgid "Report maximum download speed in kByte/s" msgstr "報告最大下載速度 (kByte/s)" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:158 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 msgid "Report maximum upload speed in kByte/s" msgstr "報告最大上傳速度 (kByte/s)" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:205 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:208 msgid "Report system instead of service uptime" msgstr "報告系統上線時間而非服務上線時間" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:186 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:189 msgid "SOAP/HTTP port" msgstr "SOAP/HTTP 連接埠" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:165 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:168 msgid "STUN host" msgstr "STUN 主機" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:169 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:172 msgid "STUN port" msgstr "STUN 連接埠" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:218 msgid "Service Access Control List" msgstr "服務存取控制清單" @@ -198,7 +206,7 @@ msgstr "服務設定" msgid "Service Setup" msgstr "服務設定" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:212 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:215 msgid "Service lease file" msgstr "服務租約檔案" @@ -225,7 +233,7 @@ msgstr "%s 協定允許本地網路中的用戶端在路由器自動配置連接 msgid "There are no active port maps." msgstr "無活動的連接埠映射。" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:163 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:166 msgid "" "To detect the public IPv4 address for unrestricted full-cone/one-to-one NATs" msgstr "偵測不受限制的全錐/一對一 NAT 的公共 IPv4 位址" @@ -238,7 +246,7 @@ msgstr "UPnP IGD & PCP" msgid "UPnP IGD & PCP/NAT-PMP Service" msgstr "UPnP IGD & PCP/NAT-PMP 服務" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:147 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:150 msgid "UPnP IGDv1 compatibility mode" msgstr "UPnP IGDv1 相容模式" @@ -248,11 +256,11 @@ msgstr "UPnP IGDv1 相容模式" msgid "Unknown" msgstr "未知" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:157 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:160 msgid "Upload speed" msgstr "上傳速度" -#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:161 +#: applications/luci-app-upnp/htdocs/luci-static/resources/view/upnp/upnp.js:164 msgctxt "Use %s (%s = STUN)" msgid "Use %s" msgstr "使用 %s" diff --git a/luci-app-upnp/root/usr/share/rpcd/ucode/luci.upnp b/luci-app-upnp/root/usr/share/rpcd/ucode/luci.upnp index f777f165b..b9bf72809 100644 --- a/luci-app-upnp/root/usr/share/rpcd/ucode/luci.upnp +++ b/luci-app-upnp/root/usr/share/rpcd/ucode/luci.upnp @@ -9,16 +9,14 @@ import { access, open, popen } from 'fs'; import { connect } from 'ubus'; import { cursor } from 'uci'; -const uci = cursor(); -const leasefilepath = uci.get('upnpd', 'config', 'upnp_lease_file') || '/var/run/miniupnpd.leases'; - const methods = { get_status: { call: function(req) { + const uci = cursor(); const ubus = connect(); const rules = []; const leases = []; - const leasefile = open(leasefilepath, 'r'); + const leasefile = open(uci.get('upnpd', 'settings', 'lease_file') || '/var/run/miniupnpd.leases', 'r'); if (leasefile) { for (let line = leasefile.read('line'); length(line); line = leasefile.read('line')) { const record = split(line, ':', 6); @@ -61,6 +59,23 @@ const methods = { } } ipt.close(); + + const iptipv6 = popen('ip6tables --line-numbers -xnvL MINIUPNPD 2>/dev/null'); + if (iptipv6) { + for (let line = iptipv6.read('line'); length(line); line = iptipv6.read('line')) { + let m = match(line, /^([0-9]+) .+ ([0-9a-f:]+) ([ut].p) dpt:([0-9]+)/); + if (m) { + push(rules, { + num: '0', + intaddr: arrtoip(iptoarr(m[2])), + intport: +m[4], + extport: +m[4], + proto: uc(m[3]) + }); + } + } + iptipv6.close(); + } } const nft = popen('nft --handle list chain inet fw4 upnp_prerouting 2>/dev/null'); @@ -79,6 +94,27 @@ const methods = { } } nft.close(); + + const nftipv6 = popen('nft --handle list chain inet fw4 upnp_forward 2>/dev/null'); + if (nftipv6) { + for (let line = nftipv6.read('line'), num = 1; length(line); line = nftipv6.read('line')) { + let m = match(line, /^\t\tiif ".+" th dport ([0-9]+) @nh,192,128 0x([0-9a-f]+) @nh,48,8 (0x6|0x11) accept/); + if (m) { + push(rules, { + num: '0', + intaddr: arrtoip(iptoarr(join(':', [substr(m[2], 0, 4), + substr(m[2], 4, 4), substr(m[2], 8, 4), substr(m[2], 12, 4), substr(m[2], 16, 4), + substr(m[2], 20, 4), substr(m[2], 24, 4), substr(m[2], 28, 4) + ]))), + intport: +m[1], + extport: +m[1], + proto: (m[3] == '0x6') ? 'TCP' : 'UDP' + }); + num++; + } + } + nftipv6.close(); + } } return ubus.defer('luci-rpc', 'getHostHints', {}, function(rc, host_hints) { @@ -94,7 +130,7 @@ const methods = { } } for (let mac, hint in host_hints) { - if (rule.intaddr in hint.ipaddrs) { + if (rule.intaddr in hint.ipaddrs || rule.intaddr in hint.ip6addrs) { rule.host_hint = hint.name; break; } @@ -110,8 +146,10 @@ const methods = { call: function(req) { const idx = +req.args?.token; if (idx > 0) { - if (access(leasefilepath)) { - system(['sed', '-i', '-e', `${idx}d`, leasefilepath]); + const uci = cursor(); + const leasefile = uci.get('upnpd', 'settings', 'lease_file') || '/var/run/miniupnpd.leases'; + if (access(leasefile)) { + system(['sed', '-i', '-e', `${idx}d`, leasefile]); system(['/etc/init.d/miniupnpd', 'restart']); } return { result: 'OK' }; diff --git a/miniupnpd/Makefile b/miniupnpd/Makefile index ce8dd3350..720e789e5 100644 --- a/miniupnpd/Makefile +++ b/miniupnpd/Makefile @@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=miniupnpd -PKG_VERSION:=2.3.9 -PKG_RELEASE:=5 +PKG_VERSION:=2.3.10 +PKG_RELEASE:=6 PKG_SOURCE_URL:=https://github.com/miniupnp/miniupnp/releases/download/miniupnpd_$(subst .,_,$(PKG_VERSION)) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz @@ -100,13 +100,14 @@ define Package/miniupnpd/install/Default $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/miniupnpd $(1)/usr/sbin/miniupnpd $(INSTALL_BIN) ./files/miniupnpd.init $(1)/etc/init.d/miniupnpd + $(INSTALL_BIN) ./files/upnpd-migration.uci-defaults $(1)/etc/uci-defaults/99-miniupnpd-upnpd-migration $(INSTALL_CONF) ./files/upnpd.config $(1)/etc/config/upnpd $(INSTALL_DATA) ./files/miniupnpd.hotplug $(1)/etc/hotplug.d/iface/50-miniupnpd - $(INSTALL_BIN) ./files/miniupnpd.defaults.migration $(1)/etc/uci-defaults/99-miniupnpd-migration endef define Package/miniupnpd-iptables/install $(call Package/miniupnpd/install/Default,$1) + $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_DIR) $(1)/usr/share/miniupnpd $(INSTALL_BIN) ./files/miniupnpd.defaults.iptables $(1)/etc/uci-defaults/99-miniupnpd $(INSTALL_DATA) ./files/firewall3.include $(1)/usr/share/miniupnpd/firewall.include diff --git a/miniupnpd/files/firewall3.include b/miniupnpd/files/firewall3.include index 4fd483974..8fc2144db 100644 --- a/miniupnpd/files/firewall3.include +++ b/miniupnpd/files/firewall3.include @@ -20,39 +20,39 @@ iptables_prepend_rule() { local chain="$3" local target="$4" - $iptables "$IPTARGS" -t "$table" -I "$chain" $($iptables "$IPTARGS" -t "$table" --line-numbers -nL "$chain" | \ + $iptables "$IPTARGS" -t "$table" -I "$chain" $($iptables "$IPTARGS" -t "$table" --line-numbers -nL "$chain" | sed -ne '$s/[^0-9].*//p') -j "$target" } ADDED=0 add_extzone_rules() { - local ext_zone="$1" + local ext_zone="$1" - [ -z "$ext_zone" ] && return + [ -z "$ext_zone" ] && return - # IPv4 - due to NAT, need to add both to nat and filter table - # need to insert as penultimate rule for input & forward & postrouting since final rule might be a fw3 REJECT - iptables_prepend_rule "$IPTABLES" filter "zone_${ext_zone}_input" MINIUPNPD - iptables_prepend_rule "$IPTABLES" filter "zone_${ext_zone}_forward" MINIUPNPD - $IPTABLES -t nat -A "zone_${ext_zone}_prerouting" -j MINIUPNPD - iptables_prepend_rule "$IPTABLES" nat "zone_${ext_zone}_postrouting" MINIUPNPD-POSTROUTING + # IPv4 - due to NAT, need to add both to nat and filter table + # need to insert as penultimate rule for input & forward & postrouting since final rule might be a fw3 REJECT + iptables_prepend_rule "$IPTABLES" filter "zone_${ext_zone}_input" MINIUPNPD + iptables_prepend_rule "$IPTABLES" filter "zone_${ext_zone}_forward" MINIUPNPD + $IPTABLES -t nat -A "zone_${ext_zone}_prerouting" -j MINIUPNPD + iptables_prepend_rule "$IPTABLES" nat "zone_${ext_zone}_postrouting" MINIUPNPD-POSTROUTING - # IPv6 if available - filter only - [ -x $IP6TABLES ] && { - iptables_prepend_rule "$IP6TABLES" filter "zone_${ext_zone}_input" MINIUPNPD - iptables_prepend_rule "$IP6TABLES" filter "zone_${ext_zone}_forward" MINIUPNPD - } - ADDED=$(($ADDED + 1)) + # IPv6 if available - filter only + [ -x $IP6TABLES ] && { + iptables_prepend_rule "$IP6TABLES" filter "zone_${ext_zone}_input" MINIUPNPD + iptables_prepend_rule "$IP6TABLES" filter "zone_${ext_zone}_forward" MINIUPNPD + } + ADDED=$(($ADDED + 1)) } # By default, user configuration is king. -for ext_iface in $(uci -q get upnpd.config.external_iface); do - add_extzone_rules $(fw3 -q network "$ext_iface") +for ext_iface in $(uci -q get upnpd.settings.external_iface); do + add_extzone_rules $(fw3 -q network "$ext_iface") done -add_extzone_rules $(uci -q get upnpd.config.external_zone) +add_extzone_rules $(uci -q get upnpd.settings.external_zone) [ "$ADDED" -ne 0 ] && exit 0 @@ -66,7 +66,7 @@ network_find_wan wan_iface network_find_wan6 wan6_iface for ext_iface in $wan_iface $wan6_iface; do - # fw3 -q network fails on sub-interfaces => map to device first - network_get_device ext_device $ext_iface - add_extzone_rules $(fw3 -q device "$ext_device") + # fw3 -q network fails on sub-interfaces => map to device first + network_get_device ext_device $ext_iface + add_extzone_rules $(fw3 -q device "$ext_device") done diff --git a/miniupnpd/files/miniupnpd.defaults.migration b/miniupnpd/files/miniupnpd.defaults.migration deleted file mode 100644 index 249200ab8..000000000 --- a/miniupnpd/files/miniupnpd.defaults.migration +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -if uci -q get upnpd.config.force_forwarding; then - uci -q rename upnpd.config.force_forwarding=ext_allow_private_ipv4 - uci -q commit upnpd -fi - -exit 0 diff --git a/miniupnpd/files/miniupnpd.hotplug b/miniupnpd/files/miniupnpd.hotplug index 607a32bdc..e86097e86 100644 --- a/miniupnpd/files/miniupnpd.hotplug +++ b/miniupnpd/files/miniupnpd.hotplug @@ -1,45 +1,36 @@ +#!/bin/sh /etc/init.d/miniupnpd enabled || exit 0 -# If miniupnpd is not running: -# - check on _any_ event (event updates may contribute to network_find_wan*) - -# If miniupnpd _is_ running: -# - check only on ifup (otherwise lease updates etc would cause -# miniupnpd state loss) +# If daemon is: +# - not running: check on any event (event updates may contribute to network_find_wan*) +# - running: check only on ifup (otherwise lease updates etc. would cause daemon state loss) [ "$ACTION" != "ifup" ] && /etc/init.d/miniupnpd running && exit 0 tmpconf="/var/etc/miniupnpd.conf" -external_iface=$(uci -q get upnpd.config.external_iface) -external_iface6=$(uci -q get upnpd.config.external_iface6) -external_zone=$(uci -q get upnpd.config.external_zone) +external_iface=$(uci -q get upnpd.settings.external_iface) +external_iface6=$(uci -q get upnpd.settings.external_iface6) +external_zone=$(uci -q get upnpd.settings.external_zone) [ -x "$(command -v nft)" ] && FW="fw4" || FW="fw3" . /lib/functions/network.sh - -if [ -n "$external_iface" ] ; then +if [ -n "$external_iface" ]; then network_get_device ifname "$external_iface" +elif [ -n "$external_zone" ]; then + ifname=$($FW -q zone "$external_zone" 2>/dev/null | head -1) else - if [ -n "$external_zone" ] ; then - ifname=$($FW -q zone "$external_zone" 2>/dev/null | head -1) - else - network_find_wan external_iface && \ - network_get_device ifname "$external_iface" - fi + network_find_wan external_iface && network_get_device ifname "$external_iface" fi -if [ -n "$external_iface6" ] ; then +if [ -n "$external_iface6" ]; then network_get_device ifname6 "$external_iface6" +elif [ -n "$external_zone" ]; then + ifname6=$($FW -q zone "$external_zone" 2>/dev/null | head -1) else - if [ -n "$external_zone" ] ; then - ifname6=$($FW -q zone "$external_zone" 2>/dev/null | head -1) - else - network_find_wan6 external_iface6 && \ - network_get_device ifname6 "$external_iface6" - fi + network_find_wan6 external_iface6 && network_get_device ifname6 "$external_iface6" fi [ "$DEVICE" != "$ifname" ] && [ "$DEVICE" != "$ifname6" ] && exit 0 -grep -qs "^ext_ifname=$ifname" "$tmpconf" && grep -qs "^ext_ifname6=$ifname6" "$tmpconf" && exit 0 +grep -qs "^ext_ifname=$ifname" "$tmpconf" && grep -qs "^ext_ifname6=${ifname6:-$ifname}" "$tmpconf" && exit 0 /etc/init.d/miniupnpd restart diff --git a/miniupnpd/files/miniupnpd.init b/miniupnpd/files/miniupnpd.init index a5679eda1..3489a68f7 100644 --- a/miniupnpd/files/miniupnpd.init +++ b/miniupnpd/files/miniupnpd.init @@ -7,112 +7,15 @@ USE_PROCD=1 PROG=/usr/sbin/miniupnpd [ -x "$(command -v nft)" ] && FW="fw4" || FW="fw3" -upnpd_get_port_range() { - local var="$1"; shift - local val - - config_get val "$@" - - case "$val" in - [0-9]*[:-][0-9]*) - export -n -- "${var}_start=${val%%[:-]*}" - export -n -- "${var}_end=${val##*[:-]}" - ;; - [0-9]*) - export -n -- "${var}_start=$val" - export -n -- "${var}_end=" - ;; - esac -} - -conf_rule_add() { - local cfg="$1" - local action int_addr - local ext_start ext_end int_start int_end comment - - config_get action "$cfg" action "deny" # allow or deny - upnpd_get_port_range "ext" "$cfg" ext_ports "0-65535" # external ports: x, x-y, x:y - config_get int_addr "$cfg" int_addr "0.0.0.0/0" # ip or network and subnet mask (internal) - upnpd_get_port_range "int" "$cfg" int_ports "0-65535" # internal ports: x, x-y, x:y or range - config_get comment "$cfg" comment "ACL" # comment - - # Make a single IP IP/32 so that miniupnpd.conf can use it. - [ "${int_addr%/*}" = "$int_addr" ] && int_addr="$int_addr/32" - - echo "$action $ext_start${ext_end:+-}$ext_end $int_addr $int_start${int_end:+-}$int_end #$comment" -} - -upnpd_write_bool() { - local opt="$1" - local def="${2:-0}" - local alt="${3:-$opt}" - local val - - config_get_bool val config "$opt" "$def" - if [ "$val" -eq 0 ]; then - echo "$alt=no" - else - echo "$alt=yes" - fi -} - -upnpd() { +start_service() { config_load "upnpd" - local external_iface external_iface6 external_zone external_ip internal_iface - local upload download log_output port config_file serial_number model_number - local use_stun stun_host stun_port uuid notify_interval presentation_url - local upnp_lease_file upnp_lease_file6 ipv6_disable ext_allow_private_ipv4 - - local enabled - config_get_bool enabled config enabled 1 - [ "$enabled" -eq 0 ] && return 1 - - config_get external_iface config external_iface - config_get external_iface6 config external_iface6 - config_get external_zone config external_zone - config_get external_ip config external_ip - config_get internal_iface config internal_iface - config_get port config port 5000 - config_get upload config upload - config_get download config download - config_get_bool log_output config log_output 0 - config_get config_file config config_file - config_get serial_number config serial_number - config_get model_number config model_number - config_get uuid config uuid - config_get use_stun config use_stun 0 - config_get stun_host config stun_host - config_get stun_port config stun_port - config_get notify_interval config notify_interval - config_get presentation_url config presentation_url - config_get upnp_lease_file config upnp_lease_file - config_get upnp_lease_file6 config upnp_lease_file6 - config_get ipv6_disable config ipv6_disable 0 - config_get ext_allow_private_ipv4 config ext_allow_private_ipv4 0 - - local conf ifname ifname6 - - . /lib/functions/network.sh - - if [ -n "$external_iface" ] ; then - network_get_device ifname "$external_iface" - else - if [ -n "$external_zone" ] ; then - ifname=$($FW -q zone "$external_zone" 2>/dev/null | head -1) - else - network_find_wan external_iface && \ - network_get_device ifname "$external_iface" - fi - fi - if [ -n "$external_iface6" ] ; then - network_get_device ifname6 "$external_iface6" - else - if [ -n "$external_zone" ] ; then - ifname6=$($FW -q zone "$external_zone" 2>/dev/null | head -1) - else - network_find_wan6 external_iface6 && \ - network_get_device ifname6 "$external_iface6" - fi + local enabled config_file log_output conf + config_get enabled settings enabled 0 + config_get config_file settings config_file + config_get log_output settings log_output + if [ "$enabled" != "1" ]; then + log "Service disabled, enabled UCI option not set" + return 1 fi if [ -n "$config_file" ]; then @@ -121,107 +24,254 @@ upnpd() { local tmpconf="/var/etc/miniupnpd.conf" conf="$tmpconf" mkdir -p /var/etc - - { - echo "ext_ifname=$ifname" - echo "ext_ifname6=$ifname6" - [ -n "$external_ip" ] && echo "ext_ip=$external_ip" - - local iface - for iface in ${internal_iface:-lan}; do - local device - network_get_device device "$iface" && echo "listening_ip=$device" - done - - config_load "upnpd" - upnpd_write_bool enable_natpmp 1 enable_pcp_pmp - upnpd_write_bool enable_upnp 1 - upnpd_write_bool secure_mode 1 - upnpd_write_bool system_uptime 1 - upnpd_write_bool igdv1 0 force_igd_desc_v1 - upnpd_write_bool use_stun 0 ext_perform_stun - upnpd_write_bool ipv6_disable $ipv6_disable - upnpd_write_bool ext_allow_private_ipv4 $ext_allow_private_ipv4 - - [ "$use_stun" -eq 0 ] || { - [ -n "$stun_host" ] && echo "ext_stun_host=$stun_host" - [ -n "$stun_port" ] && echo "ext_stun_port=$stun_port" - } - - [ -n "$upload" ] && [ -n "$download" ] && { - echo "bitrate_down=$((download * 1024 * 8))" - echo "bitrate_up=$((upload * 1024 * 8))" - } - - [ -n "$upnp_lease_file" ] && touch "$upnp_lease_file" && echo "lease_file=$upnp_lease_file" - [ -n "$upnp_lease_file6" ] && touch "$upnp_lease_file6" && echo "lease_file6=$upnp_lease_file6" - [ -n "$presentation_url" ] && echo "presentation_url=$presentation_url" - [ -n "$notify_interval" ] && echo "notify_interval=$notify_interval" - [ -n "$serial_number" ] && echo "serial=$serial_number" - [ -n "$model_number" ] && echo "model_number=$model_number" - [ -n "$port" ] && echo "port=$port" - - [ -z "$uuid" ] && { - uuid="$(cat /proc/sys/kernel/random/uuid)" - uci set upnpd.config.uuid="$uuid" - uci commit upnpd - } - - [ "$uuid" = "nocli" ] || echo "uuid=$uuid" - - config_foreach conf_rule_add perm_rule - - if [ "$FW" = "fw4" ]; then - #When using nftables configure miniupnpd to use its own table and chains - echo "upnp_table_name=fw4" - echo "upnp_nat_table_name=fw4" - echo "upnp_forward_chain=upnp_forward" - echo "upnp_nat_chain=upnp_prerouting" - echo "upnp_nat_postrouting_chain=upnp_postrouting" - fi - - } > "$tmpconf" + upnpd_generate_config "$tmpconf" || return 1 fi - if [ -n "$ifname" ]; then - # start firewall - if [ "$FW" = "fw4" ]; then - nft -s -t -n list chain inet fw4 upnp_forward >/dev/null 2>&1 || fw4 reload - else - iptables -L MINIUPNPD >/dev/null 2>&1 || fw3 reload - fi + if [ "$FW" = "fw4" ]; then + nft -s -t -n list chain inet fw4 upnp_forward >/dev/null 2>&1 || fw4 reload else - logger -t "upnp daemon" "external interface not found, not starting" + iptables -L MINIUPNPD >/dev/null 2>&1 || fw3 reload fi procd_open_instance - procd_set_param file "$conf" "/etc/config/firewall" + procd_set_param file "$conf" procd_set_param command "$PROG" procd_append_param command -f "$conf" - [ "$log_output" = "1" ] && procd_append_param command -d + [ "$log_output" = "info" ] && procd_append_param command -v + [ "$log_output" = "debug" ] && procd_append_param command -v -v procd_close_instance } stop_service() { if [ "$FW" = "fw3" ]; then - iptables -t nat -F MINIUPNPD 2>/dev/null - iptables -t nat -F MINIUPNPD-POSTROUTING 2>/dev/null iptables -t filter -F MINIUPNPD 2>/dev/null [ -x /usr/sbin/ip6tables ] && ip6tables -t filter -F MINIUPNPD 2>/dev/null + iptables -t nat -F MINIUPNPD 2>/dev/null + iptables -t nat -F MINIUPNPD-POSTROUTING 2>/dev/null else nft flush chain inet fw4 upnp_forward 2>/dev/null nft flush chain inet fw4 upnp_prerouting 2>/dev/null - nft flush chain inet fw4 upnp_postrouting 2>/dev/null + #nft flush chain inet fw4 upnp_postrouting 2>/dev/null fi } -start_service() { - config_load "upnpd" - config_foreach upnpd "upnpd" +service_triggers() { + procd_add_reload_trigger "upnpd" "firewall" } -service_triggers() { - procd_add_reload_trigger "upnpd" +upnpd_generate_config() { + # Daemon + local enable_protocols allow_cgnat stun_host allow_third_party_mapping system_uptime lease_file + config_get enable_protocols settings enable_protocols all + config_get allow_cgnat settings allow_cgnat 0 + config_get stun_host settings stun_host stun.nextcloud.com + config_get allow_third_party_mapping settings allow_third_party_mapping 0 + config_get system_uptime settings system_uptime 1 + config_get lease_file settings lease_file /var/run/miniupnpd.leases + + # Access control + local access_defaults accept_ports reject_ports check_acl ipv6_disable + config_get access_defaults settings access_defaults none + config_get accept_ports settings accept_ports + config_get reject_ports settings reject_ports "21 23 135 137-139 445 3389" + config_get check_acl settings check_acl 1 + config_get ipv6_disable settings ipv6_disable 0 + + # UPnP IGD + local upnp_igd_compat download_kbps upload_kbps friendly_name model_number serial_number presentation_url uuid http_port notify_interval + config_get upnp_igd_compat settings upnp_igd_compat igdv1 + config_get download_kbps settings download_kbps + config_get upload_kbps settings upload_kbps + config_get friendly_name settings friendly_name "OpenWrt UPnP IGD & PCP" + config_get model_number settings model_number + config_get serial_number settings serial_number + config_get presentation_url settings presentation_url + config_get uuid settings uuid + config_get http_port settings http_port 5000 + config_get notify_interval settings notify_interval + + # Network interfaces + local external_iface external_iface6 external_zone external_ip internal_iface + config_get external_iface settings external_iface + config_get external_iface6 settings external_iface6 + config_get external_zone settings external_zone + config_get external_ip settings external_ip + config_get internal_iface settings internal_iface lan + + local ifname ifname6 + . /lib/functions/network.sh + if [ -n "$external_iface" ]; then + network_get_device ifname "$external_iface" + elif [ -n "$external_zone" ]; then + ifname=$($FW -q zone "$external_zone" 2>/dev/null | head -1) + else + network_find_wan external_iface && network_get_device ifname "$external_iface" + fi + if [ -n "$external_iface6" ]; then + network_get_device ifname6 "$external_iface6" + elif [ -n "$external_zone" ]; then + ifname6=$($FW -q zone "$external_zone" 2>/dev/null | head -1) + else + network_find_wan6 external_iface6 && network_get_device ifname6 "$external_iface6" + fi + if [ "$ifname" = "" ]; then + log "No external network interface found, not starting" daemon.err + return 1 + fi + # Workaround for daemon bug with UPnP IGDv2 if IPv6 is not ready at start + if [ "$ipv6_disable" = "0" ] && [ "$(uci -q get firewall.@defaults[0].disable_ipv6)" != "1" ] && + [ "$(uci -q get network.wan6.disabled)" != "1" ]; then + local pass=0 + while ! ip -6 addr show dev "${ifname6:-$ifname}" | grep -q "inet6 [23]"; do + log "IPv6 not ready yet; delay start" + sleep 5 + pass=$((pass + 1)) + [ "$pass" = "4" ] && log "IPv6 GUA not yet available, UPnP IGD mapping not possible" && break + done + fi + # Only perform an STUN CGNAT test if necessary, with a private/CGNAT-reserved external IPv4 + local extipv4 extipv4private + extipv4="$(ip -4 addr show dev "$ifname" | grep inet | head -1 | sed -E "s/.*inet ([0-9.]+).*/\1/")" + case "$extipv4" in + 10.* | 100.6[4-9].* | 100.[7-9][0-9].* | 100.1[0-1][0-9].* | 100.12[0-7].* | 172.1[6-9].* | \ + 172.2[0-9].* | 172.3[0-1].* | 192.0.0.[1-6] | 192.168.* | 198.1[89].*) extipv4private=1 ;; + esac + [ "$extipv4private" = "1" ] && log "Private/CGNAT-reserved external IPv4 detected ($extipv4)" + + { + echo "# Daemon" + [ "$enable_protocols" = "all" ] && echo "enable_upnp=yes" && echo "enable_pcp_pmp=yes" + [ "$enable_protocols" = "upnp-igd" ] && echo "enable_upnp=yes" && echo "enable_pcp_pmp=no" + [ "$enable_protocols" = "pcp+nat-pmp" ] && echo "enable_upnp=no" && echo "enable_pcp_pmp=yes" + if [ "$extipv4private" = "1" ] && [ "$allow_cgnat" != "0" ]; then + [ "$allow_cgnat" = "1" ] && echo "ext_perform_stun=yes" + [ "$allow_cgnat" = "allow-filtered" ] && echo "ext_perform_stun=allow-filtered" + # Avoid next option, as no STUN public IPv4 detection, required by clients (PCP/NAT-PMP among others) + [ "$allow_cgnat" = "report-private-ipv4" ] && echo "ext_allow_private_ipv4=yes" + echo "ext_stun_host=${stun_host%%:*}" + [ "${stun_host%%:*}" != "${stun_host##*:}" ] && echo "ext_stun_port=${stun_host##*:}" + fi + [ "$allow_third_party_mapping" = "0" ] && echo "secure_mode=yes" && echo "pcp_allow_thirdparty=no" + [ "$allow_third_party_mapping" = "1" ] && echo "secure_mode=no" && echo "pcp_allow_thirdparty=yes" + [ "$allow_third_party_mapping" = "upnp-igd" ] && echo "secure_mode=no" && echo "pcp_allow_thirdparty=no" + [ "$allow_third_party_mapping" = "pcp" ] && echo "secure_mode=yes" && echo "pcp_allow_thirdparty=yes" + [ "$system_uptime" = "0" ] && echo "system_uptime=no" || echo "system_uptime=yes" + touch "$lease_file" && echo "lease_file=$lease_file" + [ "$ipv6_disable" = "0" ] && touch "${lease_file}-ipv6" && echo "lease_file6=${lease_file}-ipv6" + + if [ "$enable_protocols" = "upnp-igd" ] || [ "$enable_protocols" = "all" ]; then + echo "# UPnP IGD" + [ "$upnp_igd_compat" = "igdv1" ] && echo "force_igd_desc_v1=yes" || echo "force_igd_desc_v1=no" + [ -n "$download_kbps" ] && echo "bitrate_down=$((download_kbps * 1000))" + [ -n "$upload_kbps" ] && echo "bitrate_up=$((upload_kbps * 1000))" + [ -n "$friendly_name" ] && echo "friendly_name=$(xml_encode "$friendly_name")" + [ -n "$model_number" ] && echo "model_number=$(xml_encode "$model_number")" || echo "model_number=" + [ -n "$serial_number" ] && echo "serial=$(xml_encode "$serial_number")" || echo "serial=" + [ -n "$presentation_url" ] && echo "presentation_url=$presentation_url" + [ -z "$uuid" ] && { + log "Generate UPnP IGD UUID" + uuid="$(cat /proc/sys/kernel/random/uuid)" + uci set upnpd.settings.uuid="$uuid" + uci commit upnpd + } + [ "$uuid" != "nocli" ] && echo "uuid=$uuid" || log "uuid=nocli deprecated, set to 00000000-0000-0000-0000-000000000000 instead" + echo "http_port=$http_port" + [ -n "$notify_interval" ] && echo "notify_interval=$notify_interval" + fi + + if [ "$FW" = "fw4" ]; then + echo "# Firewall backend" + echo "upnp_table_name=fw4" + echo "upnp_nat_table_name=fw4" + echo "upnp_forward_chain=upnp_forward" + echo "upnp_nat_chain=upnp_prerouting" + #echo "upnp_nat_postrouting_chain=upnp_postrouting" + fi + + echo "# External network interface" + echo "ext_ifname=$ifname" + echo "ext_ifname6=${ifname6:-$ifname}" + [ -n "$external_ip" ] && echo "ext_ip=$external_ip" + + echo "# Enable internal networks / access control" + [ "$ipv6_disable" = "0" ] && echo "ipv6_disable=no" || echo "ipv6_disable=yes" + local rejectport + for rejectport in $reject_ports; do + is_port_or_range "$rejectport" allowport0 && echo "deny $rejectport 0.0.0.0/0 $rejectport # Reject port $rejectport" || + log "Invalid port or port range ($rejectport) in reject_ports ignored" daemon.warn + done + [ "$check_acl" = "1" ] && echo "# Access control list" && config_foreach upnpd_add_acl_entry acl_entry + local iface + for iface in $internal_iface; do + local device subnet accessdefaultsports acceptport + network_get_device device "$iface" + network_get_subnet subnet "$iface" + [ "$subnet" = "" ] && log "Cannot get IPv4 subnet for network $iface, network ignored" daemon.warn && continue + echo "# Enable internal network $iface ($device) with access defaults $access_defaults and check ACL $check_acl" + echo "listening_ip=$device" + if [ "$access_defaults" = "accept-high-ports" ]; then + accessdefaultsports="1024-65535" + elif [ "$access_defaults" = "accept-web+high-ports" ]; then + accessdefaultsports="80 443 1024-65535" + elif [ "$access_defaults" = "accept-web-ports" ]; then + accessdefaultsports="80 443" + elif [ "$access_defaults" = "accept-all-ports" ]; then + accessdefaultsports="1-65535" + elif [ "$access_defaults" != "none" ]; then + log "Invalid access_defaults ($access_defaults) ignored" daemon.warn + fi + for acceptport in $accessdefaultsports $accept_ports; do + is_port_or_range "$acceptport" && echo "allow $acceptport $subnet $acceptport # Accept port $acceptport on $iface" || + log "Invalid port or port range ($acceptport) in accept_ports ignored" daemon.warn + done + done + echo "deny 1-65535 0.0.0.0/0 1-65535 # Reject ACL by default" + + } >"$1" +} + +log() { + logger -s -p "${2:-daemon.notice}" -t "miniupnpd-init" "$1" || echo "miniupnpd-init: $1" >&2 +} + +xml_encode() { + # Encode required XML entities of text UPnP IGD config options until the daemon does so + echo "$1" | sed "s/&/\&/g; s//\>/g" +} + +is_port_or_range() { + [ "$1" = "0" ] && [ "$2" != "allowport0" ] && return 1 + [ "$1" -ge "1" ] 2>/dev/null && [ "$1" -le "65535" ] 2>/dev/null && return 0 + [ "$2" = "allowport0" ] && local minport=0 || local minport=1 + [ "${1%%-*}" -ge "$minport" ] 2>/dev/null && [ "${1%%-*}" -le "65535" ] 2>/dev/null && + [ "${1##*-}" -ge "$minport" ] 2>/dev/null && [ "${1##*-}" -le "65535" ] 2>/dev/null && + [ "${1##*-}" -ge "${1%%-*}" ] 2>/dev/null && return 0 || return 1 +} + +upnpd_add_acl_entry() { + local cfg="$1" + local comment int_addr int_port ext_port descr_filter action + config_get comment "$cfg" comment "unspecified" # comment + config_get int_addr "$cfg" int_addr "0.0.0.0/0" # IPv4 or network and subnet mask (internal) + config_get int_port "$cfg" int_port "1-65535" # internal port/range: x or x-y + config_get ext_port "$cfg" ext_port "1-65535" # external port/range: x or x-y + config_get descr_filter "$cfg" descr_filter # description regex filter (must be built in) + config_get action "$cfg" action # accept/reject/disabled + ! is_port_or_range "$int_port" allowport0 && + log "ACL entry: Invalid port or port range ($int_port) in int_port ignored" daemon.warn && int_port=1-65535 + ! is_port_or_range "$ext_port" allowport0 && + log "ACL entry: Invalid port or port range ($ext_port) in ext_port ignored" daemon.warn && ext_port=1-65535 + [ "$descr_filter" != "" ] && descr_filter=" \"$descr_filter\"" + if [ "$action" = "accept" ]; then + action=allow + elif [ "$action" = "reject" ]; then + action=deny + elif [ "$action" != "disabled" ]; then + log "ACL entry: Entry with invalid action ($action) ignored" daemon.warn + action=disabled + fi + [ "$action" = "disabled" ] && return 0 + echo "$action $ext_port $int_addr $int_port${descr_filter} # $comment" } reload_service() { diff --git a/miniupnpd/files/nftables.d/chain-post/srcnat/20-miniupnpd.nft b/miniupnpd/files/nftables.d/chain-post/srcnat/20-miniupnpd.nft deleted file mode 100644 index 2d0051e20..000000000 --- a/miniupnpd/files/nftables.d/chain-post/srcnat/20-miniupnpd.nft +++ /dev/null @@ -1 +0,0 @@ -jump upnp_postrouting comment "Hook into miniupnpd postrouting chain"; diff --git a/miniupnpd/files/nftables.d/table-post/20-miniupnpd.nft b/miniupnpd/files/nftables.d/table-post/20-miniupnpd.nft index 7d914e5c8..3d787fba8 100644 --- a/miniupnpd/files/nftables.d/table-post/20-miniupnpd.nft +++ b/miniupnpd/files/nftables.d/table-post/20-miniupnpd.nft @@ -1,3 +1,2 @@ chain upnp_forward {} chain upnp_prerouting {} -chain upnp_postrouting {} diff --git a/miniupnpd/files/upnpd-migration.uci-defaults b/miniupnpd/files/upnpd-migration.uci-defaults new file mode 100644 index 000000000..60f80d54f --- /dev/null +++ b/miniupnpd/files/upnpd-migration.uci-defaults @@ -0,0 +1,246 @@ +#!/bin/sh + +log() { + logger -s -p "${2:-daemon.notice}" -t "upnpd" "$1" || echo "upnpd: $1" >&2 +} + +# Skip migration with existing settings (v2.0) or with no config (v1.0) UCI section +# Enables the creation of a merged v1.0/v2.0 config file +{ uci -q get upnpd.settings >/dev/null || ! uci -q get upnpd.config >/dev/null; } && exit 0 + +log "Check UCI options in /etc/config/upnpd to be migrated to v2.0" +cp /etc/config/upnpd /tmp + +# Set missing enabled option to fix previously different defaults in LuCI/config (0) and init UCI (1) +if ! uci -q get upnpd.config.enabled >/dev/null; then + uci -q set upnpd.config.enabled="1" +fi + +# Migrate boolean options to only use 0/1 for LuCI support +for option in enabled ipv6_disable system_uptime; do + if uci -q get upnpd.config.$option >/dev/null; then + uci get upnpd.config.$option | grep -q -E -x "0|off|false|no|disabled" && uci set upnpd.config.$option="0" + uci get upnpd.config.$option | grep -q -E -x "1|on|true|yes|enabled" && uci set upnpd.config.$option="1" + fi +done + +# Migrate enable_upnp/enable_natpmp -> enable_protocols: Combined option +if uci -q get upnpd.config.enable_upnp >/dev/null || uci -q get upnpd.config.enable_natpmp >/dev/null; then + log "enable_upnp/enable_natpmp -> enable_protocols: Combined option" + if ! uci -q get upnpd.config.enable_upnp | grep -q -E -x "0|off|false|no|disabled"; then + uci -q get upnpd.config.enable_natpmp | grep -q -E -x "0|off|false|no|disabled" && + uci set upnpd.config.enable_protocols="upnp-igd" || + uci set upnpd.config.enable_protocols="all" + elif ! uci -q get upnpd.config.enable_natpmp | grep -q -E -x "0|off|false|no|disabled"; then + uci set upnpd.config.enable_protocols="pcp+nat-pmp" + else + uci set upnpd.config.enable_protocols="all" + uci set upnpd.config.enabled="0" + fi + uci -q delete upnpd.config.enable_upnp + uci -q delete upnpd.config.enable_natpmp +fi + +# Rename use_stun -> allow_cgnat +if uci -q get upnpd.config.use_stun >/dev/null; then + log "use_stun -> allow_cgnat" + uci rename upnpd.config.use_stun="allow_cgnat" +fi + +# Migrate force_forwarding=1 (in X-Wrt since 2021) to new similar option allow_cgnat=allow-filtered for cross-upgrades +if uci -q get upnpd.config.force_forwarding >/dev/null; then + log "force_forwarding=1 -> allow_cgnat=allow-filtered: New option" + uci get upnpd.config.force_forwarding | grep -q -E -x "1|on|true|yes|enabled" && + uci set upnpd.config.allow_cgnat="allow-filtered" + uci delete upnpd.config.force_forwarding +fi + +# Remove known unsupported (not CGNAT filtering test capable) STUN servers and include stun_port in stun_host +if uci -q get upnpd.config.stun_host | grep -q -E "stun[0-9]?.l.google.com|stun.cloudflare.com"; then + log "stun_host: Unsupported STUN server ($(uci -q get upnpd.config.stun_host)) set, remove to set default" + uci delete upnpd.config.stun_host + # Workaround for false negative filtered STUN CGNAT test results for unsupported servers before daemon 2.3.10 + uci set upnpd.config.allow_cgnat="allow-filtered" + uci -q delete upnpd.config.stun_port +elif uci -q get upnpd.config.stun_port >/dev/null; then + uci -q get upnpd.config.stun_host >/dev/null && [ "$(uci -q get upnpd.config.stun_port)" != "3478" ] && + log "stun_port: Include stun_port in stun_host, and remove option" && + uci set upnpd.config.stun_host="$(uci -q get upnpd.config.stun_host | cut -d ":" -f 1):$(uci -q get upnpd.config.stun_port)" + uci delete upnpd.config.stun_port +fi + +# Migrate secure_mode=1/0 -> allow_third_party_mapping=0/upnp-igd: Invert and extend to PCP +if uci -q get upnpd.config.secure_mode >/dev/null; then + log "secure_mode=1/0 -> allow_third_party_mapping=0/upnp-igd: Invert and extend to PCP" + uci get upnpd.config.secure_mode | grep -q -E -x "0|off|false|no|disabled" && + uci set upnpd.config.allow_third_party_mapping="upnp-igd" || + uci set upnpd.config.allow_third_party_mapping="0" + uci delete upnpd.config.secure_mode +fi + +# Migrate log_output=0/1 -> log_output=default/debug: Now info also allowed +if uci -q get upnpd.config.log_output >/dev/null; then + log "log_output=0/1 -> log_output=default/debug: Now info also allowed" + uci get upnpd.config.log_output | grep -q -E -x "1|on|true|yes|enabled" && + uci set upnpd.config.log_output="debug" + uci get upnpd.config.log_output | grep -q -E -x "0|off|false|no|disabled" && + uci set upnpd.config.log_output="default" +fi + +# Rename upnp_lease_file -> lease_file: To original daemon name, and remove if UCI default set +if uci -q get upnpd.config.upnp_lease_file >/dev/null; then + if [ "$(uci -q get upnpd.config.upnp_lease_file)" = "/var/run/miniupnpd.leases" ]; then + log "upnp_lease_file -> lease_file: Remove option as UCI default set" + uci delete upnpd.config.upnp_lease_file + else + log "upnp_lease_file -> lease_file" + uci rename upnpd.config.upnp_lease_file="lease_file" + fi +fi +if uci -q get upnpd.config.upnp_lease_file6 >/dev/null; then + uci delete upnpd.config.upnp_lease_file6 +fi + +# Migrate igdv1=1/0 -> upnp_igd_compat=igdv1/igdv2: Extensible/clearer +if uci -q get upnpd.config.igdv1 >/dev/null; then + log "igdv1=1/0 -> upnp_igd_compat=igdv1/igdv2" + uci get upnpd.config.igdv1 | grep -q -E -x "1|on|true|yes|enabled" && + uci set upnpd.config.upnp_igd_compat="igdv1" || + uci set upnpd.config.upnp_igd_compat="igdv2" + uci delete upnpd.config.igdv1 +fi + +# Migrate download/upload -> download_kbps/upload_kbps: Convert to kbit/s +if uci -q get upnpd.config.download >/dev/null; then + download="$(uci -q get upnpd.config.download)" + if [ "$download" != "1024" ] && [ "$download" -ge "1" ] 2>/dev/null; then + log "download -> download_kbps: Convert to kbit/s" + download_kbps="$((download * 8 * 1000 / 1024))" + uci set upnpd.config.download_kbps="$download_kbps" + fi + uci delete upnpd.config.download +fi +if uci -q get upnpd.config.upload >/dev/null; then + upload="$(uci -q get upnpd.config.upload)" + if [ "$upload" != "512" ] && [ "$upload" -ge "1" ] 2>/dev/null; then + log "upload -> upload_kbps: Convert to kbit/s" + upload_kbps="$((upload * 8 * 1000 / 1024))" + uci set upnpd.config.upload_kbps="$upload_kbps" + fi + uci delete upnpd.config.upload +fi + +# Rename port -> http_port: Remove if UCI default set +if uci -q get upnpd.config.port >/dev/null; then + if [ "$(uci -q get upnpd.config.port)" = "5000" ]; then + log "port -> http_port: Remove option as UCI default set" + uci delete upnpd.config.port + else + log "port -> http_port" + uci rename upnpd.config.port="http_port" + fi +fi + +# Migrate notify_interval <= 900 s: Remove to set minimum of 900 (default) +if [ "$(uci -q get upnpd.config.notify_interval)" -le "900" ] 2>/dev/null; then + log "notify_interval <= 900 s: Remove to set minimum of 900 (default)" + uci delete upnpd.config.notify_interval +fi + +# Migrate ACL to new section, note that an empty ACL is now rejected alone +# a) Empty/unmodified ACL: Set access defaults, add/update template entries +# b) Modified ACL: +# - Add missing entry action to avoid adding inverted actions when changing via LuCI +# - Update entry action allow/deny -> accept/reject +# - Update entry port options to only use the LuCI (and daemon) supported hyphen (-) as port range separator +# - Not using access defaults, add template entries +if uci -q get upnpd.@acl_entry[0] >/dev/null; then + log "Error migrating ACL, as the new UCI section already exists" daemon.err +elif ! uci -q get upnpd.@perm_rule[0] >/dev/null; then + log "Empty ACL: Set access defaults, add templates, empty ACL rejected alone" + access_defaults=accept-all-ports + check_acl=0 + addtemplateentries=1 +elif ! uci -q get upnpd.@perm_rule[2] >/dev/null && + [ "$(uci -q get upnpd.@perm_rule[0].int_addr)" = "0.0.0.0/0" ] && + [ "$(uci -q get upnpd.@perm_rule[0].int_ports)" = "1024-65535" ] && + [ "$(uci -q get upnpd.@perm_rule[0].ext_ports)" = "1024-65535" ] && + [ "$(uci -q get upnpd.@perm_rule[0].action)" = "allow" ] && + [ "$(uci -q get upnpd.@perm_rule[1].int_addr)" = "0.0.0.0/0" ] && + [ "$(uci -q get upnpd.@perm_rule[1].int_ports)" = "0-65535" ] && + [ "$(uci -q get upnpd.@perm_rule[1].ext_ports)" = "0-65535" ] && + [ "$(uci -q get upnpd.@perm_rule[1].action)" = "deny" ]; then + log "Unmodified ACL: Set access defaults, empty ACL rejected alone" + access_defaults=accept-high-ports + check_acl=0 + addtemplateentries=1 + uci delete upnpd.@perm_rule[-1] + uci delete upnpd.@perm_rule[-1] +else + log "Modified ACL: Migrate entries/section, empty ACL rejected alone" + addtemplateentries=1 + entrynr=0 + while uci -q get upnpd.@perm_rule[$entrynr] >/dev/null; do + comment="$(uci -q get upnpd.@perm_rule[$entrynr].comment)" + int_addr="$(uci -q get upnpd.@perm_rule[$entrynr].int_addr)" + int_port="$(uci -q get upnpd.@perm_rule[$entrynr].int_ports)" + ext_port="$(uci -q get upnpd.@perm_rule[$entrynr].ext_ports)" + action="$(uci -q get upnpd.@perm_rule[$entrynr].action)" + echo "$int_port" | grep -q ":" && + log "ACL entry: Update int_port to use hyphen (-) as port range separator" && + int_port="$(echo "$int_port" | tr ":" "-")" + echo "$ext_port" | grep -q ":" && + log "ACL entry: Update ext_port to use hyphen (-) as port range separator" && + ext_port="$(echo "$ext_port" | tr ":" "-")" + [ "$action" = "" ] && log "ACL entry: Add missing action option" && action=reject + [ "$action" = "allow" ] && action=accept + [ "$action" = "deny" ] && action=reject + uci batch >/dev/null <<-EOF + add upnpd acl_entry + set upnpd.@acl_entry[-1].comment="${comment:-unspecified}" + set upnpd.@acl_entry[-1].int_addr="${int_addr:-0.0.0.0/0}" + set upnpd.@acl_entry[-1].int_port="$int_port" + set upnpd.@acl_entry[-1].ext_port="$ext_port" + set upnpd.@acl_entry[-1].action="$action" + EOF + entrynr=$((entrynr + 1)) + done + if [ "${int_addr:-0.0.0.0/0}" = "0.0.0.0/0" ] && [ "${int_port:-0-65535}" = "0-65535" ] && + [ "${ext_port:-0-65535}" = "0-65535" ] && [ "$action" = "reject" ]; then + log "ACL entry: Remove no longer useful reject by default entry" + uci delete upnpd.@acl_entry[-1] + fi + while uci -q delete upnpd.@perm_rule[-1]; do :; done +fi +[ "$access_defaults" != "" ] && uci set upnpd.config.access_defaults="$access_defaults" +[ "$check_acl" = "0" ] && uci set upnpd.config.check_acl="0" +if [ "$addtemplateentries" = "1" ]; then + uci batch >/dev/null <<-EOF + add upnpd acl_entry + add upnpd acl_entry + set upnpd.@acl_entry[-2].comment="High ports" + set upnpd.@acl_entry[-2].int_addr="0.0.0.0/0" + set upnpd.@acl_entry[-2].int_port="1024-65535" + set upnpd.@acl_entry[-2].ext_port="1024-65535" + set upnpd.@acl_entry[-2].action="disabled" + set upnpd.@acl_entry[-1].comment="Low/system ports" + set upnpd.@acl_entry[-1].int_addr="0.0.0.0/0" + set upnpd.@acl_entry[-1].int_port="1-1023" + set upnpd.@acl_entry[-1].ext_port="1-1023" + set upnpd.@acl_entry[-1].action="disabled" + EOF + uci -q get upnpd.@acl_entry[-3] >/dev/null && + uci reorder upnpd.@acl_entry[-2]=0 && uci reorder upnpd.@acl_entry[-1]=1 +fi + +# Rename UCI section config -> settings (v2.0) +if uci -q get upnpd.config >/dev/null; then + log "Rename UCI section config -> settings (v2.0)" && uci rename upnpd.config="settings" || + log "Error renaming the UCI section" daemon.err +fi + +uci commit upnpd >/dev/null + +log "Previous v1.0 config file copied to /tmp/upnpd (kept until reboot)" + +exit 0 diff --git a/miniupnpd/files/upnpd.config b/miniupnpd/files/upnpd.config index ee9287127..4c70e0582 100644 --- a/miniupnpd/files/upnpd.config +++ b/miniupnpd/files/upnpd.config @@ -1,34 +1,32 @@ -config upnpd config - option enabled 1 - option enable_natpmp 1 - option enable_upnp 1 - option secure_mode 1 - option log_output 0 - option download 20480 - option upload 2048 -#by default, looked up dynamically from ubus -# option external_iface wan - option internal_iface lan - option port 5000 - option upnp_lease_file /var/run/miniupnpd.leases - option upnp_lease_file6 /var/run/miniupnpd.leases6 - option igdv1 1 - option ipv6_disable 1 - option use_stun 0 - option stun_host stun.miwifi.com - option stun_port 3478 - option ext_allow_private_ipv4 1 +# UPnP IGD & PCP/NAT-PMP Service Settings (v2.0) -config perm_rule - option action allow - option ext_ports 1024-65535 - option int_addr 0.0.0.0/0 # Does not override secure_mode - option int_ports 1024-65535 - option comment "Allow high ports" +config upnpd 'settings' + option enabled '1' + # Can be set to all/upnp-igd/pcp+nat-pmp + option enable_protocols 'all' + # Enable networks, multiple can be specified, separated by a space + option internal_iface 'lan' + option access_defaults 'accept-high-ports' # default none + option check_acl '0' # default 1 + #option ipv6_disable '0' + #option allow_third_party_mapping '0' + # Extra logging by setting to info or debug (previously 1) + option log_output 'default' + option upnp_igd_compat 'igdv1' -config perm_rule - option action deny - option ext_ports 0-65535 - option int_addr 0.0.0.0/0 - option int_ports 0-65535 - option comment "Default deny" +# Access Control List +# Empty ACL rejected alone, IPv6 accepted unless disabled, action: accept/reject + +config acl_entry + option comment 'High ports' + option int_addr '0.0.0.0/0' + option int_port '1024-65535' + option ext_port '1024-65535' + option action 'disabled' + +config acl_entry + option comment 'Low/system ports' + option int_addr '0.0.0.0/0' + option int_port '1-1023' + option ext_port '1-1023' + option action 'disabled' diff --git a/miniupnpd/patches/020-descr-filter-fix.patch b/miniupnpd/patches/020-descr-filter-fix.patch deleted file mode 100644 index 9d657d153..000000000 --- a/miniupnpd/patches/020-descr-filter-fix.patch +++ /dev/null @@ -1,511 +0,0 @@ -From 54ecff0ae4452598773a020e8798ff61ccf3c966 Mon Sep 17 00:00:00 2001 -From: yangfl -Date: Thu, 31 Jul 2025 10:35:50 +0800 -Subject: [PATCH] miniupnpd: Rewrite permission line parser - -Permission line parser rewrites input buffer in-place for parsing, -which causes several problems: - -* It unnecessarily invalidates input buffer for caller. Actually, you - might see the following error message when parsing fails: - miniupnpd[1234]: parsing error file /etc/miniupnpd.conf line 16 : allow 1024 - since the hyphen after 1024 is erased by a '\0'. - -* It fails to validate token separators. For example, the following - line will be accepted: - allow 1024-65535X0.0.0.0/0 1024-65535 all - ^ could be any character - and even a potential buffer over-read if the character is '\0', since - the parser blindlessly skips it. - -* The fifth token is never parsed since it gets a previously written - '\0'. - -Instead of fixing them case-by-case, we rewrite it with DFS in mind, -which is much simpler and less error-prone. - ---- a/upnppermissions.c -+++ b/upnppermissions.c -@@ -29,6 +29,12 @@ isodigit(char c) - return '0' <= c && c >= '7'; - } - -+static int -+iseol(char c) -+{ -+ return c == '\0' || c == '\n' || c == '\r'; -+} -+ - static char - hex2chr(char c) - { -@@ -91,6 +97,84 @@ unescape_char(const char * s, int * seql - return c; - } - -+/* greedy parser: try to match the longest sequence and do not -+ * check for terminators */ -+ -+static char * -+get_sep(const char * s) -+{ -+ if(!isspace(*s)) -+ return NULL; -+ do -+ s++; -+ while(isspace(*s)); -+ return (char *) s; -+} -+ -+static char * -+get_ushort(const char * s, u_short * val) -+{ -+ char * end; -+ unsigned long val_ul; -+ -+ if(!isdigit(*s)) -+ return NULL; -+ val_ul = strtoul(s, &end, 10); -+ if(val_ul > 65535) -+ return NULL; -+ *val = (u_short)val_ul; -+ -+ return end; -+} -+ -+static char * -+get_range(const char * s, u_short * begin, u_short * end) -+{ -+ s = get_ushort(s, begin); -+ if(!s) -+ return NULL; -+ -+ if(*s!='-') -+ *end = *begin; -+ else -+ { -+ s++; -+ s = get_ushort(s, end); -+ if(!s) -+ return NULL; -+ if(*begin > *end) -+ return NULL; -+ } -+ return (char *) s; -+} -+ -+static char * -+get_addr(const char * s, struct in_addr * addr, unsigned int * dot_cnt) -+{ -+ size_t i; -+ char buf[64]; -+ -+ if(!isdigit(*s)) -+ return NULL; -+ -+ *dot_cnt = 0; -+ for(i = 0; isdigit(s[i]) || s[i] == '.';) -+ { -+ if(s[i] == '.') -+ (*dot_cnt)++; -+ buf[i] = s[i]; -+ i++; -+ if (i > sizeof(buf) - 1) -+ return NULL; -+ } -+ -+ buf[i] = '\0'; -+ if(!inet_aton(buf, addr)) -+ return NULL; -+ -+ return (char *) s + i; -+} -+ - /* get_next_token(s, &token, raw) - * put the unquoted/unescaped token in token and returns - * a pointer to the begining of the next token -@@ -99,18 +183,8 @@ static char * - get_next_token(const char * s, char ** token, int raw) - { - char deli; -- const char * end; -+ size_t len; - -- /* skip any whitespace */ -- for(; isspace(*s); s++) -- if(*s == '\0' || *s == '\n') -- { -- if(token) -- *token = NULL; -- return (char *) s; -- } -- -- /* find the start */ - if(*s == '"' || *s == '\'') - { - deli = *s; -@@ -119,85 +193,90 @@ get_next_token(const char * s, char ** t - else - deli = 0; - /* find the end */ -- end = s; -- for(; *end != '\0' && *end != '\n' && (deli ? *end != deli : !isspace(*end)); -- end++) -- if(*end == '\\') -+ for(len = 0; !iseol(s[len]) && (deli ? s[len] != deli : !isspace(s[len])); -+ len++) -+ if(s[len] == '\\') - { -- end++; -- if(*end == '\0') -+ len++; -+ if(iseol(s[len])) - break; - } - - /* save the token */ - if(token) - { -- unsigned int token_len; -- unsigned int i; -- -- token_len = end - s; -- *token = strndup(s, token_len); -- if(!*token) -- return NULL; -- -- for(i = 0; (*token)[i] != '\0'; i++) -- { -- int sequence_len; -- -- if((*token)[i] != '\\') -- continue; -- -- if(raw && deli && (*token)[i + 1] != deli) -- continue; -- (*token)[i] = unescape_char(*token + i, &sequence_len); -- memmove(*token + i + 1, *token + i + sequence_len, -- token_len - i - sequence_len); -- } -- if (i == 0) -- { -- /* behavior of realloc(p, 0) is implementation-defined, so better set it to NULL. -- * https://github.com/miniupnp/miniupnp/issues/652#issuecomment-1518922139 */ -- free(*token); -+ if(len == 0) - *token = NULL; -- } - else - { -- char * tmp = realloc(*token, i); -- if (tmp != NULL) -- *token = tmp; -+ unsigned int i; -+ unsigned int j; -+ -+ char * tmp; -+ char * t; -+ -+ t = malloc(len + 1); -+ if(!t) -+ return NULL; -+ -+ if (raw) -+ { -+ memcpy(t, s, len); -+ j = len; -+ } - else -- syslog(LOG_ERR, "%s: failed to reallocate to %u bytes", -- "get_next_token()", i); -+ { -+ for(i = 0, j = 0; i < len; j++) -+ if(s[i] != '\\') -+ { -+ t[j] = s[i]; -+ i++; -+ } -+ else -+ { -+ int seqlen; -+ t[j] = unescape_char(s + i, &seqlen); -+ i += seqlen; -+ if (i > len) -+ break; -+ } -+ -+ tmp = realloc(*token, j + 1); -+ if (tmp != NULL) -+ t = tmp; -+ else -+ syslog(LOG_ERR, "%s: failed to reallocate to %u bytes", -+ "get_next_token()", j + 1); -+ } -+ t[j] = '\0'; -+ *token = t; - } - } - -- /* return the beginning of the next token */ -- if(deli && *end == deli) -- end++; -- while(isspace(*end)) -- end++; -- return (char *) end; -+ s += len; -+ if(deli && *s == deli) -+ s++; -+ return (char *) s; - } - - /* read_permission_line() - * parse the a permission line which format is : -- * (deny|allow) [0-9]+(-[0-9]+) ip/mask [0-9]+(-[0-9]+) regex -+ * (deny|allow) [0-9]+(-[0-9]+)? ip(/mask)? [0-9]+(-[0-9]+)? (regex)? - * ip/mask is either 192.168.1.1/24 or 192.168.1.1/255.255.255.0 - */ - int - read_permission_line(struct upnpperm * perm, -- char * p) -+ const char * p) - { -- char * q; -- int n_bits; -- int i; -+ unsigned int dot_cnt; - - /* zero memory : see https://github.com/miniupnp/miniupnp/issues/652 */ - memset(perm, 0, sizeof(struct upnpperm)); - -- /* first token: (allow|deny) */ - while(isspace(*p)) - p++; -+ -+ /* first token: (allow|deny) */ - if(0 == memcmp(p, "allow", 5)) - { - perm->type = UPNPPERM_ALLOW; -@@ -212,133 +291,61 @@ read_permission_line(struct upnpperm * p - { - return -1; - } -- while(isspace(*p)) -- p++; -+ -+ p = get_sep(p); -+ if(!p) -+ return -1; - - /* second token: eport or eport_min-eport_max */ -- if(!isdigit(*p)) -+ p = get_range(p, &perm->eport_min, &perm->eport_max); -+ if(!p) - return -1; -- for(q = p; isdigit(*q); q++); -- if(*q=='-') -- { -- *q = '\0'; -- i = atoi(p); -- if(i > 65535) -- return -1; -- perm->eport_min = (u_short)i; -- q++; -- p = q; -- while(isdigit(*q)) -- q++; -- *q = '\0'; -- i = atoi(p); -- if(i > 65535) -- return -1; -- perm->eport_max = (u_short)i; -- if(perm->eport_min > perm->eport_max) -- return -1; -- } -- else if(isspace(*q)) -- { -- *q = '\0'; -- i = atoi(p); -- if(i > 65535) -- return -1; -- perm->eport_min = perm->eport_max = (u_short)i; -- } -- else -- { -+ -+ p = get_sep(p); -+ if(!p) - return -1; -- } -- p = q + 1; -- while(isspace(*p)) -- p++; - -- /* third token: ip/mask */ -- if(!isdigit(*p)) -+ /* third token: ip/mask */ -+ p = get_addr(p, &perm->address, &dot_cnt); -+ if(!p) - return -1; -- for(q = p; isdigit(*q) || (*q == '.'); q++); -- if(*q=='/') -+ -+ if(*p!='/') -+ perm->mask.s_addr = 0xffffffffu; -+ else - { -- *q = '\0'; -- if(!inet_aton(p, &perm->address)) -- return -1; -- q++; -- p = q; -- while(isdigit(*q)) -- q++; -- if(*q == '.') -- { -- while(*q == '.' || isdigit(*q)) -- q++; -- if(!isspace(*q)) -- return -1; -- *q = '\0'; -- if(!inet_aton(p, &perm->mask)) -- return -1; -- } -- else if(!isspace(*q)) -+ p++; -+ p = get_addr(p, &perm->mask, &dot_cnt); -+ if(!p) - return -1; -- else -+ /* inet_aton(): When only one part is given, the value is stored -+ * directly in the network address without any byte -+ * rearrangement. */ -+ if(!dot_cnt) - { -- *q = '\0'; -- n_bits = atoi(p); -+ unsigned int n_bits = ntohl(perm->mask.s_addr); - if(n_bits > 32) - return -1; -- perm->mask.s_addr = htonl(n_bits ? (0xffffffffu << (32 - n_bits)) : 0); -+ perm->mask.s_addr = !n_bits ? 0 : htonl(0xffffffffu << (32 - n_bits)); - } - } -- else if(isspace(*q)) -- { -- *q = '\0'; -- if(!inet_aton(p, &perm->address)) -- return -1; -- perm->mask.s_addr = 0xffffffffu; -- } -- else -- { -+ -+ p = get_sep(p); -+ if(!p) - return -1; -- } -- p = q + 1; - - /* fourth token: iport or iport_min-iport_max */ -- while(isspace(*p)) -- p++; -- if(!isdigit(*p)) -+ p = get_range(p, &perm->iport_min, &perm->iport_max); -+ if(!p) - return -1; -- for(q = p; isdigit(*q); q++); -- if(*q=='-') -- { -- *q = '\0'; -- i = atoi(p); -- if(i > 65535) -- return -1; -- perm->iport_min = (u_short)i; -- q++; -- p = q; -- while(isdigit(*q)) -- q++; -- *q = '\0'; -- i = atoi(p); -- if(i > 65535) -- return -1; -- perm->iport_max = (u_short)i; -- if(perm->iport_min > perm->iport_max) -- return -1; -- } -- else if(isspace(*q) || *q == '\0') -- { -- *q = '\0'; -- i = atoi(p); -- if(i > 65535) -- return -1; -- perm->iport_min = perm->iport_max = (u_short)i; -- } -- else -- { -+ -+ if(iseol(*p) || *p == '#') -+ goto end; -+ p = get_sep(p); -+ if(!p) - return -1; -- } -- p = q; -+ if(iseol(*p) || *p == '#') -+ goto end; - - /* fifth token: (optional) regex */ - p = get_next_token(p, &perm->re, 1); -@@ -381,6 +388,7 @@ read_permission_line(struct upnpperm * p - } - } - -+end: - #ifdef DEBUG - printf("perm rule added : %s %hu-%hu %08x/%08x %hu-%hu %s\n", - (perm->type==UPNPPERM_ALLOW) ? "allow" : "deny", -@@ -427,8 +435,26 @@ write_permlist(int fd, const struct upnp - write(fd, buf, l); - if(perm->re) - { -- write(fd, " ", 1); -- write(fd, perm->re, strlen(perm->re)); -+ const char * p; -+ write(fd, " \"", 2); -+ for(p = perm->re; *p != '\0'; p++) -+ { -+ if(*p == '"') -+ { -+ write(fd, "\\\"", 2); -+ continue; -+ } -+ -+ if(*p == '\\') -+ { -+ write(fd, p, 1); -+ p++; -+ if(*p == '\0') -+ break; -+ } -+ write(fd, p, 1); -+ } -+ write(fd, "\"", 1); - } - write(fd, "\n", 1); - } ---- a/upnppermissions.h -+++ b/upnppermissions.h -@@ -43,7 +43,7 @@ struct upnpperm { - * deny 0-65535 0.0.0.0/0 0-65535 */ - int - read_permission_line(struct upnpperm * perm, -- char * p); -+ const char * p); - - void - free_permission_line(struct upnpperm * perm); -@@ -72,4 +72,3 @@ write_permlist(int fd, const struct upnp - #endif - - #endif -- diff --git a/miniupnpd/patches/030-allow-private-fix.patch b/miniupnpd/patches/030-allow-private-fix.patch deleted file mode 100644 index b8a42b2b5..000000000 --- a/miniupnpd/patches/030-allow-private-fix.patch +++ /dev/null @@ -1,18 +0,0 @@ -From 9ff3c71bfb6c7f7bf525d6bda447387de7257aff Mon Sep 17 00:00:00 2001 -From: Vlad Starodubtsev -Date: Wed, 6 Aug 2025 19:04:18 +0300 -Subject: [PATCH] miniupnpd: fix ALLOWPRIVATEIPV4MASK condition - -Fixed usage of private/reserved WAN addresses if they are allowed in the configuration. - ---- a/upnpsoap.c -+++ b/upnpsoap.c -@@ -370,7 +370,7 @@ GetExternalIPAddress(struct upnphttp * h - ext_if_name); - ext_ip_addr[0] = '\0'; - } else if (addr_is_reserved(&addr)) { -- if (!GETFLAG(ALLOWPRIVATEIPV4MASK)) { -+ if (GETFLAG(ALLOWPRIVATEIPV4MASK)) { - syslog(LOG_WARNING, "IGNORED : private/reserved address %s is not suitable for external IP", ext_ip_addr); - } else { - syslog(LOG_NOTICE, "private/reserved address %s is not suitable for external IP", ext_ip_addr); diff --git a/miniupnpd/patches/040-improve-logging.patch b/miniupnpd/patches/040-improve-logging.patch deleted file mode 100644 index 998df1cb4..000000000 --- a/miniupnpd/patches/040-improve-logging.patch +++ /dev/null @@ -1,450 +0,0 @@ ---- a/minissdp.c -+++ b/minissdp.c -@@ -1274,7 +1274,7 @@ ProcessSSDPData(int s, const char *bufr, - else - snprintf(ver_str, sizeof(ver_str), "%d", known_service_types[i].version); - #endif -- syslog(LOG_INFO, "Single search found"); -+ syslog(LOG_DEBUG, "Single search found"); - #ifdef DELAY_MSEARCH_RESPONSE - delay = random() / (1 + RAND_MAX / (1000 * mx_value)); - #ifdef DEBUG -@@ -1303,7 +1303,7 @@ ProcessSSDPData(int s, const char *bufr, - #ifdef DELAY_MSEARCH_RESPONSE - unsigned int delay_increment = (mx_value * 1000) / 15; - #endif -- syslog(LOG_INFO, "ssdp:all found"); -+ syslog(LOG_DEBUG, "ssdp:all found"); - for(i=0; known_service_types[i].s; i++) - { - #ifdef DELAY_MSEARCH_RESPONSE -@@ -1361,7 +1361,7 @@ ProcessSSDPData(int s, const char *bufr, - #endif - if(0 == memcmp(st, uuidvalue_igd, l)) - { -- syslog(LOG_INFO, "ssdp:uuid (IGD) found"); -+ syslog(LOG_DEBUG, "ssdp:uuid (IGD) found"); - SendSSDPResponse(s, sender, st, st_len, "", - announced_host, http_port, - #ifdef ENABLE_HTTPS -@@ -1371,7 +1371,7 @@ ProcessSSDPData(int s, const char *bufr, - } - else if(0 == memcmp(st, uuidvalue_wan, l)) - { -- syslog(LOG_INFO, "ssdp:uuid (WAN) found"); -+ syslog(LOG_DEBUG, "ssdp:uuid (WAN) found"); - SendSSDPResponse(s, sender, st, st_len, "", - announced_host, http_port, - #ifdef ENABLE_HTTPS -@@ -1381,7 +1381,7 @@ ProcessSSDPData(int s, const char *bufr, - } - else if(0 == memcmp(st, uuidvalue_wcd, l)) - { -- syslog(LOG_INFO, "ssdp:uuid (WCD) found"); -+ syslog(LOG_DEBUG, "ssdp:uuid (WCD) found"); - SendSSDPResponse(s, sender, st, st_len, "", - announced_host, http_port, - #ifdef ENABLE_HTTPS -@@ -1646,4 +1646,3 @@ SubmitServicesToMiniSSDPD(const char * h - syslog(LOG_DEBUG, "%d service submitted to MiniSSDPd", i); - return 0; - } -- ---- a/miniupnpd.8 -+++ b/miniupnpd.8 -@@ -42,10 +42,10 @@ and do not filter out low priority messa - report system uptime instead of daemon uptime to clients. - .TP - .B \-S0 --disable "secure" mode so clients can only add mappings to other IPs -+disable UPnP IGD secure mode, allow adding port maps for non-requesting IP addresses - .TP - .B \-N --enable NAT-PMP and PCP functionality. -+enable PCP/NAT-PMP protocols. - .TP - .BI \-u " uuid" - set the uuid of the UPnP Internet Gateway Device. -@@ -83,7 +83,7 @@ examples : - sets the value of BOOTID.UPNP.ORG SSDP header - .TP - .B \-1 --force reporting IGDv1 in rootDesc when compiled as IGDv2 *use with care* -+force reporting IGDv1 in rootDesc when compiled as IGDv2 - .SH "SEE ALSO" - minissdpd(1) miniupnpc(3) - .SH BUGS ---- a/miniupnpd.c -+++ b/miniupnpd.c -@@ -859,7 +859,7 @@ set_startup_time(void) - } - else - { -- syslog(LOG_INFO, "system uptime is %lu seconds", uptime); -+ syslog(LOG_DEBUG, "system uptime is %lu seconds", uptime); - } - fclose(f); - startup_time -= uptime; -@@ -2098,6 +2098,22 @@ init(int argc, char * * argv, struct run - pidfilename = NULL; - #endif - -+syslog(LOG_NOTICE, "MiniUPnP daemon version " MINIUPNPD_VERSION " starting, enabled protocols: %s%s%s, ext_ifname=%s BOOTID=%u", -+ GETFLAG(ENABLEUPNPMASK) ? "UPnP IGD" : "", -+#ifdef ENABLE_NATPMP -+ GETFLAG(ENABLEUPNPMASK) && GETFLAG(ENABLENATPMPMASK) ? " & " : "", -+#ifdef ENABLE_PCP -+ GETFLAG(ENABLENATPMPMASK) ? "PCP/NAT-PMP" : "", -+#else -+ GETFLAG(ENABLENATPMPMASK) ? "NAT-PMP" : "", -+#endif -+#else -+ "", "", -+#endif -+ ext_if_name, upnp_bootid); -+syslog(LOG_INFO, "More information at https://miniupnp.tuxfamily.org/ or http://miniupnp.free.fr/"); -+syslog(LOG_NOTICE, "Extra logging by setting log level to info (-v) or debug (-vv)"); -+ - #ifdef USE_SYSTEMD - if (systemd_flag) { - int r = sd_notify(0, -@@ -2190,14 +2206,14 @@ print_usage: - #if defined(USE_PF) || defined(USE_IPF) - "\t-L sets packet log in pf and ipf on.\n" - #endif -- "\t-S0 disable \"secure\" mode so clients can add mappings to other ips\n" -+ "\t-S0 disable UPnP IGD secure mode, allow adding port maps for non-requesting IP addresses\n" - "\t-U causes miniupnpd to report system uptime instead " - "of daemon uptime.\n" - #ifdef ENABLE_NATPMP - #ifdef ENABLE_PCP -- "\t-N enables NAT-PMP and PCP functionality.\n" -+ "\t-N enable PCP/NAT-PMP protocols.\n" - #else -- "\t-N enables NAT-PMP functionality.\n" -+ "\t-N enable NAT-PMP protocol.\n" - #endif - #endif - "\t-B sets bitrates reported by daemon in bits per second.\n" -@@ -2217,7 +2233,7 @@ print_usage: - "\t \"deny 0-65535 0.0.0.0/0 0-65535\"\n" - "\t-b sets the value of BOOTID.UPNP.ORG SSDP header\n" - #ifdef IGD_V2 -- "\t-1 force reporting IGDv1 in rootDesc *use with care*\n" -+ "\t-1 force reporting IGDv1 in rootDesc\n" - #endif - "\t-v enables LOG_INFO messages, -vv LOG_DEBUG as well (default with -d)\n" - "\t-h / --help prints this help and quits.\n" -@@ -2398,21 +2414,9 @@ main(int argc, char * * argv) - return 0; - } - -- syslog(LOG_INFO, "version " MINIUPNPD_VERSION " starting%s%sext if %s BOOTID=%u", --#ifdef ENABLE_NATPMP --#ifdef ENABLE_PCP -- GETFLAG(ENABLENATPMPMASK) ? " NAT-PMP/PCP " : " ", --#else -- GETFLAG(ENABLENATPMPMASK) ? " NAT-PMP " : " ", --#endif --#else -- " ", --#endif -- GETFLAG(ENABLEUPNPMASK) ? "UPnP-IGD " : "", -- ext_if_name, upnp_bootid); - #ifdef ENABLE_IPV6 - if (strcmp(ext_if_name6, ext_if_name) != 0) { -- syslog(LOG_INFO, "specific IPv6 ext if %s", ext_if_name6); -+ syslog(LOG_NOTICE, "ext_ifname6=%s", ext_if_name6); - } - #endif - -@@ -2456,7 +2460,7 @@ main(int argc, char * * argv) - return 1; - } - v.port = listen_port; -- syslog(LOG_NOTICE, "HTTP listening on port %d", v.port); -+ syslog(LOG_NOTICE, "Listening for UPnP IGD (SOAP/HTTP) traffic on port %d/TCP", v.port); - #if defined(V6SOCKETS_ARE_V6ONLY) && defined(ENABLE_IPV6) - if(!GETFLAG(IPV6DISABLEDMASK)) - { -@@ -2482,7 +2486,7 @@ main(int argc, char * * argv) - return 1; - } - v.https_port = listen_port; -- syslog(LOG_NOTICE, "HTTPS listening on port %d", v.https_port); -+ syslog(LOG_NOTICE, "Listening for UPnP IGD (SOAP/HTTPS) traffic on port %d/TCP", v.https_port); - #if defined(V6SOCKETS_ARE_V6ONLY) && defined(ENABLE_IPV6) - shttpsl_v4 = OpenAndConfHTTPSocket(&listen_port, 0); - if(shttpsl_v4 < 0) -@@ -2496,11 +2500,11 @@ main(int argc, char * * argv) - if(!GETFLAG(IPV6DISABLEDMASK)) { - if(find_ipv6_addr(lan_addrs.lh_first ? lan_addrs.lh_first->ifname : NULL, - ipv6_addr_for_http_with_brackets, sizeof(ipv6_addr_for_http_with_brackets)) > 0) { -- syslog(LOG_NOTICE, "HTTP IPv6 address given to control points : %s", -+ syslog(LOG_NOTICE, "IPv6 enabled with address: %s", - ipv6_addr_for_http_with_brackets); - } else { - memcpy(ipv6_addr_for_http_with_brackets, "[::1]", 6); -- syslog(LOG_WARNING, "no HTTP IPv6 address, disabling IPv6"); -+ syslog(LOG_WARNING, "No IPv6 address, disable support"); - SETFLAG(IPV6DISABLEDMASK); - } - } -@@ -2571,22 +2575,22 @@ main(int argc, char * * argv) - } - - #ifdef ENABLE_NATPMP -- /* open socket for NAT PMP traffic */ -+ /* open socket for NAT-PMP traffic */ - if(GETFLAG(ENABLENATPMPMASK)) - { - if(OpenAndConfNATPMPSockets(snatpmp) < 0) - #ifdef ENABLE_PCP - { -- syslog(LOG_ERR, "Failed to open sockets for NAT-PMP/PCP."); -+ syslog(LOG_ERR, "Failed to open sockets for PCP/NAT-PMP."); - } else { -- syslog(LOG_NOTICE, "Listening for NAT-PMP/PCP traffic on port %u", -+ syslog(LOG_NOTICE, "Listening for PCP/NAT-PMP traffic on port %u/UDP", - NATPMP_PORT); - } - #else - { -- syslog(LOG_ERR, "Failed to open sockets for NAT PMP."); -+ syslog(LOG_ERR, "Failed to open sockets for NAT-PMP."); - } else { -- syslog(LOG_NOTICE, "Listening for NAT-PMP traffic on port %u", -+ syslog(LOG_NOTICE, "Listening for NAT-PMP traffic on port %u/UDP", - NATPMP_PORT); - } - #endif -@@ -2695,6 +2699,24 @@ main(int argc, char * * argv) - } - #endif /* HAS_LIBCAP_NG */ - -+if (GETFLAG(ENABLEUPNPMASK) && !GETFLAG(SECUREMODEMASK)) -+ syslog(LOG_WARNING, "WARNING: secure_mode=no, allow adding port maps for non-requesting IP addresses via UPnP IGD"); -+#ifdef ENABLE_PCP -+if (GETFLAG(ENABLENATPMPMASK) && GETFLAG(PCP_ALLOWTHIRDPARTYMASK)) -+ syslog(LOG_WARNING, "WARNING: pcp_allow_thirdparty=yes, allow adding port maps for non-requesting IP addresses via PCP"); -+#endif -+if (GETFLAG(ENABLEUPNPMASK)) { -+#ifdef IGD_V2 -+ if (GETFLAG(FORCEIGDDESCV1MASK)) { -+ syslog(LOG_NOTICE, "UPnP IGD compatiblity mode set to IGDv1 (IPv4 only)"); -+ } else { -+ syslog(LOG_NOTICE, "UPnP IGD compatiblity mode set to IGDv2"); -+ } -+#else -+ syslog(LOG_NOTICE, "UPnP IGD compatiblity mode set to IGDv1 (IPv4 only)"); -+#endif -+} -+ - #ifdef USE_SYSTEMD - if (v.systemd_notify) { - upnp_update_status(); -@@ -3162,7 +3184,7 @@ main(int argc, char * * argv) - /* process SSDP packets */ - if(sudp >= 0 && FD_ISSET(sudp, &readset)) - { -- /*syslog(LOG_INFO, "Received UDP Packet");*/ -+ /*syslog(LOG_DEBUG, "Received UDP Packet");*/ - #ifdef ENABLE_HTTPS - ProcessSSDPRequest(sudp, (unsigned short)v.port, (unsigned short)v.https_port); - #else -@@ -3172,7 +3194,7 @@ main(int argc, char * * argv) - #ifdef ENABLE_IPV6 - if(sudpv6 >= 0 && FD_ISSET(sudpv6, &readset)) - { -- syslog(LOG_INFO, "Received UDP Packet (IPv6)"); -+ /*syslog(LOG_DEBUG, "Received UDP Packet (IPv6)");*/ - #ifdef ENABLE_HTTPS - ProcessSSDPRequest(sudpv6, (unsigned short)v.port, (unsigned short)v.https_port); - #else ---- a/miniupnpd.conf -+++ b/miniupnpd.conf -@@ -88,7 +88,8 @@ - # 120s and 86400s (24h) are suggested values from PCP-base - #min_lifetime=120 - #max_lifetime=86400 --# allow THIRD_PARTY Option for MAP and PEER Opcodes (default is no) -+# PCP allow third-party mapping option (default no) -+# Allow adding port maps for non-requesting IP addresses - #pcp_allow_thirdparty=yes - - # table names for netfilter nft. Default is "filter" for both -@@ -131,8 +132,8 @@ - #bitrate_up=1000000 - #bitrate_down=10000000 - --# Secure Mode, UPnP clients can only add mappings to their own IP --# Enabled by default -+# UPnP IGD secure mode (default yes) -+# Allow adding port maps for requesting IP addresses only - #secure_mode=no - - # Default presentation URL is HTTP address on port 80 ---- a/natpmp.c -+++ b/natpmp.c -@@ -231,7 +231,7 @@ void ProcessIncomingNATPMPPacket(int s, - syslog(LOG_ERR, "inet_ntop(natpmp): %m"); - } - -- syslog(LOG_INFO, "NAT-PMP request received from %s:%hu %dbytes", -+ syslog(LOG_DEBUG, "NAT-PMP request received from %s:%hu %d bytes", - senderaddrstr, ntohs(senderaddr->sin_port), n); - - if(n<2 || ((((req[1]-1)&~1)==0) && n<12)) { -@@ -260,7 +260,7 @@ void ProcessIncomingNATPMPPacket(int s, - resp[3] = 1; /* unsupported version */ - } else switch(req[1]) { - case 0: /* Public address request */ -- syslog(LOG_INFO, "NAT-PMP public address request"); -+ syslog(LOG_DEBUG, "NAT-PMP public address request"); - FillPublicAddressResponse(resp, senderaddr->sin_addr.s_addr); - resplen = 12; - break; -@@ -340,7 +340,7 @@ void ProcessIncomingNATPMPPacket(int s, - eport_first = eport; - } else if(eport == eport_first) { /* no eport available */ - if(any_eport_allowed == 0) { /* all eports rejected by permissions */ -- syslog(LOG_ERR, "No allowed eport for NAT-PMP %hu %s->%s:%hu", -+ syslog(LOG_INFO, "No allowed eport for NAT-PMP %hu %s->%s:%hu", - eport, proto_itoa(proto), senderaddrstr, iport); - resp[3] = 2; /* Not Authorized/Refused */ - } else { /* at least one eport allowed (but none available) */ ---- a/netfilter_nft/nftnlrdr_misc.c -+++ b/netfilter_nft/nftnlrdr_misc.c -@@ -104,7 +104,7 @@ nft_mnl_connect(void) - return -1; - } - mnl_portid = mnl_socket_get_portid(mnl_sock); -- syslog(LOG_INFO, "mnl_socket bound, port_id=%u", mnl_portid); -+ syslog(LOG_DEBUG, "mnl_socket bound, port_id=%u", mnl_portid); - return 0; - } - ---- a/netfilter_nft/nftpinhole.c -+++ b/netfilter_nft/nftpinhole.c -@@ -159,7 +159,6 @@ find_pinhole(const char * ifname, - (0 == memcmp(&daddr, &p->daddr6, sizeof(struct in6_addr)))) { - - if (sscanf(p->desc, PINEHOLE_LABEL_FORMAT_SKIPDESC, &uid, &ts) != 2) { -- syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", p->desc); - continue; - } - -@@ -397,7 +396,6 @@ get_pinhole_info(unsigned short uid, - if (timestamp) { - int uid_temp; - if (sscanf(p->desc, PINEHOLE_LABEL_FORMAT_SKIPDESC, &uid_temp, &ts) != 2) { -- syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", p->desc); - continue; - } - -@@ -461,7 +459,6 @@ clean_pinhole_list(unsigned int * next_t - continue; - - if (sscanf(p->desc, PINEHOLE_LABEL_FORMAT_SKIPDESC, &uid, &ts) != 2) { -- syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", p->desc); - continue; - } - ---- a/pcpserver.c -+++ b/pcpserver.c -@@ -1087,7 +1087,7 @@ static void CreatePCPMap(pcp_info_t *pcp - else - r = CreatePCPMap_NAT(pcp_msg_info); - pcp_msg_info->result_code = r; -- syslog(r == PCP_SUCCESS ? LOG_INFO : LOG_ERR, -+ syslog(LOG_INFO, - "PCP MAP: %s mapping %s %hu->%s:%hu '%s'", - r == PCP_SUCCESS ? "added" : "failed to add", - proto_itoa(pcp_msg_info->protocol), ---- a/pf/pfpinhole.c -+++ b/pf/pfpinhole.c -@@ -246,12 +246,10 @@ int find_pinhole(const char * ifname, - (0 == memcmp(&daddr, &RULE.dst.addr.v.a.addr.v6, sizeof(struct in6_addr)))) { - #ifdef USE_LIBPFCTL - if(sscanf(RULE.label[0], PINEHOLE_LABEL_FORMAT_SKIPDESC, &uid, &ts) != 2) { -- syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", RULE.label[0]); - continue; - } - #else /* USE_LIBPFCTL */ - if(sscanf(RULE.label, PINEHOLE_LABEL_FORMAT_SKIPDESC, &uid, &ts) != 2) { -- syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", RULE.label); - continue; - } - #endif /* USE_LIBPFCTL */ -@@ -563,7 +561,6 @@ int clean_pinhole_list(unsigned int * ne - return -1; - } - if(sscanf(RULE.label[0], PINEHOLE_LABEL_FORMAT_SKIPDESC, &uid, &ts) != 2) { -- syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", RULE.label[0]); - continue; - } - #else /* USE_LIBPFCTL */ -@@ -574,7 +571,6 @@ int clean_pinhole_list(unsigned int * ne - return -1; - } - if(sscanf(RULE.label, PINEHOLE_LABEL_FORMAT_SKIPDESC, &uid, &ts) != 2) { -- syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", RULE.label); - continue; - } - #endif /* USE_LIBPFCTL */ ---- a/upnphttp.c -+++ b/upnphttp.c -@@ -513,7 +513,7 @@ ProcessHTTPPOST_upnphttp(struct upnphttp - if(h->req_soapActionOff > 0) - { - /* we can process the request */ -- syslog(LOG_INFO, "SOAPAction: %.*s", -+ syslog(LOG_DEBUG, "SOAPAction: %.*s", - h->req_soapActionLen, h->req_buf + h->req_soapActionOff); - ExecuteSoapAction(h, - h->req_buf + h->req_soapActionOff, -@@ -818,7 +818,7 @@ ProcessHttpQuery_upnphttp(struct upnphtt - for(i = 0; i<15 && *p != '\r'; i++) - HttpVer[i] = *(p++); - HttpVer[i] = '\0'; -- syslog(LOG_INFO, "HTTP REQUEST from %s : %s %s (%s)", -+ syslog(LOG_DEBUG, "HTTP REQUEST from %s : %s %s (%s)", - h->clientaddr_str, HttpCommand, HttpUrl, HttpVer); - ParseHttpHeaders(h); - if(h->req_HostOff > 0 && h->req_HostLen > 0) { ---- a/upnpredirect.c -+++ b/upnpredirect.c -@@ -641,7 +641,7 @@ get_upnp_rules_state_list(int max_rules_ - { - if(tmp->to_remove) - { -- syslog(LOG_NOTICE, "remove port mapping %hu %s because it has expired", -+ syslog(LOG_INFO, "remove port mapping %hu %s because it has expired", - tmp->eport, proto_itoa(tmp->proto)); - _upnp_delete_redir(tmp->eport, tmp->proto); - *p = tmp->next; ---- a/upnpsoap.c -+++ b/upnpsoap.c -@@ -847,7 +847,7 @@ GetSpecificPortMappingEntry(struct upnph - } - else - { -- syslog(LOG_INFO, "%s: rhost='%s' %s %s found => %s:%u desc='%s' duration=%u", -+ syslog(LOG_DEBUG, "%s: rhost='%s' %s %s found => %s:%u desc='%s' duration=%u", - action, - r_host ? r_host : "NULL", ext_port, protocol, int_ip, - (unsigned int)iport, desc, leaseduration); -@@ -1112,7 +1112,7 @@ GetGenericPortMappingEntry(struct upnpht - return; - } - -- syslog(LOG_INFO, "%s: index=%d", action, (int)index); -+ syslog(LOG_DEBUG, "%s: index=%d", action, (int)index); - - rhost[0] = '\0'; - r = upnp_get_redirection_infos_by_index((int)index, &eport, protocol, &iport, -@@ -2486,4 +2486,3 @@ SoapError(struct upnphttp * h, int errCo - BuildResp2_upnphttp(h, 500, "Internal Server Error", body, bodylen); - SendRespAndClose_upnphttp(h); - } -- diff --git a/miniupnpd/patches/010-upnp-igdv2-compat.patch b/miniupnpd/patches/10-upnp-igdv2-compat.patch similarity index 84% rename from miniupnpd/patches/010-upnp-igdv2-compat.patch rename to miniupnpd/patches/10-upnp-igdv2-compat.patch index 597e899c5..2307aeb83 100644 --- a/miniupnpd/patches/010-upnp-igdv2-compat.patch +++ b/miniupnpd/patches/10-upnp-igdv2-compat.patch @@ -1,21 +1,26 @@ -From a5fa10bbe0dbb69bbfc47f5865238f352fa71675 Mon Sep 17 00:00:00 2001 +From 38e01919d585b0fd663d2b3249963b336061cbd3 Mon Sep 17 00:00:00 2001 From: Self-Hosting-Group <155233284+Self-Hosting-Group@users.noreply.github.com> -Date: Thu, 27 Nov 2025 00:00:00 +0000 +Date: Wed, 25 Mar 2026 00:00:00 +0000 Subject: [PATCH] miniupnpd: UPnP IGDv2 Microsoft/Apple compatibility -- Add workaround to list port maps with the Windows IGDv2-incompatible +* Add workaround to list port maps with the Windows IGDv2-incompatible client by returning an infinite (0) lease duration. To fix listing and editing via GUI (Explorer/Network), if daemon was compiled with IGDv2 -- Extend detection to older versions of Windows and add Xbox -- Detect Apple IGDv2-incompatible clients and apply existing workaround, +* Extend detection to older versions of Windows and add Xbox +* Detect Apple IGDv2-incompatible clients and apply existing workaround, that only caused problems if PCP/NAT-PMP (prioritised) was disabled Link: https://github.com/Self-Hosting-Group/miniupnp/tree/upnp-igdv2-compat +Link: https://github.com/Self-Hosting-Group/wiki/wiki/Port-Mapping-Protocols-Overview#compatibility-issues +--- + upnphttp.c | 19 ++++++++++++++++--- + upnpsoap.c | 16 ++++++++++++++++ + 2 files changed, 32 insertions(+), 3 deletions(-) --- a/upnphttp.c +++ b/upnphttp.c -@@ -303,9 +303,22 @@ ParseHttpHeaders(struct upnphttp * h) +@@ -304,9 +304,22 @@ ParseHttpHeaders(struct upnphttp * h) } else if(strncasecmp(line, "user-agent:", 11) == 0) { diff --git a/miniupnpd/patches/20-improve-logging.patch b/miniupnpd/patches/20-improve-logging.patch new file mode 100644 index 000000000..ee0673535 --- /dev/null +++ b/miniupnpd/patches/20-improve-logging.patch @@ -0,0 +1,1186 @@ +From 38e01919d585b0fd663d2b3249963b336061cbd3 Mon Sep 17 00:00:00 2001 +From: Self-Hosting-Group + <155233284+Self-Hosting-Group@users.noreply.github.com> +Date: Tue, 12 May 2026 00:00:00 +0000 +Subject: [PATCH] miniupnpd: Improve logging + +* Clearer logging of enabled protocols/ports, IPv6 mapping, and UPnP IGD + compatibility mode… in start banner +* Log warnings with an enabled allow third-party mapping option +* Less verbose logging by changing the log level of many normally + occurring or internal messages, or those not relevant to users, to + debug or info +* Comment out log-filling messages when internal interfaces lose link, + and for e.g. `rule with label '%s' is not a IGD pinhole`, as normally + occurring + +Fixes: https://redirect.github.com/openwrt/packages/issues/17601 +Fixes: https://redirect.github.com/openwrt/packages/issues/26483 +Link: https://github.com/Self-Hosting-Group/miniupnp/tree/improve-logging +--- + asyncsendto.c | 4 +-- + getifaddr.c | 4 +-- + minissdp.c | 24 ++++++------- + miniupnpd.c | 20 +++++------ + natpmp.c | 16 ++++----- + netfilter/iptcrdr.c | 10 +++--- + netfilter/iptpinhole.c | 4 +-- + netfilter_nft/nftnlrdr.c | 2 +- + netfilter_nft/nftnlrdr_misc.c | 8 ++--- + netfilter_nft/nftpinhole.c | 10 +++--- + pcpserver.c | 18 +++++----- + pf/pfpinhole.c | 8 ++--- + upnphttp.c | 6 ++-- + upnppinhole.c | 48 ++++++++++++------------- + upnpredirect.c | 20 +++++------ + upnpsoap.c | 28 +++++++-------- + 16 files changed, 115 insertions(+), 115 deletions(-) + +--- a/asyncsendto.c ++++ b/asyncsendto.c +@@ -254,9 +254,9 @@ int try_sendto(fd_set * writefds) + /* uncatched error */ + if(sockaddr_to_string(elt->dest_addr, addr_str, sizeof(addr_str)) <= 0) + addr_str[0] = '\0'; +- syslog(LOG_ERR, "%s(sock=%d, len=%u, dest=%s): sendto: %m", ++ /*syslog(LOG_DEBUG, "%s(sock=%d, len=%u, dest=%s): sendto: %m", + "try_sendto", elt->sockfd, (unsigned)elt->len, +- addr_str); ++ addr_str);*/ + ret--; + } + } else if((int)n != (int)elt->len) { +--- a/getifaddr.c ++++ b/getifaddr.c +@@ -74,7 +74,7 @@ getifaddr(const char * ifname, char * bu + } else { + r = GETIFADDR_IOCTL_ERROR; + } +- syslog(LOG_ERR, "ioctl(s, SIOCGIFADDR, ...): %m"); ++ syslog(LOG_DEBUG, "ioctl(s, SIOCGIFADDR, ...): %m"); + close(s); + return r; + } +@@ -149,7 +149,7 @@ getifaddr(const char * ifname, char * bu + if(addr) *addr = ((struct sockaddr_in *)candidate->ifa_addr)->sin_addr; + if(mask) *mask = ((struct sockaddr_in *)candidate->ifa_netmask)->sin_addr; + } else { +- syslog(LOG_WARNING, "no AF_INET address found for %s", ifname); ++ syslog(LOG_DEBUG, "no AF_INET address found for %s", ifname); + freeifaddrs(ifap); + return GETIFADDR_NO_ADDRESS; + } +--- a/minissdp.c ++++ b/minissdp.c +@@ -741,8 +741,8 @@ SendSSDPNotify(int s, const struct socka + } + n = sendto_or_schedule(s, bufr, l, 0, dest, dest_len); + if(n < 0) { +- syslog(LOG_ERR, "sendto(udp_notify=%d, %s): %m", s, +- host ? host : "NULL"); ++ /*syslog(LOG_DEBUG, "sendto(udp_notify=%d, %s): %m", s, ++ host ? host : "NULL");*/ + } else if(n != l) { + syslog(LOG_NOTICE, "sendto() sent %d out of %d bytes", n, l); + } +@@ -752,8 +752,8 @@ SendSSDPNotify(int s, const struct socka + * discovery messages SHOULD NOT be sent more than three times. */ + n = sendto_schedule(s, bufr, l, 0, dest, dest_len, 250); + if(n < 0) { +- syslog(LOG_ERR, "sendto(udp_notify=%d, %s): %m", s, +- host ? host : "NULL"); ++ /*syslog(LOG_DEBUG, "sendto(udp_notify=%d, %s): %m", s, ++ host ? host : "NULL");*/ + } + } + +@@ -1058,7 +1058,7 @@ ProcessSSDPData(int s, const char *bufr, + } + if(lan_addr == NULL) + { +- syslog(LOG_WARNING, "SSDP packet sender %s (if_index=%d) not from a LAN, ignoring", ++ syslog(LOG_DEBUG, "SSDP packet sender %s (if_index=%d) not from a LAN, ignoring", + sender_str, source_if); + return; + } +@@ -1161,7 +1161,7 @@ ProcessSSDPData(int s, const char *bufr, + sender_str );*/ + if(st && (st_len > 0)) + { +- syslog(LOG_INFO, "SSDP M-SEARCH from %s ST: %.*s", ++ syslog(LOG_DEBUG, "SSDP M-SEARCH from %s ST: %.*s", + sender_str, st_len, st); + /* find in which sub network the client is */ + #ifdef ENABLE_IPV6 +@@ -1274,7 +1274,7 @@ ProcessSSDPData(int s, const char *bufr, + else + snprintf(ver_str, sizeof(ver_str), "%d", known_service_types[i].version); + #endif +- syslog(LOG_INFO, "Single search found"); ++ syslog(LOG_DEBUG, "Single search found"); + #ifdef DELAY_MSEARCH_RESPONSE + delay = random() / (1 + RAND_MAX / (1000 * mx_value)); + #ifdef DEBUG +@@ -1303,7 +1303,7 @@ ProcessSSDPData(int s, const char *bufr, + #ifdef DELAY_MSEARCH_RESPONSE + unsigned int delay_increment = (mx_value * 1000) / 15; + #endif +- syslog(LOG_INFO, "ssdp:all found"); ++ syslog(LOG_DEBUG, "ssdp:all found"); + for(i=0; known_service_types[i].s; i++) + { + #ifdef DELAY_MSEARCH_RESPONSE +@@ -1361,7 +1361,7 @@ ProcessSSDPData(int s, const char *bufr, + #endif + if(0 == memcmp(st, uuidvalue_igd, l)) + { +- syslog(LOG_INFO, "ssdp:uuid (IGD) found"); ++ syslog(LOG_DEBUG, "ssdp:uuid (IGD) found"); + SendSSDPResponse(s, sender, st, st_len, "", + announced_host, http_port, + #ifdef ENABLE_HTTPS +@@ -1371,7 +1371,7 @@ ProcessSSDPData(int s, const char *bufr, + } + else if(0 == memcmp(st, uuidvalue_wan, l)) + { +- syslog(LOG_INFO, "ssdp:uuid (WAN) found"); ++ syslog(LOG_DEBUG, "ssdp:uuid (WAN) found"); + SendSSDPResponse(s, sender, st, st_len, "", + announced_host, http_port, + #ifdef ENABLE_HTTPS +@@ -1381,7 +1381,7 @@ ProcessSSDPData(int s, const char *bufr, + } + else if(0 == memcmp(st, uuidvalue_wcd, l)) + { +- syslog(LOG_INFO, "ssdp:uuid (WCD) found"); ++ syslog(LOG_DEBUG, "ssdp:uuid (WCD) found"); + SendSSDPResponse(s, sender, st, st_len, "", + announced_host, http_port, + #ifdef ENABLE_HTTPS +@@ -1442,7 +1442,7 @@ SendSSDPbyebye(int s, const struct socka + n = sendto_or_schedule(s, bufr, l, 0, dest, destlen); + if(n < 0) + { +- syslog(LOG_ERR, "sendto(udp_shutdown=%d) to %s: %m", s, dest_str); ++ syslog(LOG_DEBUG, "sendto(udp_shutdown=%d) to %s: %m", s, dest_str); + return -1; + } + else if(n != l) +--- a/miniupnpd.c ++++ b/miniupnpd.c +@@ -489,7 +489,7 @@ ProcessIncomingHTTP(int shttpl, const ch + if(get_lan_for_peer((struct sockaddr *)&clientname) == NULL) + { + /* The peer is not a LAN ! */ +- syslog(LOG_WARNING, ++ syslog(LOG_DEBUG, + "%s peer %s is not from a LAN, closing the connection", + protocol, addr_str); + close(shttp); +@@ -859,7 +859,7 @@ set_startup_time(void) + } + else + { +- syslog(LOG_INFO, "system uptime is %lu seconds", uptime); ++ syslog(LOG_DEBUG, "system uptime is %lu seconds", uptime); + } + fclose(f); + startup_time -= uptime; +@@ -2109,6 +2109,22 @@ init(int argc, char * * argv, struct run + pidfilename = NULL; + #endif + ++syslog(LOG_NOTICE, "MiniUPnP daemon " MINIUPNPD_VERSION " starting, enable protocols %s%s%s, ext_ifname=%s BOOTID=%u", ++ GETFLAG(ENABLEUPNPMASK) ? "UPnP IGD" : "", ++#ifdef ENABLE_NATPMP ++ GETFLAG(ENABLEUPNPMASK) && GETFLAG(ENABLENATPMPMASK) ? " & " : "", ++#ifdef ENABLE_PCP ++ GETFLAG(ENABLENATPMPMASK) ? "PCP/NAT-PMP" : "", ++#else ++ GETFLAG(ENABLENATPMPMASK) ? "NAT-PMP" : "", ++#endif ++#else ++ "", "", ++#endif ++ ext_if_name, upnp_bootid); ++syslog(LOG_INFO, "More information at https://miniupnp.tuxfamily.org/ or http://miniupnp.free.fr/"); ++syslog(LOG_NOTICE, "Extra logging with log level info (-v) or debug (-v -v)"); ++ + #ifdef USE_SYSTEMD + if (systemd_flag) { + int r = sd_notify(0, +@@ -2121,7 +2137,7 @@ init(int argc, char * * argv, struct run + + #ifdef ENABLE_LEASEFILE + /*remove(lease_file);*/ +- syslog(LOG_INFO, "Reloading rules from lease file"); ++ syslog(LOG_INFO, "Reloading port maps from lease file"); + reload_from_lease_file(); + #ifdef ENABLE_UPNPPINHOLE + reload_from_lease_file6(); +@@ -2409,21 +2425,9 @@ main(int argc, char * * argv) + return 0; + } + +- syslog(LOG_INFO, "version " MINIUPNPD_VERSION " starting%s%sext if %s BOOTID=%u", +-#ifdef ENABLE_NATPMP +-#ifdef ENABLE_PCP +- GETFLAG(ENABLENATPMPMASK) ? " NAT-PMP/PCP " : " ", +-#else +- GETFLAG(ENABLENATPMPMASK) ? " NAT-PMP " : " ", +-#endif +-#else +- " ", +-#endif +- GETFLAG(ENABLEUPNPMASK) ? "UPnP-IGD " : "", +- ext_if_name, upnp_bootid); + #ifdef ENABLE_IPV6 + if (strcmp(ext_if_name6, ext_if_name) != 0) { +- syslog(LOG_INFO, "specific IPv6 ext if %s", ext_if_name6); ++ syslog(LOG_INFO, "Separate ext_ifname6=%s set", ext_if_name6); + } + #endif + +@@ -2467,7 +2471,7 @@ main(int argc, char * * argv) + return 1; + } + v.port = listen_port; +- syslog(LOG_NOTICE, "HTTP listening on port %d", v.port); ++ syslog(LOG_NOTICE, "Listening for UPnP IGD (SOAP/HTTP) traffic on port %d/TCP, SSDP 1900/UDP", v.port); + #if defined(V6SOCKETS_ARE_V6ONLY) && defined(ENABLE_IPV6) + if(!GETFLAG(IPV6DISABLEDMASK)) + { +@@ -2493,7 +2497,7 @@ main(int argc, char * * argv) + return 1; + } + v.https_port = listen_port; +- syslog(LOG_NOTICE, "HTTPS listening on port %d", v.https_port); ++ syslog(LOG_NOTICE, "Listening for UPnP IGD (SOAP/HTTPS) traffic on port %d/TCP", v.https_port); + #if defined(V6SOCKETS_ARE_V6ONLY) && defined(ENABLE_IPV6) + shttpsl_v4 = OpenAndConfHTTPSocket(&listen_port, 0); + if(shttpsl_v4 < 0) +@@ -2507,11 +2511,11 @@ main(int argc, char * * argv) + if(!GETFLAG(IPV6DISABLEDMASK)) { + if(find_ipv6_addr(lan_addrs.lh_first ? lan_addrs.lh_first->ifname : NULL, + ipv6_addr_for_http_with_brackets, sizeof(ipv6_addr_for_http_with_brackets)) > 0) { +- syslog(LOG_NOTICE, "HTTP IPv6 address given to control points : %s", ++ syslog(LOG_NOTICE, "IPv6 address given to UPnP IGD clients: %s", + ipv6_addr_for_http_with_brackets); + } else { + memcpy(ipv6_addr_for_http_with_brackets, "[::1]", 6); +- syslog(LOG_WARNING, "no HTTP IPv6 address, disabling IPv6"); ++ syslog(LOG_DEBUG, "no HTTP IPv6 address, disabling IPv6"); + SETFLAG(IPV6DISABLEDMASK); + } + } +@@ -2563,7 +2567,7 @@ main(int argc, char * * argv) + if(SendSSDPGoodbye(snotify, addr_count * 2) < 0) + #endif + { +- syslog(LOG_WARNING, "Failed to broadcast good-bye notifications"); ++ syslog(LOG_DEBUG, "Failed to broadcast good-bye notifications"); + } + } + #endif /* UPNP_STRICT */ +@@ -2588,16 +2592,16 @@ main(int argc, char * * argv) + if(OpenAndConfNATPMPSockets(snatpmp) < 0) + #ifdef ENABLE_PCP + { +- syslog(LOG_ERR, "Failed to open sockets for NAT-PMP/PCP."); ++ syslog(LOG_ERR, "Failed to open port 5351/UDP for PCP/NAT-PMP"); + } else { +- syslog(LOG_NOTICE, "Listening for NAT-PMP/PCP traffic on port %u", ++ syslog(LOG_NOTICE, "Listening for PCP/NAT-PMP traffic on port %u/UDP", + NATPMP_PORT); + } + #else + { +- syslog(LOG_ERR, "Failed to open sockets for NAT PMP."); ++ syslog(LOG_ERR, "Failed to open port 5351/UDP for NAT-PMP"); + } else { +- syslog(LOG_NOTICE, "Listening for NAT-PMP traffic on port %u", ++ syslog(LOG_NOTICE, "Listening for NAT-PMP traffic on port %u/UDP", + NATPMP_PORT); + } + #endif +@@ -2706,6 +2710,30 @@ main(int argc, char * * argv) + } + #endif /* HAS_LIBCAP_NG */ + ++if (GETFLAG(ENABLEUPNPMASK) && !GETFLAG(SECUREMODEMASK)) ++ syslog(LOG_WARNING, "WARNING: Allow adding port maps for non-requesting IP addresses via UPnP IGD, as secure_mode=no set"); ++#ifdef ENABLE_PCP ++if (GETFLAG(ENABLENATPMPMASK) && GETFLAG(PCP_ALLOWTHIRDPARTYMASK)) ++ syslog(LOG_WARNING, "WARNING: Allow adding port maps for non-requesting IP addresses via PCP, as pcp_allow_thirdparty=yes set"); ++#endif ++#ifdef ENABLE_IPV6 ++if (GETFLAG(IPV6DISABLEDMASK)) ++ syslog(LOG_NOTICE, "IPv6 mapping disabled"); ++#else ++syslog(LOG_NOTICE, "IPv6 mapping disabled"); ++#endif ++if (GETFLAG(ENABLEUPNPMASK)) { ++#ifdef IGD_V2 ++ if (GETFLAG(FORCEIGDDESCV1MASK)) { ++ syslog(LOG_NOTICE, "UPnP IGD compatibility mode set to IGDv1 (IPv4 only)"); ++ } else { ++ syslog(LOG_NOTICE, "UPnP IGD compatibility mode set to IGDv2 (with workarounds)"); ++ } ++#else ++ syslog(LOG_NOTICE, "UPnP IGD compatibility mode set to IGDv1 (IPv4 only)"); ++#endif ++} ++ + #ifdef USE_SYSTEMD + if (v.systemd_notify) { + upnp_update_status(); +@@ -3016,7 +3044,7 @@ main(int argc, char * * argv) + } + i = try_sendto(&writeset); + if(i < 0) { +- syslog(LOG_ERR, "try_sendto failed to send %d packets", -i); ++ /*syslog(LOG_DEBUG, "try_sendto failed to send %d packets", -i);*/ + } + #ifdef USE_MINIUPNPDCTL + for(ectl = ctllisthead.lh_first; ectl;) +@@ -3116,7 +3144,7 @@ main(int argc, char * * argv) + if(lan_addr == NULL) { + char sender_str[64]; + sockaddr_to_string((struct sockaddr *)&senderaddr, sender_str, sizeof(sender_str)); +- syslog(LOG_WARNING, "NAT-PMP packet sender %s not from a LAN, ignoring", ++ syslog(LOG_DEBUG, "NAT-PMP packet sender %s not from a LAN, ignoring", + sender_str); + continue; + } +@@ -3139,7 +3167,7 @@ main(int argc, char * * argv) + if(lan_addr == NULL) { + char sender_str[64]; + sockaddr_to_string((struct sockaddr *)&senderaddr, sender_str, sizeof(sender_str)); +- syslog(LOG_WARNING, "NAT-PMP packet sender %s not from a LAN, ignoring", ++ syslog(LOG_DEBUG, "NAT-PMP packet sender %s not from a LAN, ignoring", + sender_str); + continue; + } +@@ -3173,7 +3201,7 @@ main(int argc, char * * argv) + /* process SSDP packets */ + if(sudp >= 0 && FD_ISSET(sudp, &readset)) + { +- /*syslog(LOG_INFO, "Received UDP Packet");*/ ++ /*syslog(LOG_DEBUG, "Received UDP Packet");*/ + #ifdef ENABLE_HTTPS + ProcessSSDPRequest(sudp, (unsigned short)v.port, (unsigned short)v.https_port); + #else +@@ -3183,7 +3211,7 @@ main(int argc, char * * argv) + #ifdef ENABLE_IPV6 + if(sudpv6 >= 0 && FD_ISSET(sudpv6, &readset)) + { +- syslog(LOG_INFO, "Received UDP Packet (IPv6)"); ++ /*syslog(LOG_DEBUG, "Received UDP Packet (IPv6)");*/ + #ifdef ENABLE_HTTPS + ProcessSSDPRequest(sudpv6, (unsigned short)v.port, (unsigned short)v.https_port); + #else +@@ -3285,7 +3313,7 @@ main(int argc, char * * argv) + + shutdown: + +- syslog(LOG_NOTICE, "shutting down MiniUPnPd"); ++ syslog(LOG_NOTICE, "Shutting down MiniUPnPd"); + #ifdef USE_SYSTEMD + if (v.systemd_notify) { + sd_notify(0, +@@ -3304,7 +3332,7 @@ shutdown: + if(SendSSDPGoodbye(snotify, addr_count * 2) < 0) + #endif + { +- syslog(LOG_ERR, "Failed to broadcast good-bye notifications"); ++ syslog(LOG_DEBUG, "Failed to broadcast good-bye notifications"); + } + } + /* try to send pending packets */ +--- a/natpmp.c ++++ b/natpmp.c +@@ -106,7 +106,7 @@ static void FillPublicAddressResponse(un + resp[3] = 3; /* Network Failure (e.g. NAT box itself + * has not obtained a DHCP lease) */ + } else if(getifaddr(ext_if_name, tmp, INET_ADDRSTRLEN, &addr, NULL) < 0) { +- syslog(LOG_ERR, "Failed to get IP for interface %s", ext_if_name); ++ syslog(LOG_DEBUG, "Failed to get IP for interface %s", ext_if_name); + resp[3] = 3; /* Network Failure (e.g. NAT box itself + * has not obtained a DHCP lease) */ + } else if (!GETFLAG(ALLOWPRIVATEIPV4MASK) && addr_is_reserved(&addr)) { +@@ -231,7 +231,7 @@ void ProcessIncomingNATPMPPacket(int s, + syslog(LOG_ERR, "inet_ntop(natpmp): %m"); + } + +- syslog(LOG_INFO, "NAT-PMP request received from %s:%hu %dbytes", ++ syslog(LOG_DEBUG, "NAT-PMP request received from %s:%hu %d bytes", + senderaddrstr, ntohs(senderaddr->sin_port), n); + + if(n<2 || ((((req[1]-1)&~1)==0) && n<12)) { +@@ -260,7 +260,7 @@ void ProcessIncomingNATPMPPacket(int s, + resp[3] = 1; /* unsupported version */ + } else switch(req[1]) { + case 0: /* Public address request */ +- syslog(LOG_INFO, "NAT-PMP public address request"); ++ syslog(LOG_DEBUG, "NAT-PMP public address request"); + FillPublicAddressResponse(resp, senderaddr->sin_addr.s_addr); + resplen = 12; + break; +@@ -319,7 +319,7 @@ void ProcessIncomingNATPMPPacket(int s, + resp[3] = 2; /* Not Authorized/Refused */ + break; + } else { +- syslog(LOG_INFO, "NAT-PMP %s port %hu mapping removed", ++ syslog(LOG_DEBUG, "NAT-PMP %s port %hu mapping removed", + proto2==IPPROTO_TCP?"TCP":"UDP", eport2); + index--; + } +@@ -340,7 +340,7 @@ void ProcessIncomingNATPMPPacket(int s, + eport_first = eport; + } else if(eport == eport_first) { /* no eport available */ + if(any_eport_allowed == 0) { /* all eports rejected by permissions */ +- syslog(LOG_ERR, "No allowed eport for NAT-PMP %hu %s->%s:%hu", ++ syslog(LOG_INFO, "No allowed eport for NAT-PMP %hu %s->%s:%hu", + eport, proto_itoa(proto), senderaddrstr, iport); + resp[3] = 2; /* Not Authorized/Refused */ + } else { /* at least one eport allowed (but none available) */ +@@ -443,7 +443,7 @@ void SendNATPMPPublicAddressChangeNotifi + FillPublicAddressResponse(notif, 0); + if(notif[3]) + { +- syslog(LOG_WARNING, "%s: cannot get public IP address, stopping", ++ syslog(LOG_DEBUG, "%s: cannot get public IP address, stopping", + "SendNATPMPPublicAddressChangeNotification"); + return; + } +@@ -471,7 +471,7 @@ void SendNATPMPPublicAddressChangeNotifi + (struct sockaddr *)&sockname, sizeof(struct sockaddr_in)); + if(n < 0) + { +- syslog(LOG_ERR, "%s: sendto(s_udp=%d, port=%d): %m", ++ syslog(LOG_DEBUG, "%s: sendto(s_udp=%d, port=%d): %m", + "SendNATPMPPublicAddressChangeNotification", sockets[j], NATPMP_PORT); + return; + } +@@ -481,7 +481,7 @@ void SendNATPMPPublicAddressChangeNotifi + (struct sockaddr *)&sockname, sizeof(struct sockaddr_in)); + if(n < 0) + { +- syslog(LOG_ERR, "%s: sendto(s_udp=%d, port=%d): %m", ++ syslog(LOG_DEBUG, "%s: sendto(s_udp=%d, port=%d): %m", + "SendNATPMPPublicAddressChangeNotification", sockets[j], NATPMP_NOTIF_PORT); + return; + } +--- a/netfilter/iptcrdr.c ++++ b/netfilter/iptcrdr.c +@@ -711,7 +711,7 @@ delete_filter_rule(const char * ifname, + continue; + } + index = i; +- /*syslog(LOG_INFO, "Trying to delete filter rule at index %u", index);*/ ++ /*syslog(LOG_DEBUG, "Trying to delete filter rule at index %u", index);*/ + r = delete_rule_and_commit(index, h, miniupnpd_forward_chain, "delete_filter_rule"); + h = NULL; + break; +@@ -804,7 +804,7 @@ delete_redirect_and_filter_rules(unsigne + #endif + if(r == 0) + { +- syslog(LOG_INFO, "Trying to delete nat rule at index %u", index); ++ syslog(LOG_DEBUG, "Trying to delete nat rule at index %u", index); + /* Now delete both rules */ + /* first delete the nat rule */ + h = iptc_init("nat"); +@@ -848,7 +848,7 @@ delete_redirect_and_filter_rules(unsigne + if(iaddr != e->ip.dst.s_addr) + continue; + index = i; +- syslog(LOG_INFO, "Trying to delete filter rule at index %u", index); ++ syslog(LOG_DEBUG, "Trying to delete filter rule at index %u", index); + r = delete_rule_and_commit(index, h, miniupnpd_forward_chain, "delete_filter_rule"); + h = NULL; + break; +@@ -906,7 +906,7 @@ delete_redirect_and_filter_rules(unsigne + } + + index = i; +- syslog(LOG_INFO, "Trying to delete peer rule at index %u", index); ++ syslog(LOG_DEBUG, "Trying to delete peer rule at index %u", index); + r2 = delete_rule_and_commit(index, h, miniupnpd_nat_postrouting_chain, "delete_peer_rule"); + h = NULL; + break; +@@ -958,7 +958,7 @@ delete_redirect_and_filter_rules(unsigne + if(iaddr != e->ip.src.s_addr) + continue; + index = i; +- syslog(LOG_INFO, "Trying to delete dscp rule at index %u", index); ++ syslog(LOG_DEBUG, "Trying to delete dscp rule at index %u", index); + r2 = delete_rule_and_commit(index, h, miniupnpd_nat_chain, "delete_dscp_rule"); + h = NULL; + break; +--- a/netfilter/iptpinhole.c ++++ b/netfilter/iptpinhole.c +@@ -295,14 +295,14 @@ find_pinhole(const char * ifname, + + if(rem_host && (rem_host[0] != '\0')) { + if (inet_pton(AF_INET6, rem_host, &saddr) < 1) { +- syslog(LOG_WARNING, "Failed to parse INET6 address \"%s\"", rem_host); ++ syslog(LOG_INFO, "Failed to parse INET6 address \"%s\"", rem_host); + memset(&saddr, 0, sizeof(struct in6_addr)); + } + } else { + memset(&saddr, 0, sizeof(struct in6_addr)); + } + if (inet_pton(AF_INET6, int_client, &daddr) < 1) { +- syslog(LOG_WARNING, "Failed to parse INET6 address \"%s\"", int_client); ++ syslog(LOG_INFO, "Failed to parse INET6 address \"%s\"", int_client); + memset(&daddr, 0, sizeof(struct in6_addr)); + } + for(p = pinhole_list.lh_first; p != NULL; p = p->entries.le_next) { +--- a/netfilter_nft/nftnlrdr.c ++++ b/netfilter_nft/nftnlrdr.c +@@ -353,7 +353,7 @@ delete_redirect_and_filter_rules(unsigne + } + } + } else { +- syslog(LOG_WARNING, "%s: redirect rule with eport=%hu proto %d NOT FOUND", ++ syslog(LOG_INFO, "%s: redirect rule with eport=%hu proto %d NOT FOUND", + "delete_redirect_and_filter_rules", eport, proto); + } + +--- a/netfilter_nft/nftnlrdr_misc.c ++++ b/netfilter_nft/nftnlrdr_misc.c +@@ -104,7 +104,7 @@ nft_mnl_connect(void) + return -1; + } + mnl_portid = mnl_socket_get_portid(mnl_sock); +- syslog(LOG_INFO, "mnl_socket bound, port_id=%u", mnl_portid); ++ syslog(LOG_DEBUG, "mnl_socket bound, port_id=%u", mnl_portid); + return 0; + } + +@@ -745,7 +745,7 @@ refresh_nft_cache(struct rule_list *head + errno = 0; + ret = mnl_cb_run(buf, n, mnl_seq, mnl_portid, table_cb, &data); + if (ret <= -1 /*== MNL_CB_ERROR*/) { +- syslog(LOG_ERR, "%s: mnl_cb_run returned %d: %m", ++ syslog(LOG_DEBUG, "%s: mnl_cb_run returned %d: %m", + "refresh_nft_cache", ret); + return -1; + } +@@ -1279,7 +1279,7 @@ nft_send_rule(struct nftnl_rule * rule, + + result = send_batch(batch); + if (result < 0) { +- syslog(LOG_ERR, "%s(%p, %d, %d) send_batch failed %d", ++ syslog(LOG_DEBUG, "%s(%p, %d, %d) send_batch failed %d", + "nft_send_rule", rule, (int)cmd, (int)chain_type, result); + } + } +@@ -1462,7 +1462,7 @@ send_batch(struct mnl_nlmsg_batch *batch + errno = 0; + ret = mnl_cb_run(buf, n, 0, mnl_portid, NULL, NULL); + if (ret <= -1 /*== MNL_CB_ERROR*/) { +- syslog(LOG_ERR, "%s: mnl_cb_run returned %d: %m", ++ syslog(LOG_DEBUG, "%s: mnl_cb_run returned %d: %m", + "send_batch", ret); + return -4; + } +--- a/netfilter_nft/nftpinhole.c ++++ b/netfilter_nft/nftpinhole.c +@@ -129,7 +129,7 @@ find_pinhole(const char * ifname, + + if (rem_host && rem_host[0] != '\0' && rem_host[0] != '*') { + if (inet_pton(AF_INET6, rem_host, &saddr) < 1) { +- syslog(LOG_WARNING, "Failed to parse INET6 address \"%s\"", rem_host); ++ syslog(LOG_INFO, "Failed to parse INET6 address \"%s\"", rem_host); + memset(&saddr, 0, sizeof(struct in6_addr)); + } + } else { +@@ -137,7 +137,7 @@ find_pinhole(const char * ifname, + } + + if (inet_pton(AF_INET6, int_client, &daddr) < 1) { +- syslog(LOG_WARNING, "Failed to parse INET6 address \"%s\"", int_client); ++ syslog(LOG_INFO, "Failed to parse INET6 address \"%s\"", int_client); + memset(&daddr, 0, sizeof(struct in6_addr)); + } + +@@ -159,7 +159,7 @@ find_pinhole(const char * ifname, + (0 == memcmp(&daddr, &p->daddr6, sizeof(struct in6_addr)))) { + + if (sscanf(p->desc, PINEHOLE_LABEL_FORMAT_SKIPDESC, &uid, &ts) != 2) { +- syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", p->desc); ++ /*syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", p->desc);*/ + continue; + } + +@@ -396,7 +396,7 @@ get_pinhole_info(unsigned short uid, + if (timestamp) { + int uid_temp; + if (sscanf(p->desc, PINEHOLE_LABEL_FORMAT_SKIPDESC, &uid_temp, &ts) != 2) { +- syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", p->desc); ++ /*syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", p->desc);*/ + continue; + } + +@@ -460,7 +460,7 @@ clean_pinhole_list(unsigned int * next_t + continue; + + if (sscanf(p->desc, PINEHOLE_LABEL_FORMAT_SKIPDESC, &uid, &ts) != 2) { +- syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", p->desc); ++ /*syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", p->desc);*/ + continue; + } + +--- a/pcpserver.c ++++ b/pcpserver.c +@@ -1086,7 +1086,7 @@ static void CreatePCPMap(pcp_info_t *pcp + else + r = CreatePCPMap_NAT(pcp_msg_info); + pcp_msg_info->result_code = r; +- syslog(r == PCP_SUCCESS ? LOG_INFO : LOG_ERR, ++ syslog(LOG_INFO, + "PCP MAP: %s mapping %s %hu->%s:%hu '%s'", + r == PCP_SUCCESS ? "added" : "failed to add", + proto_itoa(pcp_msg_info->protocol), +@@ -1128,7 +1128,7 @@ static void DeletePCPMap(pcp_info_t *pcp + if(0 != strcmp(desc, pcp_msg_info->desc)) { + /* nonce does not match */ + pcp_msg_info->result_code = PCP_ERR_NOT_AUTHORIZED; +- syslog(LOG_ERR, "Unauthorized to remove PCP mapping internal port %hu, protocol %s", ++ syslog(LOG_INFO, "Unauthorized to remove PCP mapping internal port %hu, protocol %s", + iport, proto_itoa(pcp_msg_info->protocol)); + return; + } else { +@@ -1146,14 +1146,14 @@ static void DeletePCPMap(pcp_info_t *pcp + desc, sizeof(desc), + NULL /* lifetime */); + if (uid < 0) { +- syslog(LOG_ERR, "Failed to find mapping to %s:%hu, protocol %s", ++ syslog(LOG_INFO, "Failed to find mapping to %s:%hu, protocol %s", + pcp_msg_info->mapped_str, iport, proto_itoa(pcp_msg_info->protocol)); + return; + } else { + if(0 != strcmp(desc, pcp_msg_info->desc)) { + /* nonce does not match */ + pcp_msg_info->result_code = PCP_ERR_NOT_AUTHORIZED; +- syslog(LOG_ERR, "Unauthorized to remove PCP mapping internal port %hu, protocol %s", ++ syslog(LOG_INFO, "Unauthorized to remove PCP mapping internal port %hu, protocol %s", + iport, proto_itoa(pcp_msg_info->protocol)); + return; + } else { +@@ -1168,7 +1168,7 @@ static void DeletePCPMap(pcp_info_t *pcp + syslog(LOG_INFO, "PCP: %s port %hu mapping removed", + proto==IPPROTO_TCP?"TCP":"UDP", (pcp_msg_info->is_fw ? iport : eport2)); + } else { +- syslog(LOG_ERR, "Failed to remove PCP mapping to %s:%hu %s", ++ syslog(LOG_INFO, "Failed to remove PCP mapping to %s:%hu %s", + pcp_msg_info->mapped_str, iport, proto_itoa(proto)); + pcp_msg_info->result_code = PCP_ERR_NO_RESOURCES; + } +@@ -1391,7 +1391,7 @@ static int processPCPRequest(void * req, + CreatePCPMap(pcp_msg_info); + } + } else { +- syslog(LOG_ERR, "PCP: Invalid PCP v2 MAP message."); ++ syslog(LOG_DEBUG, "PCP: Invalid PCP v2 MAP message."); + return pcp_msg_info->result_code; + } + +@@ -1601,7 +1601,7 @@ int ProcessIncomingPCPPacket(int s, unsi + if (!GETFLAG(PCP_ALLOWTHIRDPARTYMASK)) { + lan_addr = get_lan_for_peer(senderaddr); + if(lan_addr == NULL) { +- syslog(LOG_WARNING, "PCP packet sender %s not from a LAN, ignoring", ++ syslog(LOG_DEBUG, "PCP packet sender %s not from a LAN, ignoring", + addr_str); + return 0; + } +@@ -1722,7 +1722,7 @@ void PCPSendUnsolicitedAnnounce(int * so + } + len = sendto_or_schedule(sockets[i], buff, PCP_MIN_LEN, 0, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)); + if( len < 0 ) { +- syslog(LOG_ERR, "PCPSendUnsolicitedAnnounce(sockets[%d]) sendto(): %m", i); ++ syslog(LOG_DEBUG, "PCPSendUnsolicitedAnnounce(sockets[%d]) sendto(): %m", i); + } + } + #ifdef ENABLE_IPV6 +@@ -1733,7 +1733,7 @@ void PCPSendUnsolicitedAnnounce(int * so + addr6.sin6_port = htons(5350); + len = sendto_or_schedule(socket6, buff, PCP_MIN_LEN, 0, (struct sockaddr *)&addr6, sizeof(struct sockaddr_in6)); + if( len < 0 ) { +- syslog(LOG_ERR, "PCPSendUnsolicitedAnnounce() IPv6 sendto(): %m"); ++ syslog(LOG_DEBUG, "PCPSendUnsolicitedAnnounce() IPv6 sendto(): %m"); + } + } + #endif /* ENABLE_IPV6 */ +--- a/pf/pfpinhole.c ++++ b/pf/pfpinhole.c +@@ -246,12 +246,12 @@ int find_pinhole(const char * ifname, + (0 == memcmp(&daddr, &RULE.dst.addr.v.a.addr.v6, sizeof(struct in6_addr)))) { + #ifdef USE_LIBPFCTL + if(sscanf(RULE.label[0], PINEHOLE_LABEL_FORMAT_SKIPDESC, &uid, &ts) != 2) { +- syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", RULE.label[0]); ++ /*syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", RULE.label[0]);*/ + continue; + } + #else /* USE_LIBPFCTL */ + if(sscanf(RULE.label, PINEHOLE_LABEL_FORMAT_SKIPDESC, &uid, &ts) != 2) { +- syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", RULE.label); ++ /*syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", RULE.label);*/ + continue; + } + #endif /* USE_LIBPFCTL */ +@@ -565,7 +565,7 @@ int clean_pinhole_list(unsigned int * ne + return -1; + } + if(sscanf(RULE.label[0], PINEHOLE_LABEL_FORMAT_SKIPDESC, &uid, &ts) != 2) { +- syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", RULE.label[0]); ++ /*syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", RULE.label[0]);*/ + continue; + } + #else /* USE_LIBPFCTL */ +@@ -576,7 +576,7 @@ int clean_pinhole_list(unsigned int * ne + return -1; + } + if(sscanf(RULE.label, PINEHOLE_LABEL_FORMAT_SKIPDESC, &uid, &ts) != 2) { +- syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", RULE.label); ++ /*syslog(LOG_DEBUG, "rule with label '%s' is not a IGD pinhole", RULE.label);*/ + continue; + } + #endif /* USE_LIBPFCTL */ +--- a/upnphttp.c ++++ b/upnphttp.c +@@ -514,7 +514,7 @@ ProcessHTTPPOST_upnphttp(struct upnphttp + if(h->req_soapActionOff > 0) + { + /* we can process the request */ +- syslog(LOG_INFO, "SOAPAction: %.*s", ++ syslog(LOG_DEBUG, "SOAPAction: %.*s", + h->req_soapActionLen, h->req_buf + h->req_soapActionOff); + ExecuteSoapAction(h, + h->req_buf + h->req_soapActionOff, +@@ -819,7 +819,7 @@ ProcessHttpQuery_upnphttp(struct upnphtt + for(i = 0; i<15 && *p != '\r'; i++) + HttpVer[i] = *(p++); + HttpVer[i] = '\0'; +- syslog(LOG_INFO, "HTTP REQUEST from %s : %s %s (%s)", ++ syslog(LOG_DEBUG, "HTTP REQUEST from %s : %s %s (%s)", + h->clientaddr_str, HttpCommand, HttpUrl, HttpVer); + ParseHttpHeaders(h); + if(h->req_HostOff > 0 && h->req_HostLen > 0) { +@@ -899,7 +899,7 @@ ProcessHttpQuery_upnphttp(struct upnphtt + return; + } + #endif +- syslog(LOG_NOTICE, "%s not found, responding ERROR 404", HttpUrl); ++ syslog(LOG_DEBUG, "%s not found, responding ERROR 404", HttpUrl); + Send404(h); + } + #ifdef ENABLE_EVENTS +--- a/upnppinhole.c ++++ b/upnppinhole.c +@@ -110,7 +110,7 @@ lease_file6_add(const char * rem_client, + + fd = fopen( lease_file6, "a"); + if (fd==NULL) { +- syslog(LOG_ERR, "could not open lease file: %s", lease_file); ++ syslog(LOG_DEBUG, "could not open lease file: %s", lease_file); + return -1; + } + +@@ -189,13 +189,13 @@ lease_file6_update(int uid, unsigned int + proto = line; + p = strchr(line, ';'); + if(!p) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p++) = '\0'; + p2 = strchr(p, ';'); + if(!p2) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p2++) = '\0'; +@@ -203,13 +203,13 @@ lease_file6_update(int uid, unsigned int + int_client = p; + p = strchr(p2, ';'); + if(!p) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p++) = '\0'; + p2 = strchr(p, ';'); + if(!p2) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p2++) = '\0'; +@@ -217,20 +217,20 @@ lease_file6_update(int uid, unsigned int + rem_client = p; + p = strchr(p2, ';'); + if(!p) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p++) = '\0'; + p2 = strchr(p, ';'); + if(!p2) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p2++) = '\0'; + desc = strchr(p2, ';'); + uid_rule = atoi(p); + if(!desc) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(desc++) = '\0'; +@@ -385,49 +385,49 @@ int lease_file6_expire(void) + // Internal Host + p = strchr(line, ';'); + if(!p) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p++) = '\0'; + // Internal Port + p2 = strchr(p, ';'); + if(!p2) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p2++) = '\0'; + // External Host + p = strchr(p2, ';'); + if(!p) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p++) = '\0'; + // External Port + p2 = strchr(p, ';'); + if(!p2) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p2++) = '\0'; + // uid + p = strchr(p2, ';'); + if(!p) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p++) = '\0'; + // Timestamp + p2 = strchr(p, ';'); + if(!p2) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p2++) = '\0'; + // descr + desc = strchr(p2, ';'); + if(!desc) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(desc++) = '\0'; +@@ -476,7 +476,7 @@ int reload_from_lease_file6(void) + if(!lease_file6) return -1; + fd = fopen( lease_file6, "r"); + if (fd==NULL) { +- syslog(LOG_ERR, "could not open lease file: %s", lease_file6); ++ syslog(LOG_DEBUG, "could not open lease file: %s", lease_file6); + return -1; + } + if(unlink(lease_file6) < 0) { +@@ -491,13 +491,13 @@ int reload_from_lease_file6(void) + proto = line; + p = strchr(line, ';'); + if(!p) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p++) = '\0'; + p2 = strchr(p, ';'); + if(!p2) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p2++) = '\0'; +@@ -505,13 +505,13 @@ int reload_from_lease_file6(void) + int_client = p; + p = strchr(p2, ';'); + if(!p) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p++) = '\0'; + p2 = strchr(p, ';'); + if(!p2) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p2++) = '\0'; +@@ -519,20 +519,20 @@ int reload_from_lease_file6(void) + rem_client = p; + p = strchr(p2, ';'); + if(!p) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p++) = '\0'; + p2 = strchr(p, ';'); + if(!p2) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p2++) = '\0'; + desc = strchr(p2, ';'); + uid = atoi(p); + if(!desc) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(desc++) = '\0'; +@@ -549,7 +549,7 @@ int reload_from_lease_file6(void) + + if(timestamp > 0) { + if(timestamp <= (unsigned int)current_unix_time) { +- syslog(LOG_NOTICE, "already expired lease in lease file"); ++ syslog(LOG_INFO, "already expired lease in lease file"); + continue; + } else { + leaseduration = timestamp - current_unix_time; +--- a/upnpredirect.c ++++ b/upnpredirect.c +@@ -66,7 +66,7 @@ lease_file_add(unsigned short eport, + + fd = fopen( lease_file, "a"); + if (fd==NULL) { +- syslog(LOG_ERR, "could not open lease file: %s", lease_file); ++ syslog(LOG_DEBUG, "could not open lease file: %s", lease_file); + return -1; + } + +@@ -168,7 +168,7 @@ int reload_from_lease_file(void) + if(!lease_file) return -1; + fd = fopen( lease_file, "r"); + if (fd==NULL) { +- syslog(LOG_ERR, "could not open lease file: %s", lease_file); ++ syslog(LOG_DEBUG, "could not open lease file: %s", lease_file); + return -1; + } + if(unlink(lease_file) < 0) { +@@ -184,33 +184,33 @@ int reload_from_lease_file(void) + proto = line; + p = strchr(line, ':'); + if(!p) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p++) = '\0'; + iaddr = strchr(p, ':'); + if(!iaddr) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(iaddr++) = '\0'; + eport = (unsigned short)atoi(p); + p = strchr(iaddr, ':'); + if(!p) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p++) = '\0'; + iport = (unsigned short)atoi(p); + p = strchr(p, ':'); + if(!p) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(p++) = '\0'; + desc = strchr(p, ':'); + if(!desc) { +- syslog(LOG_ERR, "unrecognized data in lease file"); ++ syslog(LOG_DEBUG, "unrecognized data in lease file"); + continue; + } + *(desc++) = '\0'; +@@ -231,7 +231,7 @@ int reload_from_lease_file(void) + timestamp += current_time; /* convert to our time */ + #else + if(timestamp <= (unsigned int)current_unix_time) { +- syslog(LOG_NOTICE, "already expired lease in lease file (%hu=>%s:%hu %s)", ++ syslog(LOG_INFO, "already expired lease in lease file (%hu=>%s:%hu %s)", + eport, iaddr, iport, proto); + continue; + } else { +@@ -391,7 +391,7 @@ upnp_redirect(const char * rhost, unsign + #endif /* CHECK_PORTINUSE */ + } else { + timestamp = (leaseduration > 0) ? upnp_time() + leaseduration : 0; +- syslog(LOG_INFO, "redirecting port %hu to %s:%hu protocol %s for: %s", ++ syslog(LOG_DEBUG, "redirecting port %hu to %s:%hu protocol %s for: %s", + eport, iaddr, iport, protocol, desc); + return upnp_redirect_internal(rhost, eport, iaddr, iport, proto, + desc, timestamp); +@@ -641,7 +641,7 @@ get_upnp_rules_state_list(int max_rules_ + { + if(tmp->to_remove) + { +- syslog(LOG_NOTICE, "remove port mapping %hu %s because it has expired", ++ syslog(LOG_INFO, "remove port mapping %hu %s because it has expired", + tmp->eport, proto_itoa(tmp->proto)); + _upnp_delete_redir(tmp->eport, tmp->proto); + *p = tmp->next; +--- a/upnpsoap.c ++++ b/upnpsoap.c +@@ -491,7 +491,7 @@ AddPortMapping(struct upnphttp * h, cons + } + else + { +- syslog(LOG_ERR, "Failed to convert hostname '%s' to ip address", int_ip); ++ syslog(LOG_INFO, "Failed to convert hostname '%s' to ip address", int_ip); + ClearNameValueList(&data); + SoapError(h, 402, "Invalid Args"); + return; +@@ -690,7 +690,7 @@ AddAnyPortMapping(struct upnphttp * h, c + } + else + { +- syslog(LOG_ERR, "Failed to convert hostname '%s' to ip address", int_ip); ++ syslog(LOG_INFO, "Failed to convert hostname '%s' to ip address", int_ip); + ClearNameValueList(&data); + SoapError(h, 402, "Invalid Args"); + return; +@@ -847,7 +847,7 @@ GetSpecificPortMappingEntry(struct upnph + } + else + { +- syslog(LOG_INFO, "%s: rhost='%s' %s %s found => %s:%u desc='%s' duration=%u", ++ syslog(LOG_DEBUG, "%s: rhost='%s' %s %s found => %s:%u desc='%s' duration=%u", + action, + r_host ? r_host : "NULL", ext_port, protocol, int_ip, + (unsigned int)iport, desc, leaseduration); +@@ -931,7 +931,7 @@ DeletePortMapping(struct upnphttp * h, c + return; + } + +- syslog(LOG_INFO, "%s: external port: %hu, protocol: %s", ++ syslog(LOG_DEBUG, "%s: external port: %hu, protocol: %s", + action, eport, protocol); + + /* if in secure mode, check the IP +@@ -1047,7 +1047,7 @@ DeletePortMappingRange(struct upnphttp * + for(i = 0; i < number; i++) + { + r = upnp_delete_redirection(port_list[i], protocol); +- syslog(LOG_INFO, "%s: deleting external port: %hu, protocol: %s: %s", ++ syslog(LOG_DEBUG, "%s: deleting external port: %hu, protocol: %s: %s", + action, port_list[i], protocol, r < 0 ? "failed" : "ok"); + } + free(port_list); +@@ -1112,7 +1112,7 @@ GetGenericPortMappingEntry(struct upnpht + return; + } + +- syslog(LOG_INFO, "%s: index=%d", action, (int)index); ++ syslog(LOG_DEBUG, "%s: index=%d", action, (int)index); + + rhost[0] = '\0'; + r = upnp_get_redirection_infos_by_index((int)index, &eport, protocol, &iport, +@@ -1635,7 +1635,7 @@ PinholeVerification(struct upnphttp * h, + int r; + struct addrinfo hints, *ai, *p; + +- syslog(LOG_INFO, "%s: InternalClient %s is not an IPv6, assume hostname and convert", ++ syslog(LOG_DEBUG, "%s: InternalClient %s is not an IPv6, assume hostname and convert", + "PinholeVerification", int_ip); + + memset(&hints, 0, sizeof(hints)); +@@ -1655,8 +1655,8 @@ PinholeVerification(struct upnphttp * h, + { + result_ip = ((struct sockaddr_in6 *)p->ai_addr)->sin6_addr; + if (inet_ntop(AF_INET6, &result_ip, int_ip, sizeof(struct in6_addr)) == NULL) +- syslog(LOG_WARNING, "%s: inet_ntop(): %m", "PinholeVerification"); +- syslog(LOG_INFO, "%s: InternalClient resolved as %s", ++ syslog(LOG_DEBUG, "%s: inet_ntop(): %m", "PinholeVerification"); ++ syslog(LOG_DEBUG, "%s: InternalClient resolved as %s", + "PinholeVerification", int_ip); + found = 1; + } +@@ -1672,7 +1672,7 @@ PinholeVerification(struct upnphttp * h, + freeaddrinfo(ai); + if (!found) + { +- syslog(LOG_NOTICE, "%s: No IPv6 address for hostname '%s'", ++ syslog(LOG_INFO, "%s: No IPv6 address for hostname '%s'", + "PinholeVerification", int_ip); + SoapError(h, 402, "Invalid Args"); + return -1; +@@ -1680,7 +1680,7 @@ PinholeVerification(struct upnphttp * h, + } + else + { +- syslog(LOG_WARNING, "%s: Failed to convert hostname '%s' to IP address : %s", ++ syslog(LOG_INFO, "%s: Failed to convert hostname '%s' to IP address : %s", + "PinholeVerification", int_ip, gai_strerror(r)); + SoapError(h, 402, "Invalid Args"); + return -1; +@@ -1813,7 +1813,7 @@ AddPinhole(struct upnphttp * h, const ch + inet_ntop(AF_INET6, + &(((struct sockaddr_in6 *)p->ai_addr)->sin6_addr), + rem_ip, sizeof(rem_ip)); +- syslog(LOG_INFO, "resolved '%s' to '%s'", rem_host, rem_ip); ++ syslog(LOG_DEBUG, "resolved '%s' to '%s'", rem_host, rem_ip); + rem_host = rem_ip; + break; + } +@@ -1822,7 +1822,7 @@ AddPinhole(struct upnphttp * h, const ch + } + else + { +- syslog(LOG_WARNING, "AddPinhole : getaddrinfo(%s) : %s", ++ syslog(LOG_INFO, "AddPinhole : getaddrinfo(%s) : %s", + rem_host, gai_strerror(err)); + #if 0 + SoapError(h, 402, "Invalid Args"); +@@ -2481,7 +2481,7 @@ SoapError(struct upnphttp * h, int errCo + char body[2048]; + int bodylen; + +- syslog(LOG_INFO, "Returning UPnPError %d: %s", errCode, errDesc); ++ syslog(LOG_DEBUG, "Returning UPnPError %d: %s", errCode, errDesc); + bodylen = snprintf(body, sizeof(body), resp, errCode, errDesc); + BuildResp2_upnphttp(h, 500, "Internal Server Error", body, bodylen); + SendRespAndClose_upnphttp(h); diff --git a/miniupnpd/patches/900-miniupnpd-format-xml-to-make-some-app-happy.patch b/miniupnpd/patches/900-miniupnpd-format-xml-to-make-some-app-happy.patch deleted file mode 100644 index 579d106be..000000000 --- a/miniupnpd/patches/900-miniupnpd-format-xml-to-make-some-app-happy.patch +++ /dev/null @@ -1,608 +0,0 @@ -From 7651a23732d234f97137ca160a0c157eaed43ae8 Mon Sep 17 00:00:00 2001 -From: Chen Minqiang -Date: Wed, 29 Sep 2021 22:29:53 +0800 -Subject: [PATCH] miniupnpd: format xml to make some app happy - -Server-U - -Signed-off-by: Chen Minqiang ---- - upnpdescgen.c | 6 + - upnpsoap.c | 302 ++++++++++++++++++++-------------------- - 2 files changed, 157 insertions(+), 151 deletions(-) - ---- a/upnpdescgen.c -+++ b/upnpdescgen.c -@@ -947,6 +947,8 @@ genXML(char * str, int * len, int * tmpl - str = strcat_char(str, len, tmplen, '<'); - str = strcat_str(str, len, tmplen, eltname); - str = strcat_char(str, len, tmplen, '>'); -+ str = strcat_char(str, len, tmplen, '\r'); -+ str = strcat_char(str, len, tmplen, '\n'); - } - #ifdef IGD_V2 - unstack: -@@ -967,6 +969,8 @@ unstack: - for(c = *s; c > ' '; c = *(++s)) - str = strcat_char(str, len, tmplen, c); - str = strcat_char(str, len, tmplen, '>'); -+ str = strcat_char(str, len, tmplen, '\r'); -+ str = strcat_char(str, len, tmplen, '\n'); - top--; - } - else -@@ -996,6 +1000,8 @@ unstack: - str = strcat_str(str, len, tmplen, configid_str); - } - str = strcat_char(str, len, tmplen, '>'); -+ str = strcat_char(str, len, tmplen, '\r'); -+ str = strcat_char(str, len, tmplen, '\n'); - i = k & 0xffff; - j = i + (k >> 16); - if(top < (GENXML_STACK_SIZE - 1)) { ---- a/upnpsoap.c -+++ b/upnpsoap.c -@@ -75,11 +75,11 @@ BuildSendAndCloseSoapResp(struct upnphtt - static const char beforebody[] = - "\r\n" - "" -- ""; -+ "s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\r\n" -+ "\r\n"; - - static const char afterbody[] = -- "" -+ "\r\n" - "\r\n"; - - int r = BuildHeader_upnphttp(h, 200, "OK", sizeof(beforebody) - 1 -@@ -107,17 +107,17 @@ GetConnectionTypeInfo(struct upnphttp * - #if 0 - static const char resp[] = - "" -- "IP_Routed" -- "IP_Routed" -- ""; -+ "xmlns:u=\"" SERVICE_TYPE_WANIPC "\">\r\n" -+ "IP_Routed\r\n" -+ "IP_Routed\r\n" -+ "\r\n"; - #endif - static const char resp[] = - "" -- "IP_Routed" -- "IP_Routed" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "IP_Routed\r\n" -+ "IP_Routed\r\n" -+ "\r\n"; - char body[512]; - int bodylen; - -@@ -136,9 +136,9 @@ GetTotalBytesSent(struct upnphttp * h, c - - static const char resp[] = - "" -- "%lu" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%lu\r\n" -+ "\r\n"; - - char body[512]; - int bodylen; -@@ -162,9 +162,9 @@ GetTotalBytesReceived(struct upnphttp * - - static const char resp[] = - "" -- "%lu" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%lu\r\n" -+ "\r\n"; - - char body[512]; - int bodylen; -@@ -193,9 +193,9 @@ GetTotalPacketsSent(struct upnphttp * h, - - static const char resp[] = - "" -- "%lu" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%lu\r\n" -+ "\r\n"; - - char body[512]; - int bodylen; -@@ -219,9 +219,9 @@ GetTotalPacketsReceived(struct upnphttp - - static const char resp[] = - "" -- "%lu" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%lu\r\n" -+ "\r\n"; - - char body[512]; - int bodylen; -@@ -245,12 +245,12 @@ GetCommonLinkProperties(struct upnphttp - * DSL, POTS (plain old Telephone service), Cable, Ethernet */ - static const char resp[] = - "" -- "%s" -- "%lu" -- "%lu" -- "%s" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%s\r\n" -+ "%lu\r\n" -+ "%lu\r\n" -+ "%s\r\n" -+ "\r\n"; - - char body[2048]; - int bodylen; -@@ -284,11 +284,11 @@ GetStatusInfo(struct upnphttp * h, const - { - static const char resp[] = - "" -- "%s" -- "ERROR_NONE" -- "%ld" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%s\r\n" -+ "ERROR_NONE\r\n" -+ "%ld\r\n" -+ "\r\n"; - - char body[512]; - int bodylen; -@@ -312,18 +312,18 @@ GetNATRSIPStatus(struct upnphttp * h, co - #if 0 - static const char resp[] = - "" -- "0" -- "1" -- ""; -+ "xmlns:u=\"" SERVICE_TYPE_WANIPC "\">\r\n" -+ "0\r\n" -+ "1\r\n" -+ "\r\n"; - UNUSED(action); - #endif - static const char resp[] = - "" -- "0" -- "1" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "0\r\n" -+ "1\r\n" -+ "\r\n"; - char body[512]; - int bodylen; - /* 2.2.9. RSIPAvailable -@@ -345,9 +345,9 @@ GetExternalIPAddress(struct upnphttp * h - { - static const char resp[] = - "" -- "%s" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%s\r\n" -+ "\r\n"; - - char body[512]; - int bodylen; -@@ -417,10 +417,10 @@ AddPortMapping(struct upnphttp * h, cons - - /*static const char resp[] = - "";*/ -+ "xmlns:u=\"" SERVICE_TYPE_WANIPC "\"/>\r\n";*/ - static const char resp[] = - ""; -+ "xmlns:u=\"%s\"/>\r\n"; - - char body[512]; - int bodylen; -@@ -614,9 +614,9 @@ AddAnyPortMapping(struct upnphttp * h, c - int r; - static const char resp[] = - "" -- "%hu" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%hu\r\n" -+ "\r\n"; - - char body[512]; - int bodylen; -@@ -780,13 +780,13 @@ GetSpecificPortMappingEntry(struct upnph - - static const char resp[] = - "" -- "%u" -- "%s" -- "1" -- "%s" -- "%u" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%u\r\n" -+ "%s\r\n" -+ "1\r\n" -+ "%s\r\n" -+ "%u\r\n" -+ "\r\n"; - - char body[1024]; - int bodylen; -@@ -871,12 +871,12 @@ DeletePortMapping(struct upnphttp * h, c - - /*static const char resp[] = - "" -- "";*/ -+ "xmlns:u=\"" SERVICE_TYPE_WANIPC "\">\r\n" -+ "\r\n";*/ - static const char resp[] = - "" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "\r\n"; - - char body[512]; - int bodylen; -@@ -981,12 +981,12 @@ DeletePortMappingRange(struct upnphttp * - int r = -1; - /*static const char resp[] = - "" -- "";*/ -+ "xmlns:u=\"" SERVICE_TYPE_WANIPC "\">\r\n" -+ "\r\n";*/ - static const char resp[] = - "" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "\r\n"; - char body[512]; - int bodylen; - struct NameValueParserData data; -@@ -1057,16 +1057,16 @@ GetGenericPortMappingEntry(struct upnpht - - static const char resp[] = - "" -- "%s" -- "%u" -- "%s" -- "%u" -- "%s" -- "1" -- "%s" -- "%u" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%s\r\n" -+ "%u\r\n" -+ "%s\r\n" -+ "%u\r\n" -+ "%s\r\n" -+ "1\r\n" -+ "%s\r\n" -+ "%u\r\n" -+ "\r\n"; - - long int index = 0; - unsigned short eport, iport; -@@ -1140,31 +1140,31 @@ GetListOfPortMappings(struct upnphttp * - { - static const char resp_start[] = - "" -+ "xmlns:u=\"%s\">\r\n" - "" -- ""; -+ "]]>\r\n" -+ "\r\n"; - - static const char list_start[] = - ""; -+ " http://www.upnp.org/schemas/gw/WANIPConnection-v2.xsd\">\r\n"; - static const char list_end[] = -- ""; -+ "\r\n"; - - static const char entry[] = -- "" -- "%s" -- "%hu" -- "%s" -- "%hu" -- "%s" -- "1" -- "%s" -- "%u" -- ""; -+ "\r\n" -+ "%s\r\n" -+ "%hu\r\n" -+ "%s\r\n" -+ "%hu\r\n" -+ "%s\r\n" -+ "1\r\n" -+ "%s\r\n" -+ "%u\r\n" -+ "\r\n"; - - char * body; - size_t bodyalloc; -@@ -1322,12 +1322,12 @@ SetDefaultConnectionService(struct upnph - { - /*static const char resp[] = - "" -- "";*/ -+ "xmlns:u=\"urn:schemas-upnp-org:service:Layer3Forwarding:1\">\r\n" -+ "\r\n";*/ - static const char resp[] = - "" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "\r\n"; - char body[512]; - int bodylen; - struct NameValueParserData data; -@@ -1365,14 +1365,14 @@ GetDefaultConnectionService(struct upnph - { - static const char resp[] = - "" -+ "xmlns:u=\"%s\">\r\n" - #ifdef IGD_V2 - "%s:WANConnectionDevice:2," - #else - "%s:WANConnectionDevice:1," - #endif -- SERVICE_ID_WANIPC "" -- ""; -+ SERVICE_ID_WANIPC "\r\n" -+ "\r\n"; - /* example from UPnP_IGD_Layer3Forwarding 1.0.pdf : - * uuid:44f5824f-c57d-418c-a131-f22b34e14111:WANConnectionDevice:1, - * urn:upnp-org:serviceId:WANPPPConn1 */ -@@ -1443,9 +1443,9 @@ QueryStateVariable(struct upnphttp * h, - { - static const char resp[] = - "" -- "%s" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%s\r\n" -+ "\r\n"; - - char body[512]; - int bodylen; -@@ -1515,10 +1515,10 @@ GetFirewallStatus(struct upnphttp * h, c - { - static const char resp[] = - "" -- "%d" -- "%d" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%d\r\n" -+ "%d\r\n" -+ "\r\n"; - - char body[512]; - int bodylen; -@@ -1709,9 +1709,9 @@ AddPinhole(struct upnphttp * h, const ch - int r; - static const char resp[] = - "" -- "%d" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%d\r\n" -+ "\r\n"; - char body[512]; - int bodylen; - struct NameValueParserData data; -@@ -1885,13 +1885,13 @@ UpdatePinhole(struct upnphttp * h, const - #if 0 - static const char resp[] = - "" -- ""; -+ "xmlns:u=\"urn:schemas-upnp-org:service:WANIPv6FirewallControl:1\">\r\n" -+ "\r\n"; - #endif - static const char resp[] = - "" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "\r\n"; - char body[512]; - int bodylen; - struct NameValueParserData data; -@@ -1963,9 +1963,9 @@ GetOutboundPinholeTimeout(struct upnphtt - - static const char resp[] = - "" -- "%d" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%d\r\n" -+ "\r\n"; - - char body[512]; - int bodylen; -@@ -2028,13 +2028,13 @@ DeletePinhole(struct upnphttp * h, const - #if 0 - static const char resp[] = - "" -- ""; -+ "xmlns:u=\"urn:schemas-upnp-org:service:WANIPv6FirewallControl:1\">\r\n" -+ "\r\n"; - #endif - static const char resp[] = - "" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "\r\n"; - char body[512]; - int bodylen; - -@@ -2103,9 +2103,9 @@ CheckPinholeWorking(struct upnphttp * h, - { - static const char resp[] = - "" -- "%d" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%d\r\n" -+ "\r\n"; - char body[512]; - int bodylen; - int r; -@@ -2163,9 +2163,9 @@ GetPinholePackets(struct upnphttp * h, c - { - static const char resp[] = - "" -- "%u" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%u\r\n" -+ "\r\n"; - char body[512]; - int bodylen; - struct NameValueParserData data; -@@ -2224,9 +2224,9 @@ SendSetupMessage(struct upnphttp * h, co - { - static const char resp[] = - "" -- "%s" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%s\r\n" -+ "\r\n"; - char body[1024]; - int bodylen; - struct NameValueParserData data; -@@ -2265,9 +2265,9 @@ GetSupportedProtocols(struct upnphttp * - { - static const char resp[] = - "" -- "" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "\r\n" -+ "\r\n"; - char body[1024]; - int bodylen; - const char * ProtocolList = -@@ -2275,10 +2275,10 @@ GetSupportedProtocols(struct upnphttp * - "" -- "WPS" -- "PKCS5" -- ""; -+ " http://www.upnp.org/schemas/gw/DeviceProtection-v1.xsd\">\r\n" -+ "WPS\r\n" -+ "PKCS5\r\n" -+ "\r\n"; - - bodylen = snprintf(body, sizeof(body), resp, - action, ns/*"urn:schemas-upnp-org:service:DeviceProtection:1"*/, -@@ -2291,9 +2291,9 @@ GetAssignedRoles(struct upnphttp * h, co - { - static const char resp[] = - "" -- "%s" -- ""; -+ "xmlns:u=\"%s\">\r\n" -+ "%s\r\n" -+ "\r\n"; - char body[1024]; - int bodylen; - const char * RoleList = "Public"; /* list of roles separated by spaces */ -@@ -2447,20 +2447,20 @@ SoapError(struct upnphttp * h, int errCo - static const char resp[] = - "" -- "" -- "" -- "s:Client" -- "UPnPError" -- "" -- "" -- "%d" -- "%s" -- "" -- "" -- "" -- "" -- ""; -+ "s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\r\n" -+ "\r\n" -+ "\r\n" -+ "s:Client\r\n" -+ "UPnPError\r\n" -+ "\r\n" -+ "\r\n" -+ "%d\r\n" -+ "%s\r\n" -+ "\r\n" -+ "\r\n" -+ "\r\n" -+ "\r\n" -+ "\r\n"; - - char body[2048]; - int bodylen;