summaryrefslogtreecommitdiffhomepage
path: root/applications
diff options
context:
space:
mode:
Diffstat (limited to 'applications')
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua2
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm48
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/query.htm2
-rw-r--r--applications/luci-app-adblock/po/it/adblock.po61
-rw-r--r--applications/luci-app-adblock/po/ja/adblock.po63
-rw-r--r--applications/luci-app-adblock/po/pt-br/adblock.po51
-rw-r--r--applications/luci-app-adblock/po/ru/adblock.po89
-rw-r--r--applications/luci-app-adblock/po/sv/adblock.po55
-rw-r--r--applications/luci-app-adblock/po/templates/adblock.pot37
-rw-r--r--applications/luci-app-adblock/po/zh-cn/adblock.po101
-rw-r--r--applications/luci-app-adblock/po/zh-tw/adblock.po58
-rw-r--r--applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm56
-rw-r--r--applications/luci-app-ahcp/luasrc/view/ahcp_status.htm46
-rw-r--r--applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm60
-rw-r--r--applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm74
-rw-r--r--applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua16
-rw-r--r--applications/luci-app-ddns/Makefile5
-rwxr-xr-xapplications/luci-app-ddns/luasrc/controller/ddns.lua57
-rw-r--r--applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua96
-rw-r--r--applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua20
-rw-r--r--applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua17
-rwxr-xr-xapplications/luci-app-ddns/luasrc/tools/ddns.lua150
-rw-r--r--applications/luci-app-ddns/luasrc/view/ddns/system_status.htm101
-rw-r--r--applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua14
-rw-r--r--applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua11
-rw-r--r--applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua59
-rw-r--r--applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua46
-rw-r--r--applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua9
-rw-r--r--applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua28
-rw-r--r--applications/luci-app-firewall/luasrc/tools/firewall.lua14
-rw-r--r--applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm170
-rw-r--r--applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm197
-rw-r--r--applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm95
-rw-r--r--applications/luci-app-firewall/po/ca/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/cs/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/de/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/el/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/en/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/es/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/fr/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/he/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/hu/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/it/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/ja/firewall.po51
-rw-r--r--applications/luci-app-firewall/po/ko/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/ms/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/no/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/pl/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/pt-br/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/pt/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/ro/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/ru/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/sk/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/sv/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/templates/firewall.pot42
-rw-r--r--applications/luci-app-firewall/po/tr/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/uk/firewall.po188
-rw-r--r--applications/luci-app-firewall/po/vi/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/zh-cn/firewall.po42
-rw-r--r--applications/luci-app-firewall/po/zh-tw/firewall.po42
-rw-r--r--applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm33
-rw-r--r--applications/luci-app-mwan3/po/ja/mwan3.po378
-rw-r--r--applications/luci-app-mwan3/po/ru/mwan3.po15
-rw-r--r--applications/luci-app-mwan3/po/templates/mwan3.pot15
-rw-r--r--applications/luci-app-mwan3/po/zh-cn/mwan3.po74
-rw-r--r--applications/luci-app-mwan3/po/zh-tw/mwan3.po15
-rw-r--r--applications/luci-app-noddos/luasrc/view/noddos/clients.htm76
-rw-r--r--applications/luci-app-ocserv/luasrc/view/ocserv_status.htm83
-rw-r--r--applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm44
-rw-r--r--applications/luci-app-olsr/luasrc/view/status-olsr/hna.htm44
-rw-r--r--applications/luci-app-olsr/luasrc/view/status-olsr/interfaces.htm40
-rw-r--r--applications/luci-app-olsr/luasrc/view/status-olsr/mid.htm20
-rw-r--r--applications/luci-app-olsr/luasrc/view/status-olsr/neighbors.htm80
-rw-r--r--applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm40
-rw-r--r--applications/luci-app-olsr/luasrc/view/status-olsr/routes.htm58
-rw-r--r--applications/luci-app-olsr/luasrc/view/status-olsr/smartgw.htm84
-rw-r--r--applications/luci-app-olsr/luasrc/view/status-olsr/topology.htm36
-rw-r--r--applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua14
-rw-r--r--applications/luci-app-rp-pppoe-server/Makefile2
-rw-r--r--applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua4
-rw-r--r--applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm33
-rw-r--r--applications/luci-app-splash/luasrc/view/admin_status/splash.htm74
-rw-r--r--applications/luci-app-transmission/root/etc/uci-defaults/40_luci-transmission2
-rw-r--r--applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm4
-rw-r--r--applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm48
-rw-r--r--applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm52
-rw-r--r--applications/luci-app-travelmate/po/ja/travelmate.po49
-rw-r--r--applications/luci-app-travelmate/po/pt-br/travelmate.po14
-rw-r--r--applications/luci-app-travelmate/po/ru/travelmate.po33
-rw-r--r--applications/luci-app-travelmate/po/templates/travelmate.pot14
-rw-r--r--applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua48
-rw-r--r--applications/luci-app-upnp/luasrc/view/upnp_status.htm75
-rw-r--r--applications/luci-app-upnp/po/uk/upnp.po35
-rw-r--r--applications/luci-app-wireguard/luasrc/view/wireguard.htm52
94 files changed, 2999 insertions, 1886 deletions
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
index 3f39622920..da783e3361 100644
--- a/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
@@ -183,7 +183,7 @@ end
des = bl:option(DummyValue, "adb_src_desc", translate("Description"))
-cat = bl:option(DynamicList, "adb_src_cat", translate("Categories"))
+cat = bl:option(DynamicList, "adb_src_cat", translate("Archive Categories"))
cat.datatype = "uciname"
cat.optional = true
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm b/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm
index b4b62db5f4..81622e9bc6 100644
--- a/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm
+++ b/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm
@@ -22,25 +22,35 @@ end
-%>
<style type="text/css">
-table.cbi-section-table th,
-table.cbi-section-table td,
+.table.cbi-section-table .th,
+.table.cbi-section-table .td,
.cbi-section-table-cell,
-.cbi-section-table-row,
-.cbi-input-text
+.cbi-section-table-row
{
text-align:left;
vertical-align:top;
margin-right:auto;
margin-left:0px;
+ padding-left:2px;
+ line-height:20px;
+ height:20px;
+}
+.table.cbi-section-table .th
+{
+ white-space:nowrap;
+}
+.table.cbi-section-table input
+{
+ width:7em;
}
.cbi-input-text
{
+ text-align:left;
+ padding-left:2px;
outline:none;
box-shadow:none;
background:transparent;
- padding-left:2px;
- line-height:25px;
- height:25px;
+ height:20px;
width:10em;
}
</style>
@@ -51,37 +61,37 @@ table.cbi-section-table td,
<%- end %>
<div class="cbi-section-descr"><%=self.description%></div>
<div class="cbi-section-node">
- <table class="cbi-section-table">
- <tr class="cbi-section-table-titles">
+ <div class="table cbi-section-table">
+ <div class="tr cbi-section-table-titles">
<%- if self.sectionhead then -%>
- <th class="cbi-section-table-cell"><%=self.sectionhead%></th>
+ <div class="th cbi-section-table-cell"><%=self.sectionhead%></div>
<%- else -%>
- <th>&#160;</th>
+ <div class="th">&#160;</div>
<%- end -%>
<%- for i, k in pairs(self.children) do -%>
- <th class="cbi-section-table-cell"<%=width(k)%>>
+ <div class="th cbi-section-table-cell"<%=width(k)%>>
<%-=k.title-%>
- </th>
+ </div>
<%- end -%>
- </tr>
+ </div>
<%- local isempty = true
for i, k in ipairs(self:cfgsections()) do
section = k
isempty = false
scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" }
-%>
- <tr class="cbi-section-table-row" id="cbi-<%=self.config%>-<%=section%>">
- <th><%=k%></th>
+ <div class="tr cbi-section-table-row" id="cbi-<%=self.config%>-<%=section%>">
+ <div class="th"><%=k%></div>
<%-
for k, node in ipairs(self.children) do
node:render(section, scope or {})
end
if not scope.cbid:match("adb_src_cat") then
-%>
- <td class="cbi-value-field">&#160;</td>
+ <div class="td cbi-value-field">&#160;</div>
<%- end -%>
- </tr>
+ </div>
<%- end -%>
- </table>
+ </div>
</div>
</fieldset>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/query.htm b/applications/luci-app-adblock/luasrc/view/adblock/query.htm
index 8bbc92664d..8bbed3a53e 100644
--- a/applications/luci-app-adblock/luasrc/view/adblock/query.htm
+++ b/applications/luci-app-adblock/luasrc/view/adblock/query.htm
@@ -35,7 +35,7 @@ This is free software, licensed under the Apache License, Version 2.0
else
{
input.style.display = 'none';
- output.innerHTML = '<span class="error"><%:Invalid domain specified!%></span>';
+ output.innerHTML = '<span class="error"><%:Blocklist not found!%></span>';
}
}
);
diff --git a/applications/luci-app-adblock/po/it/adblock.po b/applications/luci-app-adblock/po/it/adblock.po
index 0a1b65ac36..c2db36effc 100644
--- a/applications/luci-app-adblock/po/it/adblock.po
+++ b/applications/luci-app-adblock/po/it/adblock.po
@@ -17,6 +17,11 @@ msgstr ""
msgid "-------"
msgstr ""
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+
msgid "Adblock"
msgstr "Adblock"
@@ -35,8 +40,8 @@ msgstr "Tempo addizionale in secondi di attesa prima che adblock si avvii."
msgid "Advanced"
msgstr "Avanzato"
-msgid "Available blocklist sources."
-msgstr "Fonti lista di blocco disponibili."
+msgid "Archive Categories"
+msgstr ""
msgid "Backup Directory"
msgstr "Directory del Backup"
@@ -47,14 +52,12 @@ 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 ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select more than five blocklist sources!"
+"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
+"domains except those listed in the whitelist file.<br />"
msgstr ""
msgid ""
@@ -100,12 +103,6 @@ msgstr ""
msgid "Download Utility (SSL Library)"
msgstr ""
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
-msgstr ""
-
msgid "Edit Blacklist"
msgstr "Modifica Lista Nera"
@@ -175,20 +172,10 @@ msgstr ""
msgid "Input file not found, please check your configuration."
msgstr "File di input non trovato, per favore controlla la tua configurazione."
-msgid "Invalid domain specified!"
-msgstr "Dominio invalido specificato!"
-
msgid "Last Run"
msgstr "Ultimo Avvio"
msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr ""
-"Le selezioni degli URL delle liste e categorie Shallalist sono configurabili "
-"nella sezione 'Avanzato'.<br />"
-
-msgid ""
"List of available network interfaces. Usually the startup will be triggered "
"by the 'wan' interface.<br />"
msgstr ""
@@ -239,9 +226,6 @@ msgid ""
"Please note: this needs additional 'msmtp' package installation and setup."
msgstr ""
-msgid "Please update your adblock config file to use this package.<br />"
-msgstr ""
-
msgid "Query"
msgstr "Interrogazione"
@@ -296,10 +280,8 @@ msgstr ""
msgid "Target directory for the generated blocklist 'adb_list.overall'."
msgstr "Directory per la lista di blocco generata 'adb_list.overall'."
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
msgstr ""
-"La grandezza del file è troppo grande per modificarla online in LuCI (&gt; "
-"512 KB)."
msgid ""
"This form allows you to modify the content of the adblock blacklist (%s)."
@@ -336,9 +318,6 @@ msgstr ""
"Questo form mostra l'output del registro, prefiltrato per messaggi relativi "
"solo ad adblock."
-msgid "This section contains no values yet"
-msgstr ""
-
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
@@ -392,6 +371,24 @@ msgstr "in pausa"
msgid "running"
msgstr ""
+#~ msgid "Invalid domain specified!"
+#~ msgstr "Dominio invalido specificato!"
+
+#~ msgid "Available blocklist sources."
+#~ msgstr "Fonti lista di blocco disponibili."
+
+#~ msgid ""
+#~ "List URLs and Shallalist category selections are configurable in the "
+#~ "'Advanced' section.<br />"
+#~ msgstr ""
+#~ "Le selezioni degli URL delle liste e categorie Shallalist sono "
+#~ "configurabili nella sezione 'Avanzato'.<br />"
+
+#~ msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+#~ msgstr ""
+#~ "La grandezza del file è troppo grande per modificarla online in LuCI "
+#~ "(&gt; 512 KB)."
+
#~ msgid ""
#~ "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
#~ "'libustream-ssl' or the wget 'built-in'."
diff --git a/applications/luci-app-adblock/po/ja/adblock.po b/applications/luci-app-adblock/po/ja/adblock.po
index dfd72cbf6c..cddedacd43 100644
--- a/applications/luci-app-adblock/po/ja/adblock.po
+++ b/applications/luci-app-adblock/po/ja/adblock.po
@@ -8,7 +8,7 @@ msgstr ""
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.6\n"
+"X-Generator: Poedit 2.0.7\n"
"Language: ja\n"
msgid "'Jail' Blocklist Creation"
@@ -17,6 +17,13 @@ msgstr "'Jail' ブロックリストの作成"
msgid "-------"
msgstr "(利用不可)"
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+"<b>警告:</b> RAM の空き容量が 64MB に満たないメモリー容量の小さいデバイスで"
+"は、 OutOfMemory (OOM) 例外を防ぐために少数のみを選択してください。"
+
msgid "Adblock"
msgstr "Adblock"
@@ -35,8 +42,8 @@ msgstr "Adblock の処理が開始されるまでの、追加の遅延時間(
msgid "Advanced"
msgstr "詳細設定"
-msgid "Available blocklist sources."
-msgstr "利用可能なブロックリスト提供元です。"
+msgid "Archive Categories"
+msgstr ""
msgid "Backup Directory"
msgstr "バックアップ先 ディレクトリ"
@@ -47,6 +54,9 @@ msgstr "バックアップ モード"
msgid "Blocklist Sources"
msgstr "ブロックリスト提供元"
+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 />"
@@ -55,14 +65,6 @@ msgstr ""
"'Jail' リスト (/tmp/adb_list.jail) を作成します。<br />"
msgid ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select more than five blocklist sources!"
-msgstr ""
-"警告: RAM の空き容量が 64MB に満たないメモリー容量の小さいデバイスでは、 "
-"OutOfMemory (OOM) 例外を防ぐために、5個よりも多くのリストを選択しないようにし"
-"てください。"
-
-msgid ""
"Choose 'none' to disable automatic startups, 'timed' to use a classic "
"timeout (default 30 sec.) or select another trigger interface."
msgstr ""
@@ -109,15 +111,6 @@ msgstr "ダウンロード ユーティリティ"
msgid "Download Utility (SSL Library)"
msgstr "ダウンロード ユーティリティ(SSL ライブラリ)"
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
-msgstr ""
-"opkg でパッケージをインストールする際に '--force-maintainer' オプションを使用"
-"して既存の設定ファイルを上書きするか、 <a href=\"%s\" target=\"_blank\">ここ"
-"</a> からデフォルトの設定ファイルをダウンロードしてください。"
-
msgid "Edit Blacklist"
msgstr "ブラックリストの編集"
@@ -195,20 +188,10 @@ msgstr "ホワイトリスト ファイルへのフルパスです。"
msgid "Input file not found, please check your configuration."
msgstr "入力ファイルが見つかりません。設定を確認してください。"
-msgid "Invalid domain specified!"
-msgstr "無効なドメインが指定されています!"
-
msgid "Last Run"
msgstr "最終実行"
msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr ""
-"リストの URL 及び \"Shalla\" リストのカテゴリー設定は、'詳細設定' セクション"
-"で設定することができます。<br />"
-
-msgid ""
"List of available network interfaces. Usually the startup will be triggered "
"by the 'wan' interface.<br />"
msgstr ""
@@ -260,11 +243,6 @@ msgid ""
msgstr ""
"注意: これには、追加で 'msmtp' のインストールとセットアップが必要です。"
-msgid "Please update your adblock config file to use this package.<br />"
-msgstr ""
-"このパッケージを使用するには、既存の Adblock 設定ファイルを更新してください。"
-"<br />"
-
msgid "Query"
msgstr "検索"
@@ -326,10 +304,10 @@ msgstr ""
msgid "Target directory for the generated blocklist 'adb_list.overall'."
msgstr "生成されたブロックリスト 'adb_list.overall' の保存先ディレクトリです。"
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
msgstr ""
-"ファイル サイズが大きすぎる(512 KB超)ため、 LuCI 上でオンライン編集できませ"
-"ん。"
+"LuCI上でのオンライン編集を行うには、ファイルサイズが大きすぎます (&ge; 100 "
+"KB)。"
msgid ""
"This form allows you to modify the content of the adblock blacklist (%s)."
@@ -366,9 +344,6 @@ msgstr ""
"このフォームには、システムログ内の Adblock に関連するメッセージのみが表示され"
"ます。"
-msgid "This section contains no values yet"
-msgstr "このセクションには、まだ値がありません"
-
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
@@ -424,3 +399,9 @@ msgstr "一時停止"
msgid "running"
msgstr "実行中"
+
+#~ msgid "Categories"
+#~ msgstr "カテゴリー"
+
+#~ msgid "Invalid domain specified!"
+#~ msgstr "無効なドメインが指定されています!"
diff --git a/applications/luci-app-adblock/po/pt-br/adblock.po b/applications/luci-app-adblock/po/pt-br/adblock.po
index c0d9d816db..07d0f9a8d2 100644
--- a/applications/luci-app-adblock/po/pt-br/adblock.po
+++ b/applications/luci-app-adblock/po/pt-br/adblock.po
@@ -18,6 +18,11 @@ msgstr ""
msgid "-------"
msgstr ""
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+
msgid "Adblock"
msgstr "Adblock"
@@ -38,8 +43,8 @@ msgstr ""
msgid "Advanced"
msgstr "Avançado"
-msgid "Available blocklist sources."
-msgstr "Fontes de listas de bloqueio disponíveis."
+msgid "Archive Categories"
+msgstr ""
msgid "Backup Directory"
msgstr "Diretório da cópia de segurança"
@@ -50,14 +55,12 @@ 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 ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select more than five blocklist sources!"
+"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
+"domains except those listed in the whitelist file.<br />"
msgstr ""
msgid ""
@@ -101,12 +104,6 @@ msgstr ""
msgid "Download Utility (SSL Library)"
msgstr "Utilitário de Download (Biblioteca SSL)"
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
-msgstr ""
-
msgid "Edit Blacklist"
msgstr "Editar Lista de Bloqueio"
@@ -175,18 +172,10 @@ msgstr ""
msgid "Input file not found, please check your configuration."
msgstr "Arquivo de entrada não encontrado, por favor cheque sua configuração."
-msgid "Invalid domain specified!"
-msgstr "Domínio especificado inválido!"
-
msgid "Last Run"
msgstr ""
msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr ""
-
-msgid ""
"List of available network interfaces. Usually the startup will be triggered "
"by the 'wan' interface.<br />"
msgstr ""
@@ -232,9 +221,6 @@ msgid ""
"Please note: this needs additional 'msmtp' package installation and setup."
msgstr ""
-msgid "Please update your adblock config file to use this package.<br />"
-msgstr ""
-
msgid "Query"
msgstr "Consulta"
@@ -288,9 +274,8 @@ msgstr ""
msgid "Target directory for the generated blocklist 'adb_list.overall'."
msgstr ""
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
msgstr ""
-"O tamanho do arquivo é muito grande para edição online no LuCI (&gt; 512 KB)."
msgid ""
"This form allows you to modify the content of the adblock blacklist (%s)."
@@ -327,9 +312,6 @@ msgstr ""
"Esse formulário mostra a saída do syslog, pré-filtrado para mensagens do "
"adblock apenas."
-msgid "This section contains no values yet"
-msgstr ""
-
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
@@ -381,6 +363,17 @@ msgstr ""
msgid "running"
msgstr ""
+#~ msgid "Invalid domain specified!"
+#~ msgstr "Domínio especificado inválido!"
+
+#~ msgid "Available blocklist sources."
+#~ msgstr "Fontes de listas de bloqueio disponíveis."
+
+#~ msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+#~ msgstr ""
+#~ "O tamanho do arquivo é muito grande para edição online no LuCI (&gt; 512 "
+#~ "KB)."
+
#~ msgid ""
#~ "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
#~ "'libustream-ssl' or the wget 'built-in'."
diff --git a/applications/luci-app-adblock/po/ru/adblock.po b/applications/luci-app-adblock/po/ru/adblock.po
index 17f39fdd87..c1193d38e1 100644
--- a/applications/luci-app-adblock/po/ru/adblock.po
+++ b/applications/luci-app-adblock/po/ru/adblock.po
@@ -21,6 +21,11 @@ msgstr "Создание Черного<br />списка 'Jail'"
msgid "-------"
msgstr "-------"
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+
msgid "Adblock"
msgstr "AdBlock"
@@ -39,8 +44,8 @@ msgstr "Дополнительная задержка в секундах до
msgid "Advanced"
msgstr "Дополнительно"
-msgid "Available blocklist sources."
-msgstr "Источники списков блокировки. "
+msgid "Archive Categories"
+msgstr ""
msgid "Backup Directory"
msgstr "Папка для бэкапа"
@@ -51,6 +56,9 @@ msgstr "Режим сохранения бекапа"
msgid "Blocklist Sources"
msgstr "Источники списков блокировки"
+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 />"
@@ -60,14 +68,6 @@ msgstr ""
"Белого списка.<br />"
msgid ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select more than five blocklist sources!"
-msgstr ""
-"ВНИМАНИЕ: Для предотвращения возможного программного сбоя и перезагрузки, на "
-"устройствах с объемом оперативной памяти менее 64MB, не выбирайте больше 5 "
-"списков."
-
-msgid ""
"Choose 'none' to disable automatic startups, 'timed' to use a classic "
"timeout (default 30 sec.) or select another trigger interface."
msgstr ""
@@ -113,15 +113,6 @@ msgstr "Скачать утилиту"
msgid "Download Utility (SSL Library)"
msgstr "Загрузить утилиту (библиотека SSL)"
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
-msgstr ""
-"Устанавливая пакет с помощью opkg, используйте '--force-maintainer', чтобы "
-"перезаписать существующий config файл или загрузить новый дефолтный config "
-"файл <a href=\"%s\" target=\"_blank\">здесь</a>"
-
msgid "Edit Blacklist"
msgstr "Редактировать Черный список"
@@ -198,20 +189,10 @@ msgstr "Полный путь к файлу Белого списка."
msgid "Input file not found, please check your configuration."
msgstr "Config файл не найден, настройте config файл."
-msgid "Invalid domain specified!"
-msgstr "Задан недопустимый домен!"
-
msgid "Last Run"
msgstr "Последнее время запуска"
msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr ""
-"Список URL-адресов и настройка списка использования, настраиваются на "
-"странице 'Дополнительно'.<br />"
-
-msgid ""
"List of available network interfaces. Usually the startup will be triggered "
"by the 'wan' interface.<br />"
msgstr ""
@@ -263,9 +244,6 @@ msgid ""
"Please note: this needs additional 'msmtp' package installation and setup."
msgstr "Внимание: это потребует дополнительной установки пакета 'msmtp'."
-msgid "Please update your adblock config file to use this package.<br />"
-msgstr "Обновите config файл Adblock, чтобы использовать этот пакет.<br />"
-
msgid "Query"
msgstr "Запрос"
@@ -328,9 +306,8 @@ msgstr ""
msgid "Target directory for the generated blocklist 'adb_list.overall'."
msgstr "Назначить папку для создания списка блокировки 'adb_list.overall'."
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
msgstr ""
-"Размер файла слишком большой, для онлайн редактирования в LuCI (&gt; 512 KB)."
msgid ""
"This form allows you to modify the content of the adblock blacklist (%s)."
@@ -363,9 +340,6 @@ msgid ""
"only."
msgstr "Страница системного журнала. Только сообщения связанные с Adblock."
-msgid "This section contains no values yet"
-msgstr "Здесь не содержатся необходимые значения"
-
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
@@ -422,3 +396,44 @@ msgstr "остановлено"
msgid "running"
msgstr "работает"
+
+#~ msgid "Invalid domain specified!"
+#~ msgstr "Задан недопустимый домен!"
+
+#~ msgid "Available blocklist sources."
+#~ msgstr "Источники списков блокировки. "
+
+#~ msgid ""
+#~ "Caution: To prevent OOM exceptions on low memory devices with less than "
+#~ "64 MB free RAM, please do not select more than five blocklist sources!"
+#~ msgstr ""
+#~ "ВНИМАНИЕ: Для предотвращения возможного программного сбоя и перезагрузки, "
+#~ "на устройствах с объемом оперативной памяти менее 64MB, не выбирайте "
+#~ "больше 5 списков."
+
+#~ msgid ""
+#~ "During opkg package installation use the '--force-maintainer' option to "
+#~ "overwrite the pre-existing config file or download a fresh default config "
+#~ "from <a href=\"%s\" target=\"_blank\">here</a>"
+#~ msgstr ""
+#~ "Устанавливая пакет с помощью opkg, используйте '--force-maintainer', "
+#~ "чтобы перезаписать существующий config файл или загрузить новый дефолтный "
+#~ "config файл <a href=\"%s\" target=\"_blank\">здесь</a>"
+
+#~ msgid ""
+#~ "List URLs and Shallalist category selections are configurable in the "
+#~ "'Advanced' section.<br />"
+#~ msgstr ""
+#~ "Список URL-адресов и настройка списка использования, настраиваются на "
+#~ "странице 'Дополнительно'.<br />"
+
+#~ msgid "Please update your adblock config file to use this package.<br />"
+#~ msgstr "Обновите config файл Adblock, чтобы использовать этот пакет.<br />"
+
+#~ msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+#~ msgstr ""
+#~ "Размер файла слишком большой, для онлайн редактирования в LuCI (&gt; 512 "
+#~ "KB)."
+
+#~ msgid "This section contains no values yet"
+#~ msgstr "Здесь не содержатся необходимые значения"
diff --git a/applications/luci-app-adblock/po/sv/adblock.po b/applications/luci-app-adblock/po/sv/adblock.po
index d875a69f96..4a7ca4b738 100644
--- a/applications/luci-app-adblock/po/sv/adblock.po
+++ b/applications/luci-app-adblock/po/sv/adblock.po
@@ -7,6 +7,11 @@ msgstr ""
msgid "-------"
msgstr "-------"
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+
msgid "Adblock"
msgstr "Adblock"
@@ -25,8 +30,8 @@ msgstr ""
msgid "Advanced"
msgstr "Avancerat"
-msgid "Available blocklist sources."
-msgstr "Tillgängliga källor för blockeringslistor"
+msgid "Archive Categories"
+msgstr ""
msgid "Backup Directory"
msgstr "Säkerhetskopiera mapp"
@@ -37,14 +42,12 @@ 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 ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select more than five blocklist sources!"
+"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
+"domains except those listed in the whitelist file.<br />"
msgstr ""
msgid ""
@@ -91,12 +94,6 @@ msgstr ""
msgid "Download Utility (SSL Library)"
msgstr "Nerladdningsprogram (SSL-bibliotek)"
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
-msgstr ""
-
msgid "Edit Blacklist"
msgstr "Redigera svartlista"
@@ -166,18 +163,10 @@ msgid "Input file not found, please check your configuration."
msgstr ""
"Inmatningsfilen kunde inte hittas, var vänlig kontrollera din konfiguration."
-msgid "Invalid domain specified!"
-msgstr "Ogiltig domän angiven!"
-
msgid "Last Run"
msgstr "Kördes senast"
msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr ""
-
-msgid ""
"List of available network interfaces. Usually the startup will be triggered "
"by the 'wan' interface.<br />"
msgstr ""
@@ -221,9 +210,6 @@ msgid ""
"Please note: this needs additional 'msmtp' package installation and setup."
msgstr ""
-msgid "Please update your adblock config file to use this package.<br />"
-msgstr ""
-
msgid "Query"
msgstr "Fråga"
@@ -256,8 +242,8 @@ msgid ""
msgstr ""
msgid ""
-"Size of the download queue to handle downloads &amp; list processing in parallel "
-"(default '4').<br />"
+"Size of the download queue to handle downloads &amp; list processing in "
+"parallel (default '4').<br />"
msgstr ""
msgid "Startup Trigger"
@@ -277,8 +263,8 @@ msgstr ""
msgid "Target directory for the generated blocklist 'adb_list.overall'."
msgstr ""
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
-msgstr "Filstorleken är för stor för online-redigering i LuCi (&gt; 512 KB)."
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
+msgstr ""
msgid ""
"This form allows you to modify the content of the adblock blacklist (%s)."
@@ -311,9 +297,6 @@ msgid ""
"only."
msgstr ""
-msgid "This section contains no values yet"
-msgstr ""
-
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
@@ -365,6 +348,16 @@ msgstr "pausad"
msgid "running"
msgstr ""
+#~ msgid "Invalid domain specified!"
+#~ msgstr "Ogiltig domän angiven!"
+
+#~ msgid "Available blocklist sources."
+#~ msgstr "Tillgängliga källor för blockeringslistor"
+
+#~ msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+#~ msgstr ""
+#~ "Filstorleken är för stor för online-redigering i LuCi (&gt; 512 KB)."
+
#~ msgid ""
#~ "Caution: Please don't select big lists or many lists at once on low "
#~ "memory devices to prevent OOM exceptions!"
diff --git a/applications/luci-app-adblock/po/templates/adblock.pot b/applications/luci-app-adblock/po/templates/adblock.pot
index 6fbaa652ae..a375d0edb6 100644
--- a/applications/luci-app-adblock/po/templates/adblock.pot
+++ b/applications/luci-app-adblock/po/templates/adblock.pot
@@ -7,6 +7,11 @@ msgstr ""
msgid "-------"
msgstr ""
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+
msgid "Adblock"
msgstr ""
@@ -25,7 +30,7 @@ msgstr ""
msgid "Advanced"
msgstr ""
-msgid "Available blocklist sources."
+msgid "Archive Categories"
msgstr ""
msgid "Backup Directory"
@@ -37,14 +42,12 @@ 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 ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select more than five blocklist sources!"
+"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
+"domains except those listed in the whitelist file.<br />"
msgstr ""
msgid ""
@@ -84,12 +87,6 @@ msgstr ""
msgid "Download Utility (SSL Library)"
msgstr ""
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
-msgstr ""
-
msgid "Edit Blacklist"
msgstr ""
@@ -158,18 +155,10 @@ msgstr ""
msgid "Input file not found, please check your configuration."
msgstr ""
-msgid "Invalid domain specified!"
-msgstr ""
-
msgid "Last Run"
msgstr ""
msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr ""
-
-msgid ""
"List of available network interfaces. Usually the startup will be triggered "
"by the 'wan' interface.<br />"
msgstr ""
@@ -213,9 +202,6 @@ msgid ""
"Please note: this needs additional 'msmtp' package installation and setup."
msgstr ""
-msgid "Please update your adblock config file to use this package.<br />"
-msgstr ""
-
msgid "Query"
msgstr ""
@@ -269,7 +255,7 @@ msgstr ""
msgid "Target directory for the generated blocklist 'adb_list.overall'."
msgstr ""
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
msgstr ""
msgid ""
@@ -297,9 +283,6 @@ msgid ""
"only."
msgstr ""
-msgid "This section contains no values yet"
-msgstr ""
-
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
diff --git a/applications/luci-app-adblock/po/zh-cn/adblock.po b/applications/luci-app-adblock/po/zh-cn/adblock.po
index e26c44c4da..408d04055c 100644
--- a/applications/luci-app-adblock/po/zh-cn/adblock.po
+++ b/applications/luci-app-adblock/po/zh-cn/adblock.po
@@ -16,11 +16,17 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
msgid "'Jail' Blocklist Creation"
-msgstr ""
+msgstr "“Jail” 拦截名单创建"
msgid "-------"
msgstr "-------"
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+"<b>注意:</b>为防止在小于 64M 空闲内存的设备上出现内存不足异常,请只选择其中的几个!"
+
msgid "Adblock"
msgstr "Adblock"
@@ -39,26 +45,24 @@ msgstr "触发 Adblock 开始处理前的额外延迟(以秒为单位)。"
msgid "Advanced"
msgstr "高级"
-msgid "Available blocklist sources."
-msgstr "可用的 blocklist 来源。"
+msgid "Archive Categories"
+msgstr ""
msgid "Backup Directory"
msgstr "备份目录"
msgid "Backup Mode"
-msgstr ""
+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 ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select more than five blocklist sources!"
+"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
+"domains except those listed in the whitelist file.<br />"
msgstr ""
msgid ""
@@ -79,6 +83,7 @@ msgid ""
"Create compressed blocklist backups, they will be used in case of download "
"errors or during startup in backup mode."
msgstr ""
+"创建压缩的拦截列表备份,它们将在下载错误或备份模式启动期间使用。"
msgid "DNS Backend (DNS Directory)"
msgstr "DNS 后端(DNS 目录)"
@@ -95,17 +100,11 @@ msgid ""
msgstr "启动期间不要自动更新 blocklists,改用 blocklists 的备份。"
msgid "Download Utility"
-msgstr ""
+msgstr "下载工具"
msgid "Download Utility (SSL Library)"
msgstr "下载实用程序(SSL 库)"
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
-msgstr ""
-
msgid "Edit Blacklist"
msgstr "编辑黑名单"
@@ -116,10 +115,10 @@ msgid "Edit Whitelist"
msgstr "编辑白名单"
msgid "Email Notification"
-msgstr ""
+msgstr "Email 提醒"
msgid "Email Notification Count"
-msgstr ""
+msgstr "Email 提醒计数"
msgid "Enable Adblock"
msgstr "启用 Adblock"
@@ -131,6 +130,7 @@ msgid ""
"Enable memory intense overall sort / duplicate removal on low memory devices "
"(&lt; 64 MB free RAM)"
msgstr ""
+"在低内存设备上启用积极的内存整体排序/重复移除(&lt; 64 MB 空闲内存)"
msgid "Enable verbose debug logging in case of any processing error."
msgstr "在出现任何处理错误的情况下启用详细调试日志记录。"
@@ -142,25 +142,29 @@ msgid "Extra Options"
msgstr "额外选项"
msgid "Flush DNS Cache"
-msgstr ""
+msgstr "清空 DNS 缓存"
msgid "Flush DNS Cache after adblock processing."
-msgstr ""
+msgstr "在 adblock 进程启动后清空 DNS 缓存。"
msgid ""
"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
"'libustream-ssl' or 'built-in'."
msgstr ""
+"对受 SSL 保护的拦截列表源,您需要一个合适的 SSL 库,如 “libustream-ssl” 或 "
+"“built-in”。"
msgid ""
"For further information <a href=\"%s\" target=\"_blank\">check the online "
"documentation</a>"
msgstr ""
+"进一步信息<a href=\"%s\" target=\"_blank\">请访问在线文档"
msgid ""
"For further performance improvements you can raise this value, e.g. '8' or "
"'16' should be safe."
msgstr ""
+"为了进一步提高性能,您可以提高此值,例如:8 或 16 应该是安全的。"
msgid "Force Local DNS"
msgstr "强制本地 DNS"
@@ -169,26 +173,19 @@ msgid "Force Overall Sort"
msgstr "强制整体排序"
msgid "Full path to the whitelist file."
-msgstr ""
+msgstr "白名单文件的全路径。"
msgid "Input file not found, please check your configuration."
msgstr "输入文件未找到,请检查您的配置。"
-msgid "Invalid domain specified!"
-msgstr "无效域名!"
-
msgid "Last Run"
msgstr "最后运行"
msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr "列表 URL 和 Shallalist 类别选择可在“高级”选项卡中配置。<br />"
-
-msgid ""
"List of available network interfaces. Usually the startup will be triggered "
"by the 'wan' interface.<br />"
msgstr ""
+"可用网络接口列表。通常启动将由 “wan” 接口触发。<br />"
msgid ""
"List of supported DNS backends with their default list export directory.<br /"
@@ -196,13 +193,13 @@ msgid ""
msgstr "支持的 DNS 后端列表及其默认列表导出目录。<br />"
msgid "List of supported and fully pre-configured download utilities."
-msgstr ""
+msgstr "支持和完全预配置的下载工具列表。"
msgid "Loading"
msgstr "加载中"
msgid "Max. Download Queue"
-msgstr ""
+msgstr "最大下载队列"
msgid "No"
msgstr "否"
@@ -212,7 +209,7 @@ msgid ""
msgstr "在默认设置并不适合您时的额外选项。"
msgid "Overall Domains"
-msgstr ""
+msgstr "域名总览"
msgid "Overview"
msgstr "总览"
@@ -230,9 +227,7 @@ msgstr "请在终端会话中直接编辑此文件。"
msgid ""
"Please note: this needs additional 'msmtp' package installation and setup."
msgstr ""
-
-msgid "Please update your adblock config file to use this package.<br />"
-msgstr ""
+"请注意:这需要额外的 “msmtp” 软件包安装和设置。"
msgid "Query"
msgstr "查询"
@@ -244,6 +239,7 @@ msgid ""
"Raise the minimum email notification count, to get emails if the overall "
"count is less or equal to the given limit (default 0),<br />"
msgstr ""
+"如果总数小于或等于给定限制(默认为 0),请提高最小电子邮件通知数,以获取电子邮件。"
msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
msgstr "将所有 DNS 查询从“lan”区域重定向到本地解析器。"
@@ -264,11 +260,13 @@ msgid ""
"Send notification emails in case of a processing error or if domain count is "
"&le; 0.<br />"
msgstr ""
+"如果发生错误或域计数 &le; 0,发送通知电子邮件。<br />"
msgid ""
-"Size of the download queue to handle downloads &amp; list processing in parallel "
-"(default '4').<br />"
+"Size of the download queue to handle downloads &amp; list processing in "
+"parallel (default '4').<br />"
msgstr ""
+"处理下载队列的大小 &amp; 并行处理列表(默认 “4”)。<br />"
msgid "Startup Trigger"
msgstr "启动触发器"
@@ -283,12 +281,14 @@ msgid ""
"Target directory for adblock backups. Please use only non-volatile disks, e."
"g. an external usb stick."
msgstr ""
+"adblock 备份的目标目录。 请仅使用非易失性磁盘,例如:一个外置 U 盘。"
msgid "Target directory for the generated blocklist 'adb_list.overall'."
msgstr "生成的 blocklist 'adb_list.overall'的目标目录。"
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
-msgstr "文件大小太大,无法在 LuCI(&gt; 512 KB)中进行在线编辑。"
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
+msgstr ""
+"文件过大,无法使用 LuCI 的在线编辑(&ge; 100 KB)。"
msgid ""
"This form allows you to modify the content of the adblock blacklist (%s)."
@@ -315,9 +315,6 @@ msgid ""
"only."
msgstr "此表单显示系统日志输出,仅针对 adblock 相关的消息进行了预筛选。"
-msgid "This section contains no values yet"
-msgstr ""
-
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
@@ -336,7 +333,7 @@ msgid "Waiting for command to complete..."
msgstr "正在执行命令..."
msgid "Whitelist File"
-msgstr ""
+msgstr "白名单文件"
msgid "Yes"
msgstr "是"
@@ -345,6 +342,7 @@ msgid ""
"You can use this restrictive blocklist manually e.g. for guest wifi or "
"kidsafe configurations."
msgstr ""
+"您可以手动使用此限制性拦截列表,例如:为客人提供 wifi 或 kidsafe 配置。"
msgid "disabled"
msgstr "已禁用"
@@ -352,7 +350,7 @@ msgstr "已禁用"
msgid ""
"e.g. to receive an email notification with every adblock update set this "
"value to 150000."
-msgstr ""
+msgstr "例如:要接收每个 adblock 更新的电子邮件通知时将此值设置为150000。"
msgid "enabled"
msgstr "已启用"
@@ -367,5 +365,18 @@ 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)中进行在线编辑。"
diff --git a/applications/luci-app-adblock/po/zh-tw/adblock.po b/applications/luci-app-adblock/po/zh-tw/adblock.po
index 417fc6bcc3..45b19cdc80 100644
--- a/applications/luci-app-adblock/po/zh-tw/adblock.po
+++ b/applications/luci-app-adblock/po/zh-tw/adblock.po
@@ -21,6 +21,11 @@ msgstr ""
msgid "-------"
msgstr "-------"
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+
msgid "Adblock"
msgstr "Adblock"
@@ -39,8 +44,8 @@ msgstr "觸發 Adblock 開始處理前的額外延遲(以秒為單位)。"
msgid "Advanced"
msgstr "高階"
-msgid "Available blocklist sources."
-msgstr "可用的 blocklist 來源。"
+msgid "Archive Categories"
+msgstr ""
msgid "Backup Directory"
msgstr "備份目錄"
@@ -51,14 +56,12 @@ 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 ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select more than five blocklist sources!"
+"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
+"domains except those listed in the whitelist file.<br />"
msgstr ""
msgid ""
@@ -100,12 +103,6 @@ msgstr ""
msgid "Download Utility (SSL Library)"
msgstr "下載實用程式(SSL 庫)"
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
-msgstr ""
-
msgid "Edit Blacklist"
msgstr "編輯黑名單"
@@ -174,18 +171,10 @@ msgstr ""
msgid "Input file not found, please check your configuration."
msgstr "輸入檔案未找到,請檢查您的配置。"
-msgid "Invalid domain specified!"
-msgstr "無效域名!"
-
msgid "Last Run"
msgstr "最後執行"
msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr "列表 URL 和 Shallalist 類別選擇可在“高階”選項卡中配置。<br />"
-
-msgid ""
"List of available network interfaces. Usually the startup will be triggered "
"by the 'wan' interface.<br />"
msgstr ""
@@ -231,9 +220,6 @@ msgid ""
"Please note: this needs additional 'msmtp' package installation and setup."
msgstr ""
-msgid "Please update your adblock config file to use this package.<br />"
-msgstr ""
-
msgid "Query"
msgstr "查詢"
@@ -266,8 +252,8 @@ msgid ""
msgstr ""
msgid ""
-"Size of the download queue to handle downloads &amp; list processing in parallel "
-"(default '4').<br />"
+"Size of the download queue to handle downloads &amp; list processing in "
+"parallel (default '4').<br />"
msgstr ""
msgid "Startup Trigger"
@@ -287,8 +273,8 @@ msgstr ""
msgid "Target directory for the generated blocklist 'adb_list.overall'."
msgstr "生成的 blocklist 'adb_list.overall'的目標目錄。"
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
-msgstr "檔案大小太大,無法在 LuCI(&gt; 512 KB)中進行線上編輯。"
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
+msgstr ""
msgid ""
"This form allows you to modify the content of the adblock blacklist (%s)."
@@ -315,9 +301,6 @@ msgid ""
"only."
msgstr "此表單顯示系統日誌輸出,僅針對 adblock 相關的訊息進行了預篩選。"
-msgid "This section contains no values yet"
-msgstr ""
-
msgid ""
"To overwrite the default path use the 'DNS Directory' option in the extra "
"section below."
@@ -369,3 +352,16 @@ msgstr "已暫停"
msgid "running"
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)中進行線上編輯。"
diff --git a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
index 0629c84b36..5f7429dfd1 100644
--- a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
+++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
@@ -21,24 +21,24 @@
<%- if device_name then -%>
<fieldset class="cbi-section">
<legend><%=device_name%><%: Partitions%></legend>
- <table class="cbi-section-table" id="partitions">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Partition%></th>
- <th class="cbi-section-table-cell"><%:Status%></th>
- <th class="cbi-section-table-cell"><%:Firmware/OS (Kernel)%></th>
- <th class="cbi-section-table-cell"><%:Action%></th>
- </tr>
- <tr class="cbi-section-table-row">
- <td>
+ <div class="table cbi-section-table" id="partitions">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:Partition%></div>
+ <div class="th cbi-section-table-cell"><%:Status%></div>
+ <div class="th cbi-section-table-cell"><%:Firmware/OS (Kernel)%></div>
+ <div class="th cbi-section-table-cell"><%:Action%></div>
+ </div>
+ <div class="tr cbi-section-table-row">
+ <div class="td">
<%=string.format("%X", boot_envvar1_partition_one)%>
- </td>
- <td>
+ </div>
+ <div class="td">
<%- if boot_envvar1_partition_one == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%>
- </td>
- <td>
+ </div>
+ <div class="td">
<%=partition_one_os%>
- </td>
- <td>
+ </div>
+ <div class="td">
<%- if boot_envvar1_partition_one == current_partition then -%>
<form method="post" action="<%=url('admin/system/advanced_reboot/reboot')%>">
<input type="hidden" name="token" value="<%=token%>" />
@@ -50,19 +50,19 @@
<input id="altreboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to alternative partition...%>" />
</form>
<%- end -%>
- </td>
- </tr>
- <tr class="cbi-section-table-row">
- <td>
+ </div>
+ </div>
+ <div class="tr cbi-section-table-row">
+ <div class="td">
<%=string.format("%X", boot_envvar1_partition_two)%>
- </td>
- <td>
+ </div>
+ <div class="td">
<%- if boot_envvar1_partition_two == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%>
- </td>
- <td>
+ </div>
+ <div class="td">
<%=partition_two_os%>
- </td>
- <td>
+ </div>
+ <div class="td">
<%- if boot_envvar1_partition_two == current_partition then -%>
<form method="post" action="<%=url('admin/system/advanced_reboot/reboot')%>">
<input type="hidden" name="token" value="<%=token%>" />
@@ -74,9 +74,9 @@
<input id="altreboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to alternative partition...%>" />
</form>
<%- end -%>
- </td>
- </tr>
- </table>
+ </div>
+ </div>
+ </div>
</fieldset>
<%- else -%>
<p class="alert-message warning"><%:Warning: This system does not have two partitions!%></p>
diff --git a/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm b/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm
index 946828953e..ab25f862b8 100644
--- a/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm
+++ b/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm
@@ -7,29 +7,21 @@
if (st && tb && tx)
{
/* clear all rows */
- while( tb.rows.length > 1 )
- tb.deleteRow(1);
+ while (tb.firstElementChild !== tb.lastElementChild)
+ tb.removeChild(tb.lastElementChild);
- for( var i = 0; i < st.leases.length; i++ )
+ for (var i = 0; i < st.leases.length; i++)
{
- var tr = tb.insertRow(-1);
- tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);
-
- tr.insertCell(-1).innerHTML = st.leases[i].addr;
- tr.insertCell(-1).innerHTML = String.format('%t', st.leases[i].age);
+ tb.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format((i % 2) + 1), [
+ E('<div class="td">', st.leases[i].addr),
+ E('<div class="td">', '%t'.format(st.leases[i].age))
+ ]));
}
- if( tb.rows.length == 1 )
- {
- var tr = tb.insertRow(-1);
- tr.className = 'cbi-section-table-row';
-
- var td = tr.insertCell(-1);
- td.colSpan = 2;
- td.innerHTML = '<em><br /><%:There are no active leases.%></em>';
- }
+ if (tb.firstElementChild === tb.lastElementChild)
+ tb.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active leases.%></em></div></div>'));
- if( st.uid == '00:00:00:00:00:00:00:00' )
+ if (st.uid == '00:00:00:00:00:00:00:00')
tx.innerHTML = '<%:The AHCP Service is not running.%>';
else
tx.innerHTML = String.format('<%:The AHCP Service is running with ID %s.%>', st.uid);
@@ -41,13 +33,13 @@
<fieldset class="cbi-section">
<legend><%:Active AHCP Leases%></legend>
<p id="ahcpd_status_text"></p>
- <table class="cbi-section-table" id="ahcpd_status_table">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Address%></th>
- <th class="cbi-section-table-cell"><%:Age%></th>
- </tr>
- <tr class="cbi-section-table-row">
- <td colspan="5"><em><br /><%:Collecting data...%></em></td>
- </tr>
- </table>
+ <div class="table cbi-section-table" id="ahcpd_status_table">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:Address%></div>
+ <div class="th cbi-section-table-cell"><%:Age%></div>
+ </div>
+ <div class="tr cbi-section-table-row">
+ <div class="td" colspan="5"><em><br /><%:Collecting data...%></em></div>
+ </div>
+ </div>
</fieldset>
diff --git a/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm b/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm
index 9f644ba074..fb40335f99 100644
--- a/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm
+++ b/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm
@@ -79,23 +79,23 @@
<% for i, plan in pairs(ast.dialplan.plans()) do %>
<div class="cbi-section-node">
- <table class="cbi-section-table">
- <tr class="cbi-section-table-titles">
- <th style="text-align: left; padding: 3px" class="cbi-section-table-cell">
+ <div class="table cbi-section-table">
+ <div class="tr cbi-section-table-titles">
+ <div style="text-align: left; padding: 3px" class="th cbi-section-table-cell">
<big>Dialplan <em><%=plan.name%></em></big>
- </th>
- <td>
+ </div>
+ <div class="td">
<a href="<%=url('admin/asterisk/dialplans')%>?delplan=<%=plan.name%>">
<img style="border:none" alt="Remove this dialplan" title="Remove this dialplan" src="/luci-static/resources/cbi/remove.gif" />
</a>
- </td>
- </tr>
+ </div>
+ </div>
<!-- dialzones -->
<% local zones_used = { }; local row = 0 %>
<% for i, zone in ipairs(plan.zones) do zones_used[zone.name] = true %>
- <tr class="cbi-section-table-row <%=rowstyle(row)%>">
- <td style="text-align: left; padding: 3px" class="cbi-section-table-cell">
+ <div class="tr cbi-section-table-row <%=rowstyle(row)%>">
+ <div style="text-align: left; padding: 3px" class="td cbi-section-table-cell">
<strong>&#x2514; Dialzone <em><%=zone.name%></em></strong> (<%=zone.description%>)
<p style="padding-left: 1em; margin-bottom:0">
Lines:
@@ -107,24 +107,24 @@
Matches:
<%=format_matches(zone)%>
</p>
- </td>
- <td style="width:5%" class="cbi-value-field">
+ </div>
+ <div style="width:5%" class="td cbi-value-field">
<a href="<%=url('admin/asterisk/dialplans/out', zone.name)%>">
<img style="border:none" alt="Edit dialzone" title="Edit dialzone" src="/luci-static/resources/cbi/edit.gif" />
</a>
<a href="<%=url('admin/asterisk/dialplans')%>?delzone.<%=plan.name%>=<%=zone.name%>">
<img style="border:none" alt="Remove from this dialplan" title="Remove from this dialplan" src="/luci-static/resources/cbi/remove.gif" />
</a>
- </td>
- </tr>
+ </div>
+ </div>
<% row = row + 1; end %>
<!-- /dialzones -->
<!-- voicemail -->
<% local boxes_used = { } %>
<% for ext, box in luci.util.kspairs(plan.voicemailboxes) do boxes_used[box.id] = true %>
- <tr class="cbi-section-table-row <%=rowstyle(row)%>">
- <td style="text-align: left; padding: 3px" class="cbi-section-table-cell">
+ <div class="tr cbi-section-table-row <%=rowstyle(row)%>">
+ <div style="text-align: left; padding: 3px" class="td cbi-section-table-cell">
<strong>&#x2514; Voicemailbox <em><%=box.id%></em></strong> (<%=box.name%>)
<p style="padding-left: 1em; margin-bottom:0">
Owner: <%=box.name%> |
@@ -132,44 +132,44 @@
Pager: <%=#box.page > 0 and box.page or 'n/a'%><br />
Matches: <%=format_matches(ext)%>
</p>
- </td>
- <td style="width:5%" class="cbi-value-field">
+ </div>
+ <div style="width:5%" class="td cbi-value-field">
<a href="<%=url('admin/asterisk/voicemail/mailboxes')%>">
<img style="border:none" alt="Manage mailboxes ..." title="Manage mailboxes ..." src="/luci-static/resources/cbi/edit.gif" />
</a>
<a href="<%=url('admin/asterisk/dialplans')%>?delvbox.<%=plan.name%>=<%=ext%>">
<img style="border:none" alt="Remove from this dialplan" title="Remove from this dialplan" src="/luci-static/resources/cbi/remove.gif" />
</a>
- </td>
- </tr>
+ </div>
+ </div>
<% row = row + 1; end %>
<!-- /voicemail -->
<!-- meetme -->
<% local rooms_used = { } %>
<% for ext, room in luci.util.kspairs(plan.meetmerooms) do rooms_used[room.room] = true %>
- <tr class="cbi-section-table-row <%=rowstyle(row)%>">
- <td style="text-align: left; padding: 3px" class="cbi-section-table-cell">
+ <div class="tr cbi-section-table-row <%=rowstyle(row)%>">
+ <div style="text-align: left; padding: 3px" class="td cbi-section-table-cell">
<strong>&#x2514; MeetMe Room <em><%=room.room%></em></strong>
<% if room.description and #room.description > 0 then %> (<%=room.description%>)<% end %>
<p style="padding-left: 1em; margin-bottom:0">
Matches: <%=format_matches(ext)%>
</p>
- </td>
- <td style="width:5%" class="cbi-value-field">
+ </div>
+ <div style="width:5%" class="td cbi-value-field">
<a href="<%=url('admin/asterisk/meetme/rooms')%>">
<img style="border:none" alt="Manage conferences ..." title="Manage conferences ..." src="/luci-static/resources/cbi/edit.gif" />
</a>
<a href="<%=url('admin/asterisk/dialplans')%>?delmeetme.<%=plan.name%>=<%=ext%>">
<img style="border:none" alt="Remove from this dialplan" title="Remove from this dialplan" src="/luci-static/resources/cbi/remove.gif" />
</a>
- </td>
- </tr>
+ </div>
+ </div>
<% row = row + 1; end %>
<!-- /meetme -->
- <tr class="cbi-section-table-row">
- <td style="text-align: left; padding: 3px" class="cbi-section-table-cell" colspan="2">
+ <div class="tr cbi-section-table-row">
+ <div style="text-align: left; padding: 3px" class="td cbi-section-table-cell" colspan="2">
<hr style="margin-bottom:0.5em; border-width:0 0 1px 0" />
Add Dialzone:<br />
@@ -213,10 +213,10 @@
<br /><br />
<input type="submit" class="cbi-button cbi-button-add" value="Add item &raquo;" title="Add item ..."/>
- </td>
- </tr>
+ </div>
+ </div>
- </table>
+ </div>
<div class="cbi-section-create cbi-tblsection-create"></div>
</div>
diff --git a/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm b/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm
index ffdbbcf359..e48da608a6 100644
--- a/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm
+++ b/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm
@@ -66,59 +66,59 @@
<!-- tblsection -->
<fieldset class="cbi-section" id="cbi-asterisk-sip">
<div class="cbi-section-node">
- <table class="cbi-section-table">
- <tr class="cbi-section-table-titles">
- <th style="text-align: left; padding: 3px" class="cbi-section-table-cell" colspan="6">
+ <div class="table cbi-section-table">
+ <div class="tr cbi-section-table-titles">
+ <div style="text-align: left; padding: 3px" class="th cbi-section-table-cell" colspan="6">
<h3>Dialzone Overview</h3>
- </th>
- </tr>
-
- <tr class="cbi-section-table-descr">
- <th style="width: 5%; text-align:right" class="cbi-section-table-cell">Name</th>
- <th style="width: 5%; text-align:right" class="cbi-section-table-cell">Prepend</th>
- <th style="width: 20%; text-align:left" class="cbi-section-table-cell">- Match</th>
- <th style="text-align:left" class="cbi-section-table-cell">Trunk</th>
- <th style="width: 35%; text-align:left" class="cbi-section-table-cell">Description</th>
- <th style="width: 4%; text-align:left" class="cbi-section-table-cell"></th>
- </tr>
+ </div>
+ </div>
+
+ <div class="tr cbi-section-table-descr">
+ <div style="width: 5%; text-align:right" class="th cbi-section-table-cell">Name</div>
+ <div style="width: 5%; text-align:right" class="th cbi-section-table-cell">Prepend</div>
+ <div style="width: 20%; text-align:left" class="th cbi-section-table-cell">- Match</div>
+ <div style="text-align:left" class="th cbi-section-table-cell">Trunk</div>
+ <div style="width: 35%; text-align:left" class="th cbi-section-table-cell">Description</div>
+ <div style="width: 4%; text-align:left" class="th cbi-section-table-cell"></div>
+ </div>
<% for i, rule in pairs(ast.dialzone.zones()) do %>
- <tr class="cbi-section-table-row <%=rowstyle(i)%>">
- <td style="text-align:right" class="cbi-value-field">
+ <div class="tr cbi-section-table-row <%=rowstyle(i)%>">
+ <div style="text-align:right" class="td cbi-value-field">
<%=rule.name%>
- </td>
- <td style="text-align:right" class="cbi-value-field">
+ </div>
+ <div style="text-align:right" class="td cbi-value-field">
<% for _ in ipairs(rule.matches) do %>
<%=rule.addprefix and digit_pattern(rule.addprefix)%>&#160;<br />
<% end %>
- </td>
- <td style="text-align:left" class="cbi-value-field">
+ </div>
+ <div style="text-align:left" class="td cbi-value-field">
<% for _, m in ipairs(rule.matches) do %>
<%=rule.localprefix and "%s " % digit_pattern(rule.localprefix)%>
<%=digit_pattern(m)%><br />
<% end %>
- </td>
- <td style="text-align:left" class="cbi-value-field">
+ </div>
+ <div style="text-align:left" class="td cbi-value-field">
<%=ast.tools.hyperlinks(
rule.trunks, function(v)
return luci.dispatcher.build_url("admin", "asterisk", "trunks", "%s") % v:lower()
end
)%>
- </td>
- <td style="text-align:left" class="cbi-value-field">
+ </div>
+ <div style="text-align:left" class="td cbi-value-field">
<%=rule.description or rule.name%>
- </td>
- <td style="text-align:left" class="cbi-value-field">
+ </div>
+ <div style="text-align:left" class="td cbi-value-field">
<a href="<%=url('admin/asterisk/dialplans/out', rule.name)%>">
<img style="border:none" alt="Edit entry" title="Edit entry" src="/luci-static/resources/cbi/edit.gif" />
</a>
<a href="<%=url('admin/asterisk/dialplans/zones')%>?delzone=<%=rule.name%>">
<img style="border:none" alt="Delete entry" title="Delete entry" src="/luci-static/resources/cbi/remove.gif" />
</a>
- </td>
- </tr>
+ </div>
+ </div>
<% end %>
- </table>
+ </div>
<div class="cbi-section-create cbi-tblsection-create"></div>
</div>
<br />
@@ -133,26 +133,26 @@
<br /><span style="color:red">Invalid name given!</span><br />
<% end -%>
- <table>
- <tr>
- <td style="padding:3px">
+ <div class="table">
+ <div class="tr">
+ <div class="td" style="padding:3px">
<label for="create1">1) Name</label><br />
<input type="text" class="cbi-section-create-name" id="create1" name="newzone_name" style="width:200px" />
<br /><br />
<label for="create2">2) Number Match</label><br />
<input type="text" class="cbi-section-create-name" id="create2" name="newzone_match" style="width:200px" />
- </td>
- <td style="padding:3px">
+ </div>
+ <div class="td" style="padding:3px">
<label for="create3">3) Trunks</label><br />
<select class="cbi-input-select" multiple="multiple" id="create3" name="newzone_uses" size="4" style="width:200px">
<% for i, t in ipairs(find_trunks()) do %>
<option value="<%=t[1]%>"><%=t[2]%></option>
<% end %>
</select>
- </td>
- </tr>
- </table>
+ </div>
+ </div>
+ </div>
<br />
<input type="submit" class="cbi-button cbi-button-add" name="newzone" value="Add entry" title="Add entry"/>
diff --git a/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua b/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua
index 632074a56f..731c3350eb 100644
--- a/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua
+++ b/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua
@@ -14,7 +14,8 @@ $Id$
local wa = require "luci.tools.webadmin"
local net = require "luci.model.network".init()
-local ifaces = net:get_interfaces()
+local sys = require "luci.sys"
+local ifaces = sys.net:devices()
m = Map("bcp38", translate("BCP38"),
translate("This function blocks packets with private address destinations " ..
@@ -37,10 +38,17 @@ a.rmempty = false
n = s:option(ListValue, "interface", translate("Interface name"), translate("Interface to apply the blocking to " ..
"(should be the upstream WAN interface)."))
+
for _, iface in ipairs(ifaces) do
- if iface:is_up() then
- n:value(iface:name())
- end
+ if not (iface == "lo" or iface:match("^ifb.*")) then
+ local nets = net:get_interface(iface)
+ nets = nets and nets:get_networks() or {}
+ for k, v in pairs(nets) do
+ nets[k] = nets[k].sid
+ end
+ nets = table.concat(nets, ",")
+ n:value(iface, ((#nets > 0) and "%s (%s)" % {iface, nets} or iface))
+ end
end
n.rmempty = false
diff --git a/applications/luci-app-ddns/Makefile b/applications/luci-app-ddns/Makefile
index bd6ddeb1b3..7295189518 100644
--- a/applications/luci-app-ddns/Makefile
+++ b/applications/luci-app-ddns/Makefile
@@ -16,10 +16,11 @@ PKG_VERSION:=2.4.9
# Release == build
# increase on changes of translation files
-PKG_RELEASE:=3
+PKG_RELEASE:=5
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)
diff --git a/applications/luci-app-ddns/luasrc/controller/ddns.lua b/applications/luci-app-ddns/luasrc/controller/ddns.lua
index 5f4a5118c3..e152bb0d98 100755
--- a/applications/luci-app-ddns/luasrc/controller/ddns.lua
+++ b/applications/luci-app-ddns/luasrc/controller/ddns.lua
@@ -21,7 +21,6 @@ luci_helper = "/usr/lib/ddns/dynamic_dns_lucihelper.sh"
local srv_name = "ddns-scripts"
local srv_ver_min = "2.7.7" -- minimum version of service required
-local srv_ver_cmd = luci_helper .. [[ -V | awk {'print $2'}]]
local app_name = "luci-app-ddns"
local app_title = "Dynamic DNS"
local app_version = "2.4.9-1"
@@ -29,7 +28,6 @@ local app_version = "2.4.9-1"
function index()
local nxfs = require "nixio.fs" -- global definitions not available
local sys = require "luci.sys" -- in function index()
- local ddns = require "luci.tools.ddns" -- ddns multiused functions
local muci = require "luci.model.uci"
-- no config create an empty one
@@ -81,33 +79,40 @@ end
-- Standardized application/service functions
function app_title_main()
- return [[<a href="javascript:alert(']]
- .. I18N.translate("Version Information")
- .. [[\n\n]] .. app_name
- .. [[\n\t]] .. I18N.translate("Version") .. [[:\t]] .. app_version
- .. [[\n\n]] .. srv_name .. [[ ]] .. I18N.translate("required") .. [[:]]
- .. [[\n\t]] .. I18N.translate("Version") .. [[:\t]]
- .. srv_ver_min .. [[ ]] .. I18N.translate("or higher")
- .. [[\n\n]] .. srv_name .. [[ ]] .. I18N.translate("installed") .. [[:]]
- .. [[\n\t]] .. I18N.translate("Version") .. [[:\t]]
- .. (service_version() or I18N.translate("NOT installed"))
- .. [[\n\n]]
- .. [[')">]]
- .. I18N.translate(app_title)
- .. [[</a>]]
+ tmp = {}
+ tmp[#tmp+1] = [[<a href="javascript:alert(']]
+ tmp[#tmp+1] = I18N.translate("Version Information")
+ tmp[#tmp+1] = [[\n\n]] .. app_name
+ tmp[#tmp+1] = [[\n]] .. I18N.translate("Version") .. [[: ]] .. app_version
+ tmp[#tmp+1] = [[\n\n]] .. srv_name .. [[ ]] .. I18N.translate("required") .. [[:]]
+ tmp[#tmp+1] = [[\n]] .. I18N.translate("Version") .. [[: ]]
+ tmp[#tmp+1] = srv_ver_min .. [[ ]] .. I18N.translate("or higher")
+ tmp[#tmp+1] = [[\n\n]] .. srv_name .. [[ ]] .. I18N.translate("installed") .. [[:]]
+ tmp[#tmp+1] = [[\n]] .. I18N.translate("Version") .. [[: ]]
+ tmp[#tmp+1] = (service_version() or I18N.translate("NOT installed"))
+ tmp[#tmp+1] = [[\n\n]]
+ tmp[#tmp+1] = [[')">]]
+ tmp[#tmp+1] = I18N.translate(app_title)
+ tmp[#tmp+1] = [[</a>]]
+
+ return table.concat(tmp)
end
-function service_version()
- local ver = nil
-
- ver = UTIL.exec(srv_ver_cmd)
- if #ver > 0 then return ver end
- IPKG.list_installed(srv_name, function(n, v, d)
- if v and (#v > 0) then ver = v end
- end
- )
- return ver
+function service_version()
+
+ local srv_ver_cmd = luci_helper .. " -V | awk {'print $2'} "
+ local ver
+
+ if IPKG then
+ ver = IPKG.info(srv_name)[srv_name].Version
+ else
+ ver = UTIL.exec(srv_ver_cmd)
+ end
+
+ if ver and #ver > 0 then return ver or nil end
+
end
+
function service_ok()
return IPKG.compare_versions((service_version() or "0"), ">=", srv_ver_min)
end
diff --git a/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua b/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua
index 977dbe34b1..eb2159076e 100644
--- a/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua
+++ b/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua
@@ -172,7 +172,7 @@ local function _option_used(option, urlscript)
end
-- function to verify if option is valid
-local function _option_validate(self, value)
+local function _option_validate(self, value, optional)
-- section is globally defined here be calling agrument (see above)
local fusev6 = usev6:formvalue(section) or "0"
local fsvc4 = svc4:formvalue(section) or "-"
@@ -204,6 +204,7 @@ local function _option_validate(self, value)
if used < 1 then return "" end
-- needed but no data then return error
if not value or (#value == 0) then
+ if optional then return nil end
return nil, err_tab_basic(self) .. translate("missing / required")
end
return value
@@ -292,6 +293,10 @@ function luh.parse(self, section, novld)
end
-- use_ipv6 -- ################################################################
+
+--We call it globally as it's called 11 times even outside specific function, saves 11 os.execute slow command!
+local has_ipv6 = DDNS.env_info("has_ipv6")
+
usev6 = ns:taboption("basic", ListValue, "use_ipv6",
translate("IP address version"),
translate("Defines which IP address 'IPv4/IPv6' is send to the DDNS provider") )
@@ -300,16 +305,16 @@ usev6.default = "0"
usev6:value("0", translate("IPv4-Address") )
function usev6.cfgvalue(self, section)
local value = AbstractValue.cfgvalue(self, section) or "0"
- if DDNS.has_ipv6 or (value == "1" and not DDNS.has_ipv6) then
+ if has_ipv6 or (value == "1" and not has_ipv6) then
self:value("1", translate("IPv6-Address") )
end
- if value == "1" and not DDNS.has_ipv6 then
+ if value == "1" and not has_ipv6 then
self.description = err_ipv6_basic
end
return value
end
function usev6.validate(self, value)
- if (value == "1" and DDNS.has_ipv6) or value == "0" then
+ if (value == "1" and has_ipv6) or value == "0" then
return value
end
return nil, err_tab_basic(self) .. err_ipv6_plain
@@ -360,7 +365,7 @@ svc6 = ns:taboption("basic", ListValue, "ipv6_service_name",
translate("DDNS Service provider") .. " [IPv6]" )
svc6.default = "-"
svc6:depends("use_ipv6", "1") -- only show on IPv6
-if not DDNS.has_ipv6 then
+if not has_ipv6 then
svc6.description = err_ipv6_basic
end
function svc6.cfgvalue(self, section)
@@ -374,7 +379,7 @@ function svc6.cfgvalue(self, section)
end
function svc6.validate(self, value)
if usev6:formvalue(section) == "1" then -- do only on IPv6
- if DDNS.has_ipv6 then return value end
+ if has_ipv6 then return value end
return nil, err_tab_basic(self) .. err_ipv6_plain
else
return "" -- suppress validate error
@@ -509,18 +514,18 @@ pe = ns:taboption("basic", Value, "param_enc",
translate("Optional Encoded Parameter"),
translate("Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)") )
function pe.validate(self, value)
- return _option_validate(self, value)
+ return _option_validate(self, value, true)
end
function pe.parse(self, section, novld)
DDNS.value_parse(self, section, novld)
end
--- IPv4/IPv6 - param_enc -- ###################################################
+-- IPv4/IPv6 - param_opt -- ###################################################
po = ns:taboption("basic", Value, "param_opt",
translate("Optional Parameter"),
translate("Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)") )
function po.validate(self, value)
- return _option_validate(self, value)
+ return _option_validate(self, value, true)
end
function po.parse(self, section, novld)
DDNS.value_parse(self, section, novld)
@@ -586,13 +591,17 @@ end
svc6:value("-", translate("-- custom --") )
-- IPv4/IPv6 - use_https -- ###################################################
-if DDNS.has_ssl or ( ( m:get(section, "use_https") or "0" ) == "1" ) then
+
+--We call it globally as it's called 4 times outside specific function.
+local has_ssl = DDNS.env_info("has_ssl")
+
+if has_ssl or ( ( m:get(section, "use_https") or "0" ) == "1" ) then
https = ns:taboption("basic", Flag, "use_https",
translate("Use HTTP Secure") )
https.orientation = "horizontal"
function https.cfgvalue(self, section)
local value = AbstractValue.cfgvalue(self, section)
- if not DDNS.has_ssl and value == "1" then
+ if not has_ssl and value == "1" then
self.description = bold_on .. font_red ..
translate("HTTPS not supported") .. font_off .. "<br />" ..
translate("please disable") .. " !" .. bold_off
@@ -602,7 +611,7 @@ if DDNS.has_ssl or ( ( m:get(section, "use_https") or "0" ) == "1" ) then
return value
end
function https.validate(self, value)
- if (value == "1" and DDNS.has_ssl ) or value == "0" then return value end
+ if (value == "1" and has_ssl ) or value == "0" then return value end
return nil, err_tab_basic(self) .. translate("HTTPS not supported") .. " !"
end
function https.write(self, section, value)
@@ -616,7 +625,7 @@ if DDNS.has_ssl or ( ( m:get(section, "use_https") or "0" ) == "1" ) then
end
-- IPv4/IPv6 - cacert -- ######################################################
-if DDNS.has_ssl then
+if has_ssl then
cert = ns:taboption("basic", Value, "cacert",
translate("Path to CA-Certificate"),
translate("directory or path/file") .. "<br />" ..
@@ -706,7 +715,7 @@ src6:value("network", translate("Network"))
src6:value("web", translate("URL"))
src6:value("interface", translate("Interface"))
src6:value("script", translate("Script"))
-if not DDNS.has_ipv6 then
+if not has_ipv6 then
src6.description = err_ipv6_other
end
function src6.cfgvalue(self, section)
@@ -715,7 +724,7 @@ end
function src6.validate(self, value)
if usev6:formvalue(section) ~= "1" then
return "" -- ignore on IPv4 selected
- elseif not DDNS.has_ipv6 then
+ elseif not has_ipv6 then
return nil, err_tab_adv(self) .. err_ipv6_plain
elseif not _verify_ip_source() then
return nil, err_tab_adv(self) ..
@@ -794,7 +803,7 @@ ipn6 = ns:taboption("advanced", ListValue, "ipv6_network",
ipn6:depends("ipv6_source", "network")
ipn6.default = "wan6"
WADM.cbi_add_networks(ipn6)
-if DDNS.has_ipv6 then
+if has_ipv6 then
ipn6.description = translate("Defines the network to read systems IPv6-Address from")
else
ipn6.description = err_ipv6_other
@@ -808,7 +817,7 @@ function ipn6.validate(self, value)
-- ignore if IPv4 selected OR
-- ignore everything except "network"
return ""
- elseif DDNS.has_ipv6 then
+ elseif has_ipv6 then
return value
else
return nil, err_tab_adv(self) .. err_ipv6_plain
@@ -881,7 +890,7 @@ iurl6 = ns:taboption("advanced", Value, "ipv6_url",
translate("URL to detect") .. " [IPv6]" )
iurl6:depends("ipv6_source", "web")
iurl6.default = "http://checkipv6.dyndns.com"
-if DDNS.has_ipv6 then
+if has_ipv6 then
iurl6.description = translate("Defines the Web page to read systems IPv6-Address from")
else
iurl6.description = err_ipv6_other
@@ -895,7 +904,7 @@ function iurl6.validate(self, value)
-- ignore if IPv4 selected OR
-- ignore everything except "web"
return ""
- elseif not DDNS.has_ipv6 then
+ elseif not has_ipv6 then
return nil, err_tab_adv(self) .. err_ipv6_plain
elseif not value or #value == 0 then
return nil, err_tab_adv(self) .. translate("missing / required")
@@ -1051,7 +1060,7 @@ eif6:depends("ipv6_source", "web")
eif6:depends("ipv6_source", "script")
eif6.default = "wan6"
WADM.cbi_add_networks(eif6)
-if not DDNS.has_ipv6 then
+if not has_ipv6 then
eif6.description = err_ipv6_other
else
eif6.description = translate("Network on which the ddns-updater scripts will be started")
@@ -1065,7 +1074,7 @@ function eif6.validate(self, value)
or fsrc6 == "network"
or fsrc6 == "interface" then
return "" -- ignore IPv4, network, interface
- elseif not DDNS.has_ipv6 then
+ elseif not has_ipv6 then
return nil, err_tab_adv(self) .. err_ipv6_plain
else
return value
@@ -1084,10 +1093,13 @@ function eif6.write(self, section, value)
end
function eif6.parse(self, section, novld)
DDNS.value_parse(self, section, novld)
-end
+end
-- IPv4/IPv6 - bind_network -- ################################################
-if DDNS.has_bindnet or ( ( m:get(section, "bind_network") or "" ) ~= "" ) then
+
+local has_bindnet = DDNS.env_info("has_bindnet")
+
+if has_bindnet or ( ( m:get(section, "bind_network") or "" ) ~= "" ) then
bnet = ns:taboption("advanced", ListValue, "bind_network",
translate("Bind Network") )
bnet:depends("ipv4_source", "web")
@@ -1097,7 +1109,7 @@ if DDNS.has_bindnet or ( ( m:get(section, "bind_network") or "" ) ~= "" ) then
WADM.cbi_add_networks(bnet)
function bnet.cfgvalue(self, section)
local value = AbstractValue.cfgvalue(self, section)
- if not DDNS.has_bindnet and value ~= "" then
+ if not has_bindnet and value ~= "" then
self.description = bold_on .. font_red ..
translate("Binding to a specific network not supported") .. font_off .. "<br />" ..
translate("please set to 'default'") .. " !" .. bold_off
@@ -1108,7 +1120,7 @@ if DDNS.has_bindnet or ( ( m:get(section, "bind_network") or "" ) ~= "" ) then
return value
end
function bnet.validate(self, value)
- if ( (value ~= "") and DDNS.has_bindnet ) or (value == "") then return value end
+ if ( (value ~= "") and has_bindnet ) or (value == "") then return value end
return nil, err_tab_adv(self) .. translate("Binding to a specific network not supported") .. " !"
end
function bnet.parse(self, section, novld)
@@ -1119,13 +1131,16 @@ end
-- IPv4 + IPv6 - force_ipversion -- ###########################################
-- optional to force wget/curl and host to use only selected IP version
-- command parameter "-4" or "-6"
-if DDNS.has_forceip or ( ( m:get(section, "force_ipversion") or "0" ) ~= "0" ) then
+
+local has_forceip = DDNS.env_info("has_forceip")
+
+if has_forceip or ( ( m:get(section, "force_ipversion") or "0" ) ~= "0" ) then
fipv = ns:taboption("advanced", Flag, "force_ipversion",
translate("Force IP Version") )
fipv.orientation = "horizontal"
function fipv.cfgvalue(self, section)
local value = AbstractValue.cfgvalue(self, section)
- if not DDNS.has_forceip and value ~= "0" then
+ if not has_forceip and value ~= "0" then
self.description = bold_on .. font_red ..
translate("Force IP Version not supported") .. font_off .. "<br />" ..
translate("please disable") .. " !" .. bold_off
@@ -1135,14 +1150,17 @@ if DDNS.has_forceip or ( ( m:get(section, "force_ipversion") or "0" ) ~= "0" ) t
return value
end
function fipv.validate(self, value)
- if (value == "1" and DDNS.has_forceip) or value == "0" then return value end
+ if (value == "1" and has_forceip) or value == "0" then return value end
return nil, err_tab_adv(self) .. translate("Force IP Version not supported")
end
end
-- IPv4 + IPv6 - dns_server -- ################################################
-- optional DNS Server to use resolving my IP
-if DDNS.has_dnsserver or ( ( m:get(section, "dns_server") or "" ) ~= "" ) then
+
+local has_dnsserver = DDNS.env_info("has_dnsserver")
+
+if has_dnsserver or ( ( m:get(section, "dns_server") or "" ) ~= "" ) then
dns = ns:taboption("advanced", Value, "dns_server",
translate("DNS-Server"),
translate("OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'.") .. "<br />" ..
@@ -1152,7 +1170,7 @@ if DDNS.has_dnsserver or ( ( m:get(section, "dns_server") or "" ) ~= "" ) then
-- if .datatype is set, then it is checked before calling this function
if not value or (#value == 0) then
return "" -- ignore on empty
- elseif not DDNS.has_dnsserver then
+ elseif not has_dnsserver then
return nil, err_tab_adv(self) .. translate("Specifying a DNS-Server is not supported")
elseif not DTYP.host(value) then
return nil, err_tab_adv(self) .. translate("use hostname, FQDN, IPv4- or IPv6-Address")
@@ -1179,13 +1197,16 @@ if DDNS.has_dnsserver or ( ( m:get(section, "dns_server") or "" ) ~= "" ) then
end
-- IPv4 + IPv6 - force_dnstcp -- ##############################################
-if DDNS.has_bindhost or ( ( m:get(section, "force_dnstcp") or "0" ) ~= "0" ) then
+
+local has_bindhost = DDNS.env_info("has_bindhost")
+
+if has_bindhost or ( ( m:get(section, "force_dnstcp") or "0" ) ~= "0" ) then
tcp = ns:taboption("advanced", Flag, "force_dnstcp",
translate("Force TCP on DNS") )
tcp.orientation = "horizontal"
function tcp.cfgvalue(self, section)
local value = AbstractValue.cfgvalue(self, section)
- if not DDNS.has_bindhost and value ~= "0" then
+ if not has_bindhost and value ~= "0" then
self.description = bold_on .. font_red ..
translate("DNS requests via TCP not supported") .. font_off .. "<br />" ..
translate("please disable") .. " !" .. bold_off
@@ -1195,7 +1216,7 @@ if DDNS.has_bindhost or ( ( m:get(section, "force_dnstcp") or "0" ) ~= "0" ) the
return value
end
function tcp.validate(self, value)
- if (value == "1" and DDNS.has_bindhost ) or value == "0" then
+ if (value == "1" and has_bindhost ) or value == "0" then
return value
end
return nil, err_tab_adv(self) .. translate("DNS requests via TCP not supported")
@@ -1204,13 +1225,16 @@ end
-- IPv4 + IPv6 - proxy -- #####################################################
-- optional Proxy to use for http/https requests [user:password@]proxyhost[:port]
-if DDNS.has_proxy or ( ( m:get(section, "proxy") or "" ) ~= "" ) then
+
+local has_proxy = DDNS.env_info("has_proxy")
+
+if has_proxy or ( ( m:get(section, "proxy") or "" ) ~= "" ) then
pxy = ns:taboption("advanced", Value, "proxy",
translate("PROXY-Server") )
pxy.placeholder="user:password@myproxy.lan:8080"
function pxy.cfgvalue(self, section)
local value = AbstractValue.cfgvalue(self, section)
- if not DDNS.has_proxy and value ~= "" then
+ if not has_proxy and value ~= "" then
self.description = bold_on .. font_red ..
translate("PROXY-Server not supported") .. font_off .. "<br />" ..
translate("please remove entry") .. "!" .. bold_off
@@ -1226,7 +1250,7 @@ if DDNS.has_proxy or ( ( m:get(section, "proxy") or "" ) ~= "" ) then
-- if .datatype is set, then it is checked before calling this function
if not value or (#value == 0) then
return "" -- ignore on empty
- elseif DDNS.has_proxy then
+ elseif has_proxy then
local ipv6 = usev6:formvalue(section) or "0"
local force = fipv:formvalue(section) or "0"
local command = CTRL.luci_helper .. [[ -]]
diff --git a/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua b/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua
index df39a3a7e5..419201548b 100644
--- a/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua
+++ b/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua
@@ -48,7 +48,7 @@ if not SYS.init.enabled("ddns") then
end
-- No IPv6 support
-if not DDNS.has_ipv6 then
+if not DDNS.env_info("has_ipv6") then
local v6 = s:option(DummyValue, "_no_ipv6")
v6.titleref = 'http://www.openwrt.org" target="_blank'
v6.rawhtml = true
@@ -60,7 +60,7 @@ if not DDNS.has_ipv6 then
end
-- No HTTPS support
-if not DDNS.has_ssl then
+if not DDNS.env_info("has_ssl") then
local sl = s:option(DummyValue, "_no_https")
sl.titleref = DISP.build_url("admin", "system", "packages")
sl.rawhtml = true
@@ -74,7 +74,7 @@ if not DDNS.has_ssl then
end
-- No bind_network
-if not DDNS.has_bindnet then
+if not DDNS.env_info("has_bindnet") then
local bn = s:option(DummyValue, "_no_bind_network")
bn.titleref = DISP.build_url("admin", "system", "packages")
bn.rawhtml = true
@@ -90,7 +90,7 @@ if not DDNS.has_bindnet then
end
-- currently only cURL possibly without proxy support
-if not DDNS.has_proxy then
+if not DDNS.env_info("has_proxy") then
local px = s:option(DummyValue, "_no_proxy")
px.titleref = DISP.build_url("admin", "system", "packages")
px.rawhtml = true
@@ -104,7 +104,7 @@ if not DDNS.has_proxy then
end
-- "Force IP Version not supported"
-if not DDNS.has_forceip then
+if not DDNS.env_info("has_forceip") then
local fi = s:option(DummyValue, "_no_force_ip")
fi.titleref = DISP.build_url("admin", "system", "packages")
fi.rawhtml = true
@@ -112,11 +112,11 @@ if not DDNS.has_forceip then
translate("Force IP Version not supported") .. bold_off
local value = translate("BusyBox's nslookup and Wget do not support to specify " ..
"the IP version to use for communication with DDNS Provider!")
- if not (DDNS.has_wgetssl or DDNS.has_curl or DDNS.has_fetch) then
+ if not (DDNS.env_info("has_wgetssl") or DDNS.env_info("has_curl") or DDNS.env_info("has_fetch")) then
value = value .. "<br />- " ..
translate("You should install 'wget' or 'curl' or 'uclient-fetch' package.")
end
- if not DDNS.has_bindhost then
+ if not DDNS.env_info("has_bindhost") then
value = value .. "<br />- " ..
translate("You should install 'bind-host' or 'knot-host' or 'drill' package for DNS requests.")
end
@@ -124,7 +124,7 @@ if not DDNS.has_forceip then
end
-- "DNS requests via TCP not supported"
-if not DDNS.has_bindhost then
+if not DDNS.env_info("has_bindhost") then
local dt = s:option(DummyValue, "_no_dnstcp")
dt.titleref = DISP.build_url("admin", "system", "packages")
dt.rawhtml = true
@@ -137,7 +137,7 @@ if not DDNS.has_bindhost then
end
-- nslookup compiled with musl produce problems when using
-if not DDNS.has_dnsserver then
+if not DDNS.env_info("has_dnsserver") then
local ds = s:option(DummyValue, "_no_dnsserver")
ds.titleref = DISP.build_url("admin", "system", "packages")
ds.rawhtml = true
@@ -151,7 +151,7 @@ if not DDNS.has_dnsserver then
end
-- certificates installed
-if DDNS.has_ssl and not DDNS.has_cacerts then
+if DDNS.env_info("has_ssl") and not DDNS.env_info("has_cacerts") then
local ca = s:option(DummyValue, "_no_certs")
ca.titleref = DISP.build_url("admin", "system", "packages")
ca.rawhtml = true
diff --git a/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua b/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua
index 114f831c17..11f73800ea 100644
--- a/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua
+++ b/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua
@@ -1,21 +1,20 @@
-- Copyright 2014-2018 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
-- Licensed to the public under the Apache License 2.0.
-local NXFS = require "nixio.fs"
local DISP = require "luci.dispatcher"
local HTTP = require "luci.http"
local SYS = require "luci.sys"
local CTRL = require "luci.controller.ddns" -- this application's controller
local DDNS = require "luci.tools.ddns" -- ddns multiused functions
-local show_hints = not (DDNS.has_ipv6 -- IPv6 support
- and DDNS.has_ssl -- HTTPS support
- and DDNS.has_proxy -- Proxy support
- and DDNS.has_bindhost -- DNS TCP support
- and DDNS.has_forceip -- Force IP version
- and DDNS.has_dnsserver -- DNS server support
- and DDNS.has_bindnet -- Bind to network/interface
- and DDNS.has_cacerts -- certificates installed at /etc/ssl/certs
+local show_hints = not (DDNS.env_info("has_ipv6") -- IPv6 support
+ and DDNS.env_info("has_ssl") -- HTTPS support
+ and DDNS.env_info("has_proxy") -- Proxy support
+ and DDNS.env_info("has_bindhost") -- DNS TCP support
+ and DDNS.env_info("has_forceip") -- Force IP version
+ and DDNS.env_info("has_dnsserver") -- DNS server support
+ and DDNS.env_info("has_bindnet") -- Bind to network/interface
+ and DDNS.env_info("has_cacerts") -- certificates installed at /etc/ssl/certs
)
local not_enabled = not SYS.init.enabled("ddns")
local need_update = not CTRL.service_ok()
diff --git a/applications/luci-app-ddns/luasrc/tools/ddns.lua b/applications/luci-app-ddns/luasrc/tools/ddns.lua
index 690b9b30ce..57913a51fe 100755
--- a/applications/luci-app-ddns/luasrc/tools/ddns.lua
+++ b/applications/luci-app-ddns/luasrc/tools/ddns.lua
@@ -5,36 +5,134 @@ module("luci.tools.ddns", package.seeall)
local NX = require "nixio"
local NXFS = require "nixio.fs"
-local OPKG = require "luci.model.ipkg"
local UCI = require "luci.model.uci"
local SYS = require "luci.sys"
-local UTIL = require "luci.util"
-local function _check_certs()
- local _, v = NXFS.glob("/etc/ssl/certs/*.crt")
- if ( v == 0 ) then _, v = NXFS.glob("/etc/ssl/certs/*.pem") end
- return (v > 0)
-end
+function env_info(type)
+
+ if ( type == "has_ssl" ) or ( type == "has_proxy" ) or ( type == "has_forceip" )
+ or ( type == "has_bindnet" ) or ( type == "has_fetch" )
+ or ( type == "has_wgetssl" ) or ( type == "has_curl" )
+ or ( type == "has_curlssl" ) or ( type == "has_curlpxy" )
+ or ( type == "has_fetchssl" ) or ( type == "has_bbwget" ) then
+
+ local function has_wgetssl()
+ return (SYS.call( [[which wget-ssl >/dev/null 2>&1]] ) == 0) -- and true or nil
+ end
+
+ local function has_curlssl()
+ return (SYS.call( [[$(which curl) -V 2>&1 | grep "Protocols:" | grep -qF "https"]] ) ~= 0)
+ end
+
+ local function has_fetch()
+ return (SYS.call( [[which uclient-fetch >/dev/null 2>&1]] ) == 0)
+ end
+
+ local function has_fetchssl()
+ return NXFS.access("/lib/libustream-ssl.so")
+ end
+
+ local function has_curl()
+ return (SYS.call( [[which curl >/dev/null 2>&1]] ) == 0)
+ end
+
+ local function has_curlpxy()
+ return (SYS.call( [[grep -i "all_proxy" /usr/lib/libcurl.so* >/dev/null 2>&1]] ) == 0)
+ end
+
+ local function has_bbwget()
+ return (SYS.call( [[$(which wget) -V 2>&1 | grep -iqF "busybox"]] ) == 0)
+ end
+
+ if type == "has_wgetssl" then
+ return has_wgetssl()
+
+ elseif type == "has_curl" then
+ return has_curl()
+
+ elseif type == "has_curlssl" then
+ return has_curlssl()
+
+ elseif type == "has_curlpxy" then
+ return has_curlpxy()
+
+ elseif type == "has_fetch" then
+ return has_fetch()
+
+ elseif type == "has_fetchssl" then
+ return has_fetchssl()
+
+ elseif type == "has_bbwget" then
+ return has_bbwget()
+
+ elseif type == "has_ssl" then
+ if has_wgetssl() then return true end
+ if has_curlssl() then return true end
+ if (has_fetch() and has_fetchssl()) then return true end
+ return false
+
+ elseif type == "has_proxy" then
+ if has_wgetssl() then return true end
+ if has_curlpxy() then return true end
+ if has_fetch() then return true end
+ if has_bbwget() then return true end
+ return false
+
+ elseif type == "has_forceip" then
+ if has_wgetssl() then return true end
+ if has_curl() then return true end
+ if has_fetch() then return true end -- only really needed for transfer
+ return false
+
+ elseif type == "has_bindnet" then
+ if has_curl() then return true end
+ if has_wgetssl() then return true end
+ return false
+ end
+
+ elseif ( type == "has_dnsserver" ) or ( type == "has_bindhost" ) or ( type == "has_hostip" ) or ( type == "has_nslookup" ) then
+ local function has_bindhost()
+ if (SYS.call( [[which host >/dev/null 2>&1]] ) == 0) then return true end
+ if (SYS.call( [[which host >/dev/null 2>&1]] ) == 0) then return true end
+ if (SYS.call( [[which khost >/dev/null 2>&1]] ) == 0) then return true end
+ if (SYS.call( [[which drill >/dev/null 2>&1]] ) == 0) then return true end
+ return false
+ end
+
+ local function has_hostip()
+ return (SYS.call( [[which hostip >/dev/null 2>&1]] ) == 0)
+ end
+
+ local function has_nslookup()
+ return (SYS.call( [[$(which nslookup) localhost 2>&1 | grep -qF "(null)"]] ) ~= 0)
+ end
+
+ if type == "has_bindhost" then
+ return has_bindhost()
+ elseif type == "has_hostip" then
+ return has_hostip()
+ elseif type == "has_nslookup" then
+ return has_nslookup()
+ elseif tyep == "has_dnsserver" then
+ if has_bindhost() then return true end
+ if has_hostip() then return true end
+ if has_nslookup() then return true end
+ return false
+ end
+
+ elseif type == "has_ipv6" then
+ return (NXFS.access("/proc/net/ipv6_route") and NXFS.access("/usr/sbin/ip6tables"))
+
+ elseif type == "has_cacerts" then
+ --old _check_certs() local function
+ local _, v = NXFS.glob("/etc/ssl/certs/*.crt")
+ if ( v == 0 ) then _, v = NXFS.glob("/etc/ssl/certs/*.pem") end
+ return (v > 0)
+ else
+ return
+ end
-has_wgetssl = (SYS.call( [[which wget-ssl >/dev/null 2>&1]] ) == 0) -- and true or nil
-has_curl = (SYS.call( [[which curl >/dev/null 2>&1]] ) == 0)
-has_curlssl = (SYS.call( [[$(which curl) -V 2>&1 | grep "Protocols:" | grep -qF "https"]] ) ~= 0)
-has_curlpxy = (SYS.call( [[grep -i "all_proxy" /usr/lib/libcurl.so* >/dev/null 2>&1]] ) == 0)
-has_fetch = (SYS.call( [[which uclient-fetch >/dev/null 2>&1]] ) == 0)
-has_fetchssl = NXFS.access("/lib/libustream-ssl.so")
-has_bbwget = (SYS.call( [[$(which wget) -V 2>&1 | grep -iqF "busybox"]] ) == 0)
-has_bindhost = (SYS.call( [[which host >/dev/null 2>&1]] ) == 0)
- or (SYS.call( [[which khost >/dev/null 2>&1]] ) == 0)
- or (SYS.call( [[which drill >/dev/null 2>&1]] ) == 0)
-has_hostip = (SYS.call( [[which hostip >/dev/null 2>&1]] ) == 0)
-has_nslookup = (SYS.call( [[$(which nslookup) localhost 2>&1 | grep -qF "(null)"]] ) ~= 0)
-has_ipv6 = (NXFS.access("/proc/net/ipv6_route") and NXFS.access("/usr/sbin/ip6tables"))
-has_ssl = (has_wgetssl or has_curlssl or (has_fetch and has_fetchssl))
-has_proxy = (has_wgetssl or has_curlpxy or has_fetch or has_bbwget)
-has_forceip = (has_wgetssl or has_curl or has_fetch) -- only really needed for transfer
-has_dnsserver = (has_bindhost or has_hostip or has_nslookup)
-has_bindnet = (has_wgetssl or has_curl)
-has_cacerts = _check_certs()
+end
-- function to calculate seconds from given interval and unit
function calc_seconds(interval, unit)
diff --git a/applications/luci-app-ddns/luasrc/view/ddns/system_status.htm b/applications/luci-app-ddns/luasrc/view/ddns/system_status.htm
index 5bdcb03e73..7fcb882a15 100644
--- a/applications/luci-app-ddns/luasrc/view/ddns/system_status.htm
+++ b/applications/luci-app-ddns/luasrc/view/ddns/system_status.htm
@@ -1,4 +1,3 @@
-
<!-- ++ BEGIN ++ Dynamic DNS ++ system_status.htm ++ -->
<script type="text/javascript">//<![CDATA[
// helper to move status data to the relevant
@@ -10,8 +9,8 @@
if ( !(tbl) ) { return; }
// clear all rows
- while (tbl.rows.length > 1)
- tbl.deleteRow(1);
+ while (tbl.firstElementChild !== tbl.lastElementChild)
+ tbl.removeChild(tbl.lastElementChild);
// variable for Modulo-Division use to set cbi-rowstyle-? (0 or 1)
var i = -1;
@@ -21,22 +20,22 @@
if (data[0].enabled == 0) {
var txt = '<strong><font color="red"><%:DDNS Autostart disabled%></font>' ;
var url = '<a href="' + data[0].url_up + '"><%:enable here%></a></strong>' ;
- var tr = tbl.insertRow(-1);
- tr.className = 'cbi-section-table-row cbi-rowstyle-' + (((j + i) % 2) + 1);
- var td = tr.insertCell(-1);
- td.colSpan = 2 ;
- td.innerHTML = txt + " - " + url
- tr.insertCell(-1).colSpan = 3 ;
+ tbl.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format(((j + i) % 2) + 1), [
+ E('<div class="td">', [ txt," - ", url ])
+ ]));
i++ ;
}
+ var configuration;
+ var next_update;
+ var lookup;
+ var registered_ip;
+ var network;
+
for( j = 1; j < data.length; j++ )
{
- var tr = tbl.insertRow(-1);
- tr.className = 'cbi-section-table-row cbi-rowstyle-' + (((j + i) % 2) + 1) ;
-
// configuration
- tr.insertCell(-1).innerHTML = '<strong>' + data[j].section + '</strong>' ;
+ configuration = data[j].section;
// pid
// data[j].pid ignored here
@@ -47,66 +46,74 @@
// next update
switch (data[j].datenext) {
case "_empty_":
- tr.insertCell(-1).innerHTML = '<em><%:Unknown error%></em>' ;
+ next_update = '<em><%:Unknown error%></em>';
break;
case "_stopped_":
- tr.insertCell(-1).innerHTML = '<em><%:Stopped%></em>' ;
+ next_update = '<em><%:Stopped%></em>';
break;
case "_disabled_":
- tr.insertCell(-1).innerHTML = '<em><%:Disabled%></em>' ;
+ next_update = '<em><%:Disabled%></em>';
break;
case "_noupdate_":
- tr.insertCell(-1).innerHTML = '<em><%:Update error%></em>' ;
+ next_update = '<em><%:Update error%></em>';
break;
case "_runonce_":
- tr.insertCell(-1).innerHTML = '<em><%:Run once%></em>' ;
+ next_update = '<em><%:Run once%></em>';
break;
case "_verify_":
- tr.insertCell(-1).innerHTML = '<em><%:Verify%></em>';
+ next_update = '<em><%:Verify%></em>';
break;
default:
- tr.insertCell(-1).innerHTML = data[j].datenext ;
+ next_update = data[j].datenext;
break;
}
// lookup
if (data[j].lookup == "_nolookup_")
- tr.insertCell(-1).innerHTML = '<em><%:config error%></em>';
+ lookup = '<em><%:config error%></em>';
else
- tr.insertCell(-1).innerHTML = data[j].lookup;
+ lookup = data[j].lookup;
// registered IP
switch (data[j].reg_ip) {
case "_nolookup_":
- tr.insertCell(-1).innerHTML = '<em><%:Config error%></em>';
+ registered_ip = '<em><%:config error%></em>';
break;
case "_nodata_":
- tr.insertCell(-1).innerHTML = '<em><%:No data%></em>';
+ registered_ip = '<em><%:No data%></em>';
break;
case "_noipv6_":
- tr.insertCell(-1).innerHTML = '<em><%:IPv6 not supported%></em>';
+ registered_ip = '<em><%:IPv6 not supported%></em>';
break;
default:
- tr.insertCell(-1).innerHTML = data[j].reg_ip;
+ registered_ip = data[j].reg_ip;
break;
}
// monitored interface
if (data[j].iface == "_nonet_")
- tr.insertCell(-1).innerHTML = '<em><%:Config error%></em>';
+ network = '<em><%:Config error%></em>';
else
- tr.insertCell(-1).innerHTML = data[j].iface;
+ network = data[j].iface;
+
+ tbl.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format(((j + i) % 2) + 1), [
+ E('<div class="td">', [ E('<strong>', configuration) ]),
+ E('<div class="td">', next_update),
+ E('<div class="td">', lookup),
+ E('<div class="td">', registered_ip),
+ E('<div class="td">', network)
+ ]));
}
- if (tbl.rows.length == 1 || (data[0].enabled == 0 && tbl.rows.length == 2) ) {
+ if (tbl.firstElementChild === tbl.lastElementChild || (data[0].enabled == 0 && tbl.childNodes.length == 2) ) {
var br = '<br />';
- if (tbl.rows.length > 1)
+ var msg = '<%:There is no service configured.%>';
+ if (tbl.firstElementChild !== tbl.lastElementChild)
br = '';
- var tr = tbl.insertRow(-1);
- tr.className = "cbi-section-table-row";
- var td = tr.insertCell(-1);
- td.colSpan = 5;
- td.innerHTML = '<em>' + br + '<%:There is no service configured.%></em>' ;
+ msg = br + msg;
+ tbl.appendChild(E('<div class="tr cbi-section-table-row">', [
+ E('<div class="td">', [ E('<em>', msg) ])
+ ]));
}
}
@@ -128,17 +135,17 @@
<fieldset class="cbi-section" id="ddns_status_section">
<legend><a href="<%=url([[admin]], [[services]], [[ddns]])%>"><%:Dynamic DNS%></a></legend>
- <table class="cbi-section-table" id="ddns_status_table">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Configuration%></th>
- <th class="cbi-section-table-cell"><%:Next Update%></th>
- <th class="cbi-section-table-cell"><%:Lookup Hostname%></th>
- <th class="cbi-section-table-cell"><%:Registered IP%></th>
- <th class="cbi-section-table-cell"><%:Network%></th>
- </tr>
- <tr class="cbi-section-table-row">
- <td colspan="5"><em><br /><%:Collecting data...%></em></td>
- </tr>
- </table>
+ <div class="table cbi-section-table" id="ddns_status_table">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:Configuration%></div>
+ <div class="th cbi-section-table-cell"><%:Next Update%></div>
+ <div class="th cbi-section-table-cell"><%:Lookup Hostname%></div>
+ <div class="th cbi-section-table-cell"><%:Registered IP%></div>
+ <div class="th cbi-section-table-cell"><%:Network%></div>
+ </div>
+ <div class="tr cbi-section-table-row">
+ <div class="td"><em><br /><%:Collecting data...%></em></div>
+ </div>
+ </div>
</fieldset>
<!-- ++ END ++ Dynamic DNS ++ system_status.htm ++ -->
diff --git a/applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua b/applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua
index 17a49483d7..d51f8fb79b 100644
--- a/applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua
+++ b/applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua
@@ -55,6 +55,7 @@ o = s:option(Value, "src", translate("Source zone"))
o.nocreate = true
o.default = "wan"
o.template = "cbi/firewall_zonelist"
+o.rmempty = false
o = s:option(DynamicList, "src_mac",
@@ -88,6 +89,10 @@ o.rmempty = true
o.datatype = "neg(portrange)"
o.placeholder = translate("any")
+o:depends("proto", "tcp")
+o:depends("proto", "udp")
+o:depends("proto", "tcp udp")
+o:depends("proto", "tcpudp")
o = s:option(Value, "src_dip",
translate("External IP address"),
@@ -108,7 +113,10 @@ o = s:option(Value, "src_dport", translate("External port"),
"destination port or port range on this host"))
o.datatype = "neg(portrange)"
-
+o:depends("proto", "tcp")
+o:depends("proto", "udp")
+o:depends("proto", "tcp udp")
+o:depends("proto", "tcpudp")
o = s:option(Value, "dest", translate("Internal zone"))
o.nocreate = true
@@ -133,6 +141,10 @@ o = s:option(Value, "dest_port",
o.placeholder = translate("any")
o.datatype = "portrange"
+o:depends("proto", "tcp")
+o:depends("proto", "udp")
+o:depends("proto", "tcp udp")
+o:depends("proto", "tcpudp")
o = s:option(Flag, "reflection", translate("Enable NAT Loopback"))
o.rmempty = true
diff --git a/applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua b/applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua
index e61ce73cdd..5d1ffe0913 100644
--- a/applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua
+++ b/applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua
@@ -54,7 +54,7 @@ function s.parse(self, ...)
if created then
m.uci:save("firewall")
luci.http.redirect(ds.build_url(
- "admin/network/firewall/redirect", created
+ "admin/network/firewall/forwards", created
))
end
end
@@ -63,8 +63,9 @@ function s.filter(self, sid)
return (self.map:get(sid, "target") ~= "SNAT")
end
-
-ft.opt_name(s, DummyValue, translate("Name"))
+function s.sectiontitle(self, sid)
+ return (self.map:get(sid, "name") or translate("Unnamed forward"))
+end
local function forward_proto_txt(self, s)
@@ -103,7 +104,6 @@ end
match = s:option(DummyValue, "match", translate("Match"))
match.rawhtml = true
-match.width = "50%"
function match.cfgvalue(self, s)
return "<small>%s<br />%s<br />%s</small>" % {
forward_proto_txt(self, s),
@@ -115,7 +115,6 @@ end
dest = s:option(DummyValue, "dest", translate("Forward to"))
dest.rawhtml = true
-dest.width = "40%"
function dest.cfgvalue(self, s)
local z = ft.fmt_zone(self.map:get(s, "dest"), translate("any zone"))
local a = ft.fmt_ip(self.map:get(s, "dest_ip"), translate("any host"))
@@ -129,6 +128,6 @@ function dest.cfgvalue(self, s)
end
end
-ft.opt_enabled(s, Flag, translate("Enable")).width = "1%"
+ft.opt_enabled(s, Flag, translate("Enable"))
return m
diff --git a/applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua b/applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua
index 1c838888f1..a4763d5dc4 100644
--- a/applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua
+++ b/applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua
@@ -115,6 +115,10 @@ elseif rule_type == "redirect" then
o.datatype = "neg(portrange)"
o.placeholder = translate("any")
+ o:depends("proto", "tcp")
+ o:depends("proto", "udp")
+ o:depends("proto", "tcp udp")
+ o:depends("proto", "tcpudp")
o = s:option(Value, "dest", translate("Destination zone"))
o.nocreate = true
@@ -139,6 +143,10 @@ elseif rule_type == "redirect" then
o.placeholder = translate("any")
o.datatype = "neg(portrange)"
+ o:depends("proto", "tcp")
+ o:depends("proto", "udp")
+ o:depends("proto", "tcp udp")
+ o:depends("proto", "tcpudp")
o = s:option(Value, "src_dip",
translate("SNAT IP address"),
@@ -163,6 +171,10 @@ elseif rule_type == "redirect" then
o.rmempty = true
o.placeholder = translate('Do not rewrite')
+ o:depends("proto", "tcp")
+ o:depends("proto", "udp")
+ o:depends("proto", "tcp udp")
+ o:depends("proto", "tcpudp")
s:option(Value, "extra",
translate("Extra arguments"),
@@ -212,7 +224,13 @@ else
end
- o = s:option(DynamicList, "icmp_type", translate("Match ICMP type"))
+ o = s:option(DropDown, "icmp_type", translate("Match ICMP type"))
+ o.multiple = true
+ o.display = 10
+ o.dropdown = 10
+ o.custom = true
+ o.cast = "table"
+
o:value("", "any")
o:value("echo-reply")
o:value("destination-unreachable")
@@ -251,11 +269,13 @@ else
o:value("address-mask-request")
o:value("address-mask-reply")
+ o:depends("proto", "icmp")
+
o = s:option(Value, "src", translate("Source zone"))
o.nocreate = true
o.allowany = true
- o.default = "wan"
+ o.allowlocal = "src"
o.template = "cbi/firewall_zonelist"
@@ -269,7 +289,7 @@ else
o = s:option(Value, "src_ip", translate("Source address"))
- o.datatype = "neg(ipmask)"
+ o.datatype = "list(neg(ipmask))"
o.placeholder = translate("any")
luci.sys.net.ipv4_hints(function(ip, name)
@@ -281,16 +301,29 @@ else
o.datatype = "list(neg(portrange))"
o.placeholder = translate("any")
+ o:depends("proto", "tcp")
+ o:depends("proto", "udp")
+ o:depends("proto", "tcp udp")
+ o:depends("proto", "tcpudp")
- o = s:option(Value, "dest", translate("Destination zone"))
+ o = s:option(Value, "dest_local", translate("Output zone"))
+ o.nocreate = true
+ o.allowany = true
+ o.template = "cbi/firewall_zonelist"
+ o.alias = "dest"
+ o:depends("src", "")
+
+ o = s:option(Value, "dest_remote", translate("Destination zone"))
o.nocreate = true
o.allowany = true
o.allowlocal = true
o.template = "cbi/firewall_zonelist"
+ o.alias = "dest"
+ o:depends({["src"] = "", ["!reverse"] = true})
o = s:option(Value, "dest_ip", translate("Destination address"))
- o.datatype = "neg(ipmask)"
+ o.datatype = "list(neg(ipmask))"
o.placeholder = translate("any")
luci.sys.net.ipv4_hints(function(ip, name)
@@ -302,6 +335,10 @@ else
o.datatype = "list(neg(portrange))"
o.placeholder = translate("any")
+ o:depends("proto", "tcp")
+ o:depends("proto", "udp")
+ o:depends("proto", "tcp udp")
+ o:depends("proto", "tcpudp")
o = s:option(ListValue, "target", translate("Action"))
o.default = "ACCEPT"
@@ -316,9 +353,9 @@ else
translate("Passes additional arguments to iptables. Use with care!"))
end
-o = s:option(MultiValue, "weekdays", translate("Week Days"))
-o.oneline = true
-o.widget = "checkbox"
+o = s:option(DropDown, "weekdays", translate("Week Days"))
+o.multiple = true
+o.display = 5
o:value("Sun", translate("Sunday"))
o:value("Mon", translate("Monday"))
o:value("Tue", translate("Tuesday"))
@@ -327,9 +364,9 @@ o:value("Thu", translate("Thursday"))
o:value("Fri", translate("Friday"))
o:value("Sat", translate("Saturday"))
-o = s:option(MultiValue, "monthdays", translate("Month Days"))
-o.oneline = true
-o.widget = "checkbox"
+o = s:option(DropDown, "monthdays", translate("Month Days"))
+o.multiple = true
+o.display = 15
for i = 1,31 do
o:value(translate(i))
end
diff --git a/applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua b/applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua
index c533491977..f4b6b2a928 100644
--- a/applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua
+++ b/applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua
@@ -72,7 +72,9 @@ function s.parse(self, ...)
end
end
-ft.opt_name(s, DummyValue, translate("Name"))
+function s.sectiontitle(self, sid)
+ return (self.map:get(sid, "name") or translate("Unnamed rule"))
+end
local function rule_proto_txt(self, s)
local f = self.map:get(s, "family")
@@ -89,17 +91,31 @@ local function rule_proto_txt(self, s)
end
local function rule_src_txt(self, s)
- local z = ft.fmt_zone(self.map:get(s, "src"), translate("any zone"))
- local a = ft.fmt_ip(self.map:get(s, "src_ip"), translate("any host"))
+ local z = ft.fmt_zone(self.map:get(s, "src"))
local p = ft.fmt_port(self.map:get(s, "src_port"))
local m = ft.fmt_mac(self.map:get(s, "src_mac"))
- if p and m then
- return translatef("From %s in %s with source %s and %s", a, z, p, m)
- elseif p or m then
- return translatef("From %s in %s with source %s", a, z, p or m)
+ -- Forward/Input
+ if z and #z > 0 then
+ local a = ft.fmt_ip(self.map:get(s, "src_ip"), translate("any host"))
+ if p and m then
+ return translatef("From %s in %s with source %s and %s", a, z, p, m)
+ elseif p or m then
+ return translatef("From %s in %s with source %s", a, z, p or m)
+ else
+ return translatef("From %s in %s", a, z)
+ end
+
+ -- Output
else
- return translatef("From %s in %s", a, z)
+ local a = ft.fmt_ip(self.map:get(s, "src_ip"), translate("any router IP"))
+ if p and m then
+ return translatef("From %s on <var>this device</var> with source %s and %s", a, p, m)
+ elseif p or m then
+ return translatef("From %s on <var>this device</var> with source %s", a, p or m)
+ else
+ return translatef("From %s on <var>this device</var>", a)
+ end
end
end
@@ -145,7 +161,6 @@ end
match = s:option(DummyValue, "match", translate("Match"))
match.rawhtml = true
-match.width = "70%"
function match.cfgvalue(self, s)
return "<small>%s<br />%s<br />%s</small>" % {
rule_proto_txt(self, s),
@@ -156,9 +171,8 @@ end
target = s:option(DummyValue, "target", translate("Action"))
target.rawhtml = true
-target.width = "20%"
function target.cfgvalue(self, s)
- local t = ft.fmt_target(self.map:get(s, "target"), self.map:get(s, "dest"))
+ local t = ft.fmt_target(self.map:get(s, "target"), self.map:get(s, "src"), self.map:get(s, "dest"))
local l = ft.fmt_limit(self.map:get(s, "limit"),
self.map:get(s, "limit_burst"))
@@ -169,7 +183,7 @@ function target.cfgvalue(self, s)
end
end
-ft.opt_enabled(s, Flag, translate("Enable")).width = "1%"
+ft.opt_enabled(s, Flag, translate("Enable"))
--
@@ -226,11 +240,12 @@ function s.filter(self, sid)
return (self.map:get(sid, "target") == "SNAT")
end
-ft.opt_name(s, DummyValue, translate("Name"))
+function s.sectiontitle(self, sid)
+ return (self.map:get(sid, "name") or translate("Unnamed SNAT"))
+end
match = s:option(DummyValue, "match", translate("Match"))
match.rawhtml = true
-match.width = "70%"
function match.cfgvalue(self, s)
return "<small>%s<br />%s<br />%s</small>" % {
rule_proto_txt(self, s),
@@ -241,7 +256,6 @@ end
snat = s:option(DummyValue, "via", translate("Action"))
snat.rawhtml = true
-snat.width = "20%"
function snat.cfgvalue(self, s)
local a = ft.fmt_ip(self.map:get(s, "src_dip"))
local p = ft.fmt_port(self.map:get(s, "src_dport"))
@@ -253,7 +267,7 @@ function snat.cfgvalue(self, s)
end
end
-ft.opt_enabled(s, Flag, translate("Enable")).width = "1%"
+ft.opt_enabled(s, Flag, translate("Enable"))
return m
diff --git a/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua b/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
index a42c1499f0..e168c3c605 100644
--- a/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
+++ b/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
@@ -101,9 +101,12 @@ end
function net.write(self, section, value)
zone:clear_networks()
- local n
- for n in ut.imatch(value) do
- zone:add_network(n)
+ local net
+ for net in ut.imatch(value) do
+ local n = nw:get_network(net) or nw:add_network(net, { proto = "none" })
+ if n then
+ zone:add_network(n:name())
+ end
end
end
diff --git a/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua b/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua
index 500e5078f4..46402a8fc1 100644
--- a/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua
+++ b/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua
@@ -3,6 +3,7 @@
local ds = require "luci.dispatcher"
local fw = require "luci.model.firewall"
+local fs = require "nixio.fs"
local m, s, o, p, i, v
@@ -32,6 +33,28 @@ for i, v in ipairs(p) do
v:value("ACCEPT", translate("accept"))
end
+-- Netfilter flow offload support
+
+local offload = fs.access("/sys/module/xt_FLOWOFFLOAD/refcnt")
+
+if offload then
+ s:option(DummyValue, "offload_advice",
+ translate("Routing/NAT Offloading"),
+ translate("Experimental feature. Not fully compatible with QoS/SQM."))
+
+ o = s:option(Flag, "flow_offloading",
+ translate("Software flow offloading"),
+ translate("Software based offloading for routing/NAT"))
+ o.optional = true
+
+ o = s:option(Flag, "flow_offloading_hw",
+ translate("Hardware flow offloading"),
+ translate("Requires hardware NAT support. Implemented at least for mt7621"))
+ o.optional = true
+ o:depends( "flow_offloading", 1)
+end
+
+-- Firewall zones
s = m:section(TypedSection, "zone", translate("Zones"))
s.template = "cbi/tblsection"
@@ -39,6 +62,11 @@ s.anonymous = true
s.addremove = true
s.extedit = ds.build_url("admin", "network", "firewall", "zones", "%s")
+function s.sectiontitle(self, sid)
+ local z = fw:get_zone(sid)
+ return z:name()
+end
+
function s.create(self)
local z = fw:new_zone()
if z then
diff --git a/applications/luci-app-firewall/luasrc/tools/firewall.lua b/applications/luci-app-firewall/luasrc/tools/firewall.lua
index 2d89bfa2a6..055342bfb3 100644
--- a/applications/luci-app-firewall/luasrc/tools/firewall.lua
+++ b/applications/luci-app-firewall/luasrc/tools/firewall.lua
@@ -198,8 +198,18 @@ function fmt_limit(limit, burst)
end
end
-function fmt_target(x, dest)
- if dest and #dest > 0 then
+function fmt_target(x, src, dest)
+ if not src or #src == 0 then
+ if x == "ACCEPT" then
+ return _("Accept output")
+ elseif x == "REJECT" then
+ return _("Refuse output")
+ elseif x == "NOTRACK" then
+ return _("Do not track output")
+ else --if x == "DROP" then
+ return _("Discard output")
+ end
+ elseif dest and #dest > 0 then
if x == "ACCEPT" then
return _("Accept forward")
elseif x == "REJECT" then
diff --git a/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm b/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm
index b3079f3a48..f48599b505 100644
--- a/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm
+++ b/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm
@@ -18,95 +18,91 @@
vals[#vals+1] = '%s (%s)' %{ ip, name }
end)
-%>
-<div class="cbi-section-create cbi-tblsection-create">
- <br />
- <table class="cbi-section-table" style="width:810px; margin-left:5px">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell" colspan="8"><%:New port forward%>:</th>
- </tr>
- <tr class="cbi-section-table-descr">
- <th class="cbi-section-table-cell"><%:Name%></th>
- <th class="cbi-section-table-cell"><%:Protocol%></th>
- <th class="cbi-section-table-cell"><%:External zone%></th>
- <th class="cbi-section-table-cell"><%:External port%></th>
- <th class="cbi-section-table-cell"><%:Internal zone%></th>
- <th class="cbi-section-table-cell"><%:Internal IP address%></th>
- <th class="cbi-section-table-cell"><%:Internal port%></th>
- <th class="cbi-section-table-cell"></th>
- </tr>
- <tr class="cbi-section-table-row">
- <td class="cbi-section-table-cell">
- <input type="text" class="cbi-input-text" id="_newfwd.name" name="_newfwd.name" placeholder="<%:New port forward%>" />
- </td>
- <td class="cbi-section-table-cell" style="width:110px">
- <select class="cbi-input-select" id="_newfwd.proto" name="_newfwd.proto">
- <option value="tcp udp">TCP+UDP</option>
- <option value="tcp">TCP</option>
- <option value="udp">UDP</option>
- <option value="other"><%:Other...%></option>
- </select>
- </td>
- <td class="cbi-section-table-cell" style="width:55px">
- <select class="cbi-input-select" id="_newfwd.extzone" name="_newfwd.extzone">
- <% for _, z in ipairs(ezl) do -%><option value="<%=z:name()%>"><%=z:name()%></option><%- end %>
- </select>
- </td>
- <td class="cbi-section-table-cell" style="width:110px">
- <input type="text" class="cbi-input-text" id="_newfwd.extport" name="_newfwd.extport" data-type="portrange" data-optional="true" />
- </td>
- <td class="cbi-section-table-cell" style="width:55px">
- <select class="cbi-input-select" id="_newfwd.intzone" name="_newfwd.intzone">
- <% for _, z in ipairs(izl) do -%><option value="<%=z:name()%>"><%=z:name()%></option><%- end %>
- </select>
- </td>
- <td class="cbi-section-table-cell" style="width:110px">
- <input type="text" class="cbi-input-text" id="_newfwd.intaddr" name="_newfwd.intaddr" data-type="host" data-optional="true"<%=
- ifattr(#keys > 0, "data-choices", {keys, vals})
- %>/>
- </td>
- <td class="cbi-section-table-cell" style="width:110px">
- <input type="text" class="cbi-input-text" id="_newfwd.intport" name="_newfwd.intport" data-type="portrange" data-optional="true" />
- </td>
- <td class="cbi-section-table-cell">
- <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
- </td>
- </tr>
- </table>
- <script type="text/javascript">//<![CDATA[
- cbi_bind(document.getElementById('_newfwd.extport'), 'blur',
- function() {
- var n = document.getElementById('_newfwd.name');
- var p = document.getElementById('_newfwd.proto');
- var i = document.getElementById('_newfwd.intport');
- var hints = {
- /* port name 0=both, 1=tcp, 2=udp, 3=other */
- 21: [ 'FTP', 1 ],
- 22: [ 'SSH', 1 ],
- 53: [ 'DNS', 0 ],
- 80: [ 'HTTP', 1 ],
- 443: [ 'HTTPS', 1 ],
- 3389: [ 'RDP', 1 ],
- 5900: [ 'VNC', 1 ],
- };
+<h4><%:New port forward%></h4>
+<div class="table">
+ <div class="tr table-titles">
+ <div class="th"><%:Name%></div>
+ <div class="th"><%:Protocol%></div>
+ <div class="th"><%:External zone%></div>
+ <div class="th"><%:External port%></div>
+ <div class="th"><%:Internal zone%></div>
+ <div class="th"><%:Internal IP address%></div>
+ <div class="th"><%:Internal port%></div>
+ <div class="th"></div>
+ </div>
+ <div class="tr">
+ <div class="td">
+ <input type="text" class="cbi-input-text" id="_newfwd.name" name="_newfwd.name" placeholder="<%:New port forward%>" />
+ </div>
+ <div class="td">
+ <select class="cbi-input-select" id="_newfwd.proto" name="_newfwd.proto">
+ <option value="tcp udp">TCP+UDP</option>
+ <option value="tcp">TCP</option>
+ <option value="udp">UDP</option>
+ <option value="other"><%:Other...%></option>
+ </select>
+ </div>
+ <div class="td">
+ <select class="cbi-input-select" id="_newfwd.extzone" name="_newfwd.extzone">
+ <% for _, z in ipairs(ezl) do -%><option value="<%=z:name()%>"><%=z:name()%></option><%- end %>
+ </select>
+ </div>
+ <div class="td">
+ <input type="text" class="cbi-input-text" id="_newfwd.extport" name="_newfwd.extport" data-type="portrange" data-optional="true" />
+ </div>
+ <div class="td">
+ <select class="cbi-input-select" id="_newfwd.intzone" name="_newfwd.intzone">
+ <% for _, z in ipairs(izl) do -%><option value="<%=z:name()%>"><%=z:name()%></option><%- end %>
+ </select>
+ </div>
+ <div class="td">
+ <input type="text" class="cbi-input-text" id="_newfwd.intaddr" name="_newfwd.intaddr" data-type="host" data-optional="true"<%=
+ ifattr(#keys > 0, "data-choices", {keys, vals})
+ %>/>
+ </div>
+ <div class="td">
+ <input type="text" class="cbi-input-text" id="_newfwd.intport" name="_newfwd.intport" data-type="portrange" data-optional="true" />
+ </div>
+ <div class="td bottom">
+ <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
+ </div>
+ </div>
+</div>
- if (!this.className.match(/invalid/))
- {
- if (!i.value) i.value = this.value;
+<script type="text/javascript">//<![CDATA[
+ cbi_bind(document.getElementById('_newfwd.extport'), 'blur',
+ function() {
+ var n = document.getElementById('_newfwd.name');
+ var p = document.getElementById('_newfwd.proto');
+ var i = document.getElementById('_newfwd.intport');
+ var hints = {
+ /* port name 0=both, 1=tcp, 2=udp, 3=other */
+ 21: [ 'FTP', 1 ],
+ 22: [ 'SSH', 1 ],
+ 53: [ 'DNS', 0 ],
+ 80: [ 'HTTP', 1 ],
+ 443: [ 'HTTPS', 1 ],
+ 3389: [ 'RDP', 1 ],
+ 5900: [ 'VNC', 1 ],
+ };
- var hint = hints[this.value || 0] || hints[i.value || 0];
- if (hint)
- {
- p.selectedIndex = hint[1];
+ if (!this.className.match(/invalid/))
+ {
+ if (!i.value) i.value = this.value;
+
+ var hint = hints[this.value || 0] || hints[i.value || 0];
+ if (hint)
+ {
+ p.selectedIndex = hint[1];
- if (!n.value)
- n.value = hint[0];
- }
- else if (!n.value)
- {
- n.value = 'Forward' + this.value;
- }
+ if (!n.value)
+ n.value = hint[0];
}
- });
- //]]></script>
-</div>
+ else if (!n.value)
+ {
+ n.value = 'Forward' + this.value;
+ }
+ }
+ });
+//]]></script>
diff --git a/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm b/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm
index b06fac3de4..273675cd30 100644
--- a/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm
+++ b/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm
@@ -5,112 +5,105 @@
local zones = fw:get_zones()
%>
-<div class="cbi-section-create cbi-tblsection-create">
- <% if wz then %>
- <br />
- <table class="cbi-section-table" style="margin-left:5px">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell left" colspan="4"><%:Open ports on router%>:</th>
- </tr>
- <tr class="cbi-section-table-descr">
- <th class="cbi-section-table-cell"><%:Name%></th>
- <th class="cbi-section-table-cell"><%:Protocol%></th>
- <th class="cbi-section-table-cell"><%:External port%></th>
- <th class="cbi-section-table-cell"></th>
- </tr>
- <tr class="cbi-section-table-row">
- <td class="cbi-section-table-cell" style="width:130px">
- <input type="text" class="cbi-input-text" id="_newopen.name" name="_newopen.name" placeholder="<%:New input rule%>" />
- </td>
- <td class="cbi-section-table-cell" style="width:110px">
- <select class="cbi-input-select" id="_newopen.proto" name="_newopen.proto">
- <option value="tcp udp">TCP+UDP</option>
- <option value="tcp">TCP</option>
- <option value="udp">UDP</option>
- <option value="other"><%:Other...%></option>
- </select>
- </td>
- <td class="cbi-section-table-cell" style="width:110px">
- <input type="text" class="cbi-input-text" id="_newopen.extport" name="_newopen.extport" />
- </td>
- <td class="cbi-section-table-cell left">
- <input type="submit" class="cbi-button cbi-button-add" name="_newopen.submit" value="<%:Add%>" />
- </td>
- </tr>
- </table>
- <% end %>
- <% if #zones > 1 then %>
- <table class="cbi-section-table" style="margin-left:5px">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell left" colspan="6"><br /><%:New forward rule%>:</th>
- </tr>
- <tr class="cbi-section-table-descr">
- <th class="cbi-section-table-cell"><%:Name%></th>
- <th class="cbi-section-table-cell"><%:Source zone%></th>
- <th class="cbi-section-table-cell"><%:Destination zone%></th>
- <th class="cbi-section-table-cell"></th>
- </tr>
- <tr class="cbi-section-table-row">
- <td class="cbi-section-table-cell" style="width:130px">
- <input type="text" class="cbi-input-text" id="_newfwd.name" name="_newfwd.name" placeholder="<%:New forward rule%>" />
- </td>
- <td class="cbi-section-table-cell" style="width:110px">
- <select class="cbi-input-text" id="_newfwd.src" name="_newfwd.src">
- <% local k, v; for k, v in ipairs(fw:get_zones()) do -%>
- <option<%=ifattr(v:name() == "wan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
- <%- end %>
- </select>
- </td>
- <td class="cbi-section-table-cell" style="width:110px">
- <select class="cbi-input-text" id="_newfwd.dest" name="_newfwd.dest">
- <% local k, v; for k, v in ipairs(fw:get_zones()) do -%>
- <option<%=ifattr(v:name() == "lan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
- <%- end %>
- </select>
- </td>
- <td class="cbi-section-table-cell left">
- <input type="submit" class="cbi-button cbi-button-link" name="_newfwd.submit" value="<%:Add and edit...%>" />
- </td>
- </tr>
- </table>
- <% else %>
- <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
- <% end %>
+<% if wz then %>
+ <h4><%:Open ports on router%></h4>
+ <div class="table">
+ <div class="tr cbi-section-table-titles">
+ <div class="th"><%:Name%></div>
+ <div class="th"><%:Protocol%></div>
+ <div class="th"><%:External port%></div>
+ <div class="th"></div>
+ </div>
+ <div class="tr">
+ <div class="td">
+ <input type="text" class="cbi-input-text" id="_newopen.name" name="_newopen.name" placeholder="<%:New input rule%>" />
+ </div>
+ <div class="td">
+ <select class="cbi-input-select" id="_newopen.proto" name="_newopen.proto">
+ <option value="tcp udp">TCP+UDP</option>
+ <option value="tcp">TCP</option>
+ <option value="udp">UDP</option>
+ <option value="other"><%:Other...%></option>
+ </select>
+ </div>
+ <div class="td">
+ <input type="text" class="cbi-input-text" id="_newopen.extport" name="_newopen.extport" />
+ </div>
+ <div class="td bottom">
+ <input type="submit" class="cbi-button cbi-button-add" name="_newopen.submit" value="<%:Add%>" />
+ </div>
+ </div>
+ </div>
+<% end %>
+<% if #zones > 1 then %>
+ <h4><%:New forward rule%></h4>
+ <div class="table">
+ <div class="tr cbi-section-table-titles">
+ <div class="th"><%:Name%></div>
+ <div class="th"><%:Source zone%></div>
+ <div class="th"><%:Destination zone%></div>
+ <div class="th"></div>
+ </div>
+ <div class="tr">
+ <div class="td">
+ <input type="text" class="cbi-input-text" id="_newfwd.name" name="_newfwd.name" placeholder="<%:New forward rule%>" />
+ </div>
+ <div class="td">
+ <select class="cbi-input-text" id="_newfwd.src" name="_newfwd.src">
+ <% local k, v; for k, v in ipairs(fw:get_zones()) do -%>
+ <option<%=ifattr(v:name() == "wan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
+ <%- end %>
+ </select>
+ </div>
+ <div class="td">
+ <select class="cbi-input-text" id="_newfwd.dest" name="_newfwd.dest">
+ <% local k, v; for k, v in ipairs(fw:get_zones()) do -%>
+ <option<%=ifattr(v:name() == "lan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
+ <%- end %>
+ </select>
+ </div>
+ <div class="td bottom">
+ <input type="submit" class="cbi-button cbi-button-link" name="_newfwd.submit" value="<%:Add and edit...%>" />
+ </div>
+ </div>
+ </div>
+<% else %>
+ <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
+<% end %>
- <% if wz then %>
- <script type="text/javascript">//<![CDATA[
- cbi_validate_field('_newopen.extport', true, 'list(neg(portrange))');
- cbi_bind(document.getElementById('_newopen.extport'), 'blur',
- function() {
- var n = document.getElementById('_newopen.name');
- var p = document.getElementById('_newopen.proto');
- var hints = {
- /* port name 0=both, 1=tcp, 2=udp, 3=other */
- 22: [ 'SSH', 1 ],
- 53: [ 'DNS', 0 ],
- 80: [ 'HTTP', 1 ],
- 443: [ 'HTTPS', 1 ],
- };
+<% if wz then %>
+ <script type="text/javascript">//<![CDATA[
+ cbi_validate_field('_newopen.extport', true, 'list(neg(portrange))');
+ cbi_bind(document.getElementById('_newopen.extport'), 'blur',
+ function() {
+ var n = document.getElementById('_newopen.name');
+ var p = document.getElementById('_newopen.proto');
+ var hints = {
+ /* port name 0=both, 1=tcp, 2=udp, 3=other */
+ 22: [ 'SSH', 1 ],
+ 53: [ 'DNS', 0 ],
+ 80: [ 'HTTP', 1 ],
+ 443: [ 'HTTPS', 1 ],
+ };
- if (!this.className.match(/invalid/))
+ if (!this.className.match(/invalid/))
+ {
+ var hint = hints[this.value || 0];
+ if (hint)
{
- var hint = hints[this.value || 0];
- if (hint)
- {
- p.selectedIndex = hint[1];
+ p.selectedIndex = hint[1];
- if (!n.value)
- n.value = hint[0];
- }
- else if (!n.value && this.value)
- {
- n.value = 'Open' + this.value;
- }
+ if (!n.value)
+ n.value = hint[0];
}
- });
+ else if (!n.value && this.value)
+ {
+ n.value = 'Open' + this.value;
+ }
+ }
+ });
- cbi_validate_field('cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>', true, 'uciname');
- //]]></script>
- <% end %>
-</div>
+ cbi_validate_field('cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>', true, 'uciname');
+ //]]></script>
+<% end %>
diff --git a/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm b/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm
index 0a5913fc00..0b4774ccc0 100644
--- a/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm
+++ b/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm
@@ -12,53 +12,48 @@
end
%>
-<div class="cbi-section-create cbi-tblsection-create">
- <% if #zones > 1 then %>
- <br />
- <table class="cbi-section-table" style="width:700px; margin-left:5px">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell left" colspan="6"><%:New source NAT%>:</th>
- </tr>
- <tr class="cbi-section-table-descr">
- <th class="cbi-section-table-cell"><%:Name%></th>
- <th class="cbi-section-table-cell"><%:Source zone%></th>
- <th class="cbi-section-table-cell"><%:Destination zone%></th>
- <th class="cbi-section-table-cell"><%:To source IP%></th>
- <th class="cbi-section-table-cell"><%:To source port%></th>
- <th class="cbi-section-table-cell"></th>
- </tr>
- <tr class="cbi-section-table-row">
- <td class="cbi-section-table-cell">
- <input type="text" class="cbi-input-text" id="_newsnat.name" name="_newsnat.name" placeholder="<%:New SNAT rule%>" />
- </td>
- <td class="cbi-section-table-cell" style="width:110px">
- <select class="cbi-input-text" id="_newsnat.src" name="_newsnat.src">
- <% local k, v; for k, v in ipairs(fw:get_zones()) do -%>
- <option<%=ifattr(v:name() == "lan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
- <%- end %>
- </select>
- </td>
- <td class="cbi-section-table-cell" style="width:110px">
- <select class="cbi-input-text" id="_newsnat.dest" name="_newsnat.dest">
- <% local k, v; for k, v in ipairs(fw:get_zones()) do -%>
- <option<%=ifattr(v:name() == "wan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
- <%- end %>
- </select>
- </td>
- <td class="cbi-section-table-cell" style="width:110px">
- <input type="text" class="cbi-input-text" id="_newsnat.dip" name="_newsnat.dip" placeholder="<%:Do not rewrite%>" data-type="ip4addr" data-optional="true"<%=
- ifattr(#keys > 0, "data-choices", { keys, vals })
- %> />
- </td>
- <td class="cbi-section-table-cell" style="width:110px">
- <input type="text" class="cbi-input-text" id="_newsnat.dport" name="_newsnat.dport" placeholder="<%:Do not rewrite%>" data-type="portrange" data-optional="true" />
- </td>
- <td class="cbi-section-table-cell">
- <input type="submit" class="cbi-button cbi-button-link" name="_newsnat.submit" value="<%:Add and edit...%>" />
- </td>
- </tr>
- </table>
- <% else %>
- <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
- <% end %>
-</div>
+<% if #zones > 1 then %>
+ <h4><%:New source NAT%></h4>
+ <div class="table">
+ <div class="tr cbi-section-table-titles">
+ <div class="th"><%:Name%></div>
+ <div class="th"><%:Source zone%></div>
+ <div class="th"><%:Destination zone%></div>
+ <div class="th"><%:To source IP%></div>
+ <div class="th"><%:To source port%></div>
+ <div class="th"></div>
+ </div>
+ <div class="tr">
+ <div class="td">
+ <input type="text" class="cbi-input-text" id="_newsnat.name" name="_newsnat.name" placeholder="<%:New SNAT rule%>" />
+ </div>
+ <div class="td">
+ <select class="cbi-input-text" id="_newsnat.src" name="_newsnat.src">
+ <% local k, v; for k, v in ipairs(fw:get_zones()) do -%>
+ <option<%=ifattr(v:name() == "lan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
+ <%- end %>
+ </select>
+ </div>
+ <div class="td">
+ <select class="cbi-input-text" id="_newsnat.dest" name="_newsnat.dest">
+ <% local k, v; for k, v in ipairs(fw:get_zones()) do -%>
+ <option<%=ifattr(v:name() == "wan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
+ <%- end %>
+ </select>
+ </div>
+ <div class="td">
+ <input type="text" class="cbi-input-text" id="_newsnat.dip" name="_newsnat.dip" placeholder="<%:Do not rewrite%>" data-type="ip4addr" data-optional="true"<%=
+ ifattr(#keys > 0, "data-choices", { keys, vals })
+ %> />
+ </div>
+ <div class="td">
+ <input type="text" class="cbi-input-text" id="_newsnat.dport" name="_newsnat.dport" placeholder="<%:Do not rewrite%>" data-type="portrange" data-optional="true" />
+ </div>
+ <div class="td bottom">
+ <input type="submit" class="cbi-button cbi-button-link" name="_newsnat.submit" value="<%:Add and edit...%>" />
+ </div>
+ </div>
+ </div>
+<% else %>
+ <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
+<% end %>
diff --git a/applications/luci-app-firewall/po/ca/firewall.po b/applications/luci-app-firewall/po/ca/firewall.po
index ff43427eed..b43791939e 100644
--- a/applications/luci-app-firewall/po/ca/firewall.po
+++ b/applications/luci-app-firewall/po/ca/firewall.po
@@ -48,6 +48,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Acció"
@@ -106,6 +109,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "No reescriguis"
@@ -115,6 +121,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Descarta els paquets invàlids"
@@ -130,6 +139,9 @@ msgstr "Habilita protecció contra la inundació SYN"
msgid "Enable logging on this zone"
msgstr "Habilita el registre d'aquesta zona"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Adreça IP extern"
@@ -178,9 +190,21 @@ msgstr "Des de %s en %s amb origen %s"
msgid "From %s in %s with source %s and %s"
msgstr "Des de %s en %s amb orígens %s i %s"
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Ajusts generals"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -308,6 +332,9 @@ msgstr "Altre..."
msgid "Output"
msgstr "Sortida"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr "Passa paràmetres addicionals al iptables. Utilitzeu-ho amb cura!"
@@ -337,6 +364,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -365,6 +398,9 @@ msgstr "Reescriu a l'origen %s"
msgid "Rewrite to source %s, %s"
msgstr "Reescriu als orígens %s, %s"
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -380,6 +416,12 @@ msgstr "Port SNAT"
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr "Adreça IP d'origen"
diff --git a/applications/luci-app-firewall/po/cs/firewall.po b/applications/luci-app-firewall/po/cs/firewall.po
index caa7e19988..e4e01a1784 100644
--- a/applications/luci-app-firewall/po/cs/firewall.po
+++ b/applications/luci-app-firewall/po/cs/firewall.po
@@ -44,6 +44,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Akce"
@@ -101,6 +104,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "Nepřepisovat"
@@ -110,6 +116,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Zahazovat neplatné pakety"
@@ -125,6 +134,9 @@ msgstr "Povolit ochranu proti SYN-flood"
msgid "Enable logging on this zone"
msgstr "Povolit logování v této oblasti"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Vnější IP adresa"
@@ -173,9 +185,21 @@ msgstr "Z %s v %s se zdrojovou %s"
msgid "From %s in %s with source %s and %s"
msgstr "Z %s v %s se zdrojovou %s a %s"
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Obecné nastavení"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -303,6 +327,9 @@ msgstr "Ostatní ..."
msgid "Output"
msgstr "Výstup"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr "Předává další argumenty iptables. Používat opatrně!"
@@ -334,6 +361,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -362,6 +395,9 @@ msgstr "Přepsat na zdrojovou %s"
msgid "Rewrite to source %s, %s"
msgstr "Přepsat na zdrojovou %s, %s"
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -377,6 +413,12 @@ msgstr "Port SNATu"
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr "Zdrojová IP adresa"
diff --git a/applications/luci-app-firewall/po/de/firewall.po b/applications/luci-app-firewall/po/de/firewall.po
index fcf8bec679..fe1db6ba58 100644
--- a/applications/luci-app-firewall/po/de/firewall.po
+++ b/applications/luci-app-firewall/po/de/firewall.po
@@ -46,6 +46,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Aktion"
@@ -104,6 +107,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "Nicht umschreiben"
@@ -113,6 +119,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Ungültige Pakete verwerfen"
@@ -128,6 +137,9 @@ msgstr "Schutz vor SYN-flood-Attacken"
msgid "Enable logging on this zone"
msgstr "Protokollierung innerhalb der Zone aktivieren"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Externe IP-Adresse"
@@ -176,9 +188,21 @@ msgstr "Von %s in %s mit Quell-%s"
msgid "From %s in %s with source %s and %s"
msgstr "Von %s in %s mit Quell-%s und %s"
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Allgemein"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -301,6 +325,9 @@ msgstr "Anderes..."
msgid "Output"
msgstr "Ausgang"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
"Gibt zusätzliche Kommandozeilenargumente an iptables weiter. Mit Vorsicht "
@@ -334,6 +361,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -362,6 +395,9 @@ msgstr "Schreibe um auf Quell-%s"
msgid "Rewrite to source %s, %s"
msgstr "Schreibe um auf Quell-%s, %s"
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -377,6 +413,12 @@ msgstr "SNAT-Port"
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr "Quell-IP-Adresse"
diff --git a/applications/luci-app-firewall/po/el/firewall.po b/applications/luci-app-firewall/po/el/firewall.po
index 598927557b..ecba866654 100644
--- a/applications/luci-app-firewall/po/el/firewall.po
+++ b/applications/luci-app-firewall/po/el/firewall.po
@@ -46,6 +46,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Ενέργεια"
@@ -101,6 +104,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr ""
@@ -110,6 +116,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Αγνόηση μη-έγκυρων πακετών"
@@ -126,6 +135,9 @@ msgstr "Προστασία SYN-flood"
msgid "Enable logging on this zone"
msgstr ""
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Εξωτερική διεύθυνση IP"
@@ -174,9 +186,21 @@ msgstr ""
msgid "From %s in %s with source %s and %s"
msgstr ""
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Γενικές Ρυθμίσεις"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -300,6 +324,9 @@ msgstr "Άλλο..."
msgid "Output"
msgstr "Έξοδος"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
@@ -327,6 +354,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -353,6 +386,9 @@ msgstr ""
msgid "Rewrite to source %s, %s"
msgstr ""
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -368,6 +404,12 @@ msgstr ""
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
#, fuzzy
msgid "Source IP address"
msgstr "Διεύθυνση MAC πηγής"
diff --git a/applications/luci-app-firewall/po/en/firewall.po b/applications/luci-app-firewall/po/en/firewall.po
index df1ed4a088..1cb489c4b8 100644
--- a/applications/luci-app-firewall/po/en/firewall.po
+++ b/applications/luci-app-firewall/po/en/firewall.po
@@ -44,6 +44,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Action"
@@ -98,6 +101,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr ""
@@ -107,6 +113,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Drop invalid packets"
@@ -122,6 +131,9 @@ msgstr "Enable SYN-flood protection"
msgid "Enable logging on this zone"
msgstr ""
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr ""
@@ -174,9 +186,21 @@ msgstr ""
msgid "From %s in %s with source %s and %s"
msgstr ""
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr ""
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -299,6 +323,9 @@ msgstr ""
msgid "Output"
msgstr "Output"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
@@ -327,6 +354,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -353,6 +386,9 @@ msgstr ""
msgid "Rewrite to source %s, %s"
msgstr ""
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -368,6 +404,12 @@ msgstr ""
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
diff --git a/applications/luci-app-firewall/po/es/firewall.po b/applications/luci-app-firewall/po/es/firewall.po
index bae8b693da..ef37e2edc0 100644
--- a/applications/luci-app-firewall/po/es/firewall.po
+++ b/applications/luci-app-firewall/po/es/firewall.po
@@ -47,6 +47,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Acción"
@@ -105,6 +108,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "No reescribir"
@@ -114,6 +120,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Descartar paquetes no válidos"
@@ -129,6 +138,9 @@ msgstr "Activar protección a inundación-SYN"
msgid "Enable logging on this zone"
msgstr "Activar registro en esta zona"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Dirección IP externa"
@@ -177,9 +189,21 @@ msgstr "Desde %s en %s con origen %s"
msgid "From %s in %s with source %s and %s"
msgstr "Desde %s en %s con origen %s y %s"
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Configuración general"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -306,6 +330,9 @@ msgstr "Otros..."
msgid "Output"
msgstr "Salida"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr "Pasa más parámetros a IPTables. ¡Usar con cuidado!"
@@ -336,6 +363,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -364,6 +397,9 @@ msgstr "Reescribir a origen %s"
msgid "Rewrite to source %s, %s"
msgstr "Reescribir a origen %s, %s"
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -379,6 +415,12 @@ msgstr "Puerto SNAT"
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr "Dirección IP origen"
diff --git a/applications/luci-app-firewall/po/fr/firewall.po b/applications/luci-app-firewall/po/fr/firewall.po
index 281999b550..770d85dbc8 100644
--- a/applications/luci-app-firewall/po/fr/firewall.po
+++ b/applications/luci-app-firewall/po/fr/firewall.po
@@ -46,6 +46,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Action"
@@ -100,6 +103,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr ""
@@ -109,6 +115,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Supprimer les paquets invalides"
@@ -124,6 +133,9 @@ msgstr "Activer la protection contre le SYN-flood"
msgid "Enable logging on this zone"
msgstr "Activer les traces (logs) sur cette zone"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Adresse IP externe"
@@ -176,9 +188,21 @@ msgstr ""
msgid "From %s in %s with source %s and %s"
msgstr ""
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Paramètres généraux"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -301,6 +325,9 @@ msgstr "Autre..."
msgid "Output"
msgstr "Sortie"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
@@ -332,6 +359,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -362,6 +395,9 @@ msgstr ""
msgid "Rewrite to source %s, %s"
msgstr ""
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -377,6 +413,12 @@ msgstr "Port SNAT"
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
diff --git a/applications/luci-app-firewall/po/he/firewall.po b/applications/luci-app-firewall/po/he/firewall.po
index 06952d4901..45c9d87ce7 100644
--- a/applications/luci-app-firewall/po/he/firewall.po
+++ b/applications/luci-app-firewall/po/he/firewall.po
@@ -41,6 +41,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr ""
@@ -95,6 +98,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr ""
@@ -104,6 +110,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr ""
@@ -119,6 +128,9 @@ msgstr ""
msgid "Enable logging on this zone"
msgstr ""
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr ""
@@ -167,9 +179,21 @@ msgstr ""
msgid "From %s in %s with source %s and %s"
msgstr ""
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr ""
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -290,6 +314,9 @@ msgstr ""
msgid "Output"
msgstr ""
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
@@ -317,6 +344,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -343,6 +376,9 @@ msgstr ""
msgid "Rewrite to source %s, %s"
msgstr ""
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -358,6 +394,12 @@ msgstr ""
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr ""
diff --git a/applications/luci-app-firewall/po/hu/firewall.po b/applications/luci-app-firewall/po/hu/firewall.po
index 29aa324187..55d920e47a 100644
--- a/applications/luci-app-firewall/po/hu/firewall.po
+++ b/applications/luci-app-firewall/po/hu/firewall.po
@@ -44,6 +44,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Művelet"
@@ -102,6 +105,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "Ne írja felül"
@@ -111,6 +117,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Érvénytelen csomagok eldobása"
@@ -126,6 +135,9 @@ msgstr "SYN-flood védelem engedélyezése"
msgid "Enable logging on this zone"
msgstr "Naplózás engeélyezése ezen a zónán"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Külső IP cím"
@@ -174,9 +186,21 @@ msgstr "%s felől %s-ben %s forrással"
msgid "From %s in %s with source %s and %s"
msgstr "%s felől %s-ben %s és %s forrással"
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Általános beállítások"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -307,6 +331,9 @@ msgstr "Egyéb..."
msgid "Output"
msgstr "Kimenet"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
"További argumentumok küldése az iptables részére. Használja körültekintően!"
@@ -338,6 +365,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -366,6 +399,9 @@ msgstr "Átírás %s forrásra"
msgid "Rewrite to source %s, %s"
msgstr "Átírás %s, %s forrásra"
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -381,6 +417,12 @@ msgstr "SNAT port"
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr "Forrás IP cím"
diff --git a/applications/luci-app-firewall/po/it/firewall.po b/applications/luci-app-firewall/po/it/firewall.po
index 43b90a9e9b..d639ad828c 100644
--- a/applications/luci-app-firewall/po/it/firewall.po
+++ b/applications/luci-app-firewall/po/it/firewall.po
@@ -46,6 +46,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Azione"
@@ -104,6 +107,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "Non riscrivere"
@@ -113,6 +119,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Scarta pacchetti invalidi"
@@ -128,6 +137,9 @@ msgstr "Attiva protezione SYN-flood"
msgid "Enable logging on this zone"
msgstr "Attiva registro su questa zona"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Indirizzo IP Esterno"
@@ -176,9 +188,21 @@ msgstr "Da %s a %s con sorgente %s"
msgid "From %s in %s with source %s and %s"
msgstr "Da %s a %s con sorgente %s e %s"
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Opzioni Generali"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -305,6 +329,9 @@ msgstr "Altri..."
msgid "Output"
msgstr ""
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr "Passa comandi addizionali a iptables. Usare con cura!"
@@ -334,6 +361,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr "Riavvia Firewall"
@@ -362,6 +395,9 @@ msgstr "Riscrivi alla sorgente %s"
msgid "Rewrite to source %s, %s"
msgstr "Riscrivi alla sorgente %s, %s"
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -377,6 +413,12 @@ msgstr "Porta SNAT"
msgid "Saturday"
msgstr "Sabato"
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
diff --git a/applications/luci-app-firewall/po/ja/firewall.po b/applications/luci-app-firewall/po/ja/firewall.po
index 2d252797ff..b52db441da 100644
--- a/applications/luci-app-firewall/po/ja/firewall.po
+++ b/applications/luci-app-firewall/po/ja/firewall.po
@@ -3,14 +3,14 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-03-30 17:00+0200\n"
-"PO-Revision-Date: 2018-01-15 14:56+0900\n"
+"PO-Revision-Date: 2018-06-18 16:56+0900\n"
"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.0.5\n"
+"X-Generator: Poedit 2.0.8\n"
"Language-Team: \n"
msgid "%s in %s"
@@ -47,6 +47,9 @@ msgstr "転送を許可"
msgid "Accept input"
msgstr "入力を許可"
+msgid "Accept output"
+msgstr "出力を許可"
+
msgid "Action"
msgstr "動作"
@@ -105,6 +108,9 @@ msgstr "転送を破棄"
msgid "Discard input"
msgstr "入力を破棄"
+msgid "Discard output"
+msgstr "出力を破棄"
+
msgid "Do not rewrite"
msgstr "リライトしない"
@@ -114,6 +120,9 @@ msgstr "転送を追跡しない"
msgid "Do not track input"
msgstr "入力を追跡しない"
+msgid "Do not track output"
+msgstr "出力を追跡しない"
+
msgid "Drop invalid packets"
msgstr "無効なパケットを遮断する"
@@ -129,6 +138,9 @@ msgstr "SYN-Floodプロテクションを有効にする"
msgid "Enable logging on this zone"
msgstr "このゾーンのログ記録を有効にする"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr "実験的な機能です。 QoS/SQM との完全な互換性はありません。"
+
msgid "External IP address"
msgstr "外部IPアドレス"
@@ -172,14 +184,26 @@ msgid "From %s in %s"
msgstr "送信元 %s (%s)"
msgid "From %s in %s with source %s"
-msgstr "送信元 %s (%s) , 送信元 %s"
+msgstr "送信元 %s (%s) , %s"
msgid "From %s in %s with source %s and %s"
-msgstr "送信元 %s (%s) , 送信元 %s, 送信元 %s"
+msgstr "送信元 %s (%s) , %s, %s"
+
+msgid "From %s on <var>this device</var>"
+msgstr "送信元 %s (<var>デバイス</var>)"
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr "送信元 %s, %s (<var>デバイス</var>)"
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr "送信元 %s, %s, %s (<var>デバイス</var>)"
msgid "General Settings"
msgstr "一般設定"
+msgid "Hardware flow offloading"
+msgstr "ハードウェア フローオフロード"
+
msgid "IP"
msgstr "IP"
@@ -310,6 +334,9 @@ msgstr "その他のプロトコル"
msgid "Output"
msgstr "送信"
+msgid "Output zone"
+msgstr "出力ゾーン"
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
"iptablesにパススルーする追加の引数を設定してください。ただし、注意して設定し"
@@ -343,6 +370,13 @@ msgstr "転送を拒否"
msgid "Refuse input"
msgstr "入力を拒否"
+msgid "Refuse output"
+msgstr "出力を拒否"
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+"ハードウェア NAT サポートが必要です。 mt7621 のみにおいて実装されています。"
+
msgid "Restart Firewall"
msgstr "ファイアウォールの再起動"
@@ -372,6 +406,9 @@ msgstr "送信元 %s にリライト"
msgid "Rewrite to source %s, %s"
msgstr "送信元 %s, %s にリライト"
+msgid "Routing/NAT Offloading"
+msgstr "ルーティング/NAT オフロード"
+
msgid "Rule is disabled"
msgstr "ルールは無効です"
@@ -387,6 +424,12 @@ msgstr "SNAT ポート"
msgid "Saturday"
msgstr "土曜日"
+msgid "Software based offloading for routing/NAT"
+msgstr "ルーティング/NAT のための、ソフトウェアベースのオフロードです。"
+
+msgid "Software flow offloading"
+msgstr "ソフトウェア フローオフロード"
+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
diff --git a/applications/luci-app-firewall/po/ko/firewall.po b/applications/luci-app-firewall/po/ko/firewall.po
index bfe94d04a8..1e9610c109 100644
--- a/applications/luci-app-firewall/po/ko/firewall.po
+++ b/applications/luci-app-firewall/po/ko/firewall.po
@@ -46,6 +46,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr ""
@@ -103,6 +106,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr ""
@@ -112,6 +118,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr ""
@@ -127,6 +136,9 @@ msgstr "SYN-flood protection 활성화"
msgid "Enable logging on this zone"
msgstr "zone 의 logging 활성화"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "외부 IP 주소"
@@ -175,9 +187,21 @@ msgstr ""
msgid "From %s in %s with source %s and %s"
msgstr ""
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr ""
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -298,6 +322,9 @@ msgstr ""
msgid "Output"
msgstr ""
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr "iptables 명령에 추가 인자들을 더합니다. 조심해 사용하세요!"
@@ -327,6 +354,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -353,6 +386,9 @@ msgstr ""
msgid "Rewrite to source %s, %s"
msgstr ""
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -368,6 +404,12 @@ msgstr ""
msgid "Saturday"
msgstr "토요일"
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr "Source IP 주소"
diff --git a/applications/luci-app-firewall/po/ms/firewall.po b/applications/luci-app-firewall/po/ms/firewall.po
index c6ab19791e..73cb6db614 100644
--- a/applications/luci-app-firewall/po/ms/firewall.po
+++ b/applications/luci-app-firewall/po/ms/firewall.po
@@ -40,6 +40,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr ""
@@ -94,6 +97,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr ""
@@ -103,6 +109,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr ""
@@ -118,6 +127,9 @@ msgstr ""
msgid "Enable logging on this zone"
msgstr ""
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr ""
@@ -166,9 +178,21 @@ msgstr ""
msgid "From %s in %s with source %s and %s"
msgstr ""
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr ""
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -289,6 +313,9 @@ msgstr ""
msgid "Output"
msgstr ""
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
@@ -316,6 +343,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -342,6 +375,9 @@ msgstr ""
msgid "Rewrite to source %s, %s"
msgstr ""
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -357,6 +393,12 @@ msgstr ""
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr ""
diff --git a/applications/luci-app-firewall/po/no/firewall.po b/applications/luci-app-firewall/po/no/firewall.po
index e9ecb2b63c..3339c5d470 100644
--- a/applications/luci-app-firewall/po/no/firewall.po
+++ b/applications/luci-app-firewall/po/no/firewall.po
@@ -41,6 +41,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Handling"
@@ -98,6 +101,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "Ikke omskriv"
@@ -107,6 +113,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Forkast ugyldige pakker"
@@ -122,6 +131,9 @@ msgstr "Aktiver SYN-flood beskyttelse"
msgid "Enable logging on this zone"
msgstr "Aktiver logging av denne sonen"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Ekstern IP adressse"
@@ -171,9 +183,21 @@ msgstr "Fra %s i %s med kilde %s"
msgid "From %s in %s with source %s and %s"
msgstr "Fra %s i %s med kilde %s og %s"
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Generelle Innstillinger"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -302,6 +326,9 @@ msgstr "Andre..."
msgid "Output"
msgstr "Utdata"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr "Sender flere argumenter til iptables. Bruk med forsiktighet!"
@@ -333,6 +360,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -361,6 +394,9 @@ msgstr "Omskriv til kilde %s"
msgid "Rewrite to source %s, %s"
msgstr "Omskriv til kilde %s, %s"
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -376,6 +412,12 @@ msgstr "SNAT port"
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr "Kilde IP adresse"
diff --git a/applications/luci-app-firewall/po/pl/firewall.po b/applications/luci-app-firewall/po/pl/firewall.po
index fe48060237..3804d8c03c 100644
--- a/applications/luci-app-firewall/po/pl/firewall.po
+++ b/applications/luci-app-firewall/po/pl/firewall.po
@@ -48,6 +48,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Działanie"
@@ -105,6 +108,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "Nie przepisuj"
@@ -114,6 +120,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Porzuć wadliwe pakiety"
@@ -129,6 +138,9 @@ msgstr "Włącz ochronę przed atakiem SYN-flood"
msgid "Enable logging on this zone"
msgstr "Włącz logowanie na tej strefy"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Zewnętrzne adresy IP"
@@ -180,9 +192,21 @@ msgstr "Z %s w %s ze źródłem %s"
msgid "From %s in %s with source %s and %s"
msgstr "Z %s w %s ze źródłem %s i %s"
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Ustawienia ogólne"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -310,6 +334,9 @@ msgstr "Inne..."
msgid "Output"
msgstr "Wyjście (Output)"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
"Przekazuje dodatkowe argumenty do iptables. Zachowaj szczególną ostrożność!"
@@ -342,6 +369,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -374,6 +407,9 @@ msgstr "Przepisz do źródła %s"
msgid "Rewrite to source %s, %s"
msgstr "Przepisz do źródła %s, %s"
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -389,6 +425,12 @@ msgstr "Port SNAT"
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr "Źródłowy adres IP"
diff --git a/applications/luci-app-firewall/po/pt-br/firewall.po b/applications/luci-app-firewall/po/pt-br/firewall.po
index b49adccdda..9b440ad748 100644
--- a/applications/luci-app-firewall/po/pt-br/firewall.po
+++ b/applications/luci-app-firewall/po/pt-br/firewall.po
@@ -46,6 +46,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Ação"
@@ -103,6 +106,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "Não sobrescreva"
@@ -112,6 +118,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Descartar pacotes inválidos"
@@ -127,6 +136,9 @@ msgstr "Habilite proteção contra SYN-flood"
msgid "Enable logging on this zone"
msgstr "Habilite o registro nesta zona"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Endereço IP externo"
@@ -175,9 +187,21 @@ msgstr "Vindo de %s em %s com origem %s"
msgid "From %s in %s with source %s and %s"
msgstr "Vindo de %s em %s com origem %s e %s"
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Configurações Gerais"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -307,6 +331,9 @@ msgstr "Outro..."
msgid "Output"
msgstr "Saída"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr "Passa argumentos adicionais para o iptables. Use com cuidado!"
@@ -337,6 +364,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr "Reiniciar o Firewall"
@@ -365,6 +398,9 @@ msgstr "Reescrever para a origem %s"
msgid "Rewrite to source %s, %s"
msgstr "Reescrever para a origem %s, %s"
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -380,6 +416,12 @@ msgstr "Porta da SNAT"
msgid "Saturday"
msgstr "Sábado"
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr "Endereço IP de origem"
diff --git a/applications/luci-app-firewall/po/pt/firewall.po b/applications/luci-app-firewall/po/pt/firewall.po
index 29a7c7c2c7..648f26b955 100644
--- a/applications/luci-app-firewall/po/pt/firewall.po
+++ b/applications/luci-app-firewall/po/pt/firewall.po
@@ -46,6 +46,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Acção"
@@ -104,6 +107,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "Não re-escrever"
@@ -113,6 +119,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Cancelar pacotes inválidos"
@@ -128,6 +137,9 @@ msgstr "Ativar a Proteção SYN-flood"
msgid "Enable logging on this zone"
msgstr "Ativar registo nesta zona"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Endereço IP externo"
@@ -176,9 +188,21 @@ msgstr "De %s em %s com origem %s"
msgid "From %s in %s with source %s and %s"
msgstr "De %s em %s com origem %s e %s"
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Definições Gerais"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -308,6 +332,9 @@ msgstr "Outro..."
msgid "Output"
msgstr "Saída"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr "Passa argumentos adicionais para o iptables. Usar com cuidado!"
@@ -339,6 +366,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -365,6 +398,9 @@ msgstr "Re-escrever para a origem %s"
msgid "Rewrite to source %s, %s"
msgstr "Re-escrever para a origem %s, %s"
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -380,6 +416,12 @@ msgstr "Porta SNAT"
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr "Endereço IP de origem"
diff --git a/applications/luci-app-firewall/po/ro/firewall.po b/applications/luci-app-firewall/po/ro/firewall.po
index cc4d7a62af..a052d1dc31 100644
--- a/applications/luci-app-firewall/po/ro/firewall.po
+++ b/applications/luci-app-firewall/po/ro/firewall.po
@@ -45,6 +45,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Acţiune"
@@ -99,6 +102,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "Nu rescrie"
@@ -108,6 +114,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Descarcă pachetele invalide"
@@ -123,6 +132,9 @@ msgstr "Activează protecţia SYN-flood"
msgid "Enable logging on this zone"
msgstr "Activeaza log in aceasta zona"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Adresă IP externă"
@@ -171,9 +183,21 @@ msgstr ""
msgid "From %s in %s with source %s and %s"
msgstr ""
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Setari generale"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -294,6 +318,9 @@ msgstr "Altele..."
msgid "Output"
msgstr "Ieşire"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
@@ -321,6 +348,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -347,6 +380,9 @@ msgstr ""
msgid "Rewrite to source %s, %s"
msgstr ""
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -362,6 +398,12 @@ msgstr ""
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr "Sursă adresă IP"
diff --git a/applications/luci-app-firewall/po/ru/firewall.po b/applications/luci-app-firewall/po/ru/firewall.po
index b8611af780..c596fc906a 100644
--- a/applications/luci-app-firewall/po/ru/firewall.po
+++ b/applications/luci-app-firewall/po/ru/firewall.po
@@ -48,6 +48,9 @@ msgstr "Принять перенаправление"
msgid "Accept input"
msgstr "Принять входящий трафик"
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Действие"
@@ -106,6 +109,9 @@ msgstr "Отключить перенаправление"
msgid "Discard input"
msgstr "Отключить входящий трафик"
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "Не перезаписывать"
@@ -115,6 +121,9 @@ msgstr "Не отслеживать перенаправление"
msgid "Do not track input"
msgstr "Не отслеживать входящий трафик"
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Не пропускать<br />некорректные пакеты"
@@ -130,6 +139,9 @@ msgstr "Включить защиту<br />от SYN-flood атак"
msgid "Enable logging on this zone"
msgstr "Включить журналирование в этой зоне"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Внешний IP-адрес"
@@ -178,9 +190,21 @@ msgstr "Из %s в %s с источником %s"
msgid "From %s in %s with source %s and %s"
msgstr "Из %s в %s с источниками %s и %s"
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Основные настройки"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr "IP-адрес"
@@ -312,6 +336,9 @@ msgstr "Другое..."
msgid "Output"
msgstr "Исходящий трафик"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
"Передаёт дополнительные аргументы таблице iptables. Используйте с "
@@ -346,6 +373,12 @@ msgstr "Сбрасывать перенаправление"
msgid "Refuse input"
msgstr "Сбрасывать входящий трафик"
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr "Перезапустить межсетевой экран"
@@ -374,6 +407,9 @@ msgstr "Перенаправлять к источнику %s"
msgid "Rewrite to source %s, %s"
msgstr "Перенаправлять к источнику %s, %s"
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr "Правило отключено"
@@ -389,6 +425,12 @@ msgstr "Порт SNAT"
msgid "Saturday"
msgstr "Суббота"
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr "IP-адрес источника"
diff --git a/applications/luci-app-firewall/po/sk/firewall.po b/applications/luci-app-firewall/po/sk/firewall.po
index a185625a02..b1735ecb28 100644
--- a/applications/luci-app-firewall/po/sk/firewall.po
+++ b/applications/luci-app-firewall/po/sk/firewall.po
@@ -41,6 +41,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr ""
@@ -95,6 +98,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr ""
@@ -104,6 +110,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr ""
@@ -119,6 +128,9 @@ msgstr ""
msgid "Enable logging on this zone"
msgstr ""
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr ""
@@ -167,9 +179,21 @@ msgstr ""
msgid "From %s in %s with source %s and %s"
msgstr ""
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr ""
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -290,6 +314,9 @@ msgstr ""
msgid "Output"
msgstr ""
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
@@ -317,6 +344,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -343,6 +376,9 @@ msgstr ""
msgid "Rewrite to source %s, %s"
msgstr ""
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -358,6 +394,12 @@ msgstr ""
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr ""
diff --git a/applications/luci-app-firewall/po/sv/firewall.po b/applications/luci-app-firewall/po/sv/firewall.po
index c98eafa09a..6c9cde89d7 100644
--- a/applications/luci-app-firewall/po/sv/firewall.po
+++ b/applications/luci-app-firewall/po/sv/firewall.po
@@ -42,6 +42,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Åtgärd"
@@ -96,6 +99,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "Skriv inte om igen"
@@ -105,6 +111,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Släpp ogiltiga paket"
@@ -120,6 +129,9 @@ msgstr ""
msgid "Enable logging on this zone"
msgstr "Aktivera loggning i den här zonen"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "Extern IP-adress"
@@ -168,9 +180,21 @@ msgstr "Från %s i %s med källa %s"
msgid "From %s in %s with source %s and %s"
msgstr "Från %s i %s med källa %s och %s"
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "Generella inställningar"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -296,6 +320,9 @@ msgstr "Andra..."
msgid "Output"
msgstr "Utmatning"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
@@ -323,6 +350,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr "Starta om brandvägg"
@@ -349,6 +382,9 @@ msgstr "Skriv om igen till källan %s"
msgid "Rewrite to source %s, %s"
msgstr ""
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -364,6 +400,12 @@ msgstr "SNAT-port"
msgid "Saturday"
msgstr "Lördag"
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr "IP-adress för källa"
diff --git a/applications/luci-app-firewall/po/templates/firewall.pot b/applications/luci-app-firewall/po/templates/firewall.pot
index 62c4a2e84a..d9015c5847 100644
--- a/applications/luci-app-firewall/po/templates/firewall.pot
+++ b/applications/luci-app-firewall/po/templates/firewall.pot
@@ -34,6 +34,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr ""
@@ -88,6 +91,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr ""
@@ -97,6 +103,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr ""
@@ -112,6 +121,9 @@ msgstr ""
msgid "Enable logging on this zone"
msgstr ""
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr ""
@@ -160,9 +172,21 @@ msgstr ""
msgid "From %s in %s with source %s and %s"
msgstr ""
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr ""
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -283,6 +307,9 @@ msgstr ""
msgid "Output"
msgstr ""
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
@@ -310,6 +337,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -336,6 +369,9 @@ msgstr ""
msgid "Rewrite to source %s, %s"
msgstr ""
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -351,6 +387,12 @@ msgstr ""
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr ""
diff --git a/applications/luci-app-firewall/po/tr/firewall.po b/applications/luci-app-firewall/po/tr/firewall.po
index f23d10aafc..6aa3b4b476 100644
--- a/applications/luci-app-firewall/po/tr/firewall.po
+++ b/applications/luci-app-firewall/po/tr/firewall.po
@@ -41,6 +41,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr ""
@@ -95,6 +98,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr ""
@@ -104,6 +110,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr ""
@@ -119,6 +128,9 @@ msgstr ""
msgid "Enable logging on this zone"
msgstr ""
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr ""
@@ -167,9 +179,21 @@ msgstr ""
msgid "From %s in %s with source %s and %s"
msgstr ""
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr ""
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -290,6 +314,9 @@ msgstr ""
msgid "Output"
msgstr ""
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
@@ -317,6 +344,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -343,6 +376,9 @@ msgstr ""
msgid "Rewrite to source %s, %s"
msgstr ""
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -358,6 +394,12 @@ msgstr ""
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr ""
diff --git a/applications/luci-app-firewall/po/uk/firewall.po b/applications/luci-app-firewall/po/uk/firewall.po
index de72ec6e0a..6301b83e35 100644
--- a/applications/luci-app-firewall/po/uk/firewall.po
+++ b/applications/luci-app-firewall/po/uk/firewall.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-12-29 12:53+0200\n"
+"PO-Revision-Date: 2018-06-18 20:24+0300\n"
"Last-Translator: Yurii <yuripet@gmail.com>\n"
"Language-Team: none\n"
"Language: uk\n"
@@ -10,7 +10,6 @@ msgstr ""
"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"
-"X-Generator: Pootle 2.0.6\n"
msgid "%s in %s"
msgstr "%s у %s"
@@ -40,10 +39,13 @@ msgid "<var>%s</var> and limit to %s"
msgstr "<var>%s</var> з лімітом %s"
msgid "Accept forward"
-msgstr ""
+msgstr "Приймати переспрямовування"
msgid "Accept input"
-msgstr ""
+msgstr "Приймати вхідний"
+
+msgid "Accept output"
+msgstr "Приймати вихідний"
msgid "Action"
msgstr "Дія"
@@ -58,10 +60,10 @@ msgid "Advanced Settings"
msgstr "Розширені настройки"
msgid "Allow forward from <em>source zones</em>:"
-msgstr "Дозволити спрямовування від <em>зон-джерел</em>:"
+msgstr "Дозволити переспрямовування від <em>зон джерела</em>:"
msgid "Allow forward to <em>destination zones</em>:"
-msgstr "Дозволити спрямовування до <em>зон призначення</em>:"
+msgstr "Дозволити переспрямовування до <em>зон призначення</em>:"
msgid "Any"
msgstr "Будь-який"
@@ -95,22 +97,28 @@ msgid "Destination zone"
msgstr "Зона призначення"
msgid "Disable"
-msgstr ""
+msgstr "Вимкнути"
msgid "Discard forward"
-msgstr ""
+msgstr "Відкидати переспрямовування"
msgid "Discard input"
-msgstr ""
+msgstr "Відкидати вхідний"
+
+msgid "Discard output"
+msgstr "Відкидати вихідний"
msgid "Do not rewrite"
msgstr "Не перезаписувати"
msgid "Do not track forward"
-msgstr ""
+msgstr "Не відслідковувати переспрямовування"
msgid "Do not track input"
-msgstr ""
+msgstr "Не відслідковувати вхідний"
+
+msgid "Do not track output"
+msgstr "Не відслідковувати вихідний"
msgid "Drop invalid packets"
msgstr "Відкидати помилкові пакети"
@@ -127,6 +135,9 @@ msgstr "Увімкнути захист від SYN-flood"
msgid "Enable logging on this zone"
msgstr "Увімкнути реєстрування у цій зоні"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr "Експериментальна функція. Не повністю сумісно з QoS / SQM."
+
msgid "External IP address"
msgstr "Зовнішня IP-адреса"
@@ -146,7 +157,7 @@ msgid "Firewall - Custom Rules"
msgstr "Брандмауер — Настроювані правила"
msgid "Firewall - Port Forwards"
-msgstr "Брандмауер — Спрямовування портів"
+msgstr "Брандмауер — Переспрямовування портів"
msgid "Firewall - Traffic Rules"
msgstr "Брандмауер — Правила трафіка"
@@ -158,34 +169,46 @@ msgid "Force connection tracking"
msgstr "Увімкнути відстеження з'єднань"
msgid "Forward"
-msgstr "Спрямовування"
+msgstr "Переспрямовування"
msgid "Forward to"
-msgstr "спрямовування до"
+msgstr "переспрямовування до"
msgid "Friday"
-msgstr ""
+msgstr "П'ятниця"
msgid "From %s in %s"
msgstr "%s у %s"
msgid "From %s in %s with source %s"
-msgstr "%s у %s з вихідним %s"
+msgstr "%s у %s з джерелом %s"
msgid "From %s in %s with source %s and %s"
-msgstr "%s у %s з вихідним %s та %s"
+msgstr "%s у %s з джерелом %s та %s"
+
+msgid "From %s on <var>this device</var>"
+msgstr "Від %s на <var>цьому пристрої</var>"
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr "Від %s на <var>цьому пристрої</var> з джерелом %s"
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr "Від %s на <var>цьому пристрої</var> з джерелом %s та %s"
msgid "General Settings"
msgstr "Загальні настройки"
+msgid "Hardware flow offloading"
+msgstr "Апаратні засоби розвантаження потоку"
+
msgid "IP"
-msgstr ""
+msgstr "IP-адреса"
msgid "IP range"
-msgstr ""
+msgstr "Діапазон IP"
msgid "IPs"
-msgstr ""
+msgstr "IP-адреси"
msgid "IPv4"
msgstr "IPv4"
@@ -206,7 +229,7 @@ msgid "Input"
msgstr "Вхідний"
msgid "Inter-Zone Forwarding"
-msgstr "Спрямовування крізь зони"
+msgstr "Переспрямовування між зонами"
msgid "Internal IP address"
msgstr "Внутрішня IP-адреса"
@@ -221,10 +244,10 @@ msgid "Limit log messages"
msgstr "Обмеження повідомлень журналу"
msgid "MAC"
-msgstr ""
+msgstr "MAC-адреса"
msgid "MACs"
-msgstr ""
+msgstr "MAC-адреси"
msgid "MSS clamping"
msgstr "Затискання MSS"
@@ -240,8 +263,8 @@ msgstr "Зіставляти ICMP типу"
msgid "Match forwarded traffic to the given destination port or port range."
msgstr ""
-"Зіставляти трафік, що спрямовується на заданий порт призначення або діапазон "
-"портів."
+"Зіставляти трафік, що переспрямовується на заданий порт призначення або "
+"діапазон портів."
msgid ""
"Match incoming traffic directed at the given destination port or port range "
@@ -258,10 +281,10 @@ msgstr ""
"діапазоні портів вузла клієнта."
msgid "Monday"
-msgstr ""
+msgstr "Понеділок"
msgid "Month Days"
-msgstr ""
+msgstr "Дні місяця"
msgid "Name"
msgstr "Ім'я"
@@ -270,13 +293,13 @@ msgid "New SNAT rule"
msgstr "Нове правило SNAT"
msgid "New forward rule"
-msgstr "Нове правило спрямовування"
+msgstr "Нове правило переспрямовування"
msgid "New input rule"
msgstr "Нове вхідне правило"
msgid "New port forward"
-msgstr "Нове спрямовування порту"
+msgstr "Нове переспрямовування порту"
msgid "New source NAT"
msgstr "Новий NAT джерела"
@@ -306,18 +329,21 @@ msgstr "Інше..."
msgid "Output"
msgstr "Вихідний"
+msgid "Output zone"
+msgstr "Вихідна зона"
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
"Передача додаткових аргументів для IPTables. Використовуйте з обережністю!"
msgid "Port Forwards"
-msgstr "Спрямовування портів"
+msgstr "Переспрямовування портів"
msgid ""
"Port forwarding allows remote computers on the Internet to connect to a "
"specific computer or service within the private LAN."
msgstr ""
-"Спрямовування портів дозволяє віддаленим комп'ютерам з Інтернету "
+"Переспрямовування портів дозволяє віддаленим комп'ютерам з Інтернету "
"підключатися до певного комп'ютера або служби у приватній мережі."
msgid "Protocol"
@@ -332,19 +358,25 @@ msgid "Redirect matched incoming traffic to the specified internal host"
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 "Restart Firewall"
-msgstr ""
+msgstr "Перезавантажити брандмауер"
msgid "Restrict Masquerading to given destination subnets"
msgstr "Обмежити підміну заданими підмережами призначення"
msgid "Restrict Masquerading to given source subnets"
-msgstr "Обмежити підміну заданими вихідними підмережами"
+msgstr "Обмежити підміну заданими підмережами джерела"
msgid "Restrict to address family"
msgstr "Обмежити сімейство протоколів"
@@ -360,16 +392,19 @@ msgstr ""
"порожнім, щоб переписувати тільки IP-адресу."
msgid "Rewrite to source %s"
-msgstr "перезапис на вихідний %s"
+msgstr "перезапис на джерело %s"
msgid "Rewrite to source %s, %s"
-msgstr "перезапис на вихідний %s, %s"
+msgstr "перезапис на джерело %s, %s"
+
+msgid "Routing/NAT Offloading"
+msgstr "Розвантаження маршрутизації/NAT"
msgid "Rule is disabled"
-msgstr ""
+msgstr "Правило вимкнено"
msgid "Rule is enabled"
-msgstr ""
+msgstr "Правило ввімкнено"
msgid "SNAT IP address"
msgstr "IP-адреса SNAT"
@@ -378,7 +413,13 @@ msgid "SNAT port"
msgstr "Порт SNAT"
msgid "Saturday"
-msgstr ""
+msgstr "Субота"
+
+msgid "Software based offloading for routing/NAT"
+msgstr "Програмне розвантаження для маршрутизації/NAT"
+
+msgid "Software flow offloading"
+msgstr "Програмне розвантаження потоку"
msgid "Source IP address"
msgstr "IP-адреса джерела"
@@ -405,22 +446,22 @@ msgid "Source port"
msgstr "Порт джерела"
msgid "Source zone"
-msgstr "Зона-джерело"
+msgstr "Зона джерела"
msgid "Start Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Дата початку (рррр-мм-дд)"
msgid "Start Time (hh:mm:ss)"
-msgstr ""
+msgstr "Час початку (гг:хх:сс)"
msgid "Stop Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Дата зупинки (рррр-мм-дд)"
msgid "Stop Time (hh:mm:ss)"
-msgstr ""
+msgstr "Час зупинки (гг:хх:сс)"
msgid "Sunday"
-msgstr ""
+msgstr "Неділя"
msgid ""
"The firewall creates zones over your network interfaces to control network "
@@ -437,19 +478,21 @@ msgid ""
"rule is <em>unidirectional</em>, e.g. a forward from lan to wan does "
"<em>not</em> imply a permission to forward from wan to lan as well."
msgstr ""
-"Опції, наведені нижче, управляють політиками спрямовування між цією (%s) та "
-"іншими зонами. <em>Зони призначення</em> покриваються трафіком, що "
-"<strong>виходить з %q</strong>. <em>Зони-джерела</em> покриваються трафіком "
-"з інших зон, <strong>спрямованим на %q</strong>. Правила спрямування є "
-"<em>односпрямованим</em>, тобто, спрямування від LAN до WAN <em>не</em> "
-"означає, що є також дозвіл спрямовувати від WAN в LAN."
+"Опції, наведені нижче, керують політиками переспрямовування між цією (%s) та "
+"іншими зонами. <em>Зони призначення</em> покриваються переспрямованим "
+"трафіком, що <strong>виходить з %q</strong>. <em>Зони джерела</em> "
+"покриваються трафіком з інших зон, <strong>переспрямованим на %q</strong>. "
+"Правило переспрямовування є <em>односпрямованим</em>, тобто, спрямовування "
+"від LAN до WAN <em>не</em> означає, що є також дозвіл спрямовувати від WAN "
+"до LAN."
msgid ""
"This page allows you to change advanced properties of the port forwarding "
"entry. In most cases there is no need to modify those settings."
msgstr ""
-"На цій сторінці можна змінити додаткові властивості елемента спрямовування "
-"портів. У більшості випадків змінювати ці параметри немає необхідності."
+"На цій сторінці можна змінити додаткові властивості елемента "
+"переспрямовування портів. У більшості випадків змінювати ці параметри немає "
+"потреби."
msgid ""
"This page allows you to change advanced properties of the traffic rule "
@@ -458,7 +501,6 @@ msgstr ""
"На цій сторінці можна змінити додаткові властивості елемента правил трафіка, "
"таких як відповідні параметри джерела та вузлів призначення."
-#, fuzzy
msgid ""
"This section defines common properties of %q. The <em>input</em> and "
"<em>output</em> options set the default policies for traffic entering and "
@@ -468,15 +510,15 @@ msgid ""
msgstr ""
"Цей розділ визначає загальні властивості %q. Параметри <em>вхідний</em> і "
"<em>вихідний</em> задають типову політику для трафіку на вході й виході з "
-"цієї зони, а параметр \"спрямовування\" описує політику спрямовування "
-"трафіку між різними мережами в межах зони. Пункт <em>вкриті мережі</em> "
+"цієї зони, а параметр \"переспрямовування\" описує політику спрямовування "
+"трафіку між різними мережами в межах зони. Пункт <em>Покриті мережі</em> "
"визначає, які доступні мережі є членами цієї зони."
msgid "Thursday"
-msgstr ""
+msgstr "Четвер"
msgid "Time in UTC"
-msgstr ""
+msgstr "Час в UTC"
msgid "To %s at %s on <var>this device</var>"
msgstr "%s на %s <var>цього пристрою</var>"
@@ -509,7 +551,7 @@ msgstr ""
"порти WAN на маршрутизаторі."
msgid "Tuesday"
-msgstr ""
+msgstr "Вівторок"
msgid "Via %s"
msgstr "Через %s"
@@ -518,10 +560,10 @@ msgid "Via %s at %s"
msgstr "Через %s на %s"
msgid "Wednesday"
-msgstr ""
+msgstr "Середа"
msgid "Week Days"
-msgstr ""
+msgstr "Дні тижня"
msgid ""
"You may specify multiple by selecting \"-- custom --\" and then entering "
@@ -534,7 +576,7 @@ msgid "Zone %q"
msgstr "Зона %q"
msgid "Zone ⇒ Forwardings"
-msgstr "Зона ⇒ Спрямовування"
+msgstr "Зона ⇒ Переспрямовування"
msgid "Zones"
msgstr "Зони"
@@ -555,7 +597,7 @@ msgid "any zone"
msgstr "будь-якій зоні"
msgid "day"
-msgstr ""
+msgstr "день"
msgid "don't track"
msgstr "не відстеж."
@@ -564,31 +606,31 @@ msgid "drop"
msgstr "опускати"
msgid "hour"
-msgstr ""
+msgstr "година"
msgid "minute"
-msgstr ""
+msgstr "хвилина"
msgid "not"
-msgstr ""
+msgstr "не"
msgid "port"
-msgstr ""
+msgstr "порт"
msgid "ports"
-msgstr ""
+msgstr "порти"
msgid "reject"
msgstr "відкидати"
msgid "second"
-msgstr ""
+msgstr "секунда"
msgid "traffic"
-msgstr ""
+msgstr "трафік"
msgid "type"
-msgstr ""
+msgstr "типом"
msgid "types"
-msgstr ""
+msgstr "типами"
diff --git a/applications/luci-app-firewall/po/vi/firewall.po b/applications/luci-app-firewall/po/vi/firewall.po
index 24452ff1c0..7032dac258 100644
--- a/applications/luci-app-firewall/po/vi/firewall.po
+++ b/applications/luci-app-firewall/po/vi/firewall.po
@@ -46,6 +46,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "Action"
@@ -101,6 +104,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr ""
@@ -110,6 +116,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "Bỏ qua nhưng gói không hợp lý"
@@ -126,6 +135,9 @@ msgstr "SYN-flood bảo vệ "
msgid "Enable logging on this zone"
msgstr ""
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr ""
@@ -174,9 +186,21 @@ msgstr ""
msgid "From %s in %s with source %s and %s"
msgstr ""
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr ""
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -300,6 +324,9 @@ msgstr ""
msgid "Output"
msgstr "Output"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
@@ -327,6 +354,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr ""
@@ -353,6 +386,9 @@ msgstr ""
msgid "Rewrite to source %s, %s"
msgstr ""
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -368,6 +404,12 @@ msgstr ""
msgid "Saturday"
msgstr ""
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
#, fuzzy
msgid "Source IP address"
msgstr "Đỉa chỉ MAC nguồn"
diff --git a/applications/luci-app-firewall/po/zh-cn/firewall.po b/applications/luci-app-firewall/po/zh-cn/firewall.po
index 9e9c64d670..1b12dc5e19 100644
--- a/applications/luci-app-firewall/po/zh-cn/firewall.po
+++ b/applications/luci-app-firewall/po/zh-cn/firewall.po
@@ -44,6 +44,9 @@ msgstr "接受转发"
msgid "Accept input"
msgstr "接受入站"
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "动作"
@@ -100,6 +103,9 @@ msgstr "丢弃转发"
msgid "Discard input"
msgstr "丢弃入站"
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "不重写"
@@ -109,6 +115,9 @@ msgstr "不跟踪转发"
msgid "Do not track input"
msgstr "不跟踪入站"
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "丢弃无效数据包"
@@ -124,6 +133,9 @@ msgstr "启用 SYN-flood 防御"
msgid "Enable logging on this zone"
msgstr "启用此区域的日志记录"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr "实验特性。与 QoS/SQM 不完全兼容。"
+
msgid "External IP address"
msgstr "外部 IP 地址"
@@ -172,9 +184,21 @@ msgstr "来自 %s 位于 %s 源于 %s"
msgid "From %s in %s with source %s and %s"
msgstr "来自 %s 位于 %s 源端口 %s 源 MAC %s"
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "基本设置"
+msgid "Hardware flow offloading"
+msgstr "硬件流量分载"
+
msgid "IP"
msgstr "IP"
@@ -295,6 +319,9 @@ msgstr "其它..."
msgid "Output"
msgstr "出站数据"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr "传递到 iptables 的额外参数。小心使用!"
@@ -323,6 +350,12 @@ msgstr "拒绝转发"
msgid "Refuse input"
msgstr "拒绝入站"
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr "需要硬件 NAT 支持。目前 mt7621 已实现"
+
msgid "Restart Firewall"
msgstr "重启防火墙"
@@ -349,6 +382,9 @@ msgstr "源地址改写成 %s"
msgid "Rewrite to source %s, %s"
msgstr "源地址改写成 %s, %s"
+msgid "Routing/NAT Offloading"
+msgstr "Routing/NAT 分载"
+
msgid "Rule is disabled"
msgstr "规则已禁用"
@@ -364,6 +400,12 @@ msgstr "SNAT 端口"
msgid "Saturday"
msgstr "星期六"
+msgid "Software based offloading for routing/NAT"
+msgstr "基于软件的 Routing/NAT 分载"
+
+msgid "Software flow offloading"
+msgstr "软件流量分载"
+
msgid "Source IP address"
msgstr "源 IP 地址"
diff --git a/applications/luci-app-firewall/po/zh-tw/firewall.po b/applications/luci-app-firewall/po/zh-tw/firewall.po
index afc9c4e33c..070d22d6f4 100644
--- a/applications/luci-app-firewall/po/zh-tw/firewall.po
+++ b/applications/luci-app-firewall/po/zh-tw/firewall.po
@@ -44,6 +44,9 @@ msgstr ""
msgid "Accept input"
msgstr ""
+msgid "Accept output"
+msgstr ""
+
msgid "Action"
msgstr "動作"
@@ -100,6 +103,9 @@ msgstr ""
msgid "Discard input"
msgstr ""
+msgid "Discard output"
+msgstr ""
+
msgid "Do not rewrite"
msgstr "不重寫"
@@ -109,6 +115,9 @@ msgstr ""
msgid "Do not track input"
msgstr ""
+msgid "Do not track output"
+msgstr ""
+
msgid "Drop invalid packets"
msgstr "丟棄無效資料包"
@@ -124,6 +133,9 @@ msgstr "啟用 SYN-flood 防禦"
msgid "Enable logging on this zone"
msgstr "啟用此區域的日誌記錄"
+msgid "Experimental feature. Not fully compatible with QoS/SQM."
+msgstr ""
+
msgid "External IP address"
msgstr "外部 IP 位址"
@@ -172,9 +184,21 @@ msgstr "來自 %s 位於 %s 源於 %s"
msgid "From %s in %s with source %s and %s"
msgstr "來自 %s 位於 %s 源埠 %s 源 MAC %s"
+msgid "From %s on <var>this device</var>"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s"
+msgstr ""
+
+msgid "From %s on <var>this device</var> with source %s and %s"
+msgstr ""
+
msgid "General Settings"
msgstr "基本設定"
+msgid "Hardware flow offloading"
+msgstr ""
+
msgid "IP"
msgstr ""
@@ -295,6 +319,9 @@ msgstr "其它..."
msgid "Output"
msgstr "出站資料"
+msgid "Output zone"
+msgstr ""
+
msgid "Passes additional arguments to iptables. Use with care!"
msgstr "傳遞到 iptables 的額外引數。小心使用!"
@@ -322,6 +349,12 @@ msgstr ""
msgid "Refuse input"
msgstr ""
+msgid "Refuse output"
+msgstr ""
+
+msgid "Requires hardware NAT support. Implemented at least for mt7621"
+msgstr ""
+
msgid "Restart Firewall"
msgstr "重啟防火牆"
@@ -348,6 +381,9 @@ msgstr "源位址改寫成 %s"
msgid "Rewrite to source %s, %s"
msgstr "源位址改寫成 %s, %s"
+msgid "Routing/NAT Offloading"
+msgstr ""
+
msgid "Rule is disabled"
msgstr ""
@@ -363,6 +399,12 @@ msgstr "SNAT 埠"
msgid "Saturday"
msgstr "星期六"
+msgid "Software based offloading for routing/NAT"
+msgstr ""
+
+msgid "Software flow offloading"
+msgstr ""
+
msgid "Source IP address"
msgstr "源 IP 位址"
diff --git a/applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm b/applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm
index d861ef9fcb..2fd7168bd2 100644
--- a/applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm
+++ b/applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm
@@ -5,13 +5,12 @@ XHR.poll(5, '<%=url('admin/telephony/status')%>', null,
var tb = document.getElementById('telephony_status_table');
if (st && tb)
{
- tb.deleteRow(1);
- var tr = tb.insertRow(-1);
- tr.className = 'cbi-section-table-row cbi-rowstyle-1';
-
- tr.insertCell(-1).innerHTML = st.status;
- tr.insertCell(-1).innerHTML = st.line1;
- tr.insertCell(-1).innerHTML = st.line2;
+ tb.removeChild(tb.firstChild);
+ tb.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-1">', [
+ E('<div class="td">', st.status),
+ E('<div class="td">', st.line1),
+ E('<div class="td">', st.line2)
+ ]));
}
}
);
@@ -19,14 +18,14 @@ XHR.poll(5, '<%=url('admin/telephony/status')%>', null,
<fieldset class="cbi-section">
<legend><%:Current Telephony State%></legend>
- <table class="cbi-section-table" id="telephony_status_table">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Uplink%></th>
- <th class="cbi-section-table-cell"><%:Port1%></th>
- <th class="cbi-section-table-cell"><%:Port2%></th>
- </tr>
- <tr class="cbi-section-table-row">
- <td colspan="5"><em><br /><%:Collecting data...%></em></td>
- </tr>
- </table>
+ <div class="table cbi-section-table" id="telephony_status_table">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:Uplink%></div>
+ <div class="th cbi-section-table-cell"><%:Port1%></div>
+ <div class="th cbi-section-table-cell"><%:Port2%></div>
+ </div>
+ <div class="tr cbi-section-table-row">
+ <div class="td" colspan="5"><em><br /><%:Collecting data...%></em></div>
+ </div>
+ </div>
</fieldset>
diff --git a/applications/luci-app-mwan3/po/ja/mwan3.po b/applications/luci-app-mwan3/po/ja/mwan3.po
index 6ee351c4c2..a5826926dd 100644
--- a/applications/luci-app-mwan3/po/ja/mwan3.po
+++ b/applications/luci-app-mwan3/po/ja/mwan3.po
@@ -7,7 +7,7 @@ msgstr ""
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.3\n"
+"X-Generator: Poedit 2.0.7\n"
"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Language: ja\n"
@@ -43,6 +43,9 @@ msgstr "利用可能な値: 1-256。空欄の場合のデフォルトは1です
msgid "Check IP rules"
msgstr "IP ルールのチェック"
+msgid "Check link quality"
+msgstr "リンク品質のチェック"
+
msgid "Check routing table"
msgstr "ルーティング テーブルのチェック"
@@ -56,7 +59,7 @@ msgid "Destination port"
msgstr "宛先ポート"
msgid "Detail"
-msgstr ""
+msgstr "詳細"
msgid "Diagnostics"
msgstr "診断機能"
@@ -77,7 +80,7 @@ msgid "Enter value in hex, starting with <code>0x</code>"
msgstr "<code>0x</code> で始まる16進数の値を入力してください。"
msgid "Execute"
-msgstr ""
+msgstr "実行"
msgid "Expect interface state on up event"
msgstr "Up イベント時に予想されるインターフェースの状態です。"
@@ -89,10 +92,12 @@ msgid "Firewall mask"
msgstr "ファイアウォール マスク"
msgid "Flush conntrack table"
-msgstr ""
+msgstr "conntrack テーブルのクリア"
msgid "Flush global firewall conntrack table on interface events"
msgstr ""
+"インターフェース イベント時にグローバル ファイアウォール conntrack テーブルを"
+"クリアします。"
msgid "Globals"
msgstr "全般"
@@ -104,7 +109,7 @@ msgid "Hotplug ifup"
msgstr "ホットプラグ ifup"
msgid "INFO: MWAN not running"
-msgstr ""
+msgstr "情報: MWAN は実行されていません"
msgid "IPset"
msgstr "IPset"
@@ -157,28 +162,28 @@ msgid "Local source interface"
msgstr ""
msgid "MWAN - Globals"
-msgstr ""
+msgstr "MWAN - グローバル"
msgid "MWAN - Interfaces"
-msgstr ""
+msgstr "MWAN - インターフェース"
msgid "MWAN - Members"
-msgstr ""
+msgstr "MWAN - メンバー"
msgid "MWAN - Notification"
-msgstr ""
+msgstr "MWAN - 通知"
msgid "MWAN - Policies"
-msgstr ""
+msgstr "MWAN - ポリシー"
msgid "MWAN - Rules"
-msgstr ""
+msgstr "MWAN - ルール"
msgid "MWAN Interface Configuration - %s"
msgstr "MWAN インターフェース設定 - %s"
msgid "MWAN Interfaces"
-msgstr ""
+msgstr "MWAN インターフェース"
msgid "MWAN Member Configuration - %s"
msgstr "MWAN メンバー設定 - %s"
@@ -190,13 +195,13 @@ msgid "MWAN Rule Configuration - %s"
msgstr "MWAN ルール設定 - %s"
msgid "MWAN Status - Detail"
-msgstr ""
+msgstr "MWAN ステータス - 詳細"
msgid "MWAN Status - Diagnostics"
-msgstr ""
+msgstr "MWAN ステータス - 診断"
msgid "MWAN Status - Troubleshooting"
-msgstr ""
+msgstr "MWAN ステータス - トラブルシューティング"
msgid ""
"MWAN supports up to 252 physical and/or logical interfaces<br />MWAN "
@@ -214,6 +219,12 @@ msgstr ""
"スは使用できません。<br />インターフェースには、設定済みのメンバーやポリ"
"シー、ルールと同じ名前を使用することはできません。"
+msgid "Max packet latency [ms]"
+msgstr "最大パケットレイテンシ [ms]"
+
+msgid "Max packet loss [%]"
+msgstr "最大パケットロス [%]"
+
msgid ""
"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
"as a portrange (eg \"1024:2048\") without quotes"
@@ -246,6 +257,12 @@ msgstr "アサイン済みメンバー"
msgid "Metric"
msgstr "メトリック"
+msgid "Min packet latency [ms]"
+msgstr "最小パケットレイテンシ [ms]"
+
+msgid "Min packet loss [%]"
+msgstr "最小パケットロス [%]"
+
msgid ""
"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
"youtube.com/youtube\")"
@@ -260,7 +277,7 @@ msgid "No MWAN interfaces found"
msgstr "MWAN インターフェースが見つかりません"
msgid "Notification"
-msgstr ""
+msgstr "通知"
msgid "Offline"
msgstr "オフライン"
@@ -342,6 +359,16 @@ msgid ""
"z, 0-9, _ and no spaces<br />Rules may not share the same name as configured "
"interfaces, members or policies"
msgstr ""
+"ルールは、どのトラフィックが特定の MWAN ポリシーを使用するかを指定します<br /"
+">ルールは IP アドレスやポート、プロトコルに基づいています<br />ルールは上から"
+"下へマッチングが行われます<br />合致したルールより下のルールは無視されます"
+"<br />いずれのルールにもマッチしないトラフィックは、メインのルーティングテー"
+"ブルを使用してルーティングされます<br />既知(デフォルト以外)のネットワーク"
+"へのトラフィックは、メインのルーティングテーブルによって制御されます<br />ト"
+"ラフィックがルールに合致しても、全 WAN インターフェースが down の場合は "
+"blackhole 状態となります<br />名前は A-Z, a-z, 0-9, _ を含むことができます"
+"が、スペースは使用できません<br />ルールは、設定済みのインターフェースやメン"
+"バー、ポリシーと同じ名前を使用することはできません。"
msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
msgstr "秒。利用可能な値: 1-1000000。空欄の場合のデフォルト値は600です。"
@@ -362,7 +389,7 @@ msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
msgstr "CIDR 表記のサポート(例: \"192.168.100.0/24\")"
msgid "Task"
-msgstr ""
+msgstr "タスク"
msgid "There are currently %d of %d supported interfaces configured"
msgstr "現在、%d 個中 %d 個のサポートされたインターフェースが設定済みです。"
@@ -397,6 +424,21 @@ msgid ""
"Physical device name which interface went up or down (e.g. \"eth0\" or "
"\"wwan0\")<br /><br />"
msgstr ""
+"このセクションでは、 \"/etc/mwan3.user\" の内容を変更することができます。"
+"<br />このファイルも sysupgrade の際に保持されます。<br /><br />注意: <br />"
+"このファイルはシェルスクリプトとして解釈されます。<br />最初の行は &#34;#!/"
+"bin/sh&#34; である必要があります(クォーテーション不要)。<br /># で始まる行"
+"はコメントであり、実行されません。<br />mwan3 のカスタム動作をここに入力して"
+"ください。<br />これらは、mwan3 で有効なインターフェースの<br /> netifd "
+"hotplug インターフェース イベント毎に実行されます。<br /><br />このスクリプト"
+"に受け渡される主に3つの環境変数が利用できます。<br /><br />$ACTION<br />* "
+"\"ifup\" は netifd と mwan3track により呼び出されます<br />* \"ifdown\" は "
+"netifd と mwan3track により呼び出されます<br />* \"connected\" はトラッキング"
+"が成功した際に mwan3track にのみにより呼び出されます<br />* \"disconnected\" "
+"は トラッキングが失敗した際に mwan3track のみにより呼び出されます<br />"
+"$INTERFACE up または down したインターフェース名(例: \"wan\" や \"wwan\")"
+"<br />$DEVICE up または down したインターフェースの物理デバイス名(例: "
+"\"eth0\" や \"wwan0\")<br /><br />"
msgid "Tracking hostname or IP address"
msgstr "追跡ホスト名または IP アドレス"
@@ -426,36 +468,42 @@ msgstr ""
"インターフェースの IP アドレスが使用されます。"
msgid "View the content of /etc/protocols for protocol description"
-msgstr ""
+msgstr "プロトコルの説明については、 /etc/protocols の内容を確認してください"
msgid "WARNING: %d interfaces are configured exceeding the maximum of %d!"
msgstr ""
"警告: %d 個のインターフェースが、最大個数の %d 個 を超えて設定されています!"
msgid "WARNING: Interface %s are not found in /etc/config/network"
-msgstr ""
+msgstr "警告: インターフェース %s が /etc/config/network に見つかりません"
msgid "WARNING: Interface %s has a duplicate metric %s configured"
-msgstr ""
+msgstr "警告: インターフェース %s に重複するメトリック %s が設定されています"
msgid ""
"WARNING: Interface %s has a higher reliability requirement than tracking "
"hosts (%d)"
msgstr ""
+"警告: インターフェース %s は追跡ホスト数 (%d) よりも高い追跡信頼性の値が設定"
+"されています"
msgid "WARNING: Interface %s has no default route in the main routing table"
msgstr ""
+"警告: インターフェース %s はメインのルーティング テーブル内でデフォルトルート"
+"がありません"
msgid "WARNING: Policy %s has exceeding the maximum name of 15 characters"
-msgstr ""
+msgstr "警告: ポリシー %s の名前は15文字の最大文字数を超えています"
msgid ""
"WARNING: Rule %s have a port configured with no or improper protocol "
"specified!"
msgstr ""
+"警告: ルール %s はプロトコル指定が不適切、または無いポートが設定されていま"
+"す!"
msgid "Waiting for command to complete..."
-msgstr ""
+msgstr "コマンドを実行中です..."
msgid "Weight"
msgstr "ウエイト"
@@ -489,289 +537,3 @@ msgstr "never"
msgid "unreachable (reject)"
msgstr "unreachable (reject)"
-
-#~ msgid "Online (tracking active)"
-#~ msgstr "オンライン(追跡実行中)"
-
-#~ msgid "MWAN Interface Live Status"
-#~ msgstr "MWAN インターフェース Live ステータス"
-
-#~ msgid "Online (tracking off)"
-#~ msgstr "オンライン(追跡オフ)"
-
-#~ msgid ""
-#~ "This section allows you to modify the content of \"/etc/mwan3.user\".<br /"
-#~ ">The file is also preserved during sysupgrade.<br /><br />Notes:<br /"
-#~ ">This file is interpreted as a shell script.<br />The first line of the "
-#~ "script must be &#34;#!/bin/sh&#34; without quotes.<br />Lines beginning "
-#~ "with # are comments and are not executed.<br />Put your custom mwan3 "
-#~ "action here, they will<br />be executed with each netifd hotplug "
-#~ "interface event<br />on interfaces for which mwan3 is enabled.<br /><br /"
-#~ ">There are three main environment variables that are passed to this "
-#~ "script.<br /><br />$ACTION Either \"ifup\" or \"ifdown\"<br />$INTERFACE "
-#~ "Name of the interface which went up or down (e.g. \"wan\" or \"wwan"
-#~ "\")<br />$DEVICE Physical device name which interface went up or down (e."
-#~ "g. \"eth0\" or \"wwan0\")<br /><br />"
-#~ msgstr ""
-#~ "このセクションでは、 \"/etc/mwan3.user\" の内容を変更することができます。"
-#~ "<br />このファイルは、 sysupgrade 時に保持されます。<br /><br />注意: "
-#~ "<br />このファイルは、シェルスクリプトとして解釈されます。<br />スクリプト"
-#~ "の1行目は、&#34;#!bin/sh&#34; である必要があります(クォーテーション不"
-#~ "要)。<br /># で始まる行はコメントであり、実行されません。<br />mwan3 のカ"
-#~ "スタム動作をここに入力してください。これらは、 mwan3 が有効なインター"
-#~ "フェースの<br />netifd ホットプラグ インターフェース イベント毎に実行され"
-#~ "ます。<br /><br />主に3つの環境変数が利用可能です。<br /><br />$ACTION - "
-#~ "\"ifup\" および \"ifdown\"<br />$INTERFACE - Up または Down が行われたイン"
-#~ "ターフェース名(例: \"wan\" や \"wwan\")<br />$DEVICE - Up または Down が"
-#~ "行われた物理デバイス名(例: \"eth0\" や \"wwan0\")<br /><br />"
-
-#~ msgid "Currently Configured Interfaces"
-#~ msgstr "設定済みインターフェース"
-
-#~ msgid "Currently Configured Members"
-#~ msgstr "設定済みメンバー"
-
-#~ msgid "Currently Configured Policies"
-#~ msgstr "設定済みポリシー"
-
-#~ msgid "Detailed Status"
-#~ msgstr "詳細ステータス"
-
-#~ msgid "Diagnostic Results"
-#~ msgstr "診断結果"
-
-#~ msgid "Error collecting troubleshooting information"
-#~ msgstr "トラブルシューティング情報の収集エラー"
-
-#~ msgid "Errors"
-#~ msgstr "エラー"
-
-#~ msgid "Globals mwan3 options"
-#~ msgstr "MWAN3 全般オプション"
-
-#~ msgid "Interface Status"
-#~ msgstr "インターフェース ステータス"
-
-#~ msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :"
-#~ msgstr "直近の MWAN システムログ(50行)です。一番上が最新の行です:"
-
-#~ msgid "MWAN Detailed Status"
-#~ msgstr "MWAN 詳細ステータス"
-
-#~ msgid "MWAN Interface Configuration"
-#~ msgstr "MWAN インターフェース設定"
-
-#~ msgid "MWAN Interface Diagnostics"
-#~ msgstr "MWAN インターフェース診断"
-
-#~ msgid "MWAN Interface Systemlog"
-#~ msgstr "MWAN インターフェース システムログ"
-
-#~ msgid "MWAN Member Configuration"
-#~ msgstr "MWAN メンバー設定"
-
-#~ msgid "MWAN Policy Configuration"
-#~ msgstr "MWAN ポリシー設定"
-
-#~ msgid "MWAN Rule Configuration"
-#~ msgstr "MWAN ルール設定"
-
-#~ msgid "MWAN Service Control"
-#~ msgstr "MWAN サービス コントロール"
-
-#~ msgid "No MWAN systemlog history found"
-#~ msgstr "MWAN システムログの履歴が見つかりません"
-
-#~ msgid "No detailed status information available"
-#~ msgstr "詳細ステータス情報は利用できません"
-
-#~ msgid "No diagnostic results returned"
-#~ msgstr "診断結果がありません"
-
-#~ msgid "No protocol specified"
-#~ msgstr "プロトコルが設定されていません"
-
-#~ msgid "Restart MWAN"
-#~ msgstr "MWAN の再起動"
-
-#~ msgid ""
-#~ "Rules specify which traffic will use a particular MWAN policy based on IP "
-#~ "address, port or protocol<br />Rules are matched from top to bottom. "
-#~ "Rules below a matching rule are ignored. Traffic not matching any rule is "
-#~ "routed using the main routing table<br />Traffic destined for known "
-#~ "(other than default) networks is handled by the main routing table. "
-#~ "Traffic matching a rule, but all WAN interfaces for that policy are down "
-#~ "will be blackholed<br />Names may contain characters A-Z, a-z, 0-9, _ and "
-#~ "no spaces<br />Rules may not share the same name as configured "
-#~ "interfaces, members or policies"
-#~ msgstr ""
-#~ "ルールは IP アドレスやポート、プロトコルを基に、トラフィックがどの MWAN ポ"
-#~ "リシーを使用するかを設定します。<br />ルールは上から下へマッチングが行わ"
-#~ "れ、合致したルールより下のルールは無視されます。全てのルールに合致しないト"
-#~ "ラフィックは、メインのルーティング テーブルを使用してルートが決定されま"
-#~ "す。<br />既知(デフォルト以外)のネットワークへのトラフィックは、メインの"
-#~ "ルーティング テーブルによって制御されます。ルールに合致したトラフィックで"
-#~ "も、当該ポリシーの全 WAN インターフェースが Down 状態の場合は blackhole 状"
-#~ "態となります。<br />名前は A-Z, a-z, 0-9, _ を含むことができますが、スペー"
-#~ "スは使用できません。<br />ルールは、設定済みのインターフェースやメンバー、"
-#~ "ポリシーと同じ名前を使用することはできません。"
-
-#~ msgid "Start MWAN"
-#~ msgstr "MWAN の起動"
-
-#~ msgid "Stop MWAN"
-#~ msgstr "MWAN の停止"
-
-#~ msgid "Tracking IP"
-#~ msgstr "追跡 IP"
-
-#~ msgid "Traffic Rules"
-#~ msgstr "トラフィック ルール"
-
-#~ msgid "Troubleshooting Data"
-#~ msgstr "トラブルシューティング データ"
-
-#~ msgid "View the contents of /etc/protocols for protocol descriptions"
-#~ msgstr ""
-#~ "プロトコルの説明については、 /etc/protocols の内容を確認してください。"
-
-#~ msgid ""
-#~ "WARNING: Some interfaces are configured incorrectly or not at all in /etc/"
-#~ "config/network!"
-#~ msgstr ""
-#~ "警告: 設定を誤っているか、もしくは完全に設定されていないインターフェースが"
-#~ "あります!"
-
-#~ msgid ""
-#~ "WARNING: Some interfaces have a higher reliability requirement than there "
-#~ "are tracking IP addresses!"
-#~ msgstr ""
-#~ "警告: 追跡 IP アドレスの個数より大きい追跡信頼性の値が設定されたインター"
-#~ "フェースがあります!"
-
-#~ msgid ""
-#~ "WARNING: Some interfaces have duplicate metrics configured in /etc/config/"
-#~ "network!"
-#~ msgstr ""
-#~ "警告: /etc/config/network で、重複するメトリックを設定されているインター"
-#~ "フェースがあります!"
-
-#~ msgid ""
-#~ "WARNING: Some interfaces have no default route in the main routing table!"
-#~ msgstr ""
-#~ "警告: メインのルーティング テーブルで、デフォルト ルートを設定されていない"
-#~ "インターフェースがあります!"
-
-#~ msgid ""
-#~ "WARNING: Some interfaces have no metric configured in /etc/config/network!"
-#~ msgstr ""
-#~ "警告: /etc/config/network で、メトリックを設定されていないインターフェース"
-#~ "があります!"
-
-#~ msgid ""
-#~ "WARNING: Some policies have names exceeding the maximum of 15 characters!"
-#~ msgstr ""
-#~ "警告: 最大文字数の 15 文字を超える名前が設定されているポリシーがあります!"
-
-#~ msgid ""
-#~ "WARNING: Some rules have a port configured with no or improper protocol "
-#~ "specified! Please configure a specific protocol!"
-#~ msgstr ""
-#~ "警告: 不適切なプロトコルが指定されている、または何も指定されていないポート"
-#~ "を設定されたルールがあります!プロトコルを指定し直してください!"
-
-#~ msgid ""
-#~ "WARNING: This and other interfaces have duplicate metrics configured in /"
-#~ "etc/config/network!"
-#~ msgstr ""
-#~ "警告: これと他のインターフェースで重複するメトリックが /etc/config/"
-#~ "network に設定されています!"
-
-#~ msgid ""
-#~ "WARNING: This interface has a higher reliability requirement than there "
-#~ "are tracking IP addresses!"
-#~ msgstr ""
-#~ "警告: このインターフェースは、追跡 IP アドレスの個数より大きい追跡信頼性の"
-#~ "値を設定されています!"
-
-#~ msgid ""
-#~ "WARNING: This interface has no default route in the main routing table!"
-#~ msgstr ""
-#~ "警告: このインターフェースは、メインのルーティング テーブルにデフォルト "
-#~ "ルートが設定されていません!"
-
-#~ msgid ""
-#~ "WARNING: This interface has no metric configured in /etc/config/network!"
-#~ msgstr ""
-#~ "警告: このインターフェースは、 /etc/config/network でメトリックが設定され"
-#~ "ていません!"
-
-#~ msgid ""
-#~ "WARNING: This interface is configured incorrectly or not at all in /etc/"
-#~ "config/network!"
-#~ msgstr ""
-#~ "警告: このインターフェースは /etc/config/network で設定が誤っているか、も"
-#~ "しくは完全に設定されていません!"
-
-#~ msgid ""
-#~ "WARNING: This policy's name is %d characters exceeding the maximum of 15!"
-#~ msgstr ""
-#~ "警告: このポリシーの名前は、最大文字数 15 文字を超える %d 文字が設定されて"
-#~ "います!"
-
-#~ msgid ""
-#~ "WARNING: This rule is incorrectly configured with no or improper protocol "
-#~ "specified! Please configure a specific protocol!"
-#~ msgstr ""
-#~ "警告: このルールは不適切なプロトコルが指定されているか、または何も指定され"
-#~ "ていません!プロトコルを指定し直してください!"
-
-#~ msgid "Waiting for MWAN to %s..."
-#~ msgstr "MWAN の %s を待っています..."
-
-#~ msgid "Waiting for diagnostic results..."
-#~ msgstr "診断結果を待っています..."
-
-#~ msgid "restart"
-#~ msgstr "再起動"
-
-#~ msgid "start"
-#~ msgstr "起動"
-
-#~ msgid "stop"
-#~ msgstr "停止"
-
-#~ msgid "Advanced"
-#~ msgstr "詳細設定"
-
-#~ msgid "Configuration"
-#~ msgstr "設定"
-
-#~ msgid "Hotplug Script"
-#~ msgstr "ホットプラグ スクリプト"
-
-#~ msgid "MWAN Config"
-#~ msgstr "MWAN 設定"
-
-#~ msgid "Network Config"
-#~ msgstr "ネットワーク設定"
-
-#~ msgid "Overview"
-#~ msgstr "概要"
-
-#~ msgid "This section allows you to modify the contents of /etc/config/mwan3"
-#~ msgstr ""
-#~ "このセクションでは、 /etc/config/mwan3 の内容を変更することができます。"
-
-#~ msgid ""
-#~ "This section allows you to modify the contents of /etc/config/network"
-#~ msgstr ""
-#~ "このセクションでは、 /etc/config/network の内容を変更することができます。"
-
-#~ msgid ""
-#~ "This section allows you to modify the contents of /etc/config/wireless"
-#~ msgstr ""
-#~ "このセクションでは、 /etc/config/wireless の内容を変更することができます。"
-
-#~ msgid "Wireless Config"
-#~ msgstr "無線設定"
diff --git a/applications/luci-app-mwan3/po/ru/mwan3.po b/applications/luci-app-mwan3/po/ru/mwan3.po
index 11721ecc57..140c537e73 100644
--- a/applications/luci-app-mwan3/po/ru/mwan3.po
+++ b/applications/luci-app-mwan3/po/ru/mwan3.po
@@ -46,6 +46,9 @@ msgstr "Допустимые значения: 1-256 По умолчанию 1,
msgid "Check IP rules"
msgstr "Проверить правила IP"
+msgid "Check link quality"
+msgstr ""
+
msgid "Check routing table"
msgstr "Проверить таблицу маршрутизации"
@@ -216,6 +219,12 @@ msgstr ""
"символы A-Z, a-z, 0-9, _ и пробелы.<br />Интерфейсы не могут иметь "
"одинаковые имена с настроенными узлами, политиками или правилами."
+msgid "Max packet latency [ms]"
+msgstr ""
+
+msgid "Max packet loss [%]"
+msgstr ""
+
msgid ""
"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
"as a portrange (eg \"1024:2048\") without quotes"
@@ -247,6 +256,12 @@ msgstr "Назначенные узлы"
msgid "Metric"
msgstr "Метрика"
+msgid "Min packet latency [ms]"
+msgstr ""
+
+msgid "Min packet loss [%]"
+msgstr ""
+
msgid ""
"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
"youtube.com/youtube\")"
diff --git a/applications/luci-app-mwan3/po/templates/mwan3.pot b/applications/luci-app-mwan3/po/templates/mwan3.pot
index f6b3a1b380..bcc5e977a5 100644
--- a/applications/luci-app-mwan3/po/templates/mwan3.pot
+++ b/applications/luci-app-mwan3/po/templates/mwan3.pot
@@ -30,6 +30,9 @@ msgstr ""
msgid "Check IP rules"
msgstr ""
+msgid "Check link quality"
+msgstr ""
+
msgid "Check routing table"
msgstr ""
@@ -190,6 +193,12 @@ msgid ""
"rules"
msgstr ""
+msgid "Max packet latency [ms]"
+msgstr ""
+
+msgid "Max packet loss [%]"
+msgstr ""
+
msgid ""
"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
"as a portrange (eg \"1024:2048\") without quotes"
@@ -216,6 +225,12 @@ msgstr ""
msgid "Metric"
msgstr ""
+msgid "Min packet latency [ms]"
+msgstr ""
+
+msgid "Min packet loss [%]"
+msgstr ""
+
msgid ""
"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
"youtube.com/youtube\")"
diff --git a/applications/luci-app-mwan3/po/zh-cn/mwan3.po b/applications/luci-app-mwan3/po/zh-cn/mwan3.po
index ef59339862..13773ef1e1 100644
--- a/applications/luci-app-mwan3/po/zh-cn/mwan3.po
+++ b/applications/luci-app-mwan3/po/zh-cn/mwan3.po
@@ -41,6 +41,9 @@ msgstr "取值范围:1-256。如果不填写,默认值为 1"
msgid "Check IP rules"
msgstr "检查 IP 规则"
+msgid "Check link quality"
+msgstr "检查连接数量"
+
msgid "Check routing table"
msgstr "检查路由表"
@@ -54,7 +57,7 @@ msgid "Destination port"
msgstr "目标端口"
msgid "Detail"
-msgstr ""
+msgstr "详细"
msgid "Diagnostics"
msgstr "诊断"
@@ -73,7 +76,7 @@ msgid "Enter value in hex, starting with <code>0x</code>"
msgstr "输入十六进制值,以 <code>0x</code> 开头"
msgid "Execute"
-msgstr ""
+msgstr "执行"
msgid "Expect interface state on up event"
msgstr "在 up 事件发生时的预期接口状态"
@@ -100,7 +103,7 @@ msgid "Hotplug ifup"
msgstr "Hotplug ifup"
msgid "INFO: MWAN not running"
-msgstr ""
+msgstr "信息:MWAN 没有运行"
msgid "IPset"
msgstr "IPset"
@@ -151,28 +154,28 @@ msgid "Local source interface"
msgstr "本地源接口"
msgid "MWAN - Globals"
-msgstr ""
+msgstr "MWAN - 全局"
msgid "MWAN - Interfaces"
-msgstr ""
+msgstr "MWAN - 接口"
msgid "MWAN - Members"
-msgstr ""
+msgstr "MWAN - 成员"
msgid "MWAN - Notification"
-msgstr ""
+msgstr "MWAN - 通知"
msgid "MWAN - Policies"
-msgstr ""
+msgstr "MWAN - 策略"
msgid "MWAN - Rules"
-msgstr ""
+msgstr "MWAN - 规则"
msgid "MWAN Interface Configuration - %s"
msgstr "MWAN 接口配置 - %s"
msgid "MWAN Interfaces"
-msgstr ""
+msgstr "MWAN 接口"
msgid "MWAN Member Configuration - %s"
msgstr "MWAN 成员配置 - %s"
@@ -184,13 +187,13 @@ msgid "MWAN Rule Configuration - %s"
msgstr "MWAN 规则配置 - %s"
msgid "MWAN Status - Detail"
-msgstr ""
+msgstr "MWAN Status - 详细"
msgid "MWAN Status - Diagnostics"
-msgstr ""
+msgstr "MWAN Status - 诊断"
msgid "MWAN Status - Troubleshooting"
-msgstr ""
+msgstr "MWAN Status - 故障排除"
msgid ""
"MWAN supports up to 252 physical and/or logical interfaces<br />MWAN "
@@ -205,6 +208,12 @@ msgstr ""
"的接口名称匹配。<br />名称允许包括 A-Z、a-z、0-9、_ 但是不能有空格。<br />接"
"口不应该与成员、策略、规则中的任意一个设置项使用相同的名称"
+msgid "Max packet latency [ms]"
+msgstr "最大数据包延迟 [ms]"
+
+msgid "Max packet loss [%]"
+msgstr "最大数据包丢失率 [%]"
+
msgid ""
"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
"as a portrange (eg \"1024:2048\") without quotes"
@@ -236,6 +245,12 @@ msgstr "分配的成员"
msgid "Metric"
msgstr "跃点数"
+msgid "Min packet latency [ms]"
+msgstr "最小数据包延迟 [ms]"
+
+msgid "Min packet loss [%]"
+msgstr "最小数据包丢失率 [%]"
+
msgid ""
"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
"youtube.com/youtube\")"
@@ -250,7 +265,7 @@ msgid "No MWAN interfaces found"
msgstr "没有找到 MWAN 接口"
msgid "Notification"
-msgstr ""
+msgstr "通知"
msgid "Offline"
msgstr "离线"
@@ -297,7 +312,7 @@ msgstr ""
"“策略”把成员进行分组,告诉 MWAN 如何分配“规则”中使用这一策略的流量<br />拥有"
"较低跃点数的成员将会被优先使用。拥有相同跃点数的成员把流量进行负载均衡。<br /"
">进行负载均衡的成员之间拥有较高比重的成员将会被分配到更多流量。<br />名称允许"
-"包括A-Z、a-z、0-9、_ 但是不能有空格。名称应该在 15 个字符以内<br />策略不应该"
+"包括 A-Z、a-z、0-9、_ 但是不能有空格。名称应该在 15 个字符以内<br />策略不应该"
"与接口、成员、规则中的任意一个设置项使用相同的名称"
msgid "Policy"
@@ -329,6 +344,11 @@ msgid ""
"z, 0-9, _ and no spaces<br />Rules may not share the same name as configured "
"interfaces, members or policies"
msgstr ""
+"规则指定哪些流量将使用特定的 MWAN 策略<br />规则基于 IP 地址,端口或协议<br />"
+"规则从上到下匹配<br />匹配规则以下的规则被忽略<br />不符合任何规则的流量将使用主路由表进"
+"行路由<br />目的地为已知(非默认)网络的流量由主路由表处理<br />流量符合规则,但该策略的"
+"所有 WAN 接口关闭后都会被失效<br />名称可包含字符 A-Z,a-z,0-9,_和空格<br />"
+"规则不能与配置的接口、成员或策略共享相同的名称"
msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
msgstr "单位为秒。接受的值:1-1000000。留空则使用默认值 600 秒"
@@ -349,7 +369,7 @@ msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
msgstr "支持 CIDR 记法(例如:\"192.168.100.0/24\")不含引号"
msgid "Task"
-msgstr ""
+msgstr "任务"
msgid "There are currently %d of %d supported interfaces configured"
msgstr "当前已配置 %d 个接口,最大支持 %d 个"
@@ -380,6 +400,14 @@ msgid ""
"Physical device name which interface went up or down (e.g. \"eth0\" or "
"\"wwan0\")<br /><br />"
msgstr ""
+"这里允许您修改“/etc/mwan3.user”的内容。<br />该文件在 sysupgrade 期间也会"
+"保留。<br /><br />注意:<br />该文件会作为 shell 脚本解释。<br />脚本的第"
+"一行必须是 &#34;#!/bin/sh&#34;,不带引号。<br />以 # 开头的行是注释,不会执"
+"行。<br />将您的自定义 mwan3 动作放在这里,他们将<br />在启用 mwan3 的接口"
+"上<br />在 netifd hotplug 接口事件时执行。<br /><br />有三个主要的环境变量"
+"传递给这个脚本。<br /><br />$ACTION “ifup” 或 “ifdown”<br />$INTERFACE 启动"
+"或停止的接口名(例如 “wan” 或 “wwan”)<br />$DEVICE 启动或停止接口的物理设备"
+"名(例如 “eth0” 或 “wwan0”)<br /><br />"
msgid "Tracking hostname or IP address"
msgstr "跟踪的主机或 IP 地址"
@@ -406,35 +434,37 @@ msgid ""
msgstr "使用该接口的 IP 地址作为路由器本身发起的流量的源 IP 地址"
msgid "View the content of /etc/protocols for protocol description"
-msgstr ""
+msgstr "查看协议描述的 /etc/protocols 的内容"
msgid "WARNING: %d interfaces are configured exceeding the maximum of %d!"
msgstr "警告:已配置 %d 个接口,超过最大值 %d!"
msgid "WARNING: Interface %s are not found in /etc/config/network"
-msgstr ""
+msgstr "警告:接口 %s 在 /etc/config/network 中未找到"
msgid "WARNING: Interface %s has a duplicate metric %s configured"
-msgstr ""
+msgstr "警告:接口 %s 的 metric %s 配置重复"
msgid ""
"WARNING: Interface %s has a higher reliability requirement than tracking "
"hosts (%d)"
msgstr ""
+"警告:接口 %s 比跟踪主机具有更高的可靠性要求(%d)"
msgid "WARNING: Interface %s has no default route in the main routing table"
-msgstr ""
+msgstr "警告:接口 %s 在主路由表中没有默认的路由"
msgid "WARNING: Policy %s has exceeding the maximum name of 15 characters"
-msgstr ""
+msgstr "警告:策略 %s 名称超过 15 个字符"
msgid ""
"WARNING: Rule %s have a port configured with no or improper protocol "
"specified!"
msgstr ""
+"警告:规则 %s 有一个端口配置没有指定或协议不正确!"
msgid "Waiting for command to complete..."
-msgstr ""
+msgstr "正在等待命令完成..."
msgid "Weight"
msgstr "比重"
diff --git a/applications/luci-app-mwan3/po/zh-tw/mwan3.po b/applications/luci-app-mwan3/po/zh-tw/mwan3.po
index 6af9fae7e3..9fa5263428 100644
--- a/applications/luci-app-mwan3/po/zh-tw/mwan3.po
+++ b/applications/luci-app-mwan3/po/zh-tw/mwan3.po
@@ -41,6 +41,9 @@ msgstr "取值範圍:1-256。如果不填寫,預設值為 1"
msgid "Check IP rules"
msgstr "檢查 IP 規則"
+msgid "Check link quality"
+msgstr ""
+
msgid "Check routing table"
msgstr "檢查路由表"
@@ -205,6 +208,12 @@ msgstr ""
"中的介面名稱匹配。<br />名稱允許包括 A-Z、a-z、0-9、_ 但是不能有空格。<br />"
"介面不應該與成員、策略、規則中的任意一個設定項使用相同的名稱"
+msgid "Max packet latency [ms]"
+msgstr ""
+
+msgid "Max packet loss [%]"
+msgstr ""
+
msgid ""
"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
"as a portrange (eg \"1024:2048\") without quotes"
@@ -236,6 +245,12 @@ msgstr "分配的成員"
msgid "Metric"
msgstr "躍點數"
+msgid "Min packet latency [ms]"
+msgstr ""
+
+msgid "Min packet loss [%]"
+msgstr ""
+
msgid ""
"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
"youtube.com/youtube\")"
diff --git a/applications/luci-app-noddos/luasrc/view/noddos/clients.htm b/applications/luci-app-noddos/luasrc/view/noddos/clients.htm
index f2fb9312a7..4caf3e04e4 100644
--- a/applications/luci-app-noddos/luasrc/view/noddos/clients.htm
+++ b/applications/luci-app-noddos/luasrc/view/noddos/clients.htm
@@ -38,70 +38,70 @@
<fieldset class="cbi-section">
<legend><%:Recognized Clients%></legend>
<div class="cbi-section-node">
- <table class="cbi-section-table">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Hostname%></th>
- <th class="cbi-section-table-cell"><%:IPv4%></th>
- <th class="cbi-section-table-cell"><%:MAC%></th>
- <th class="cbi-section-table-cell"><%:Manufacturer%></th>
- <th class="cbi-section-table-cell"><%:Model%></th>
- <th class="cbi-section-table-cell"><%:Class%></th>
- </tr>
+ <div class="table cbi-section-table">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:Hostname%></div>
+ <div class="th cbi-section-table-cell"><%:IPv4%></div>
+ <div class="th cbi-section-table-cell"><%:MAC%></div>
+ <div class="th cbi-section-table-cell"><%:Manufacturer%></div>
+ <div class="th cbi-section-table-cell"><%:Model%></div>
+ <div class="th cbi-section-table-cell"><%:Class%></div>
+ </div>
<%
for i,v in ipairs(devdump) do
if v.DeviceProfileUuid ~= "" then
%>
- <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
- <td class="cbi-value-field"><%=v.Hostname%></td>
- <td class="cbi-value-field"><%=v.Ipv4Address%></td>
- <td class="cbi-value-field"><a href="/cgi-bin/clientdetails?mac=<%=v.MacAddress%>"><%=v.MacAddress%></a></td>
- <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].Manufacturer%></td>
- <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].Model%></td>
- <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].ThingClass%></td>
- </tr>
+ <div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
+ <div class="td cbi-value-field"><%=v.Hostname%></div>
+ <div class="td cbi-value-field"><%=v.Ipv4Address%></div>
+ <div class="td cbi-value-field"><a href="/cgi-bin/clientdetails?mac=<%=v.MacAddress%>"><%=v.MacAddress%></a></div>
+ <div class="td cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].Manufacturer%></div>
+ <div class="td cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].Model%></div>
+ <div class="td cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].ThingClass%></div>
+ </div>
<%
style=false
end
end
%>
- </table>
+ </div>
</div>
</fieldset>
<br />
<fieldset class="cbi-section">
<legend><%:Unrecognized Clients%></legend>
<div class="cbi-section-node">
- <table class="cbi-section-table">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Hostname%></th>
- <th class="cbi-section-table-cell"><%:IPv4%></th>
- <th class="cbi-section-table-cell"><%:MAC%></th>
- <th class="cbi-section-table-cell"><%:Manufacturer%></th>
- <th class="cbi-section-table-cell"><%:Model%></th>
- <th class="cbi-section-table-cell"><%:DhcpVendor%></th>
- <th class="cbi-section-table-cell"><%:DhcpHostname%></th>
- </tr>
+ <div class="table cbi-section-table">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:Hostname%></div>
+ <div class="th cbi-section-table-cell"><%:IPv4%></div>
+ <div class="th cbi-section-table-cell"><%:MAC%></div>
+ <div class="th cbi-section-table-cell"><%:Manufacturer%></div>
+ <div class="th cbi-section-table-cell"><%:Model%></div>
+ <div class="th cbi-section-table-cell"><%:DhcpVendor%></div>
+ <div class="th cbi-section-table-cell"><%:DhcpHostname%></div>
+ </div>
<%
for i,v in ipairs(devdump) do
if v.DeviceProfileUuid == "" then
%>
- <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
- <td class="cbi-value-field"><%=v.Hostname%></td>
- <td class="cbi-value-field"><%=v.Ipv4Address%></td>
- <td class="cbi-value-field"><a href="/cgi-bin/clientdetails?mac=<%=v.MacAddress%>"><%=v.MacAddress%></a></td>
- <td class="cbi-value-field"><%=v.SsdpManufacturer%></td>
- <td class="cbi-value-field"><%=v.SsdpModelName%></td>
- <td class="cbi-value-field"><%=v.DhcpVendor1%></td>
- <td class="cbi-value-field"><%=v.DhcpHostname%></td>
- </tr>
+ <div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
+ <div class="td cbi-value-field"><%=v.Hostname%></div>
+ <div class="td cbi-value-field"><%=v.Ipv4Address%></div>
+ <div class="td cbi-value-field"><a href="/cgi-bin/clientdetails?mac=<%=v.MacAddress%>"><%=v.MacAddress%></a></div>
+ <div class="td cbi-value-field"><%=v.SsdpManufacturer%></div>
+ <div class="td cbi-value-field"><%=v.SsdpModelName%></div>
+ <div class="td cbi-value-field"><%=v.DhcpVendor1%></div>
+ <div class="td cbi-value-field"><%=v.DhcpHostname%></div>
+ </div>
<%
style=false
end
end
%>
- </table>
+ </div>
</div>
</fieldset>
diff --git a/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm b/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm
index 03a9ed70ee..66e44e9676 100644
--- a/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm
+++ b/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm
@@ -5,8 +5,8 @@
function(x)
{
var tb = document.getElementById('ocserv_status_table');
- if (tb && (idx < tb.rows.length))
- tb.rows[0].parentNode.removeChild(tb.rows[idx]);
+ if (tb && (idx + 1 < tb.childNodes.length))
+ tb.removeChild(tb.childNodes[idx + 1]);
}
);
}
@@ -18,38 +18,28 @@
if (st && tb)
{
/* clear all rows */
- while( tb.rows.length > 1 )
- tb.deleteRow(1);
+ while (tb.firstElementChild !== tb.lastElementChild)
+ tb.removeChild(tb.lastElementChild);
- for( var i = 0; i < st.length; i++ )
+ for (var i = 0; i < st.length; i++)
{
- var tr = tb.insertRow(-1);
- tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);
-
- tr.insertCell(-1).innerHTML = st[i].user;
- tr.insertCell(-1).innerHTML = st[i].group;
- tr.insertCell(-1).innerHTML = st[i].vpn_ip;
- tr.insertCell(-1).innerHTML = st[i].ip;
- tr.insertCell(-1).innerHTML = st[i].device;
- tr.insertCell(-1).innerHTML = st[i].time;
- tr.insertCell(-1).innerHTML = st[i].cipher;
- tr.insertCell(-1).innerHTML = st[i].status;
-
- tr.insertCell(-1).innerHTML = String.format(
- '<input class="cbi-button cbi-input-remove" type="button" value="<%:Disconnect%>" onclick="ocserv_disconnect(%d)" />',
- st[i].id
- );
+ tb.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format((i % 2) + 1), [
+ E('<div class="td">', st[i].user),
+ E('<div class="td">', st[i].group),
+ E('<div class="td">', st[i].vpn_ip),
+ E('<div class="td">', st[i].ip),
+ E('<div class="td">', st[i].device),
+ E('<div class="td">', st[i].time),
+ E('<div class="td">', st[i].cipher),
+ E('<div class="td">', st[i].status),
+ E('<div class="td">',
+ E('<input class="cbi-button cbi-input-remove" type="button" value="<%:Disconnect%>" onclick="ocserv_disconnect(%d)" />'
+ .format(st[i].id)))
+ ]));
}
- if( tb.rows.length == 1 )
- {
- var tr = tb.insertRow(-1);
- tr.className = 'cbi-section-table-row';
-
- var td = tr.insertCell(-1);
- td.colSpan = 5;
- td.innerHTML = '<em><br /><%:There are no active users.%></em>';
- }
+ if (tb.firstElementChild === tb.lastElementChild)
+ tb.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active users.%></em></div></div>'));
}
}
);
@@ -57,20 +47,21 @@
<fieldset class="cbi-section">
<legend><%:Active OpenConnect Users%></legend>
- <table class="cbi-section-table" id="ocserv_status_table">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:User%></th>
- <th class="cbi-section-table-cell"><%:Group%></th>
- <th class="cbi-section-table-cell"><%:IP Address%></th>
- <th class="cbi-section-table-cell"><%:VPN IP Address%></th>
- <th class="cbi-section-table-cell"><%:Device%></th>
- <th class="cbi-section-table-cell"><%:Time%></th>
- <th class="cbi-section-table-cell"><%:Cipher%></th>
- <th class="cbi-section-table-cell"><%:Status%></th>
- <th class="cbi-section-table-cell">&#160;</th>
- </tr>
- <tr class="cbi-section-table-row">
- <td colspan="5"><em><br /><%:Collecting data...%></em></td>
- </tr>
- </table>
+ <div class="table cbi-section-table" id="ocserv_status_table">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:User%></div>
+ <div class="th cbi-section-table-cell"><%:Group%></div>
+ <div class="th cbi-section-table-cell"><%:IP Address%></div>
+ <div class="th cbi-section-table-cell"><%:VPN IP Address%></div>
+ <div class="th cbi-section-table-cell"><%:Device%></div>
+ <div class="th cbi-section-table-cell"><%:Time%></div>
+ <div class="th cbi-section-table-cell"><%:Cipher%></div>
+ <div class="th cbi-section-table-cell"><%:Status%></div>
+ <div class="th cbi-section-table-cell">&#160;</div>
+ </div>
+ <div class="tr cbi-section-table-row">
+ <div class="td" colspan="5"><em><br /><%:Collecting data...%></em></div>
+ </div>
+ </div>
</fieldset>
+
diff --git a/applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm b/applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm
index 476150dd28..150ed87dad 100644
--- a/applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm
+++ b/applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm
@@ -132,11 +132,11 @@ end
{
var service = info[idx];
s += String.format(
- '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+'">' +
- '<td class="cbi-section-table-titles"><a href="%s">%s</a></td>' +
- '<td class="cbi-section-table-titles">%s</td>' +
- '<td class="cbi-section-table-titles"><a href="http://%s/cgi-bin-status.html">%s</a></td>' +
- '</tr>',
+ '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+'">' +
+ '<div class="td cbi-section-table-titles"><a href="%s">%s</a></div>' +
+ '<div class="td cbi-section-table-titles">%s</div>' +
+ '<div class="td cbi-section-table-titles"><a href="http://%s/cgi-bin-status.html">%s</a></div>' +
+ '</div>',
service.url, service.descr, service.proto, service.origin_link, service.origin || '?'
);
}
@@ -153,16 +153,16 @@ end
<fieldset class="cbi-section">
<legend><%:Internal services%></legend>
- <table class="cbi-section-table">
- <thead>
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Url%></th>
- <th class="cbi-section-table-cell"><%:Protocol%></th>
- <th class="cbi-section-table-cell"><%:Source%></th>
- </tr>
- </thead>
-
- <tbody id="olsr_services">
+ <div class="table cbi-section-table">
+ <div class="thead">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:Url%></div>
+ <div class="th cbi-section-table-cell"><%:Protocol%></div>
+ <div class="th cbi-section-table-cell"><%:Source%></div>
+ </div>
+ </div>
+
+ <div class="tbody" id="olsr_services">
<%
for k, line in ipairs(services) do
local field = {}
@@ -178,15 +178,15 @@ end
local url, proto, descr, origin = pcdata(field[1]), pcdata(field[2]), utl.trim(pcdata(field[3])), pcdata(field[4])
%>
- <tr class="cbi-section-table-row cbi-rowstyle-<%=i%>">
- <td class="cbi-section-table-titles"><a href="<%=url%>"><%=descr%></a></td>
- <td class="cbi-section-table-titles"><%=proto%></td>
- <td class="cbi-section-table-titles"><a href="http://<%=origin_link%>/cgi-bin-status.html"><%=origin%></a></td>
- </tr>
+ <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%>">
+ <div class="td cbi-section-table-titles"><a href="<%=url%>"><%=descr%></a></div>
+ <div class="td cbi-section-table-titles"><%=proto%></div>
+ <div class="td cbi-section-table-titles"><a href="http://<%=origin_link%>/cgi-bin-status.html"><%=origin%></a></div>
+ </div>
<% i = ((i % 2) + 1)
end %>
- </tbody>
- </table>
+ </div>
+ </div>
<br />
<%=last_update%>
</fieldset>
diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/hna.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/hna.htm
index 5ea7b74e4d..2dc4ce1730 100644
--- a/applications/luci-app-olsr/luasrc/view/status-olsr/hna.htm
+++ b/applications/luci-app-olsr/luasrc/view/status-olsr/hna.htm
@@ -41,7 +41,7 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 },
{
var hna = info[idx];
var linkgw = ''
- s += '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-' + hna.proto + '">'
+ s += '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-' + hna.proto + '">'
if (hna.proto == '6') {
linkgw = '<a href="http://[' + hna.gateway + ']/cgi-bin-status.html">' + hna.gateway + '</a>'
} else {
@@ -61,11 +61,11 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 },
}
s += String.format(
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s</td>', hna.destination + '/' + hna.genmask, linkgw + hostname, validity
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>', hna.destination + '/' + hna.genmask, linkgw + hostname, validity
)
- s += '</tr>'
+ s += '</div>'
}
hnadiv.innerHTML = s;
}
@@ -79,21 +79,21 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 },
<fieldset class="cbi-section">
<legend><%:Overview of currently active OLSR host net announcements%></legend>
- <table class="cbi-section-table">
- <thead>
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Announced network%></th>
- <th class="cbi-section-table-cell"><%:OLSR gateway%></th>
- <th class="cbi-section-table-cell"><%:Validity Time%></th>
- </tr>
+ <div class="table cbi-section-table">
+ <div class="thead">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:Announced network%></div>
+ <div class="th cbi-section-table-cell"><%:OLSR gateway%></div>
+ <div class="th cbi-section-table-cell"><%:Validity Time%></div>
+ </div>
- </thead>
- <tbody id="olsrd_hna">
+ </div>
+ <div class="tbody" id="olsrd_hna">
<% for k, route in ipairs(hna) do %>
- <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=hna[k].proto%>">
- <td class="cbi-section-table-cell"><%=hna[k].destination%>/<%=hna[k].genmask%> </td>
- <td class="cbi-section-table-cell">
+ <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=hna[k].proto%>">
+ <div class="td cbi-section-table-cell"><%=hna[k].destination%>/<%=hna[k].genmask%> </div>
+ <div class="td cbi-section-table-cell">
<% if hna[k].proto == '6' then %>
<a href="http://[<%=hna[k].gateway%>]/cgi-bin-status.html"><%=hna[k].gateway%></a>
<% else %>
@@ -102,20 +102,20 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 },
<% if hna[k].hostname then %>
/ <a href="http://<%=hna[k].hostname%>/cgi-bin-status.html"><%=hna[k].hostname%></a>
<% end %>
- </td>
+ </div>
<% if hna[k].validityTime then
validity = hna[k].validityTime .. 's'
else
validity = '-'
end %>
- <td class="cbi-section-table-cell"><%=validity%></td>
- </tr>
+ <div class="td cbi-section-table-cell"><%=validity%></div>
+ </div>
<% i = ((i % 2) + 1)
end %>
- </tbody>
- </table>
+ </div>
+ </div>
</fieldset>
<%+status-olsr/common_js%>
diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/interfaces.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/interfaces.htm
index 81d0a3dd31..e3ccd0c23d 100644
--- a/applications/luci-app-olsr/luasrc/view/status-olsr/interfaces.htm
+++ b/applications/luci-app-olsr/luasrc/view/status-olsr/interfaces.htm
@@ -18,31 +18,31 @@ local i = 1
<fieldset class="cbi-section">
<legend><%:Overview of interfaces where OLSR is running%></legend>
- <table class="cbi-section-table">
- <tr>
- <th class="cbi-section-table-cell"><%:Interface%></th>
- <th class="cbi-section-table-cell"><%:State%></th>
- <th class="cbi-section-table-cell"><%:MTU%></th>
- <th class="cbi-section-table-cell"><%:WLAN%></th>
- <th class="cbi-section-table-cell"><%:Source address%></th>
- <th class="cbi-section-table-cell"><%:Netmask%></th>
- <th class="cbi-section-table-cell"><%:Broadcast address%></th>
- </tr>
+ <div class="table cbi-section-table">
+ <div class="tr">
+ <div class="th cbi-section-table-cell"><%:Interface%></div>
+ <div class="th cbi-section-table-cell"><%:State%></div>
+ <div class="th cbi-section-table-cell"><%:MTU%></div>
+ <div class="th cbi-section-table-cell"><%:WLAN%></div>
+ <div class="th cbi-section-table-cell"><%:Source address%></div>
+ <div class="th cbi-section-table-cell"><%:Netmask%></div>
+ <div class="th cbi-section-table-cell"><%:Broadcast address%></div>
+ </div>
<% for k, iface in ipairs(iface) do %>
- <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=iface.proto%>">
- <td class="cbi-section-table-cell"><%=iface.name%></td>
- <td class="cbi-section-table-cell"><%=iface.state%></td>
- <td class="cbi-section-table-cell"><%=iface.olsrMTU%></td>
- <td class="cbi-section-table-cell"><%=iface.wireless and luci.i18n.translate('yes') or luci.i18n.translate('no')%></td>
- <td class="cbi-section-table-cell"><%=iface.ipv4Address or iface.ipv6Address%></td>
- <td class="cbi-section-table-cell"><%=iface.netmask%></td>
- <td class="cbi-section-table-cell"><%=iface.broadcast or iface.multicast%></td>
- </tr>
+ <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=iface.proto%>">
+ <div class="td cbi-section-table-cell"><%=iface.name%></div>
+ <div class="td cbi-section-table-cell"><%=iface.state%></div>
+ <div class="td cbi-section-table-cell"><%=iface.olsrMTU%></div>
+ <div class="td cbi-section-table-cell"><%=iface.wireless and luci.i18n.translate('yes') or luci.i18n.translate('no')%></div>
+ <div class="td cbi-section-table-cell"><%=iface.ipv4Address or iface.ipv6Address%></div>
+ <div class="td cbi-section-table-cell"><%=iface.netmask%></div>
+ <div class="td cbi-section-table-cell"><%=iface.broadcast or iface.multicast%></div>
+ </div>
<% i = ((i % 2) + 1)
end %>
- </table>
+ </div>
</fieldset>
<%+status-olsr/common_js%>
<%+footer%>
diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/mid.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/mid.htm
index f658288fc1..8c9f63af0b 100644
--- a/applications/luci-app-olsr/luasrc/view/status-olsr/mid.htm
+++ b/applications/luci-app-olsr/luasrc/view/status-olsr/mid.htm
@@ -15,11 +15,11 @@ local i = 1
<div id="togglebuttons"></div>
<fieldset class="cbi-section">
<legend><%:Overview of known multiple interface announcements%></legend>
- <table class="cbi-section-table">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:OLSR node%></th>
- <th class="cbi-section-table-cell" ><%:Secondary OLSR interfaces%></th>
- </tr>
+ <div class="table cbi-section-table">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:OLSR node%></div>
+ <div class="th cbi-section-table-cell" ><%:Secondary OLSR interfaces%></div>
+ </div>
<% for k, mid in ipairs(mids) do
local aliases = ''
@@ -37,14 +37,14 @@ local i = 1
end
%>
- <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=mid.proto%>">
- <td class="cbi-section-table-cell"><a href="http://<%=host%>/cgi-bin-status.html"><%=mid.ipAddress%></a></td>
- <td class="cbi-section-table-cell"><%=aliases%></td>
- </tr>
+ <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=mid.proto%>">
+ <div class="td cbi-section-table-cell"><a href="http://<%=host%>/cgi-bin-status.html"><%=mid.ipAddress%></a></div>
+ <div class="td cbi-section-table-cell"><%=aliases%></div>
+ </div>
<% i = ((i % 2) + 1)
end %>
- </table>
+ </div>
</fieldset>
<%+status-olsr/common_js%>
<%+footer%>
diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/neighbors.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/neighbors.htm
index c077c20486..ab09865865 100644
--- a/applications/luci-app-olsr/luasrc/view/status-olsr/neighbors.htm
+++ b/applications/luci-app-olsr/luasrc/view/status-olsr/neighbors.htm
@@ -64,36 +64,36 @@ end
if (neigh.proto == '6') {
s += String.format(
- '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-%s">' +
- '<td class="cbi-section-table-titles" style="background-color:%s"><a href="http://[%s]/cgi-bin-status.html">%s</a></td>',
+ '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-%s">' +
+ '<div class="td cbi-section-table-titles" style="background-color:%s"><a href="http://[%s]/cgi-bin-status.html">%s</a></div>',
neigh.proto, neigh.dfgcolor, neigh.rip, neigh.rip
);
} else {
s += String.format(
- '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-%s">' +
- '<td class="cbi-section-table-titles" style="background-color:%s"><a href="http://%s/cgi-bin-status.html">%s</a></td>',
+ '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-%s">' +
+ '<div class="td cbi-section-table-titles" style="background-color:%s"><a href="http://%s/cgi-bin-status.html">%s</a></div>',
neigh.proto, neigh.dfgcolor, neigh.rip, neigh.rip
);
}
if (neigh.hn) {
s += String.format(
- '<td class="cbi-section-table-titles" style="background-color:%s"><a href="http://%s/cgi-bin-status.html">%s</a></td>',
+ '<div class="td cbi-section-table-titles" style="background-color:%s"><a href="http://%s/cgi-bin-status.html">%s</a></div>',
neigh.dfgcolor, neigh.hn, neigh.hn
);
} else {
s += String.format(
- '<td class="cbi-section-table-titles" style="background-color:%s">?</td>',
+ '<div class="td cbi-section-table-titles" style="background-color:%s">?</div>',
neigh.dfgcolor
);
}
s += String.format(
- '<td class="cbi-section-table-titles" style="background-color:%s">%s</td>' +
- '<td class="cbi-section-table-titles" style="background-color:%s">%s</td>' +
- '<td class="cbi-section-table-titles" style="background-color:%s">%s</td>' +
- '<td class="cbi-section-table-titles" style="background-color:%s">%s</td>' +
- '<td class="cbi-section-table-titles" style="background-color:%s">%s</td>' +
- '<td class="cbi-section-table-titles" style="background-color:%s" title="Signal: %s Noise: %s">%s</td>' +
- '</tr>',
+ '<div class="td cbi-section-table-titles" style="background-color:%s">%s</div>' +
+ '<div class="td cbi-section-table-titles" style="background-color:%s">%s</div>' +
+ '<div class="td cbi-section-table-titles" style="background-color:%s">%s</div>' +
+ '<div class="td cbi-section-table-titles" style="background-color:%s">%s</div>' +
+ '<div class="td cbi-section-table-titles" style="background-color:%s">%s</div>' +
+ '<div class="td cbi-section-table-titles" style="background-color:%s" title="Signal: %s Noise: %s">%s</div>' +
+ '</div>',
neigh.dfgcolor, neigh.ifn, neigh.dfgcolor, neigh.lip, neigh.dfgcolor, neigh.lq, neigh.dfgcolor, neigh.nlq, neigh.color, neigh.cost, neigh.snr_color, neigh.signal, neigh.noise, neigh.snr || '?'
);
}
@@ -112,21 +112,21 @@ end
<fieldset class="cbi-section">
<legend><%:Overview of currently established OLSR connections%></legend>
- <table class="cbi-section-table">
- <thead>
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Neighbour IP%></th>
- <th class="cbi-section-table-cell"><%:Hostname%></th>
- <th class="cbi-section-table-cell"><%:Interface%></th>
- <th class="cbi-section-table-cell"><%:Local interface IP%></th>
- <th class="cbi-section-table-cell">LQ</th>
- <th class="cbi-section-table-cell">NLQ</th>
- <th class="cbi-section-table-cell">ETX</th>
- <th class="cbi-section-table-cell">SNR</th>
- </tr>
- </thead>
+ <div class="table cbi-section-table">
+ <div class="thead">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:Neighbour IP%></div>
+ <div class="th cbi-section-table-cell"><%:Hostname%></div>
+ <div class="th cbi-section-table-cell"><%:Interface%></div>
+ <div class="th cbi-section-table-cell"><%:Local interface IP%></div>
+ <div class="th cbi-section-table-cell">LQ</div>
+ <div class="th cbi-section-table-cell">NLQ</div>
+ <div class="th cbi-section-table-cell">ETX</div>
+ <div class="th cbi-section-table-cell">SNR</div>
+ </div>
+ </div>
- <tbody id="olsr_neigh_table">
+ <div class="tbody" id="olsr_neigh_table">
<% local i = 1
for k, link in ipairs(links) do
link.linkCost = tonumber(link.linkCost) or 0
@@ -147,25 +147,25 @@ end
end
%>
- <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=link.proto%>">
+ <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=link.proto%>">
<% if link.proto == "6" then %>
- <td class="cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><a href="http://[<%=link.remoteIP%>]/cgi-bin-status.html"><%=link.remoteIP%></a></td>
+ <div class="td cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><a href="http://[<%=link.remoteIP%>]/cgi-bin-status.html"><%=link.remoteIP%></a></div>
<% else %>
- <td class="cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><a href="http://<%=link.remoteIP%>/cgi-bin-status.html"><%=link.remoteIP%></a></td>
+ <div class="td cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><a href="http://<%=link.remoteIP%>/cgi-bin-status.html"><%=link.remoteIP%></a></div>
<% end %>
- <td class="cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><a href="http://<%=link.hostname%>/cgi-bin-status.html"><%=link.hostname%></a></td>
- <td class="cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=link.interface%></td>
- <td class="cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=link.localIP%></td>
- <td class="cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=string.format("%.3f", link.linkQuality)%></td>
- <td class="cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=string.format("%.3f", link.neighborLinkQuality)%></td>
- <td class="cbi-section-table-titles" style="background-color:<%=color%>"><%=string.format("%.3f", link.linkCost)%></td>
- <td class="cbi-section-table-titles" style="background-color:<%=snr_color%>" title="Signal: <%=link.signal%> Noise: <%=link.noise%>"><%=link.snr%></td>
- </tr>
+ <div class="td cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><a href="http://<%=link.hostname%>/cgi-bin-status.html"><%=link.hostname%></a></div>
+ <div class="td cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=link.interface%></div>
+ <div class="td cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=link.localIP%></div>
+ <div class="td cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=string.format("%.3f", link.linkQuality)%></div>
+ <div class="td cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=string.format("%.3f", link.neighborLinkQuality)%></div>
+ <div class="td cbi-section-table-titles" style="background-color:<%=color%>"><%=string.format("%.3f", link.linkCost)%></div>
+ <div class="td cbi-section-table-titles" style="background-color:<%=snr_color%>" title="Signal: <%=link.signal%> Noise: <%=link.noise%>"><%=link.snr%></div>
+ </div>
<%
i = ((i % 2) + 1)
end %>
- </tbody>
- </table>
+ </div>
+ </div>
<br />
<%+status-olsr/legend%>
diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm
index 61e17b3b2d..832a27aed7 100644
--- a/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm
+++ b/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm
@@ -160,48 +160,48 @@ XHR.poll(10, '<%=REQUEST_URI%>/json', { },
<fieldset class="cbi-section">
<legend><%:Network%></legend>
- <table width="100%" cellspacing="10">
- <tr><td width="33%"><%:Interfaces%></td><td>
+ <div class="table" width="100%" cellspacing="10">
+ <div class="tr"><div class="td" width="33%"><%:Interfaces%></div><div class="td">
<a href="<%=REQUEST_URI%>/interfaces">
<span id="nr_ifaces">-<span>
</a>
- </td></tr>
- <tr><td width="33%"><%:Neighbors%></td><td>
+ </div></div>
+ <div class="tr"><div class="td" width="33%"><%:Neighbors%></div><div class="td">
<a href="<%=REQUEST_URI%>/neighbors">
<span id="nr_neigh">-</span>
</a>
- </td></tr>
- <tr><td width="33%"><%:Nodes%></td><td>
+ </div></div>
+ <div class="tr"><div class="td" width="33%"><%:Nodes%></div><div class="td">
<a href="<%=REQUEST_URI%>/topology">
<span id="nr_nodes">-</span>
</a>
- </td></tr>
- <tr><td width="33%"><%:HNA%></td><td>
+ </div></div>
+ <div class="tr"><div class="td" width="33%"><%:HNA%></div><div class="td">
<a href="<%=REQUEST_URI%>/hna">
<span id="nr_hna">-</span>
</a>
- </td></tr>
- <tr><td width="33%"><%:Links total%></td><td>
+ </div></div>
+ <div class="tr"><div class="td" width="33%"><%:Links total%></div><div class="td">
<a href="<%=REQUEST_URI%>/topology">
<span id="nr_topo">-</span>
</a>
- </td></tr>
- <tr><td width="33%"><%:Links per node (average)%></td><td>
+ </div></div>
+ <div class="tr"><div class="td" width="33%"><%:Links per node (average)%></div><div class="td">
<span id="meshfactor">-</span>
- </td></tr>
+ </div></div>
- </table>
+ </div>
</fieldset>
<fieldset class="cbi-section">
<legend>OLSR <%:Configuration%></legend>
- <table width="100%" cellspacing="10">
- <tr><td width="33%"><%:Version%></td><td>
+ <div class="table" width="100%" cellspacing="10">
+ <div class="tr"><div class="td" width="33%"><%:Version%></div><div class="td">
<span id="version">-<span>
- </td></tr>
- <tr><td width="33%"><%:Download Config%></td><td>
+ </div></div>
+ <div class="tr"><div class="td" width="33%"><%:Download Config%></div><div class="td">
<% if has_ipv4_conf then %>
<a href="<%=REQUEST_URI%>?openwrt_v4">OpenWrt (IPv4)</a>,
<% end %>
@@ -214,8 +214,8 @@ XHR.poll(10, '<%=REQUEST_URI%>/json', { },
<% if has_ipv6_conf then %>
<a href="<%=REQUEST_URI%>?conf_v6">OLSRD (IPv6)</a>
<% end %>
- </td></tr>
- </table>
+ </div></div>
+ </div>
</fieldset>
<%+footer%>
diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/routes.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/routes.htm
index 8e46daa022..c75b94fcef 100644
--- a/applications/luci-app-olsr/luasrc/view/status-olsr/routes.htm
+++ b/applications/luci-app-olsr/luasrc/view/status-olsr/routes.htm
@@ -50,9 +50,9 @@ XHR.poll(20, '<%=REQUEST_URI%>', { status: 1 },
var route = info[idx];
s += String.format(
- '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-%s">' +
- '<td class="cbi-section-table-cell">%s/%s</td>' +
- '<td class="cbi-section-table-cell">' +
+ '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-%s">' +
+ '<div class="td cbi-section-table-cell">%s/%s</div>' +
+ '<div class="td cbi-section-table-cell">' +
'<a href="http://%s/cgi-bin-status.html">%s</a>',
route.proto, route.dest, route.genmask, route.gw, route.gw
)
@@ -72,11 +72,11 @@ XHR.poll(20, '<%=REQUEST_URI%>', { status: 1 },
}
s += String.format(
- '</td>' +
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell" style="background-color:%s">%s</td>' +
- '</tr>',
+ '</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell" style="background-color:%s">%s</div>' +
+ '</div>',
route.interface, route.metric, route.color, route.etx || '?'
);
}
@@ -96,27 +96,27 @@ XHR.poll(20, '<%=REQUEST_URI%>', { status: 1 },
<fieldset class="cbi-section">
<legend><%:Overview of currently known routes to other OLSR nodes%></legend>
-<table class="cbi-section-table">
- <thead>
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Announced network%></th>
- <th class="cbi-section-table-cell"><%:OLSR gateway%></th>
- <th class="cbi-section-table-cell"><%:Interface%></th>
- <th class="cbi-section-table-cell"><%:Metric%></th>
- <th class="cbi-section-table-cell">ETX</th>
- </tr>
- </thead>
+<div class="table cbi-section-table">
+ <div class="thead">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:Announced network%></div>
+ <div class="th cbi-section-table-cell"><%:OLSR gateway%></div>
+ <div class="th cbi-section-table-cell"><%:Interface%></div>
+ <div class="th cbi-section-table-cell"><%:Metric%></div>
+ <div class="th cbi-section-table-cell">ETX</div>
+ </div>
+ </div>
- <tbody id="olsrd_routes">
+ <div class="tbody" id="olsrd_routes">
<% for k, route in ipairs(routes) do
ETX = tonumber(route.rtpMetricCost)/1024 or '0'
color = olsrtools.etx_color(ETX)
%>
- <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=route.proto%>">
- <td class="cbi-section-table-cell"><%=route.destination%>/<%=route.genmask%></td>
- <td class="cbi-section-table-cell">
+ <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=route.proto%>">
+ <div class="td cbi-section-table-cell"><%=route.destination%>/<%=route.genmask%></div>
+ <div class="td cbi-section-table-cell">
<% if route.proto == '6' then %>
<a href="http://[<%=route.gateway%>]/cgi-bin-status.html"><%=route.gateway%></a>
<% else %>
@@ -125,16 +125,16 @@ XHR.poll(20, '<%=REQUEST_URI%>', { status: 1 },
<% if route.hostname then %>
/ <a href="http://<%=route.Hostname%>/cgi-bin-status.html"><%=route.hostname%></a>
<% end %>
- </td>
- <td class="cbi-section-table-cell"><%=route.networkInterface%></td>
- <td class="cbi-section-table-cell"><%=route.metric%></td>
- <td class="cbi-section-table-cell" style="background-color:<%=color%>"><%=string.format("%.3f", ETX)%></td>
- </tr>
+ </div>
+ <div class="td cbi-section-table-cell"><%=route.networkInterface%></div>
+ <div class="td cbi-section-table-cell"><%=route.metric%></div>
+ <div class="td cbi-section-table-cell" style="background-color:<%=color%>"><%=string.format("%.3f", ETX)%></div>
+ </div>
<%
i = ((i % 2) + 1)
end %>
- </tbody>
-</table>
+ </div>
+</div>
<%+status-olsr/legend%>
</fieldset>
diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/smartgw.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/smartgw.htm
index 6aa7a75461..7ca66816ae 100644
--- a/applications/luci-app-olsr/luasrc/view/status-olsr/smartgw.htm
+++ b/applications/luci-app-olsr/luasrc/view/status-olsr/smartgw.htm
@@ -56,7 +56,7 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 },
for (var idx = 0; idx < info.length; idx++)
{
var smartgw = info[idx];
- s += '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-' + smartgw.proto + '">'
+ s += '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-' + smartgw.proto + '">'
if (smartgw.proto == '6') {
linkgw = '<a href="http://[' + smartgw.ipAddress + ']/cgi-bin-status.html">' + smartgw.ipAddress + '</a>'
} else {
@@ -64,18 +64,18 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 },
}
s += String.format(
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s</td>',
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>',
linkgw, smartgw.status, smartgw.tcPathCost, smartgw.hopCount, smartgw.uplinkSpeed, smartgw.downlinkSpeed, smartgw.v4, smartgw.v6, smartgw.externalPrefix
)
- s += '</tr>'
+ s += '</div>'
}
smartgwdiv.innerHTML = s;
}
@@ -94,23 +94,23 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 },
<fieldset class="cbi-section">
<legend><%:Overview of smart gateways in this network%></legend>
- <table class="cbi-section-table">
- <thead>
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Gateway%></th>
- <th class="cbi-section-table-cell"><%:Status%></th>
- <th class="cbi-section-table-cell"><%:ETX%></th>
- <th class="cbi-section-table-cell"><%:Hops%></th>
- <th class="cbi-section-table-cell"><%:Uplink%></th>
- <th class="cbi-section-table-cell"><%:Downlink%></th>
- <th class="cbi-section-table-cell"><%:IPv4%></th>
- <th class="cbi-section-table-cell"><%:IPv6%></th>
- <th class="cbi-section-table-cell"><%:Prefix%></th>
-
- </tr>
- </thead>
-
- <tbody id="olsrd_smartgw">
+ <div class="table cbi-section-table">
+ <div class="thead">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:Gateway%></div>
+ <div class="th cbi-section-table-cell"><%:Status%></div>
+ <div class="th cbi-section-table-cell"><%:ETX%></div>
+ <div class="th cbi-section-table-cell"><%:Hops%></div>
+ <div class="th cbi-section-table-cell"><%:Uplink%></div>
+ <div class="th cbi-section-table-cell"><%:Downlink%></div>
+ <div class="th cbi-section-table-cell"><%:IPv4%></div>
+ <div class="th cbi-section-table-cell"><%:IPv6%></div>
+ <div class="th cbi-section-table-cell"><%:Prefix%></div>
+
+ </div>
+ </div>
+
+ <div class="tbody" id="olsrd_smartgw">
<% for k, gw in ipairs(gws) do
gw.tcPathCost = tonumber(gw.tcPathCost)/1024 or 0
@@ -119,27 +119,27 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 },
end
%>
- <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=proto%>">
+ <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=proto%>">
<% if gw.proto == '6' then %>
- <td class="cbi-section-table-cell"><a href="http://[<%=gw.ipAddress%>]/cgi-bin-status.html"><%=gw.ipAddress%></a></td>
+ <div class="td cbi-section-table-cell"><a href="http://[<%=gw.ipAddress%>]/cgi-bin-status.html"><%=gw.ipAddress%></a></div>
<% else %>
- <td class="cbi-section-table-cell"><a href="http://<%=gw.ipAddress%>/cgi-bin-status.html"><%=gw.ipAddress%></a></td>
+ <div class="td cbi-section-table-cell"><a href="http://<%=gw.ipAddress%>/cgi-bin-status.html"><%=gw.ipAddress%></a></div>
<% end %>
- <td class="cbi-section-table-cell"><%=gw.ipv4Status or gw.ipv6Status or '-' %></td>
- <td class="cbi-section-table-cell"><%=string.format("%.3f", gw.tcPathCost)%></td>
- <td class="cbi-section-table-cell"><%=gw.hopCount%></td>
- <td class="cbi-section-table-cell"><%=gw.uplinkSpeed%></td>
- <td class="cbi-section-table-cell"><%=gw.downlinkSpeed%></td>
- <td class="cbi-section-table-cell"><%=gw.ipv4 and luci.i18n.translate('yes') or luci.i18n.translate('no')%></td>
- <td class="cbi-section-table-cell"><%=gw.ipv6 and luci.i18n.translate('yes') or luci.i18n.translate('no')%></td>
- <td class="cbi-section-table-cell"><%=gw.externalPrefix%></td>
- </tr>
+ <div class="td cbi-section-table-cell"><%=gw.ipv4Status or gw.ipv6Status or '-' %></div>
+ <div class="td cbi-section-table-cell"><%=string.format("%.3f", gw.tcPathCost)%></div>
+ <div class="td cbi-section-table-cell"><%=gw.hopCount%></div>
+ <div class="td cbi-section-table-cell"><%=gw.uplinkSpeed%></div>
+ <div class="td cbi-section-table-cell"><%=gw.downlinkSpeed%></div>
+ <div class="td cbi-section-table-cell"><%=gw.ipv4 and luci.i18n.translate('yes') or luci.i18n.translate('no')%></div>
+ <div class="td cbi-section-table-cell"><%=gw.ipv6 and luci.i18n.translate('yes') or luci.i18n.translate('no')%></div>
+ <div class="td cbi-section-table-cell"><%=gw.externalPrefix%></div>
+ </div>
<% i = ((i % 2) + 1)
end %>
- </tbody>
- </table>
+ </div>
+ </div>
</fieldset>
<% else %>
diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/topology.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/topology.htm
index b3abeaecbe..02fdfddac3 100644
--- a/applications/luci-app-olsr/luasrc/view/status-olsr/topology.htm
+++ b/applications/luci-app-olsr/luasrc/view/status-olsr/topology.htm
@@ -17,14 +17,14 @@ local olsrtools = require "luci.tools.olsr"
<fieldset class="cbi-section">
<legend><%:Overview of currently known OLSR nodes%></legend>
- <table class="cbi-section-table">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:OLSR node%></th>
- <th class="cbi-section-table-cell"><%:Last hop%></th>
- <th class="cbi-section-table-cell"><%:LQ%></th>
- <th class="cbi-section-table-cell"><%:NLQ%></th>
- <th class="cbi-section-table-cell"><%:ETX%></th>
- </tr>
+ <div class="table cbi-section-table">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:OLSR node%></div>
+ <div class="th cbi-section-table-cell"><%:Last hop%></div>
+ <div class="th cbi-section-table-cell"><%:LQ%></div>
+ <div class="th cbi-section-table-cell"><%:NLQ%></div>
+ <div class="th cbi-section-table-cell"><%:ETX%></div>
+ </div>
<% for k, route in ipairs(routes) do
local cost = string.format("%.3f", tonumber(route.tcEdgeCost/1024) or 0)
@@ -33,28 +33,28 @@ local olsrtools = require "luci.tools.olsr"
local nlq = string.format("%.3f", tonumber(route.neighborLinkQuality) or 0)
%>
- <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=route.proto%>">
+ <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=route.proto%>">
<% if route.proto == "6" then %>
- <td class="cbi-section-table-cell"><a href="http://[<%=route.destinationIP%>]/cgi-bin-status.html"><%=route.destinationIP%></a></td>
- <td class="cbi-section-table-cell"><a href="http://[<%=route.lastHopIP%>]/cgi-bin-status.html"><%=route.lastHopIP%></a></td>
+ <div class="td cbi-section-table-cell"><a href="http://[<%=route.destinationIP%>]/cgi-bin-status.html"><%=route.destinationIP%></a></div>
+ <div class="td cbi-section-table-cell"><a href="http://[<%=route.lastHopIP%>]/cgi-bin-status.html"><%=route.lastHopIP%></a></div>
<% else %>
- <td class="cbi-section-table-cell"><a href="http://<%=route.destinationIP%>/cgi-bin-status.html"><%=route.destinationIP%></a></td>
- <td class="cbi-section-table-cell"><a href="http://<%=route.lastHopIP%>/cgi-bin-status.html"><%=route.lastHopIP%></a></td>
+ <div class="td cbi-section-table-cell"><a href="http://<%=route.destinationIP%>/cgi-bin-status.html"><%=route.destinationIP%></a></div>
+ <div class="td cbi-section-table-cell"><a href="http://<%=route.lastHopIP%>/cgi-bin-status.html"><%=route.lastHopIP%></a></div>
<%end%>
- <td class="cbi-section-table-cell"><%=lq%></td>
- <td class="cbi-section-table-cell"><%=nlq%></td>
- <td class="cbi-section-table-cell" style="background-color:<%=color%>"><%=cost%></td>
- </tr>
+ <div class="td cbi-section-table-cell"><%=lq%></div>
+ <div class="td cbi-section-table-cell"><%=nlq%></div>
+ <div class="td cbi-section-table-cell" style="background-color:<%=color%>"><%=cost%></div>
+ </div>
<% i = ((i % 2) + 1)
end %>
- </table>
+ </div>
<%+status-olsr/legend%>
</fieldset>
diff --git a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua
index d2b5d32c05..a6b0e1dd90 100644
--- a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua
+++ b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua
@@ -56,7 +56,7 @@ function s.create(self, name)
luci.cbi.CREATE_PREFIX .. self.config .. "." ..
self.sectiontype .. ".text"
)
- if string.len(name)>3 and not name:match("[^a-zA-Z0-9_]") then
+ if #name > 3 and not name:match("[^a-zA-Z0-9_]") then
uci:section(
"openvpn", "openvpn", name,
uci:get_all( "openvpn_recipes", recipe )
@@ -67,9 +67,11 @@ function s.create(self, name)
uci:save("openvpn")
luci.http.redirect( self.extedit:format(name) )
- else
+ elseif #name > 0 then
self.invalid_cts = true
end
+
+ return 0
end
@@ -103,10 +105,7 @@ function updown.cfgvalue(self, section)
end
function updown.write(self, section, value)
if self.option == "stop" then
- local pid = s.getPID(section)
- if pid ~= nil then
- sys.process.signal(pid,15)
- end
+ luci.sys.call("/etc/init.d/openvpn stop %s" % section)
else
luci.sys.call("/etc/init.d/openvpn start %s" % section)
end
@@ -126,5 +125,8 @@ function proto.cfgvalue(self, section)
return val or "udp"
end
+function m.on_after_commit(self,map)
+ require("luci.sys").call('/etc/init.d/openvpn reload')
+end
return m
diff --git a/applications/luci-app-rp-pppoe-server/Makefile b/applications/luci-app-rp-pppoe-server/Makefile
index 6cf4595cea..aa3ae538cd 100644
--- a/applications/luci-app-rp-pppoe-server/Makefile
+++ b/applications/luci-app-rp-pppoe-server/Makefile
@@ -7,7 +7,7 @@
include $(TOPDIR)/rules.mk
-LUCI_TITLE:=Roaring Penguing PPPoE Server
+LUCI_TITLE:=Roaring Penguin PPPoE Server
LUCI_DEPENDS:=+rp-pppoe-server
include ../../luci.mk
diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
index af1a75b6f2..5fc20c52bc 100644
--- a/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
+++ b/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
@@ -23,7 +23,7 @@ function values_actions(o)
end
function values_redir(o, xmode)
- o.map.uci.foreach("shadowsocks-libev", "ss_redir", function(sdata)
+ o.map.uci:foreach("shadowsocks-libev", "ss_redir", function(sdata)
local disabled = ucival_to_bool(sdata["disabled"])
local sname = sdata[".name"]
local mode = sdata["mode"] or "tcp_only"
@@ -37,7 +37,7 @@ function values_redir(o, xmode)
end
function values_serverlist(o)
- o.map.uci.foreach("shadowsocks-libev", "server", function(sdata)
+ o.map.uci:foreach("shadowsocks-libev", "server", function(sdata)
local sname = sdata[".name"]
local server = sdata["server"]
local server_port = sdata["server_port"]
diff --git a/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm b/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm
index 219d89b074..f016dd47e6 100644
--- a/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm
+++ b/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm
@@ -1,24 +1,17 @@
<div class="cbi-section-create cbi-tblsection-create">
- <br />
- <table class="cbi-section-table">
- <tr class="cbi-section-table-row">
- <td class="cbi-section-table-cell" style="width:140px">
- <select class="cbi-input-select" id="_newinst.type" name="_newinst.type">
- <option value="_dummy">-- instance type --</option>
- <option value="ss_local">ss-local</option>
- <option value="ss_tunnel">ss-tunnel</option>
- <option value="ss_redir">ss-redir</option>
- <option value="ss_server">ss-server</option>
- </select>
- </td>
- <td class="cbi-section-table-cell" style="width:110px">
- <input type="text" class="cbi-input-text" id="_newinst.name" name="_newinst.name" placeholder="<%:Name%>"/>
- </td>
- <td class="cbi-section-table-cell left">
- <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>" value="<%:Add%>" />
- </td>
- </tr>
- </table>
+ <div>
+ <select class="cbi-input-select" id="_newinst.type" name="_newinst.type">
+ <option value="_dummy">-- instance type --</option>
+ <option value="ss_local">ss-local</option>
+ <option value="ss_tunnel">ss-tunnel</option>
+ <option value="ss_redir">ss-redir</option>
+ <option value="ss_server">ss-server</option>
+ </select>
+ </div>
+ <div>
+ <input type="text" class="cbi-input-text" id="_newinst.name" name="_newinst.name" placeholder="<%:Name%>"/>
+ </div>
+ <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>" value="<%:Add%>" />
</div>
<script type="text/javascript">//<![CDATA[
XHR.poll(5, '<%=url('admin/services/shadowsocks-libev/status')%>', null,
diff --git a/applications/luci-app-splash/luasrc/view/admin_status/splash.htm b/applications/luci-app-splash/luasrc/view/admin_status/splash.htm
index 37f67776aa..aad330791d 100644
--- a/applications/luci-app-splash/luasrc/view/admin_status/splash.htm
+++ b/applications/luci-app-splash/luasrc/view/admin_status/splash.htm
@@ -145,19 +145,19 @@ end
{
var s = '';
if (info.length == undefined) {
- s += '<tr class="cbi-section-table-row"><td colspan="7" class="cbi-section-table-cell"><br /><em><%:No clients connected%></em><br /></td></tr>'
+ s += '<div class="tr cbi-section-table-row"><div colspan="7" class="td cbi-section-table-cell"><br /><em><%:No clients connected%></em><br /></div></div>'
};
for (var idx = 0; idx < info.length; idx++)
{
var splash = info[idx];
s += String.format(
- '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+'">' +
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s</td>' +
- '<td class="cbi-section-table-cell">%s/%s</td>' +
- '<td class="cbi-section-table-cell">',
+ '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+'">' +
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s</div>' +
+ '<div class="td cbi-section-table-cell">%s/%s</div>' +
+ '<div class="td cbi-section-table-cell">',
splash.hostname, splash.ip, splash.mac, splash.timeleft, splash.trafficin, splash.trafficout);
<% if is_admin then %>
@@ -185,7 +185,7 @@ end
<% else %>
s += String.format('%s', splash.policy);
<% end %>
- s += '</td></tr>'
+ s += '</div></div>'
}
tbody.innerHTML = s;
}
@@ -200,18 +200,18 @@ end
<legend><%:Active Clients%></legend>
<div class="cbi-section-node">
<% if is_admin then %><form action="<%=REQUEST_URI%>" method="post"><input type="hidden" name="token" value="<%=token%>" /><% end %>
- <table class="cbi-section-table">
- <thead>
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Hostname%></th>
- <th class="cbi-section-table-cell"><%:IP Address%></th>
- <th class="cbi-section-table-cell"><%:MAC Address%></th>
- <th class="cbi-section-table-cell"><%:Time remaining%></th>
- <th class="cbi-section-table-cell"><%:Traffic in/out%></th>
- <th class="cbi-section-table-cell"><%:Policy%></th>
- </tr>
- </thead>
- <tbody id="splash_table">
+ <div class="table cbi-section-table">
+ <div class="thead">
+ <div class="tr cbi-section-table-titles">
+ <div class="th cbi-section-table-cell"><%:Hostname%></div>
+ <div class="th cbi-section-table-cell"><%:IP Address%></div>
+ <div class="th cbi-section-table-cell"><%:MAC Address%></div>
+ <div class="th cbi-section-table-cell"><%:Time remaining%></div>
+ <div class="th cbi-section-table-cell"><%:Traffic in/out%></div>
+ <div class="th cbi-section-table-cell"><%:Policy%></div>
+ </div>
+ </div>
+ <div class="tbody" id="splash_table">
<%-
local count = 0
@@ -227,16 +227,16 @@ end
if c.ip then
count = count + 1
-%>
- <tr class="cbi-section-table-row cbi-rowstyle-<%=2-(count%2)%>">
- <td class="cbi-section-table-cell"><%=c.hostname or "<em>" .. translate("unknown") .. "</em>"%></td>
- <td class="cbi-section-table-cell"><%=c.ip or "<em>" .. translate("unknown") .. "</em>"%></td>
- <td class="cbi-section-table-cell"><%=showmac(c.mac)%></td>
- <td class="cbi-section-table-cell"><%=
+ <div class="tr cbi-section-table-row cbi-rowstyle-<%=2-(count%2)%>">
+ <div class="td cbi-section-table-cell"><%=c.hostname or "<em>" .. translate("unknown") .. "</em>"%></div>
+ <div class="td cbi-section-table-cell"><%=c.ip or "<em>" .. translate("unknown") .. "</em>"%></div>
+ <div class="td cbi-section-table-cell"><%=showmac(c.mac)%></div>
+ <div class="td cbi-section-table-cell"><%=
(c.limit >= os.time()) and wat.date_format(c.limit-os.time()) or
(c.policy ~= "normal") and "-" or "<em>" .. translate("expired") .. "</em>"
- %></td>
- <td class="cbi-section-table-cell"><%=wat.byte_format(c.bytes_in)%> / <%=wat.byte_format(c.bytes_out)%></td>
- <td class="cbi-section-table-cell">
+ %></div>
+ <div class="td cbi-section-table-cell"><%=wat.byte_format(c.bytes_in)%> / <%=wat.byte_format(c.bytes_out)%></div>
+ <div class="td cbi-section-table-cell">
<% if is_admin then %>
<select name="policy.<%=c.mac:lower()%>" style="width:200px">
<option value="whitelist"<%=c.policy=="whitelist" and ' selected="selected"'%>><%:whitelisted%></option>
@@ -250,21 +250,21 @@ end
<% else %>
<%=c.policy%>
<% end %>
- </td>
- </tr>
+ </div>
+ </div>
<%-
end
end
if count == 0 then
-%>
- <tr class="cbi-section-table-row">
- <td colspan="7" class="cbi-section-table-cell">
+ <div class="tr cbi-section-table-row">
+ <div colspan="7" class="td cbi-section-table-cell">
<br /><em><%:No clients connected%></em><br />
- </td>
- </tr>
+ </div>
+ </div>
<%- end -%>
- </tbody>
- </table>
+ </div>
+ </div>
<% if is_admin then %></form><% end %>
</div>
</fieldset>
diff --git a/applications/luci-app-transmission/root/etc/uci-defaults/40_luci-transmission b/applications/luci-app-transmission/root/etc/uci-defaults/40_luci-transmission
index 456e8b89ac..08dc719974 100644
--- a/applications/luci-app-transmission/root/etc/uci-defaults/40_luci-transmission
+++ b/applications/luci-app-transmission/root/etc/uci-defaults/40_luci-transmission
@@ -1,7 +1,7 @@
#!/bin/sh
uci -q batch <<-EOF >/dev/null
- delete ucitrack.@tranmsmission[-1]
+ delete ucitrack.@transmission[-1]
add ucitrack transmission
set ucitrack.@transmission[-1].init=transmission
commit ucitrack
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm
index 6cbeaffde6..c40bdeeb59 100644
--- a/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm
+++ b/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm
@@ -6,10 +6,10 @@ This is free software, licensed under the Apache License, Version 2.0
<%+header%>
<div class="cbi-map">
- <fieldset class="cbi-section">
+ <div class="cbi-section">
<div class="cbi-section-descr"><%:This form shows the syslog output, pre-filtered for travelmate related messages only.%></div>
<textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
- </fieldset>
+ </div>
</div>
<script type="text/javascript">
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
index f76b52e9cc..ffacc2f6df 100644
--- a/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
+++ b/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
@@ -11,20 +11,22 @@ This is free software, licensed under the Apache License, Version 2.0
<%+header%>
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+
<div class="cbi-map">
<div class="cbi-map-descr">
<%=translatef("Provides an overview of all configured uplinks for the travelmate interface (%s). You can edit, delete or re-order existing uplinks or scan for a new one. The currently used uplink is emphasized in blue.", trmiface)%>
</div>
-<fieldset class="cbi-section">
- <table class="cbi-section-table" style="empty-cells:hide">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell" style="text-align:left"><%:Device%></th>
- <th class="cbi-section-table-cell" style="text-align:left"><%:SSID%></th>
- <th class="cbi-section-table-cell" style="text-align:left"><%:BSSID%></th>
- <th class="cbi-section-table-cell" style="text-align:left"><%:Encryption%></th>
- <th class="cbi-section-table-cell" style="text-align:center" colspan="2"><%:Actions%></th>
- </tr>
+<div class="cbi-section">
+ <div class="table cbi-section-table">
+ <div class="tr cbi-section-table-titles">
+ <div class="th left"><%:Device%></div>
+ <div class="th left"><%:SSID%></div>
+ <div class="th left"><%:BSSID%></div>
+ <div class="th left"><%:Encryption%></div>
+ <div class="th center">&#160;</div>
+ </div>
<%
uci:foreach("wireless", "wifi-iface", function(s)
local iface = s.network or ""
@@ -40,26 +42,24 @@ This is free software, licensed under the Apache License, Version 2.0
style = "text-align:left;color:#0069d6;font-weight:bold"
end
%>
- <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%>&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%>&dir=down'" alt="<%:Move down%>" title="<%:Move down%>"/>
- </td>
- <td class="cbi-value-field" style="width:150px">
+ <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%>"/>
<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)
%>
- </table>
-</fieldset>
+ </div>
+</div>
<div class="cbi-page-actions right">
<%
uci:foreach("wireless", "wifi-device", function(s)
@@ -68,7 +68,7 @@ This is free software, licensed under the Apache License, Version 2.0
<form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiscan')%>" method="post">
<input type="hidden" name="device" value="<%=device%>"/>
<input type="hidden" name="token" value="<%=token%>"/>
- <input type="submit" class="cbi-button cbi-button-find" title="<%:Find and join network on%> <%=device%>" value="<%:Scan%> <%=device%>"/>
+ <input type="submit" class="cbi-button cbi-button-action important" title="<%:Find and join network on%> <%=device%>" value="<%:Scan%> <%=device%>"/>
</form>
<%
end)
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm
index a8f63a17e2..57efd97376 100644
--- a/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm
+++ b/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm
@@ -39,31 +39,33 @@ This is free software, licensed under the Apache License, Version 2.0
<%+header%>
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+
<div class="cbi-map">
<h2 name="content"><%:Wireless Scan%></h2>
- <fieldset class="cbi-section">
- <table class="cbi-section-table" style="empty-cells:hide">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell" style="text-align:left"><%:Uplink SSID%></th>
- <th class="cbi-section-table-cell" style="text-align:left"><%:Uplink BSSID%></th>
- <th class="cbi-section-table-cell" style="text-align:left"><%:Encryption%></th>
- <th class="cbi-section-table-cell" style="text-align:left" colspan="2"><%:Signal strength%></th>
- </tr>
+ <div class="cbi-section">
+ <div class="table cbi-section-table">
+ <div class="tr cbi-section-table-titles">
+ <div class="th left"><%:Uplink SSID%></div>
+ <div class="th left"><%:Uplink BSSID%></div>
+ <div class="th left"><%:Encryption%></div>
+ <div class="th left"><%:Signal strength%></div>
+ </div>
<% for i, net in ipairs(iw.scanlist or { }) do %>
- <tr class="cbi-section-table-row cbi-rowstyle-1">
- <td class="cbi-value-field" style="text-align:left">
+ <div class="tr cbi-section-table-row cbi-rowstyle-1">
+ <div class="td left">
<%=net.ssid and utl.pcdata(net.ssid) or "<em>%s</em>" % translate("hidden")%>
- </td>
- <td class="cbi-value-field" style="text-align:left">
+ </div>
+ <div class="td left">
<%=net.bssid and utl.pcdata(net.bssid)%>
- </td>
- <td class="cbi-value-field" style="text-align:left">
+ </div>
+ <div class="td left">
<%=format_wifi_encryption(net.encryption)%>
- </td>
- <td class="cbi-value-field" style="text-align:left">
+ </div>
+ <div class="td left">
<%=percent_wifi_signal(net)%> %
- </td>
- <td class="cbi-value-field" style="width:100px;text-align:right">
+ </div>
+ <div class="td cbi-section-actions">
<form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiadd')%>" method="post">
<input type="hidden" name="token" value="<%=token%>"/>
<input type="hidden" name="device" value="<%=utl.pcdata(dev)%>"/>
@@ -76,20 +78,20 @@ This is free software, licensed under the Apache License, Version 2.0
<% end %>
<input class="cbi-button cbi-button-apply" type="submit" value="<%:Add Uplink%>"/>
</form>
- </td>
- </tr>
+ </div>
+ </div>
<% end %>
- </table>
- </fieldset>
+ </div>
+ </div>
<div class="cbi-page-actions right">
+ <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/stations')%>" method="get">
+ <input class="cbi-button cbi-button-reset" type="submit" value="<%:Back to overview%>"/>
+ </form>
<form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiscan')%>" method="post">
<input type="hidden" name="token" value="<%=token%>"/>
<input type="hidden" name="device" value="<%=utl.pcdata(dev)%>"/>
<input class="cbi-button cbi-input-find" type="submit" value="<%:Repeat scan%>"/>
</form>
- <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/stations')%>" method="post">
- <input class="cbi-button cbi-button-reset" type="submit" value="<%:Back to overview%>"/>
- </form>
</div>
</div>
diff --git a/applications/luci-app-travelmate/po/ja/travelmate.po b/applications/luci-app-travelmate/po/ja/travelmate.po
index 535a9db260..6a46ea3c87 100644
--- a/applications/luci-app-travelmate/po/ja/travelmate.po
+++ b/applications/luci-app-travelmate/po/ja/travelmate.po
@@ -7,7 +7,7 @@ msgstr ""
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.6\n"
+"X-Generator: Poedit 2.0.7\n"
"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Language: ja\n"
@@ -15,9 +15,6 @@ msgstr ""
msgid "Actions"
msgstr "操作"
-msgid "Add Interface"
-msgstr "インターフェースの追加"
-
msgid "Add Uplink"
msgstr "アップリンクの追加"
@@ -71,7 +68,7 @@ msgstr ""
msgid "Connection Limit"
msgstr "接続制限"
-msgid "Create Uplink Interface"
+msgid "Create Uplink interface"
msgstr "アップリンク インターフェースの作成"
msgid ""
@@ -202,7 +199,7 @@ msgid "Overall Timeout"
msgstr "実行間隔"
msgid "Overall retry timeout in seconds."
-msgstr ""
+msgstr "全体的な再試行タイムアウト(秒)です。"
msgid "Overview"
msgstr "概要"
@@ -283,6 +280,8 @@ msgstr "ステーション電波"
msgid ""
"The BSSID information '%s' is optional and only required for hidden networks"
msgstr ""
+"BSSID 情報 '%s' はオプションであり、ステルス化されたネットワークにのみ必要で"
+"す。"
msgid ""
"This form allows you to modify the content of the main firewall "
@@ -319,6 +318,9 @@ msgstr ""
"このフォームには、システムログ内の Travelmate に関するメッセージのみが表示さ"
"れます。"
+msgid "This step has only to be done once."
+msgstr "この手順は、一度だけ実行される必要があります。"
+
msgid "Travelmate"
msgstr "Travelmate"
@@ -346,9 +348,6 @@ msgstr "アップリンク BSSID"
msgid "Uplink SSID"
msgstr "アップリンク SSID"
-msgid "Uplink interface"
-msgstr "アップリンク インターフェース"
-
msgid "View AP QR-Codes"
msgstr "AP QR-コードを確認"
@@ -379,37 +378,11 @@ msgstr "無線スキャン"
msgid "Wireless Stations"
msgstr "無線ステーション"
-msgid ""
-"add it to the wan zone of the firewall. This step has only to be done once."
-msgstr ""
-"ファイアウォールの wan ゾーンに追加します。このステップは、一度だけ実行される"
-"必要があります。"
+msgid "add it to the wan zone of the firewall.<br />"
+msgstr "ファイアウォールの wan ゾーンに追加します。<br />"
msgid "hidden"
-msgstr "(不明)"
+msgstr "(ステルス)"
msgid "n/a"
msgstr "利用不可"
-
-#~ msgid "Enable 'automatic' mode"
-#~ msgstr "'automatic' モードの有効化"
-
-#~ msgid "Force a manual uplink rescan / reconnect in 'trigger' mode."
-#~ msgstr ""
-#~ "'trigger' モード時に、手動でアップリンクの再スキャンと再接続を行います。"
-
-#~ msgid ""
-#~ "Keep travelmate in an active state. Check every n seconds the connection "
-#~ "status, i.e. the uplink availability."
-#~ msgstr ""
-#~ "Travelmate をアクティブ状態で維持します。\"実行間隔\" で設定された時間毎"
-#~ "(秒)に、アップリンクの可用性を確認するために接続状態をチェックします"
-
-#~ msgid "Manual Rescan"
-#~ msgstr "手動再スキャン"
-
-#~ msgid "Rescan"
-#~ msgstr "再スキャン"
-
-#~ msgid "Timeout in seconds between retries in 'automatic' mode."
-#~ msgstr "'automatic' モード時に接続を確認または再試行する間隔(秒)です。"
diff --git a/applications/luci-app-travelmate/po/pt-br/travelmate.po b/applications/luci-app-travelmate/po/pt-br/travelmate.po
index 5ea4d4a0d3..6bf65b9370 100644
--- a/applications/luci-app-travelmate/po/pt-br/travelmate.po
+++ b/applications/luci-app-travelmate/po/pt-br/travelmate.po
@@ -15,9 +15,6 @@ msgstr ""
msgid "Actions"
msgstr ""
-msgid "Add Interface"
-msgstr ""
-
msgid "Add Uplink"
msgstr ""
@@ -67,7 +64,7 @@ msgstr ""
msgid "Connection Limit"
msgstr ""
-msgid "Create Uplink Interface"
+msgid "Create Uplink interface"
msgstr ""
msgid ""
@@ -292,6 +289,9 @@ msgid ""
"messages only."
msgstr ""
+msgid "This step has only to be done once."
+msgstr ""
+
msgid "Travelmate"
msgstr "Travelmate"
@@ -319,9 +319,6 @@ msgstr ""
msgid "Uplink SSID"
msgstr ""
-msgid "Uplink interface"
-msgstr ""
-
msgid "View AP QR-Codes"
msgstr ""
@@ -352,8 +349,7 @@ msgstr ""
msgid "Wireless Stations"
msgstr ""
-msgid ""
-"add it to the wan zone of the firewall. This step has only to be done once."
+msgid "add it to the wan zone of the firewall.<br />"
msgstr ""
msgid "hidden"
diff --git a/applications/luci-app-travelmate/po/ru/travelmate.po b/applications/luci-app-travelmate/po/ru/travelmate.po
index fad31bb849..8b25e9b139 100644
--- a/applications/luci-app-travelmate/po/ru/travelmate.po
+++ b/applications/luci-app-travelmate/po/ru/travelmate.po
@@ -18,9 +18,6 @@ msgstr ""
msgid "Actions"
msgstr "Действия"
-msgid "Add Interface"
-msgstr "Добавить интерфейс"
-
msgid "Add Uplink"
msgstr "Подключение к сети"
@@ -70,8 +67,8 @@ msgstr ""
msgid "Connection Limit"
msgstr "Ограничение соединений"
-msgid "Create Uplink Interface"
-msgstr "Создать интерфейс сети"
+msgid "Create Uplink interface"
+msgstr ""
msgid ""
"Create a new wireless wan uplink interface, configure it to use dhcp and"
@@ -315,6 +312,9 @@ msgstr ""
"Страница просмотра системного журнала, показаны только события связанные с "
"работой утилиты TravelMate."
+msgid "This step has only to be done once."
+msgstr ""
+
msgid "Travelmate"
msgstr "TravelMate"
@@ -342,9 +342,6 @@ msgstr "BSSID внешней сети"
msgid "Uplink SSID"
msgstr "SSID внешней сети"
-msgid "Uplink interface"
-msgstr "Интерфейс внешней сети"
-
msgid "View AP QR-Codes"
msgstr ""
@@ -375,9 +372,8 @@ msgstr "Найденные точки доступа Wi-Fi"
msgid "Wireless Stations"
msgstr "Клиенты беспроводной сети"
-msgid ""
-"add it to the wan zone of the firewall. This step has only to be done once."
-msgstr "добавить в wan зону межсетевого экрана. Можно сделать только один раз."
+msgid "add it to the wan zone of the firewall.<br />"
+msgstr ""
msgid "hidden"
msgstr "скрытый"
@@ -385,6 +381,21 @@ msgstr "скрытый"
msgid "n/a"
msgstr "нет данных"
+#~ msgid "Add Interface"
+#~ msgstr "Добавить интерфейс"
+
+#~ msgid "Create Uplink Interface"
+#~ msgstr "Создать интерфейс сети"
+
+#~ msgid "Uplink interface"
+#~ msgstr "Интерфейс внешней сети"
+
+#~ msgid ""
+#~ "add it to the wan zone of the firewall. This step has only to be done "
+#~ "once."
+#~ msgstr ""
+#~ "добавить в wan зону межсетевого экрана. Можно сделать только один раз."
+
#~ msgid "Enable 'automatic' mode"
#~ msgstr "Включить режим 'автоматически'"
diff --git a/applications/luci-app-travelmate/po/templates/travelmate.pot b/applications/luci-app-travelmate/po/templates/travelmate.pot
index 8ba17668ec..f4f3418422 100644
--- a/applications/luci-app-travelmate/po/templates/travelmate.pot
+++ b/applications/luci-app-travelmate/po/templates/travelmate.pot
@@ -4,9 +4,6 @@ msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "Actions"
msgstr ""
-msgid "Add Interface"
-msgstr ""
-
msgid "Add Uplink"
msgstr ""
@@ -56,7 +53,7 @@ msgstr ""
msgid "Connection Limit"
msgstr ""
-msgid "Create Uplink Interface"
+msgid "Create Uplink interface"
msgstr ""
msgid ""
@@ -281,6 +278,9 @@ msgid ""
"messages only."
msgstr ""
+msgid "This step has only to be done once."
+msgstr ""
+
msgid "Travelmate"
msgstr ""
@@ -308,9 +308,6 @@ msgstr ""
msgid "Uplink SSID"
msgstr ""
-msgid "Uplink interface"
-msgstr ""
-
msgid "View AP QR-Codes"
msgstr ""
@@ -341,8 +338,7 @@ msgstr ""
msgid "Wireless Stations"
msgstr ""
-msgid ""
-"add it to the wan zone of the firewall. This step has only to be done once."
+msgid "add it to the wan zone of the firewall.<br />"
msgstr ""
msgid "hidden"
diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua
index bf2b65a0a1..256bbb8392 100644
--- a/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua
+++ b/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua
@@ -9,7 +9,7 @@ local rlh, rpv, vld, nvd, eds, prt, tlm
local ctl, dlk, dom, dty, lfq, wfq, exa
local dp6, d64, pfx, qry, qrs
local pro, tgr, rsc, rsn, ag2, stt
-local rpn, din, dfw
+local rpn, din, dfw, ath
local ucl = luci.model.uci.cursor()
local valman = ucl:get_first("unbound", "unbound", "manual_conf")
@@ -100,15 +100,6 @@ if valman ~= "1" then
pfx.optional = true
pfx:depends({ dns64 = true })
- qry = s1:taboption("basic", Flag, "query_minimize", translate("Query Minimize:"),
- translate("Break down query components for limited added privacy"))
- qry.rmempty = false
-
- qrs = s1:taboption("basic", Flag, "query_min_strict", translate("Strict Minimize:"),
- translate("Strict version of 'query minimize' but it can break DNS"))
- qrs.rmempty = false
- qrs:depends({ query_minimize = true })
-
prt = s1:taboption("basic", Value, "listen_port", translate("Listening Port:"),
translate("Choose Unbounds listening port"))
prt.datatype = "port"
@@ -216,26 +207,43 @@ if valman ~= "1" then
pro = s1:taboption("resource", ListValue, "protocol", translate("Recursion Protocol:"),
translate("Chose the protocol recursion queries leave on"))
- pro:value("mixed", translate("IP4 and IP6"))
- pro:value("ip6_prefer", translate("IP6 Preferred"))
+ pro:value("default", translate("Default"))
pro:value("ip4_only", translate("IP4 Only"))
pro:value("ip6_only", translate("IP6 Only"))
+ pro:value("ip6_prefer", translate("IP6 Preferred"))
+ pro:value("mixed", translate("IP4 and IP6"))
pro.rmempty = false
+ rsc = s1:taboption("resource", ListValue, "resource", translate("Memory Resource:"),
+ translate("Use menu System/Processes to observe any memory growth"))
+ rsc:value("default", translate("Default"))
+ rsc:value("tiny", translate("Tiny"))
+ rsc:value("small", translate("Small"))
+ rsc:value("medium", translate("Medium"))
+ rsc:value("large", translate("Large"))
+ rsc.rmempty = false
+
rsn = s1:taboption("resource", ListValue, "recursion", translate("Recursion Strength:"),
translate("Recursion activity affects memory growth and CPU load"))
- rsn:value("aggressive", translate("Aggressive"))
rsn:value("default", translate("Default"))
rsn:value("passive", translate("Passive"))
+ rsn:value("aggressive", translate("Aggressive"))
rsn.rmempty = false
- rsc = s1:taboption("resource", ListValue, "resource", translate("Memory Resource:"),
- translate("Use menu System/Processes to observe any memory growth"))
- rsc:value("large", translate("Large"))
- rsc:value("medium", translate("Medium"))
- rsc:value("small", translate("Small"))
- rsc:value("tiny", translate("Tiny"))
- rsc.rmempty = false
+ qry = s1:taboption("resource", Flag, "query_minimize", translate("Query Minimize:"),
+ translate("Break down query components for limited added privacy"))
+ qry.rmempty = false
+ qry:depends({ recursion = "passive" })
+ qry:depends({ recursion = "aggressive" })
+
+ qrs = s1:taboption("resource", Flag, "query_min_strict", translate("Strict Minimize:"),
+ translate("Strict version of 'query minimize' but it can break DNS"))
+ qrs.rmempty = false
+ qrs:depends({ query_minimize = true })
+
+ ath = s1:taboption("resource", Flag, "prefetch_root", translate("Prefetch Root:"),
+ translate("Obtain complete root zone files and install in auth-zone: clause"))
+ ath.rmempty = false
eds = s1:taboption("resource", Value, "edns_size", translate("EDNS Size:"),
translate("Limit extended DNS packet size"))
diff --git a/applications/luci-app-upnp/luasrc/view/upnp_status.htm b/applications/luci-app-upnp/luasrc/view/upnp_status.htm
index 89fdb5e218..ee385b24a8 100644
--- a/applications/luci-app-upnp/luasrc/view/upnp_status.htm
+++ b/applications/luci-app-upnp/luasrc/view/upnp_status.htm
@@ -4,8 +4,8 @@
function(x)
{
var tb = document.getElementById('upnp_status_table');
- if (tb && (idx < tb.rows.length))
- tb.rows[0].parentNode.removeChild(tb.rows[idx]);
+ if (tb && (idx + 1 < tb.childNodes.length))
+ tb.removeChild(tb.childNodes[idx + 1]);
}
);
}
@@ -16,54 +16,37 @@
var tb = document.getElementById('upnp_status_table');
if (st && tb)
{
- /* clear all rows */
- while( tb.rows.length > 1 )
- tb.deleteRow(1);
+ var rows = [];
- for( var i = 0; i < st.length; i++ )
- {
- var tr = tb.insertRow(-1);
- tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);
+ for (var i = 0; i < st.length; i++)
+ rows.push([
+ st[i].proto,
+ st[i].extport,
+ st[i].intaddr,
+ st[i].intport,
+ st[i].descr,
+ E('<input class="cbi-button cbi-button-remove" type="button" value="<%:Delete%>" onclick="upnp_delete_fwd(%d)" />'.format(st[i].num))
+ ]);
- tr.insertCell(-1).innerHTML = st[i].proto;
- tr.insertCell(-1).innerHTML = st[i].extport;
- tr.insertCell(-1).innerHTML = st[i].intaddr;
- tr.insertCell(-1).innerHTML = st[i].intport;
- tr.insertCell(-1).innerHTML = st[i].descr;
-
- tr.insertCell(-1).innerHTML = String.format(
- '<input class="cbi-button cbi-input-remove" type="button" value="<%:Delete%>" onclick="upnp_delete_fwd(%d)" />',
- st[i].num
- );
- }
-
- if( tb.rows.length == 1 )
- {
- var tr = tb.insertRow(-1);
- tr.className = 'cbi-section-table-row';
-
- var td = tr.insertCell(-1);
- td.colSpan = 5;
- td.innerHTML = '<em><br /><%:There are no active redirects.%></em>';
- }
+ cbi_update_table(tb, rows, '<em><%:There are no active redirects.%></em>');
}
}
);
//]]></script>
-<fieldset class="cbi-section">
- <legend><%:Active UPnP Redirects%></legend>
- <table class="cbi-section-table" id="upnp_status_table">
- <tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Protocol%></th>
- <th class="cbi-section-table-cell"><%:External Port%></th>
- <th class="cbi-section-table-cell"><%:Client Address%></th>
- <th class="cbi-section-table-cell"><%:Client Port%></th>
- <th class="cbi-section-table-cell"><%:Description%></th>
- <th class="cbi-section-table-cell">&#160;</th>
- </tr>
- <tr class="cbi-section-table-row">
- <td colspan="5"><em><br /><%:Collecting data...%></em></td>
- </tr>
- </table>
-</fieldset>
+<div class="cbi-section">
+ <h3><%:Active UPnP Redirects%></h3>
+ <div class="table" id="upnp_status_table">
+ <div class="tr table-titles">
+ <div class="th"><%:Protocol%></div>
+ <div class="th"><%:External Port%></div>
+ <div class="th"><%:Client Address%></div>
+ <div class="th"><%:Client Port%></div>
+ <div class="th"><%:Description%></div>
+ <div class="th cbi-section-actions">&#160;</div>
+ </div>
+ <div class="tr placeholder">
+ <div class="td"><em><%:Collecting data...%></em></div>
+ </div>
+ </div>
+</div>
diff --git a/applications/luci-app-upnp/po/uk/upnp.po b/applications/luci-app-upnp/po/uk/upnp.po
index 8f43ae371a..2a7fe3bd45 100644
--- a/applications/luci-app-upnp/po/uk/upnp.po
+++ b/applications/luci-app-upnp/po/uk/upnp.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-05-26 19:26+0200\n"
+"PO-Revision-Date: 2018-06-17 23:15+0300\n"
"Last-Translator: Yurii <yuripet@gmail.com>\n"
"Language-Team: none\n"
"Language: uk\n"
@@ -10,13 +10,13 @@ msgstr ""
"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"
-"X-Generator: Pootle 2.0.6\n"
+
msgid ""
"ACLs specify which external ports may be redirected to which internal "
"addresses and ports"
msgstr ""
-"Список кнтролю доступу визначає, які зовнішні порти можуть бути "
+"Список контролю доступу визначає, які зовнішні порти можуть бути "
"переспрямовані на які внутрішні адреси й порти"
msgid "Action"
@@ -29,7 +29,7 @@ msgid "Advanced Settings"
msgstr "Додаткові параметри"
msgid "Advertise as IGDv1 device instead of IGDv2"
-msgstr ""
+msgstr "Оголошувати як пристрій IGDv1 замість IGDv2"
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
@@ -59,20 +59,20 @@ msgstr "Збирання даних..."
msgid "Comment"
msgstr "Коментар"
-msgid "Delete"
-msgstr ""
+msgid "Delete Redirect"
+msgstr "Видалити переспрямування"
msgid "Description"
-msgstr ""
+msgstr "Опис"
msgid "Device UUID"
msgstr "UUID пристрою"
msgid "Downlink"
-msgstr "Низхідний канал"
+msgstr "Низхідне з’єднання"
msgid "Enable IGDv1 mode"
-msgstr ""
+msgstr "Увімкнути режим IGDv1"
msgid "Enable NAT-PMP functionality"
msgstr "Увімкнути функцію NAT-PMP"
@@ -148,20 +148,7 @@ msgid "Universal Plug & Play"
msgstr "Universal Plug & Play"
msgid "Uplink"
-msgstr "Висхідний канал"
+msgstr "Висхідне з’єднання"
msgid "Value in KByte/s, informational only"
-msgstr "Значення (КБ/с) тільки для інформації"
-
-#~ msgid "Delete Redirect"
-#~ msgstr "Видалити переспрямування"
-
-#~ msgid ""
-#~ "UPNP allows clients in the local network to automatically configure the "
-#~ "router."
-#~ msgstr ""
-#~ "UPnP надає клієнтам у локальній мережі змогу автоматично настроювати "
-#~ "маршрутизатор."
-
-#~ msgid "enable"
-#~ msgstr "Увімкнути"
+msgstr "Значення (КБ/с), тільки для інформації"
diff --git a/applications/luci-app-wireguard/luasrc/view/wireguard.htm b/applications/luci-app-wireguard/luasrc/view/wireguard.htm
index 5af6232ae6..64d9955296 100644
--- a/applications/luci-app-wireguard/luasrc/view/wireguard.htm
+++ b/applications/luci-app-wireguard/luasrc/view/wireguard.htm
@@ -164,43 +164,43 @@
for ikey, iface in pairs(data) do
-%>
<legend><%:Interface%> <%=ikey%></legend>
- <table width="100%" cellspacing="10">
- <tr>
- <td width="33%" style="vertical-align:top"><%:Configuration%></td>
- <td>
- <table>
- <tr>
- <td id="<%=ikey%>_icon" style="width:16px; text-align:center; padding:3px">
+ <div class="table" width="100%" cellspacing="10">
+ <div class="tr">
+ <div class="td" width="33%" style="vertical-align:top"><%:Configuration%></div>
+ <div class="td">
+ <div class="table">
+ <div class="tr">
+ <div class="td" id="<%=ikey%>_icon" style="width:16px; text-align:center; padding:3px">
&nbsp;
- </td>
- <td id="<%=ikey%>_info" style="vertical-align:middle; padding: 3px">
+ </div>
+ <div class="td" id="<%=ikey%>_info" style="vertical-align:middle; padding: 3px">
<em><%:Collecting data...%></em>
- </td>
- </tr></table>
- </td>
- </tr>
+ </div>
+ </div></div>
+ </div>
+ </div>
<%-
for pkey, peer in pairs(iface.peers) do
-%>
- <tr>
- <td width="33%" style="vertical-align:top"><%:Peer%></td>
- <td>
- <table>
- <tr>
- <td id="<%=ikey%>_<%=peer.public_key%>_icon" style="width:16px; text-align:center; padding:3px">
+ <div class="tr">
+ <div class="td" width="33%" style="vertical-align:top"><%:Peer%></div>
+ <div class="td">
+ <div class="table">
+ <div class="tr">
+ <div class="td" id="<%=ikey%>_<%=peer.public_key%>_icon" style="width:16px; text-align:center; padding:3px">
<img src="<%=resource%>/icons/tunnel_disabled.png" /><br />
<small>?</small>
- </td>
- <td id="<%=ikey%>_<%=peer.public_key%>_info" style="vertical-align:middle; padding: 3px">
+ </div>
+ <div class="td" id="<%=ikey%>_<%=peer.public_key%>_info" style="vertical-align:middle; padding: 3px">
<em><%:Collecting data...%></em>
- </td>
- </tr></table>
- </td>
- </tr>
+ </div>
+ </div></div>
+ </div>
+ </div>
<%-
end
-%>
- </table>
+ </div>
<%-
end
-%>