openwrt-18.06: merge master
authorJo-Philipp Wich <jo@mein.io>
Fri, 13 Jul 2018 15:02:22 +0000 (17:02 +0200)
committerJo-Philipp Wich <jo@mein.io>
Fri, 13 Jul 2018 15:22:53 +0000 (17:22 +0200)
Due to a huge number of fixes and diverging development histories, I decided
to completely merge the current LuCI master into the 18.06 release branch to
have a common code base for upcoming maintenance releases.

Some LuCI apps have minor style glitches yet but I do not deem them to be
release critical as non-default components need to be opkg-installed anyway
and the package repositories are continuously refreshed, so we do not need
to fix everything for OpenWrt 18.06.0-rc2.

The most important changes introduced by this merge are:

1) New HTTP handling library in C

  The new library should vastly reduce the required RAM for processing
  large POST bodies while implementing some slightly more strict parsing
  logic.

2) Apply/Rollback workflow

  The ubus rpcd based apply/rollback handling will automatically revert
  config changes if access to the device is lost for a certain period
  of time, this is mainly intended for preventing issues with bad
  config settings and the like.

  The feature is not 100% error-proof yet but it successfully prevents a
  large number of issues already. For final, the handling of the firewall
  conntrack cache needs to be fixed yet as adding "lockout" firewall rules
  is not yet catched due to the open HTTP session allowed by netfilter
  conntrack

3) Template markup and theme style modifications

  A large number of changes have been made to the markup in the various
  templates, mainly to allow for responsive styling of tables.

  The only theme currently making full use of that is the non-default
  OpenWrt theme which will break table rows into disjunct boxes on
  very narrow screens.

  The changes have been tested on IE 11, MS Edge, Firefox, Chrome, an
  iPhone 5s, iPhone 6 and iPad Air.

4) Initial LuCI support for displaying virtual dynamic network interfaces

  Some protocol handlers will spawn purely dynamic sub-interfaces which
  are not present in UCI. Such interfaces have been invisible in LuCI so
  far which caused confusion especialy wrt. missing IP addresses etc.

  LuCI will now display such dynamic interfaces on the interface overview.

5) Initial LuCI support for display interface runtime error information

  LuCI will now expose interface error information stored in the ubus
  runtime information by protocol handlers.

  This is mainly useful to get notified of low level problems like
  bad SIM codes are missing APN information.

6) Various XSS and CSRF bypass fixes

  A number of code places performing inadequate markup escaping have been
  fixed and the dispatcher CSRF token enforcement rules have been reworked
  to actually catch all POST security cases.

7) Initial support for running under nginx

  Various bugs have been fixed to allow LuCI to function under nginx using
  a FastCGI wrapper.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
70 files changed:
1  2 
applications/luci-app-adblock/po/it/adblock.po
applications/luci-app-adblock/po/ja/adblock.po
applications/luci-app-adblock/po/pt-br/adblock.po
applications/luci-app-adblock/po/ru/adblock.po
applications/luci-app-adblock/po/sv/adblock.po
applications/luci-app-adblock/po/templates/adblock.pot
applications/luci-app-adblock/po/zh-cn/adblock.po
applications/luci-app-adblock/po/zh-tw/adblock.po
applications/luci-app-ddns/Makefile
applications/luci-app-firewall/po/ca/firewall.po
applications/luci-app-firewall/po/cs/firewall.po
applications/luci-app-firewall/po/de/firewall.po
applications/luci-app-firewall/po/el/firewall.po
applications/luci-app-firewall/po/en/firewall.po
applications/luci-app-firewall/po/es/firewall.po
applications/luci-app-firewall/po/fr/firewall.po
applications/luci-app-firewall/po/he/firewall.po
applications/luci-app-firewall/po/hu/firewall.po
applications/luci-app-firewall/po/it/firewall.po
applications/luci-app-firewall/po/ja/firewall.po
applications/luci-app-firewall/po/ko/firewall.po
applications/luci-app-firewall/po/ms/firewall.po
applications/luci-app-firewall/po/no/firewall.po
applications/luci-app-firewall/po/pl/firewall.po
applications/luci-app-firewall/po/pt-br/firewall.po
applications/luci-app-firewall/po/pt/firewall.po
applications/luci-app-firewall/po/ro/firewall.po
applications/luci-app-firewall/po/ru/firewall.po
applications/luci-app-firewall/po/sk/firewall.po
applications/luci-app-firewall/po/sv/firewall.po
applications/luci-app-firewall/po/templates/firewall.pot
applications/luci-app-firewall/po/tr/firewall.po
applications/luci-app-firewall/po/uk/firewall.po
applications/luci-app-firewall/po/vi/firewall.po
applications/luci-app-firewall/po/zh-cn/firewall.po
applications/luci-app-firewall/po/zh-tw/firewall.po
applications/luci-app-mwan3/po/zh-cn/mwan3.po
applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
applications/luci-app-travelmate/po/ja/travelmate.po
applications/luci-app-travelmate/po/pt-br/travelmate.po
applications/luci-app-travelmate/po/ru/travelmate.po
applications/luci-app-travelmate/po/templates/travelmate.pot
applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua
modules/luci-base/po/ca/base.po
modules/luci-base/po/cs/base.po
modules/luci-base/po/de/base.po
modules/luci-base/po/el/base.po
modules/luci-base/po/en/base.po
modules/luci-base/po/es/base.po
modules/luci-base/po/fr/base.po
modules/luci-base/po/he/base.po
modules/luci-base/po/hu/base.po
modules/luci-base/po/it/base.po
modules/luci-base/po/ja/base.po
modules/luci-base/po/ko/base.po
modules/luci-base/po/ms/base.po
modules/luci-base/po/no/base.po
modules/luci-base/po/pl/base.po
modules/luci-base/po/pt-br/base.po
modules/luci-base/po/pt/base.po
modules/luci-base/po/ro/base.po
modules/luci-base/po/ru/base.po
modules/luci-base/po/sk/base.po
modules/luci-base/po/sv/base.po
modules/luci-base/po/templates/base.pot
modules/luci-base/po/tr/base.po
modules/luci-base/po/uk/base.po
modules/luci-base/po/vi/base.po
modules/luci-base/po/zh-cn/base.po
modules/luci-base/po/zh-tw/base.po

index a9a06ac99f23fac2649f2215769c500b426bdeff,c2db36effca6424ccf42d6891c2d42de0cf22d0d..df338483a2468b9ed5fbab58b30f41ed6160fb73
@@@ -49,12 -52,12 +49,10 @@@ msgstr "
  msgid "Blocklist Sources"
  msgstr "Fonti lista di Blocco"
  
- msgid ""
- "Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
- "domains except those listed in the whitelist file.<br />"
+ msgid "Blocklist not found!"
  msgstr ""
  
 -msgid ""
 -"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
 -"domains except those listed in the whitelist file.<br />"
 +msgid "Categories"
  msgstr ""
  
  msgid ""
index 2ce6d803e1398c09f9a0b8e2bec1372c60aa6c98,07d0f9a8d294b8c15dd36960e945f95bfb28f9b0..e11143b5e3b9c92df9abb62b7749dfba0f9a13be
@@@ -52,12 -55,12 +52,10 @@@ msgstr "
  msgid "Blocklist Sources"
  msgstr "Fontes de listas de bloqueio"
  
- msgid ""
- "Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
- "domains except those listed in the whitelist file.<br />"
+ msgid "Blocklist not found!"
  msgstr ""
  
 -msgid ""
 -"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
 -"domains except those listed in the whitelist file.<br />"
 +msgid "Categories"
  msgstr ""
  
  msgid ""
index 3c5eeee9465e77c9a53b0f181e8de4db8fc6931f,4a7ca4b738594e0cc2f148ed6e247654ddf60a7a..7dc710e9ec229bce80a7bbc895b005d204053d1e
@@@ -39,12 -42,12 +39,10 @@@ msgstr "
  msgid "Blocklist Sources"
  msgstr "Källor för blockeringslistor"
  
- msgid ""
- "Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
- "domains except those listed in the whitelist file.<br />"
+ msgid "Blocklist not found!"
  msgstr ""
  
 -msgid ""
 -"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
 -"domains except those listed in the whitelist file.<br />"
 +msgid "Categories"
  msgstr ""
  
  msgid ""
index c26547d4fb3d56859446fe2cf21fa7fb63243f26,a375d0edb61c821354b3a0670da289f45ed0d7f7..b1bbe60b1b7b95e2dcbd59fde322fa42638be5b4
@@@ -39,12 -42,12 +39,10 @@@ msgstr "
  msgid "Blocklist Sources"
  msgstr ""
  
- msgid ""
- "Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
- "domains except those listed in the whitelist file.<br />"
+ msgid "Blocklist not found!"
  msgstr ""
  
 -msgid ""
 -"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
 -"domains except those listed in the whitelist file.<br />"
 +msgid "Categories"
  msgstr ""
  
  msgid ""
index 2169cd1805e7f2dcbc211910280c50632b3885b3,408d04055cbf21e7bf5cc874c1baf9d65aaa0ef0..d0a5e5b077fdd57a8799ca6b7d542dd6595da88b
@@@ -53,12 -57,12 +53,10 @@@ msgstr "备份模式
  msgid "Blocklist Sources"
  msgstr "拦截列表来源"
  
- msgid ""
- "Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
- "domains except those listed in the whitelist file.<br />"
+ msgid "Blocklist not found!"
  msgstr ""
  
 -msgid ""
 -"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
 -"domains except those listed in the whitelist file.<br />"
 +msgid "Categories"
  msgstr ""
  
  msgid ""
@@@ -350,12 -365,18 +358,23 @@@ msgid "paused
  msgstr "已暂停"
  
  msgid "running"
- msgstr ""
+ msgstr "运行中"
+ #~ msgid "Invalid domain specified!"
+ #~ msgstr "无效域名!"
+ #~ msgid "Available blocklist sources."
+ #~ msgstr "可用的 blocklist 来源。"
+ #~ msgid ""
+ #~ "List URLs and Shallalist category selections are configurable in the "
+ #~ "'Advanced' section.<br />"
+ #~ msgstr "列表 URL 和 Shallalist 类别选择可在“高级”选项卡中配置。<br />"
  
 -#~ msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
 -#~ msgstr "文件大小太大,无法在 LuCI(&gt; 512 KB)中进行在线编辑。"
 +#~ msgid "Available blocklist sources."
 +#~ msgstr "可用的 blocklist 来源。"
 +
 +#~ msgid ""
 +#~ "List URLs and Shallalist category selections are configurable in the "
 +#~ "'Advanced' section.<br />"
 +#~ msgstr "列表 URL 和 Shallalist 类别选择可在“高级”选项卡中配置。<br />"
index e5a35ad0b766ad96cfea77f52591a82a5d8534f7,45b19cdc80f75cf5139c432d638342ccfce7ba26..e94d8515834bf406920633b354baa8f432a96c72
@@@ -53,12 -56,12 +53,10 @@@ msgstr "
  msgid "Blocklist Sources"
  msgstr "攔截列表來源"
  
- msgid ""
- "Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
- "domains except those listed in the whitelist file.<br />"
+ msgid "Blocklist not found!"
  msgstr ""
  
 -msgid ""
 -"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
 -"domains except those listed in the whitelist file.<br />"
 +msgid "Categories"
  msgstr ""
  
  msgid ""
index bd6ddeb1b354c4f260b3d87e303c6f3da9ecd72e,72951895187a83e39b37e7688bc6da8bf5ec11c3..6ac1885bade720a0d39928c2cbbf05a2036bb6bf
@@@ -16,10 -16,11 +16,11 @@@ PKG_VERSION:=2.4.
  
  # Release == build
  # increase on changes of translation files
 -PKG_RELEASE:=5
 +PKG_RELEASE:=3
  
  PKG_LICENSE:=Apache-2.0
- PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
+ PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>, \
+                               Ansuel Smith <ansuelsmth@gmail.com>
  
  # LuCI specific settings
  LUCI_TITLE:=LuCI Support for Dynamic DNS Client (ddns-scripts)
index 86ff65edf1114754e6966c1d34ba407eb5965b4d,0ed90d9fcb8777efb3c9e48dc2bb51569cff949a..d127f871a92140f5851ec7a4f65352b19ab16898
@@@ -182,16 -199,16 +199,16 @@@ msgid "General Settings
  msgstr "Загальні настройки"
  
  msgid "Hardware flow offloading"
 -msgstr "Апаратні засоби розвантаження потоку"
 +msgstr ""
  
  msgid "IP"
- msgstr ""
+ msgstr "IP-адреса"
  
  msgid "IP range"
- msgstr ""
+ msgstr "Діапазон IP"
  
  msgid "IPs"
- msgstr ""
+ msgstr "IP-адреси"
  
  msgid "IPv4"
  msgstr "IPv4"
@@@ -338,16 -358,19 +358,22 @@@ msgid "Redirect matched incoming traffi
  msgstr "Переспрямувати відповідний вхідний трафік на заданий внутрішній вузол"
  
  msgid "Refuse forward"
- msgstr ""
+ msgstr "Відхиляти переспрямовування"
  
  msgid "Refuse input"
- msgstr ""
+ msgstr "Відхиляти вхідний"
+ msgid "Refuse output"
+ msgstr "Відхиляти вихідний"
+ msgid "Requires hardware NAT support. Implemented at least for mt7621"
+ msgstr "Необхідна апаратна підтримка NAT. Впроваджено принаймні для mt7621"
  
 +msgid "Requires hardware NAT support. Implemented at least for mt7621"
 +msgstr ""
 +
  msgid "Restart Firewall"
- msgstr ""
+ msgstr "Перезавантажити брандмауер"
  
  msgid "Restrict Masquerading to given destination subnets"
  msgstr "Обмежити підміну заданими підмережами призначення"
@@@ -369,19 -392,19 +395,22 @@@ msgstr "
  "порожнім, щоб переписувати тільки IP-адресу."
  
  msgid "Rewrite to source %s"
- msgstr "пеÑ\80езапиÑ\81 Ð½Ð° Ð²Ð¸Ñ\85Ñ\96дний %s"
+ msgstr "пеÑ\80езапиÑ\81 Ð½Ð° Ð´Ð¶ÐµÑ\80ело %s"
  
  msgid "Rewrite to source %s, %s"
- msgstr "перезапис на вихідний %s, %s"
+ msgstr "перезапис на джерело %s, %s"
+ msgid "Routing/NAT Offloading"
+ msgstr "Розвантаження маршрутизації/NAT"
  
 +msgid "Routing/NAT Offloading"
 +msgstr ""
 +
  msgid "Rule is disabled"
- msgstr ""
+ msgstr "Правило вимкнено"
  
  msgid "Rule is enabled"
- msgstr ""
+ msgstr "Правило ввімкнено"
  
  msgid "SNAT IP address"
  msgstr "IP-адреса SNAT"
@@@ -390,14 -413,14 +419,20 @@@ msgid "SNAT port
  msgstr "Порт SNAT"
  
  msgid "Saturday"
- msgstr ""
+ msgstr "Субота"
+ msgid "Software based offloading for routing/NAT"
+ msgstr "Програмне розвантаження для маршрутизації/NAT"
+ msgid "Software flow offloading"
+ msgstr "Програмне розвантаження потоку"
  
 +msgid "Software based offloading for routing/NAT"
 +msgstr ""
 +
 +msgid "Software flow offloading"
 +msgstr ""
 +
  msgid "Source IP address"
  msgstr "IP-адреса джерела"
  
index 75e52aeb27323d5b217ab48167a1a2a08a68a99b,74542a9ca5953e6e2ed8612a749d4dcb688fbe11..7a696445fec35ba5b5e732c207d7f2a9d2838637
@@@ -40,20 -41,18 +41,20 @@@ This is free software, licensed under t
          style = "text-align:left;color:#0069d6;font-weight:bold"
        end
  %>
 -    <div class="tr cbi-section-table-row cbi-rowstyle-1" style="<%=style%>">
 -      <div class="td" style="<%=style%>"><%=device%></div>
 -      <div class="td" style="<%=style%>"><%=ssid%></div>
 -      <div class="td" style="<%=style%>"><%=bssid%></div>
 -      <div class="td" style="<%=style%>"><%=encryption%></div>
 -      <div class="td cbi-section-actions">
 -        <input class="cbi-button cbi-button-up" type="button" value="<%:Up%>" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>&amp;dir=up'" alt="<%:Move up%>" title="<%:Move up%>"/>
 -        <input class="cbi-button cbi-button-down" type="button" value="<%:Down%>" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>&amp;dir=down'" alt="<%:Move down%>" title="<%:Move down%>"/>
 +    <tr class="cbi-section-table-row cbi-rowstyle-1" style="<%=style%>">
 +      <td style="<%=style%>"><%=device%></td>
 +      <td style="<%=style%>"><%=ssid%></td>
 +      <td style="<%=style%>"><%=bssid%></td>
 +      <td style="<%=style%>"><%=encryption%></td>
 +      <td class="cbi-value-field" style="width:80px">
 +        <input class="cbi-button cbi-button-up" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>&amp;dir=up'" alt="<%:Move up%>" title="<%:Move up%>"/>
 +        <input class="cbi-button cbi-button-down" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>&amp;dir=down'" alt="<%:Move down%>" title="<%:Move down%>"/>
 +      </td>
 +      <td class="cbi-value-field" style="width:150px">
          <input type="button" class="cbi-button cbi-button-edit" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiedit')%>?cfg=<%=section%>'" title="<%:Edit this Uplink%>" value="<%:Edit%>"/>
          <input type="button" class="cbi-button cbi-button-remove" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifidelete')%>?cfg=<%=section%>'" title="<%:Delete this Uplink%>" value="<%:Delete%>"/>
-       </td>
-     </tr>
+       </div>
+     </div>
  <%
      end
    end)
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index b985dc6d773e61f79fbecd036cdb84ecbe478ee7,e598e15a4028e8273a448db7dd4908d861298226..1b37b3829c43efb9ebb639884fa056dec77e2143
@@@ -1431,12 -1497,12 +1494,9 @@@ msgstr "IPv6 설정
  msgid "IPv6 ULA-Prefix"
  msgstr ""
  
- msgid "IPv6 WAN Status"
- msgstr "IPv6 WAN 상태"
- msgid "IPv6 address"
+ msgid "IPv6 Upstream"
  msgstr ""
  
 -msgid "IPv6 address"
 -msgstr ""
 -
  msgid "IPv6 assignment hint"
  msgstr ""
  
Simple merge
Simple merge
index 716191554ef0bb1fb9311f576f4cd01056304806,9a8e8ce5564f90bfdae4ab14e9178759b242c789..064f0bd03008029ef6c9f34f1379efc937c30342
@@@ -1841,9 -1910,12 +1898,12 @@@ msgstr "Średnie obciążenie
  msgid "Loading"
  msgstr "Ładowanie"
  
 -msgid "Local IP address is invalid"
 -msgstr ""
 +msgid "Local IP address to assign"
 +msgstr "Lokalny adres IP do przypisania"
  
+ msgid "Local IP address to assign"
+ msgstr "Lokalny adres IP do przypisania"
  msgid "Local IPv4 address"
  msgstr "Lokalny adres IPv4"
  
@@@ -2356,9 -2449,12 +2437,12 @@@ msgstr "PID
  msgid "PIN"
  msgstr "PIN"
  
 -msgid "PIN code rejected"
 -msgstr ""
 +msgid "PMK R1 Push"
 +msgstr "PMK R1 Push"
  
+ msgid "PMK R1 Push"
+ msgstr "PMK R1 Push"
  msgid "PPP"
  msgstr "PPP"
  
@@@ -2804,10 -2894,10 +2885,10 @@@ msgid "Route Allowed IPs
  msgstr ""
  
  msgid "Route type"
 -msgstr "Typ trasy"
 +msgstr ""
  
  msgid "Router Advertisement-Service"
- msgstr ""
+ msgstr "Serwis rozgłoszeniowy routera"
  
  msgid "Router Password"
  msgstr "Hasło routera"
@@@ -3414,10 -3517,12 +3508,11 @@@ msgstr "Strefa czasowa
  
  msgid ""
  "To restore configuration files, you can upload a previously generated backup "
- "archive here."
+ "archive here. To reset the firmware to its initial state, click \"Perform "
+ "reset\" (only possible with squashfs images)."
  msgstr ""
 -"Aby przywrócić pliki konfiguracyjne, możesz przesłać tutaj wcześniej "
 -"utworzoną kopię zapasową. Aby przywrócić ustawienia domyślne wciśnij "
 -"\"Wykonaj reset\" (możliwe tylko w przypadku obrazu squashfs)."
 +"Aby przywrócić pliki konfiguracyjne, możesz tutaj przesłać wcześniej "
 +"utworzoną kopię zapasową."
  
  msgid "Tone"
  msgstr ""
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 87fa6104e8b83428edcba44fb441aab59357464e,fe0e0f9f363a4a78ed0461f1f4c9a9dd0a2c5a6b..05d1b2bbde1f2c286c5d43068aade4b7dbf0c1be
@@@ -2688,28 -2772,28 +2769,28 @@@ msgid "
  msgstr ""
  
  msgid "Run a filesystem check before mounting the device"
- msgstr ""
+ msgstr "Cihazı bağlamadan önce bir dosya sistemi kontrolü yapın"
  
  msgid "Run filesystem check"
- msgstr ""
+ msgstr "Dosya sistemi kontrolünü çalıştır"
  
  msgid "SHA256"
 -msgstr "SHA256"
 +msgstr ""
  
  msgid "SNR"
- msgstr ""
+ msgstr "SNR"
  
  msgid "SSH Access"
- msgstr ""
+ msgstr "SSH Erişimi"
  
  msgid "SSH server address"
- msgstr ""
+ msgstr "SSH sunucu adresi"
  
  msgid "SSH server port"
- msgstr ""
+ msgstr "SSH sunucu portu"
  
  msgid "SSH username"
- msgstr ""
+ msgstr "SSH kullanıcı adı"
  
  msgid "SSH-Keys"
  msgstr ""
@@@ -2838,11 -2922,8 +2919,8 @@@ msgid "
  "instructions."
  msgstr ""
  
- msgid "Sort"
- msgstr ""
  msgid "Source"
 -msgstr "Kaynak"
 +msgstr ""
  
  msgid "Specifies the directory the device is attached to"
  msgstr ""
index b5a43d3359c96a7c4d00eef39c5fcac3c12967eb,acda5b6ba8fe3f053ca9598da5e3426d98754b53..a7e290005eac0205151fd967c374c081860f9285
@@@ -329,10 -337,10 +337,10 @@@ msgstr "
  "наприклад, для RBL-послуг"
  
  msgid "Allowed IPs"
 -msgstr "Дозволено IP-адреси"
 +msgstr ""
  
  msgid "Always announce default router"
- msgstr ""
+ msgstr "Завжди оголошувати типовим маршрутизатором"
  
  msgid "Annex"
  msgstr ""
@@@ -514,10 -535,10 +535,10 @@@ msgid "Backup file list
  msgstr "Список файлів резервних копій"
  
  msgid "Bad address specified!"
- msgstr "Ð\92казана Ð½ÐµÐ¿Ñ\80авилÑ\8cна Ð°Ð´Ñ\80еÑ\81а!"
+ msgstr "Ð\92казано Ð½ÐµÐ¿Ñ\80авилÑ\8cнÑ\83 Ð°Ð´Ñ\80еÑ\81Ñ\83!"
  
  msgid "Band"
 -msgstr "Група"
 +msgstr ""
  
  msgid ""
  "Below is the determined list of files to backup. It consists of changed "
@@@ -2050,31 -2186,31 +2183,31 @@@ msgid "NAS ID
  msgstr "Ідентифікатор NAS"
  
  msgid "NAT-T Mode"
- msgstr ""
+ msgstr "Режим NAT-T"
  
  msgid "NAT64 Prefix"
- msgstr ""
+ msgstr "Префікс NAT64"
  
  msgid "NCM"
- msgstr ""
+ msgstr "NCM"
  
  msgid "NDP-Proxy"
- msgstr ""
+ msgstr "NDP-проксі"
  
  msgid "NT Domain"
- msgstr ""
+ msgstr "Домен NT"
  
  msgid "NTP server candidates"
 -msgstr "Кандидати для синхронізації сервера NTP"
 +msgstr "Кандидати для синхронізації NTP-сервера"
  
  msgid "Name"
- msgstr "Ім'я"
+ msgstr "Імя"
  
  msgid "Name of the new interface"
- msgstr "Ім'я нового інтерфейсу"
+ msgstr "Імя нового інтерфейсу"
  
  msgid "Name of the new network"
- msgstr "Назва (ім'я) нової мережі"
+ msgstr "Назва (імя) нової мережі"
  
  msgid "Navigation"
  msgstr "Навігація"
@@@ -2185,14 -2327,14 +2324,17 @@@ msgid "OPKG-Configuration
  msgstr "Конфігурація OPKG"
  
  msgid "Obfuscated Group Password"
- msgstr ""
+ msgstr "Обфусований груповий пароль"
  
  msgid "Obfuscated Password"
- msgstr ""
+ msgstr "Обфусований пароль"
+ msgid "Obtain IPv6-Address"
+ msgstr "Отримати IPv6-адресу"
  
 +msgid "Obtain IPv6-Address"
 +msgstr ""
 +
  msgid "Off-State Delay"
  msgstr "Затримка Off-State"
  
@@@ -2720,13 -2862,13 +2862,13 @@@ msgid "Replace wireless configuration
  msgstr "Замінити конфігурацію бездротової мережі"
  
  msgid "Request IPv6-address"
- msgstr ""
+ msgstr "Запит IPv6-адреси"
  
  msgid "Request IPv6-prefix of length"
 -msgstr "Запит довжини IPv6-префіксу"
 +msgstr ""
  
  msgid "Required"
- msgstr ""
+ msgstr "Потрібно"
  
  msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
  msgstr "Потрібно для деяких провайдерів, наприклад, Charter із DOCSIS 3"
@@@ -2790,16 -2949,16 +2949,16 @@@ msgid "Root directory for files served 
  msgstr "Кореневий каталог для файлів TFTP"
  
  msgid "Root preparation"
- msgstr ""
+ msgstr "Підготовка Root"
  
  msgid "Route Allowed IPs"
- msgstr ""
+ msgstr "Маршрутизація дозволених IP-адрес"
  
  msgid "Route type"
 -msgstr "Тип маршруту"
 +msgstr ""
  
  msgid "Router Advertisement-Service"
- msgstr ""
+ msgstr "Служба оголошень маршрутизатора"
  
  msgid "Router Password"
  msgstr "Пароль маршрутизатора"
@@@ -2879,10 -3035,10 +3035,10 @@@ msgid "Separate Clients
  msgstr "Розділяти клієнтів"
  
  msgid "Server Settings"
 -msgstr "Налаштування сервера"
 +msgstr "Настройки сервера"
  
  msgid "Service Name"
- msgstr "Назва (ім'я) сервісу"
+ msgstr "Назва (імя) сервісу"
  
  msgid "Service Type"
  msgstr "Тип сервісу"
@@@ -3675,12 -3901,13 +3901,12 @@@ msgid "
  "When using a PSK, the PMK can be generated locally without inter AP "
  "communications"
  msgstr ""
 -"При використанні PSK, PMK може бути створений локально без взаємодії між AP"
  
  msgid "Width"
- msgstr ""
+ msgstr "Ширина"
  
  msgid "WireGuard VPN"
- msgstr ""
+ msgstr "WireGuard VPN"
  
  msgid "Wireless"
  msgstr "Бездротові мережі"
Simple merge
Simple merge
Simple merge