diff options
Diffstat (limited to 'applications')
72 files changed, 3284 insertions, 1266 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 f71fb7ba4d..68f9c8897e 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 @@ -6,9 +6,25 @@ local uci = require("uci") local sys = require("luci.sys") local json = require("luci.jsonc") local adbinput = uci.get("adblock", "global", "adb_rtfile") or "/tmp/adb_runtime.json" +local dnspath = uci.get("adblock", "global", "adb_dnsdir") or "" local parse = json.parse(fs.readfile(adbinput) or "") -local dnsFile1 = sys.exec("find '/tmp/dnsmasq.d/.adb_hidden' -maxdepth 1 -type f -name 'adb_list*' -print 2>/dev/null") -local dnsFile2 = sys.exec("find '/var/lib/unbound/.adb_hidden' -maxdepth 1 -type f -name 'adb_list*' -print 2>/dev/null") +if parse ~= nil then + version = parse.data.adblock_version + domains = parse.data.blocked_domains + fetch = parse.data.fetch_info + backend = parse.data.dns_backend + rundate = parse.data.last_rundate + if dnspath == "" then + if backend == "dnsmasq" then + dnspath = "/tmp/dnsmasq.d" + elseif backend == "unbound" then + dnspath = "/var/lib/unbound" + elseif backend == "named" then + dnspath = "/var/lib/bind" + end + end +end +local dnsfile = dnspath .. "/.adb_hidden/adb_list.overall" m = Map("adblock", translate("Adblock"), translate("Configuration of the adblock package to block ad/abuse domains by using DNS. ") @@ -17,7 +33,13 @@ m = Map("adblock", translate("Adblock"), .. "see online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md")) function m.on_after_commit(self) - luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1") + function e3.validate(self, value) + if value == "0" then + luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1") + else + luci.sys.call("/etc/init.d/adblock start >/dev/null 2>&1") + end + end luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock")) end @@ -30,7 +52,7 @@ o1.default = o1.enabled o1.rmempty = false btn = s:option(Button, "", translate("Suspend / Resume adblock")) -if dnsFile1 ~= "" or dnsFile2 ~= "" then +if parse ~= nil and nixio.fs.access(dnsfile) then btn.inputtitle = translate("Resume adblock") btn.inputstyle = "apply" btn.disabled = false @@ -72,52 +94,53 @@ dv1 = s:option(DummyValue, "status", translate("Status")) dv1.template = "adblock/runtime" if parse == nil then dv1.value = translate("n/a") -elseif parse.data.blocked_domains == "0" then +elseif domains == "0" then dv1.value = translate("no domains blocked") -elseif dnsFile1 ~= "" or dnsFile2 ~= "" then +elseif nixio.fs.access(dnsfile) then dv1.value = translate("suspended") else dv1.value = translate("active") end + dv2 = s:option(DummyValue, "adblock_version", translate("Adblock version")) dv2.template = "adblock/runtime" -if parse ~= nil then - dv2.value = parse.data.adblock_version or translate("n/a") -else +if parse == nil then dv2.value = translate("n/a") +else + dv2.value = version end dv3 = s:option(DummyValue, "fetch_info", translate("Download Utility (SSL Library)"), translate("For SSL protected blocklist sources you need a suitable SSL library, e.g. 'libustream-ssl' or the wget 'built-in'.")) dv3.template = "adblock/runtime" -if parse ~= nil then - dv3.value = parse.data.fetch_info or translate("n/a") -else +if parse == nil then dv3.value = translate("n/a") +else + dv3.value = fetch end dv4 = s:option(DummyValue, "dns_backend", translate("DNS backend")) dv4.template = "adblock/runtime" -if parse ~= nil then - dv4.value = parse.data.dns_backend or translate("n/a") -else +if parse == nil then dv4.value = translate("n/a") +else + dv4.value = backend end dv5 = s:option(DummyValue, "blocked_domains", translate("Blocked domains (overall)")) dv5.template = "adblock/runtime" -if parse ~= nil then - dv5.value = parse.data.blocked_domains or translate("n/a") -else +if parse == nil then dv5.value = translate("n/a") +else + dv5.value = domains end dv6 = s:option(DummyValue, "last_rundate", translate("Last rundate")) dv6.template = "adblock/runtime" -if parse ~= nil then - dv6.value = parse.data.last_rundate or translate("n/a") -else +if parse == nil then dv6.value = translate("n/a") +else + dv6.value = rundate end -- Blocklist table @@ -157,12 +180,18 @@ e2 = e:option(Flag, "adb_forcesrt", translate("Force Overall Sort"), e2.default = e2.disabled e2.rmempty = false -e3 = e:option(Flag, "adb_backup", translate("Enable blocklist backup")) +e3 = e:option(Flag, "adb_manmode", translate("Manual mode"), + translate("Do not automatically update blocklists during startup, use blocklist backups instead.")) e3.default = e3.disabled e3.rmempty = false -e4 = e:option(Value, "adb_backupdir", translate("Backup directory")) -e4.datatype = "directory" +e4 = e:option(Flag, "adb_backup", translate("Enable blocklist backup"), + translate("Create compressed blocklist backups, they will be used in case of download errors or during startup in manual mode.")) +e4.default = e4.disabled e4.rmempty = false +e5 = e:option(Value, "adb_backupdir", translate("Backup directory")) +e5.datatype = "directory" +e5.rmempty = false + return m diff --git a/applications/luci-app-adblock/po/ja/adblock.po b/applications/luci-app-adblock/po/ja/adblock.po index ac470fedd6..07fd783ed2 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.1\n" +"X-Generator: Poedit 2.0.2\n" "Language: ja\n" msgid "Adblock" @@ -50,12 +50,27 @@ msgstr "" "DNS の利用によって広告/不正ドメインをブロックする、Adblock パッケージの設定で" "す。" +msgid "" +"Create compressed blocklist backups, they will be used in case of download " +"errors or during startup in manual mode." +msgstr "" +"圧縮されたブロックリストのバックアップを作成します。これは、リストのダウン" +"ロードがエラーの場合、またはマニュアル モードでサービスを起動時に使用されま" +"す。" + msgid "DNS backend" msgstr "DNS バックエンド" msgid "Description" msgstr "説明" +msgid "" +"Do not automatically update blocklists during startup, use blocklist backups " +"instead." +msgstr "" +"サービス起動時にブロックリストを自動的に更新せず、代わりにバックアップされた" +"ブロックリストを使用します。" + msgid "Download Utility (SSL Library)" msgstr "ダウンロード ユーティリティ(SSL ライブラリ)" @@ -95,7 +110,7 @@ msgid "" "'libustream-ssl' or the wget 'built-in'." msgstr "" "SSLで保護されているブロックリストの取得には、適切なSSL ライブラリが必要です。" -"例: 'libustream-ssl' または wget 'ビルトイン'" +"例: 'libustream-ssl' または wget 'built-in'" msgid "" "For further information <a href=\"%s\" target=\"_blank\">see online " @@ -122,6 +137,9 @@ msgstr "最終実行日時" msgid "Loading" msgstr "読込中" +msgid "Manual mode" +msgstr "マニュアル モード" + msgid "No" msgstr "いいえ" @@ -251,129 +269,3 @@ msgstr "ブロックされたドメインはありません" msgid "suspended" msgstr "一時停止中" - -#~ msgid "." -#~ msgstr "。" - -#~ msgid "For further information" -#~ msgstr "詳細な情報は" - -#~ msgid "see online documentation" -#~ msgstr "オンライン ドキュメントを確認してください" - -#~ msgid "Backup options" -#~ msgstr "バックアップ オプション" - -#~ msgid "Restrict interface reload trigger to certain interface(s)" -#~ msgstr "リロード トリガを特定のインターフェースに限定する" - -#~ msgid "" -#~ "Space separated list of interfaces that trigger a reload action. To " -#~ "disable reload trigger at all remove all entries." -#~ msgstr "" -#~ "リロードのトリガとなる、スペースで区切られたインターフェースのリストです。" -#~ "リロード トリガを無効にするには、全てのエントリーを削除して空欄にします。" - -#~ msgid "" -#~ "Space separated list of interfaces that trigger a reload action. To " -#~ "disable reload trigger at all set it to 'false'." -#~ msgstr "" -#~ "リロードのトリガとなる、スペースで区切られたインターフェースのリストで" -#~ "す。'false' に設定した場合、全てのリロード トリガは無効になります。" - -#~ msgid "" -#~ "Please add only one domain per line. Comments introduced with '#' are " -#~ "allowed - ip addresses, wildcards & regex are not." -#~ msgstr "" -#~ "一行に一つのドメインを追加してください。'#' から始まるコメントを記述できま" -#~ "すが、IPアドレスやワイルドカード、正規表現を設定値として使用することはでき" -#~ "ません。" - -#~ msgid "" -#~ "). Note that list URLs and Shallalist category selections are not " -#~ "configurable via Luci." -#~ msgstr "" -#~ ")。これらのリストのURLおよびshallaリストの選択済みカテゴリーは、Luciを通" -#~ "して設定することができません。" - -#~ msgid "Available blocklist sources (" -#~ msgstr "利用可能なブロックリスト提供元です(" - -#~ msgid "" -#~ "File with whitelisted hosts/domains that are allowed despite being on a " -#~ "blocklist." -#~ msgstr "" -#~ "ホワイトリスト ファイル内のホスト/ドメインは、ブロックリストの登録に関わら" -#~ "ず許可されます。" - -#~ msgid "Global options" -#~ msgstr "一般設定" - -#~ msgid "Restrict reload trigger to certain interface(s)" -#~ msgstr "リロードトリガを特定のインターフェースに限定する" - -#~ msgid "" -#~ "Space separated list of wan interfaces that trigger reload action. To " -#~ "disable reload trigger set it to 'false'. Default: empty" -#~ msgstr "" -#~ "リロード実行のトリガとなる、スペースで区切られたWANインターフェースのリス" -#~ "トです。リロードトリガを無効にするには、 false を設定します。デフォルト:" -#~ "(空)" - -#~ msgid "Whitelist file" -#~ msgstr "ホワイトリスト ファイル" - -#~ msgid "see list details" -#~ msgstr "リストの詳細を見る" - -#~ msgid "Count" -#~ msgstr "カウント" - -#~ msgid "Do not write status info to flash" -#~ msgstr "ステータス情報をフラッシュに書き込まない" - -#~ msgid "Last update of the blocklists" -#~ msgstr "ブロックリストの最終更新日時" - -#~ msgid "List date/state" -#~ msgstr "リスト日時/状態" - -#~ msgid "Name of the logical lan interface" -#~ msgstr "論理LANインターフェース名" - -#~ msgid "Percentage of blocked packets (before last update, IPv4/IPv6)" -#~ msgstr "ブロック済みパケットの割合(最終更新以前、IPv4/IPv6)" - -#~ msgid "Port of the adblock uhttpd instance" -#~ msgstr "adblock uhttpdインスタンスのポート" - -#~ msgid "Port of the adblock uhttpd instance for https links" -#~ msgstr "httpsリンク用adblock uhttpdインスタンスのポート" - -#~ msgid "Redirect all DNS queries to the local resolver" -#~ msgstr "全てのDNSクエリをローカルリゾルバにリダイレクト" - -#~ msgid "" -#~ "Skip writing update status information to the config file. Status fields " -#~ "on this page will not be updated." -#~ msgstr "" -#~ "更新ステータス情報をコンフィグファイルに書き込まず、スキップします。この" -#~ "ページのステータス画面は更新されなくなります。" - -#~ msgid "Statistics" -#~ msgstr "ステータス" - -#~ msgid "Timeout for blocklist fetch (seconds)" -#~ msgstr "ブロックリスト取得の制限時間(秒)" - -#~ msgid "Total count of blocked domains" -#~ msgstr "ブロック済みドメインの合計" - -#~ msgid "" -#~ "When adblock is active, all DNS queries are redirected to the local " -#~ "resolver in this server by default. You can disable that to allow queries " -#~ "to external DNS servers." -#~ msgstr "" -#~ "adblockがアクティブである時、全てのDNSクエリは既定でこのサーバー上のリゾル" -#~ "バにリダイレクトされます。外部DNSサーバーへのクエリを許可する場合、この設" -#~ "定を無効にすることもできます。" diff --git a/applications/luci-app-adblock/po/pt-br/adblock.po b/applications/luci-app-adblock/po/pt-br/adblock.po index 72f6910429..044352da63 100644 --- a/applications/luci-app-adblock/po/pt-br/adblock.po +++ b/applications/luci-app-adblock/po/pt-br/adblock.po @@ -51,12 +51,22 @@ msgstr "" "Configuração do pacote adblock para bloquear, usando o DNS, domínios que " "distribuem propagandas abusivas." +msgid "" +"Create compressed blocklist backups, they will be used in case of download " +"errors or during startup in manual mode." +msgstr "" + msgid "DNS backend" msgstr "" msgid "Description" msgstr "Descrição" +msgid "" +"Do not automatically update blocklists during startup, use blocklist backups " +"instead." +msgstr "" + msgid "Download Utility (SSL Library)" msgstr "" @@ -117,6 +127,9 @@ msgstr "" msgid "Loading" msgstr "" +msgid "Manual mode" +msgstr "" + msgid "No" msgstr "" diff --git a/applications/luci-app-adblock/po/sv/adblock.po b/applications/luci-app-adblock/po/sv/adblock.po index 7f271221ae..cf92dbddc0 100644 --- a/applications/luci-app-adblock/po/sv/adblock.po +++ b/applications/luci-app-adblock/po/sv/adblock.po @@ -40,12 +40,22 @@ msgstr "" "Konfiguration av paketet adblock för att blockera annons/otillåtna domäner " "genom att använda DNS." +msgid "" +"Create compressed blocklist backups, they will be used in case of download " +"errors or during startup in manual mode." +msgstr "" + msgid "DNS backend" msgstr "Bakände för DNS" msgid "Description" msgstr "Beskrivning" +msgid "" +"Do not automatically update blocklists during startup, use blocklist backups " +"instead." +msgstr "" + msgid "Download Utility (SSL Library)" msgstr "Nerladdningsprogram (SSL-bibliotek)" @@ -107,6 +117,9 @@ msgstr "" msgid "Loading" msgstr "Laddar" +msgid "Manual mode" +msgstr "" + msgid "No" msgstr "Nej" diff --git a/applications/luci-app-adblock/po/templates/adblock.pot b/applications/luci-app-adblock/po/templates/adblock.pot index c5771ef22e..5b5a96866a 100644 --- a/applications/luci-app-adblock/po/templates/adblock.pot +++ b/applications/luci-app-adblock/po/templates/adblock.pot @@ -38,12 +38,22 @@ msgid "" "Configuration of the adblock package to block ad/abuse domains by using DNS." msgstr "" +msgid "" +"Create compressed blocklist backups, they will be used in case of download " +"errors or during startup in manual mode." +msgstr "" + msgid "DNS backend" msgstr "" msgid "Description" msgstr "" +msgid "" +"Do not automatically update blocklists during startup, use blocklist backups " +"instead." +msgstr "" + msgid "Download Utility (SSL Library)" msgstr "" @@ -104,6 +114,9 @@ msgstr "" msgid "Loading" msgstr "" +msgid "Manual mode" +msgstr "" + msgid "No" msgstr "" diff --git a/applications/luci-app-adblock/po/zh-cn/adblock.po b/applications/luci-app-adblock/po/zh-cn/adblock.po index dfa03f32b1..46dc99e66e 100644 --- a/applications/luci-app-adblock/po/zh-cn/adblock.po +++ b/applications/luci-app-adblock/po/zh-cn/adblock.po @@ -50,12 +50,22 @@ msgid "" "Configuration of the adblock package to block ad/abuse domains by using DNS." msgstr "Adblock 配置工具,通过 DNS 来拦截广告和阻止域名。" +msgid "" +"Create compressed blocklist backups, they will be used in case of download " +"errors or during startup in manual mode." +msgstr "" + msgid "DNS backend" msgstr "DNS 后端" msgid "Description" msgstr "描述" +msgid "" +"Do not automatically update blocklists during startup, use blocklist backups " +"instead." +msgstr "" + msgid "Download Utility (SSL Library)" msgstr "" @@ -116,6 +126,9 @@ msgstr "" msgid "Loading" msgstr "加载中" +msgid "Manual mode" +msgstr "" + msgid "No" msgstr "否" diff --git a/applications/luci-app-advanced-reboot/Makefile b/applications/luci-app-advanced-reboot/Makefile new file mode 100644 index 0000000000..3a886eb8de --- /dev/null +++ b/applications/luci-app-advanced-reboot/Makefile @@ -0,0 +1,20 @@ +# Copyright (c) 2017 Stan Grishin (stangri@melmac.net) +# This is free software, licensed under the GNU General Public License v3. + +include $(TOPDIR)/rules.mk + +PKG_LICENSE:=GPL-3.0+ +PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net> + +LUCI_TITLE:=Advanced Linksys Reboot Web UI +LUCI_DESCRIPTION:=Provides Web UI (found under System/Advanced Reboot) to reboot supported Linksys routers to\ + an altnerative partition. Also provides Web UI to shut down (power off) your device. Supported dual-partition\ + routers are listed at https://github.com/stangri/openwrt-luci/blob/luci-app-advanced-reboot/applications/luci-app-advanced-reboot/README.md + +LUCI_DEPENDS:=+luci +LUCI_PKGARCH:=all +PKG_RELEASE:=23 + +include ../../luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-advanced-reboot/README.md b/applications/luci-app-advanced-reboot/README.md new file mode 100644 index 0000000000..ee87a00020 --- /dev/null +++ b/applications/luci-app-advanced-reboot/README.md @@ -0,0 +1,35 @@ +# Advanced Reboot Web UI (luci-app-advanced-reboot) + +## Description +This package allows you to reboot to an alternative partition on supported (dual-partition) routers and to power off (power down) your OpenWrt/LEDE Project device. + +## Supported Devices +Currently supported dual-partition devices include: +- Linksys WRT1200AC +- Linksys WRT1900AC +- Linksys WRT1900ACv2 +- Linksys WRT1900ACS +- Linksys WRT3200ACM +- Linksys E4200v2 +- Linksys EA4500 +- Linksys EA8500 + +If you're interested in having your device supported, please post in [LEDE Project Forum Support Thread](https://forum.lede-project.org/t/web-ui-to-reboot-to-another-partition-dual-partition-routers/3423). + +## Screenshot (luci-app-advanced-reboot) +![screenshot](https://raw.githubusercontent.com/stangri/screenshots/master/luci-app-advanced-reboot/screenshot01.png "screenshot") + +## How to install +Install ```luci-app-advanced-reboot``` from Web UI or connect to your router via ssh and run the following commands: +```sh +opkg update +opkg install luci-app-advanced-reboot +``` + +## Notes/Known Issues +- When you reboot to a different partition, your current settings (WiFi SSID/password, etc.) will not apply to a different partition. Different partitions might have completely different settings and even firmware. +- If you reboot to a partition which doesn't allow you to switch boot partitions (like stock Linksys firmware), you might not be able to boot back to OpenWrt/LEDE Project unless you reflash it, loosing all the settings. +- Some devices allow you to trigger reboot to alternative partition by interrupting boot 3 times in a row (by resetting/switching off the device or pulling power). As these methods might be different for different devices, do your own homework. + +## Thanks +I'd like to thank everyone who helped create, test and troubleshoot this package. Without contributions from [@hnyman](https://github.com/hnyman) and [@jpstyves](https://github.com/jpstyves) it wouldn't have been possible. diff --git a/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua b/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua new file mode 100644 index 0000000000..2b55217b8e --- /dev/null +++ b/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua @@ -0,0 +1,120 @@ +-- Copyright 2017 Stan Grishin <stangri@melmac.net> +-- Licensed to the public under the Apache License 2.0. + +module("luci.controller.advanced_reboot", package.seeall) + +-- device, board_name, part1, part2, offset, env_var_1, value_1_1, value_1_2, env_var_2, value_2_1, value_2_2 +devices = { + {"Linksys WRT1200AC", "armada-385-linksys-caiman", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, + {"Linksys WRT1900AC", "armada-xp-linksys-mamba", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, + {"Linksys WRT1900ACv2", "armada-385-linksys-cobra", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, + {"Linksys WRT1900ACS", "armada-385-linksys-shelby", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, + {"Linksys WRT3200ACM", "armada-385-linksys-rango", "mtd5", "mtd7", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, + {"Linksys E4200v2/EA4500", "linksys-viper", "mtd3", "mtd5", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, + {"Linksys EA8500", "ea8500", "mtd13", "mtd15", 32, "boot_part", 1, 2} +} + +board_name = luci.util.trim(luci.sys.exec("cat /tmp/sysinfo/board_name")) +for i=1, #devices do + if board_name and devices[i][2] == board_name then + device_name = devices[i][1] + partition_one_mtd = devices[i][3] or nil + partition_two_mtd = devices[i][4] or nil + partition_skip = devices[i][5] or nil + boot_envvar1 = devices[i][6] or nil + boot_envvar1_partition_one = tonumber(devices[i][7]) or nil + boot_envvar1_partition_two = tonumber(devices[i][8]) or nil + boot_envvar2 = devices[i][9] or nil + boot_envvar2_partition_one = devices[i][10] or nil + boot_envvar2_partition_two = devices[i][11] or nil + if partition_one_mtd and partition_skip then + partition_one_label = luci.util.trim(luci.sys.exec("dd if=/dev/" .. partition_one_mtd .. " bs=1 skip=" .. partition_skip .. " count=25" .. " 2>/dev/null")) + n, partition_one_version = string.match(partition_one_label, '(Linux)-([%d|.]+)') + end + if partition_two_mtd and partition_skip then + partition_two_label = luci.util.trim(luci.sys.exec("dd if=/dev/" .. partition_two_mtd .. " bs=1 skip=" .. partition_skip .. " count=25" .. " 2>/dev/null")) + n, partition_two_version = string.match(partition_two_label, '(Linux)-([%d|.]+)') + end + if string.find(partition_one_label, "LEDE") then partition_one_os = "LEDE" end + if string.find(partition_one_label, "OpenWrt") then partition_one_os = "OpenWrt" end + if string.find(partition_one_label, "Linksys") then partition_one_os = "Linksys" end + if string.find(partition_two_label, "LEDE") then partition_two_os = "LEDE" end + if string.find(partition_two_label, "OpenWrt") then partition_two_os = "OpenWrt" end + if string.find(partition_two_label, "Linksys") then partition_two_os = "Linksys" end + if not partition_one_os then partition_one_os = "Unknown" end + if not partition_two_os then partition_two_os = "Unknown" end + if partition_one_os and partition_one_version then partition_one_os = partition_one_os .. " (Linux " .. partition_one_version .. ")" end + if partition_two_os and partition_two_version then partition_two_os = partition_two_os .. " (Linux " .. partition_two_version .. ")" end + if nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then + current_partition = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1))) + other_partition = current_partition == boot_envvar1_partition_one and boot_envvar1_partition_two or boot_envvar1_partition_one + end + end +end + +function index() + entry({"admin", "system", "advanced_reboot"}, template("advanced_reboot/advanced_reboot"), _("Advanced Reboot"), 90) + entry({"admin", "system", "advanced_reboot", "reboot"}, post("action_reboot")) +-- if device_name then entry({"admin", "system", "advanced_reboot", "altreboot"}, post("action_altreboot")) end + entry({"admin", "system", "advanced_reboot", "alternative_reboot"}, post("action_altreboot")) + entry({"admin", "system", "advanced_reboot", "power_off"}, post("action_poweroff")) +end + +function action_reboot() + luci.template.render("admin_system/applyreboot", { + title = luci.i18n.translate("Rebooting..."), + msg = luci.i18n.translate("The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."), + addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1" + }) + luci.sys.reboot() +end + +function action_altreboot() + if luci.http.formvalue("cancel") then + luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot')) + return + end + local step = tonumber(luci.http.formvalue("step") or 1) + if step == 1 then + if device_name and nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then + luci.template.render("advanced_reboot/alternative_reboot",{}) + else + luci.template.render("advanced_reboot/advanced_reboot",{}) + end + elseif step == 2 then + luci.template.render("admin_system/applyreboot", { + title = luci.i18n.translate("Rebooting..."), + msg = luci.i18n.translate("The system is rebooting to an alternative partition now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."), + addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1" + }) + if boot_envvar1 then env1 = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1))) end + if boot_envvar2 then env2 = luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar2)) end + if env1 and env1 == boot_envvar1_partition_one then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. boot_envvar1_partition_two) end + if env1 and env1 == boot_envvar1_partition_two then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. boot_envvar1_partition_one) end + if env2 and env2 == boot_envvar2_partition_one then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. boot_envvar2_partition_two .. "'") end + if env2 and env2 == boot_envvar2_partition_two then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. boot_envvar2_partition_one .. "'") end + luci.sys.reboot() + end +end + +function action_poweroff() + if luci.http.formvalue("cancel") then + luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot')) + return + end + local step = tonumber(luci.http.formvalue("step") or 1) + if step == 1 then + if nixio.fs.access("/sbin/poweroff") then + luci.template.render("advanced_reboot/power_off",{}) + else + luci.template.render("advanced_reboot/advanced_reboot",{}) + end + elseif step == 2 then + luci.template.render("admin_system/applyreboot", { + title = luci.i18n.translate("Shutting down..."), + msg = luci.i18n.translate("The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It might be necessary to renew the address of your computer to reach the device again, depending on your settings."), + addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1" + }) + luci.sys.call("/sbin/poweroff") + end +end 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 new file mode 100644 index 0000000000..206d250543 --- /dev/null +++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm @@ -0,0 +1,92 @@ +<%# + Copyright 2008 Steven Barth <steven@midlink.org> + Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org> + Copyright 2017 Stan Grishin <stangri@melmac.net> + Licensed to the public under the Apache License 2.0. +-%> + +<%+header%> + +<h2 name="content"><%:Advanced Reboot%></h2> +<br /> + +<%- local c = require("luci.model.uci").cursor():changes(); if c and next(c) then -%> + <p class="alert-message warning"><%:Warning: There are unsaved changes that will get lost on reboot!%></p> +<%- end -%> + +<%- 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> + <%=boot_envvar1_partition_one%> + </td> + <td> + <%- if boot_envvar1_partition_one == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%> + </td> + <td> + <%=partition_one_os%> + </td> + <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%>" /> + <input id="reboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to current partition%>" /> + </form> + <%- else -%> + <form method="post" action="<%=url('admin/system/advanced_reboot/alternative_reboot')%>"> + <input type="hidden" name="token" value="<%=token%>" /> + <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> + <%=boot_envvar1_partition_two%> + </td> + <td> + <%- if boot_envvar1_partition_two == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%> + </td> + <td> + <%=partition_two_os%> + </td> + <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%>" /> + <input id="reboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to current partition%>" /> + </form> + <%- else -%> + <form method="post" action="<%=url('admin/system/advanced_reboot/alternative_reboot')%>"> + <input type="hidden" name="token" value="<%=token%>" /> + <input id="altreboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to alternative partition...%>" /> + </form> + <%- end -%> + </td> + </tr> + </table> +</fieldset> +<%- else -%> + <p class="alert-message warning"><%:Warning: This system does not have two partitions!%></p> +<%- end -%> + +<hr /> + +<%- if nixio.fs.access("/sbin/poweroff") then -%> +<form method="post" action="<%=url('admin/system/advanced_reboot/power_off')%>"> + <input type="hidden" name="token" value="<%=token%>" /> + <input id="poweroff-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Perform power off...%>" /> +</form> +<%- else -%> + <p class="alert-message warning"><%:Warning: This system does not support powering off!%></p> +<%- end -%> + +<%+footer%> diff --git a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm new file mode 100644 index 0000000000..6325934094 --- /dev/null +++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm @@ -0,0 +1,29 @@ +<%# + Copyright 2008 Steven Barth <steven@midlink.org> + Copyright 2008-2009 Jo-Philipp Wich <jow@openwrt.org> + Copyright 2017 Stan Grishin <stangri@melmac.net> + Licensed to the public under the Apache License 2.0. +-%> + +<%+header%> + +<h2 name="content"><%:Reboot Device to an Alternative Partition%> - <%:Confirm%></h2> +<p> + <%_ WARNING: An alternative partition might have its own settings and completely different firmware.<br /><br /> + As your network configuration and WiFi SSID/password on alternative partition might be different, + you might have to adjust your computer settings to be able to access your device once it reboots.<br /><br /> + Please also be aware that alternative partition firmware might not provide an easy way to switch active partition + and boot back to the currently active partition.<br /><br /> + Click "Proceed" below to reboot device to an alternative partition. %> +</p> + +<div class="cbi-page-actions right"> + <form class="inline" action="<%=REQUEST_URI%>" method="post"> + <input type="hidden" name="token" value="<%=token%>" /> + <input type="hidden" name="step" value="2" /> + <input class="cbi-button cbi-button-reset" name="cancel" type="submit" value="<%:Cancel%>" /> + <input class="cbi-button cbi-button-apply" type="submit" value="<%:Proceed%>" /> + </form> +</div> + +<%+footer%> diff --git a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm new file mode 100644 index 0000000000..0ddea11e65 --- /dev/null +++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm @@ -0,0 +1,25 @@ +<%# + Copyright 2008 Steven Barth <steven@midlink.org> + Copyright 2008-2009 Jo-Philipp Wich <jow@openwrt.org> + Copyright 2017 Stan Grishin <stangri@melmac.net> + Licensed to the public under the Apache License 2.0. +-%> + +<%+header%> + +<h2 name="content"><%:Power Off Device%> - <%:Confirm%></h2> +<p> + <%_ WARNING: Power off might result in a reboot on a device which doesn't support power off.<br /><br /> + Click "Proceed" below to power off your device. %> +</p> + +<div class="cbi-page-actions right"> + <form class="inline" action="<%=REQUEST_URI%>" method="post"> + <input type="hidden" name="token" value="<%=token%>" /> + <input type="hidden" name="step" value="2" /> + <input class="cbi-button cbi-button-reset" name="cancel" type="submit" value="<%:Cancel%>" /> + <input class="cbi-button cbi-button-apply" type="submit" value="<%:Proceed%>" /> + </form> +</div> + +<%+footer%> diff --git a/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot b/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot new file mode 100644 index 0000000000..9c810892c2 --- /dev/null +++ b/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot @@ -0,0 +1,102 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "Action" +msgstr "" + +msgid "Advanced Reboot" +msgstr "" + +msgid "Alternative" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "Confirm" +msgstr "" + +msgid "Current" +msgstr "" + +msgid "Firmware/OS (Kernel)" +msgstr "" + +msgid "Partition" +msgstr "" + +msgid "Partitions" +msgstr "" + +msgid "Perform power off..." +msgstr "" + +msgid "Power Off Device" +msgstr "" + +msgid "Proceed" +msgstr "" + +msgid "Reboot Device to an Alternative Partition" +msgstr "" + +msgid "Reboot to alternative partition..." +msgstr "" + +msgid "Reboot to current partition" +msgstr "" + +msgid "Rebooting..." +msgstr "" + +msgid "Shutting down..." +msgstr "" + +msgid "Status" +msgstr "" + +msgid "" +"The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a " +"few minutes before you try to reconnect. It might be necessary to renew the " +"address of your computer to reach the device again, depending on your " +"settings." +msgstr "" + +msgid "" +"The system is rebooting to an alternative partition now.<br /> DO NOT POWER " +"OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It " +"might be necessary to renew the address of your computer to reach the device " +"again, depending on your settings." +msgstr "" + +msgid "" +"The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It " +"might be necessary to renew the address of your computer to reach the device " +"again, depending on your settings." +msgstr "" + +msgid "" +"WARNING: An alternative partition might have its own settings and completely " +"different firmware.<br /><br /> As your network configuration and WiFi SSID/" +"password on alternative partition might be different, you might have to " +"adjust your computer settings to be able to access your device once it " +"reboots.<br /><br /> Please also be aware that alternative partition " +"firmware might not provide an easy way to switch active partition and boot " +"back to the currently active partition.<br /><br /> Click \"Proceed\" below " +"to reboot device to an alternative partition." +msgstr "" + +msgid "" +"WARNING: Power off might result in a reboot on a device which doesn't " +"support power off.<br /><br /> Click \"Proceed\" below to power off your " +"device." +msgstr "" + +msgid "Warning: There are unsaved changes that will get lost on reboot!" +msgstr "" + +msgid "Warning: This system does not have two partitions!" +msgstr "" + +msgid "Warning: This system does not support powering off!" +msgstr "" diff --git a/applications/luci-app-aria2/po/sv/aria2.po b/applications/luci-app-aria2/po/sv/aria2.po new file mode 100644 index 0000000000..a7f41f250d --- /dev/null +++ b/applications/luci-app-aria2/po/sv/aria2.po @@ -0,0 +1,208 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "\"Falloc\" is not available in all cases." +msgstr "" + +msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled" +msgstr "" + +msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled" +msgstr "" + +msgid "Additional Bt tracker enabled" +msgstr "" + +msgid "Aria2" +msgstr "Aria2" + +msgid "Aria2 Settings" +msgstr "Inställningar för Aria2" + +msgid "Aria2 Status" +msgstr "Status för Aria2" + +msgid "" +"Aria2 is a multi-protocol & multi-source download utility, here you can " +"configure the settings." +msgstr "Aria2 är ett verktyg för multiprotokoll & multi-käll" + +msgid "Autosave session interval" +msgstr "" + +msgid "BitTorrent Settings" +msgstr "Inställningar för BitTorrent" + +msgid "BitTorrent listen port" +msgstr "Lyssningsport för BitTorrent" + +msgid "Collecting data..." +msgstr "Samlar in data..." + +msgid "Config file directory" +msgstr "Ställ in fil-mapp" + +msgid "Debug" +msgstr "Avlusa" + +msgid "Default download directory" +msgstr "Standard nerladdningsmapp" + +msgid "Disk cache" +msgstr "Disk-cache" + +msgid "Enable log" +msgstr "Aktivera logg" + +msgid "Enabled" +msgstr "Aktiverad" + +msgid "Error" +msgstr "Fel" + +msgid "Extra Settings" +msgstr "Extra inställningar" + +msgid "Falloc" +msgstr "Falloc" + +msgid "Files and Locations" +msgstr "Filer och Platser" + +msgid "Follow torrent" +msgstr "Följ torrenten" + +msgid "General Settings" +msgstr "Generella inställningar" + +msgid "Generate Randomly" +msgstr "Generera slumpmässigt" + +msgid "Info" +msgstr "Info" + +msgid "List of additional Bt tracker" +msgstr "" + +msgid "List of extra settings" +msgstr "" + +msgid "Log file is in the config file dir." +msgstr "Logg-filen är i konfigurationsfilens mapp." + +msgid "Log level" +msgstr "Loggningsnivå" + +msgid "Max concurrent downloads" +msgstr "Maximalt sammanhängande nerladdningar" + +msgid "Max connection per server" +msgstr "Max antalet anslutningar per server" + +msgid "Max number of peers per torrent" +msgstr "Maximalt antalet jämlikar per torrent" + +msgid "Max number of split" +msgstr "" + +msgid "Min split size" +msgstr "" + +msgid "No Authentication" +msgstr "Ingen autentisering" + +msgid "Notice" +msgstr "Avisering" + +msgid "Off" +msgstr "Av" + +msgid "Open WebUI-Aria2" +msgstr "" + +msgid "Open YAAW" +msgstr "Öppna YAAW" + +msgid "Overall download limit" +msgstr "" + +msgid "Overall speed limit enabled" +msgstr "" + +msgid "Overall upload limit" +msgstr "" + +msgid "Per task download limit" +msgstr "" + +msgid "Per task speed limit enabled" +msgstr "" + +msgid "Per task upload limit" +msgstr "" + +msgid "Prealloc" +msgstr "Prealloc" + +msgid "Preallocation" +msgstr "" + +msgid "Prefix of peer ID" +msgstr "" + +msgid "RPC Token" +msgstr "" + +msgid "RPC authentication method" +msgstr "" + +msgid "RPC password" +msgstr "RPC-lösenord" + +msgid "RPC port" +msgstr "RPC-port" + +msgid "RPC username" +msgstr "RPC-användarnamn" + +msgid "Run daemon as user" +msgstr "Kör daemonen som användare" + +msgid "Sec" +msgstr "Sek" + +msgid "Task Settings" +msgstr "" + +msgid "The Aria2 service is not running." +msgstr "Aria2-tjänsten körs inte." + +msgid "The Aria2 service is running." +msgstr "Aria2-tjänsten körs." + +msgid "Token" +msgstr "" + +msgid "Trunc" +msgstr "" + +msgid "Use WebSocket" +msgstr "Använd WebSocket" + +msgid "User agent value" +msgstr "Använd agent-värde" + +msgid "Username & Password" +msgstr "Användarnamn & Lösenord" + +msgid "View Json-RPC URL" +msgstr "" + +msgid "Warn" +msgstr "Varna" + +msgid "in bytes, You can append K or M." +msgstr "" + +msgid "in bytes/sec, You can append K or M." +msgstr "" diff --git a/applications/luci-app-clamav/po/sv/clamav.po b/applications/luci-app-clamav/po/sv/clamav.po new file mode 100644 index 0000000000..589d5f9aa3 --- /dev/null +++ b/applications/luci-app-clamav/po/sv/clamav.po @@ -0,0 +1,119 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "10" +msgstr "10" + +msgid "1024" +msgstr "1024" + +msgid "15" +msgstr "15" + +msgid "150M" +msgstr "150M" + +msgid "1M" +msgstr "1M" + +msgid "20" +msgstr "20" + +msgid "2048" +msgstr "2048" + +msgid "2M" +msgstr "2M" + +msgid "50M" +msgstr "50M" + +msgid "512K" +msgstr "512K" + +msgid "600" +msgstr "600" + +msgid "Block encrypted archives" +msgstr "Blockera krypterade arkiv" + +msgid "ClamAV" +msgstr "ClamAV" + +msgid "Database check every N sec" +msgstr "" + +msgid "Detect broken executables" +msgstr "" + +msgid "Detect possibly unwanted apps" +msgstr "Upptäck möjliga oönskade appar" + +msgid "Enable verbose logging" +msgstr "Aktivera utförlig loggning" + +msgid "Follow directory symlinks" +msgstr "" + +msgid "Follow file symlinks" +msgstr "" + +msgid "Log" +msgstr "Logg" + +msgid "Log additional infection info" +msgstr "" + +msgid "Log time with each message" +msgstr "" + +msgid "Max directory scan depth" +msgstr "" + +msgid "Max number of threads" +msgstr "Maximalt antalet trådar" + +msgid "Max size of log file" +msgstr "" + +msgid "Max size of scanned file" +msgstr "" + +msgid "No" +msgstr "Nej" + +msgid "Port range, highest port" +msgstr "" + +msgid "Port range, lowest port" +msgstr "" + +msgid "Scan ELF files" +msgstr "Sök igenom ELF-filer" + +msgid "Scan MS Office and .msi files" +msgstr "Sök igen MS Office och .msi-filer" + +msgid "Scan RFC1341 messages split over many emails" +msgstr "Sök igen RFC1341-meddelanden uppdelade över många e-postmeddelanden" + +msgid "Scan archives" +msgstr "Sök igenom arkiven" + +msgid "Scan emails" +msgstr "Sök igenom e-postmeddelanden" + +msgid "Scan pdf files" +msgstr "Sök igenom pdf-filer" + +msgid "Scan portable executables" +msgstr "" + +msgid "Scan swf files" +msgstr "Sök igenom swf-filer" + +msgid "Settings" +msgstr "Inställningar" + +msgid "Yes" +msgstr "Ja" diff --git a/applications/luci-app-commands/Makefile b/applications/luci-app-commands/Makefile index dc5d0ca849..f41d6e2d42 100644 --- a/applications/luci-app-commands/Makefile +++ b/applications/luci-app-commands/Makefile @@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI Shell Command Module LUCI_DEPENDS:= +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-commands/po/sv/commands.po b/applications/luci-app-commands/po/sv/commands.po index 5a4c255e4a..8cb1923e29 100644 --- a/applications/luci-app-commands/po/sv/commands.po +++ b/applications/luci-app-commands/po/sv/commands.po @@ -10,98 +10,102 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "A short textual description of the configured command" -msgstr "" +msgstr "En kort textuell beskrivning av det inställda kommandot" msgid "" "Allow executing the command and downloading its output without prior " "authentication" msgstr "" +"Tillåt att kommandot kan köras och ladda ner dess utmatning utan föregående " +"autentisering" msgid "Allow the user to provide additional command line arguments" -msgstr "" +msgstr "Tillåt användaren att tillge extra kommandoradsargument" msgid "Arguments:" -msgstr "" +msgstr "Argument:" msgid "Binary data not displayed, download instead." -msgstr "" +msgstr "Binärdatan visades inte, ladda ner istället." msgid "Code:" -msgstr "" +msgstr "Kod:" msgid "Collecting data..." -msgstr "" +msgstr "Samlar in data..." msgid "Command" -msgstr "" +msgstr "Kommando" msgid "Command executed successfully." -msgstr "" +msgstr "Kommandot utfördes korrekt" msgid "Command exited with status code" -msgstr "" +msgstr "Kommandot avslutade med statuskod" msgid "Command failed" -msgstr "" +msgstr "Kommandot misslyckades" msgid "Command line to execute" -msgstr "" +msgstr "Kommandorad att exekvera" msgid "Command successful" -msgstr "" +msgstr "Kommandot lyckades" msgid "Command:" -msgstr "" +msgstr "Kommando:" msgid "Configure" -msgstr "" +msgstr "Ställ in" msgid "Custom Commands" -msgstr "" +msgstr "Anpassade kommandon" msgid "Custom arguments" -msgstr "" +msgstr "Anpassade argument" msgid "Dashboard" -msgstr "" +msgstr "Instrumentpanel" msgid "Description" -msgstr "" +msgstr "Beskrivning" msgid "Download" -msgstr "" +msgstr "Ladda ner" msgid "Download execution result" -msgstr "" +msgstr "Resultatet av nerladdningen" msgid "Failed to execute command!" -msgstr "" +msgstr "Misslyckade med att köra kommando!" msgid "Link" -msgstr "" +msgstr "Länk" msgid "Loading" -msgstr "" +msgstr "Laddar" msgid "Or display result" -msgstr "" +msgstr "Eller visa resultat" msgid "Public access" -msgstr "" +msgstr "Publik tillgång" msgid "Run" -msgstr "" +msgstr "Kör" msgid "Standard Error" -msgstr "" +msgstr "Standardfel" msgid "Standard Output" -msgstr "" +msgstr "Standardinmatning" msgid "" "This page allows you to configure custom shell commands which can be easily " "invoked from the web interface." msgstr "" +"Den här sidan tillåter dig att ställa in anpassade skalkommandon som lättast kan " +"åberopas från webbgränssnittet." msgid "Waiting for command to complete..." -msgstr "" +msgstr "Väntar på att kommandot ska slutföras..." diff --git a/applications/luci-app-ddns/po/sv/ddns.po b/applications/luci-app-ddns/po/sv/ddns.po new file mode 100644 index 0000000000..780a2f9c8f --- /dev/null +++ b/applications/luci-app-ddns/po/sv/ddns.po @@ -0,0 +1,718 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "&" +msgstr "&" + +msgid "-- custom --" +msgstr "-- anpassad --" + +msgid "-- default --" +msgstr "-- standard --" + +msgid "Advanced Settings" +msgstr "Avancerade inställningar" + +msgid "Allow non-public IP's" +msgstr "Tillåt icke-publika IP-adresser" + +msgid "Applying changes" +msgstr "Verkställer ändringar" + +msgid "Basic Settings" +msgstr "Standardinställningar" + +msgid "" +"Below a list of configuration tips for your system to run Dynamic DNS " +"updates without limitations" +msgstr "" + +msgid "" +"Below is a list of configured DDNS configurations and their current state." +msgstr "" + +msgid "Bind Network" +msgstr "" + +msgid "Binding to a specific network not supported" +msgstr "" + +msgid "" +"BusyBox's nslookup and Wget do not support to specify the IP version to use " +"for communication with DDNS Provider!" +msgstr "" + +msgid "" +"BusyBox's nslookup and hostip do not support to specify to use TCP instead " +"of default UDP when requesting DNS server!" +msgstr "" + +msgid "" +"BusyBox's nslookup in the current compiled version does not handle given DNS " +"Servers correctly!" +msgstr "" + +msgid "Casual users should not change this setting" +msgstr "" + +msgid "Change provider" +msgstr "Byt operatör" + +msgid "Check Interval" +msgstr "Kontroll-intervall" + +msgid "Collecting data..." +msgstr "Samlar in data..." + +msgid "Config error" +msgstr "Konfigurationsfel" + +msgid "Configuration" +msgstr "Konfiguration" + +msgid "" +"Configure here the details for all Dynamic DNS services including this LuCI " +"application." +msgstr "" + +msgid "Configure here the details for selected Dynamic DNS service." +msgstr "" + +msgid "Current setting" +msgstr "Nuvarande inställning" + +msgid "" +"Currently DDNS updates are not started at boot or on interface events.<br /" +">This is the default if you run DDNS scripts by yourself (i.e. via cron with " +"force_interval set to '0')" +msgstr "" + +msgid "" +"Currently DDNS updates are not started at boot or on interface events.<br /" +">You can start/stop each configuration here. It will run until next reboot." +msgstr "" + +msgid "Custom update script to be used for updating your DDNS Provider." +msgstr "" + +msgid "Custom update-URL" +msgstr "Anpassad webbadress för uppdatering" + +msgid "Custom update-script" +msgstr "Anpassat uppdateringsskript" + +msgid "DDNS Autostart disabled" +msgstr "" + +msgid "DDNS Client Configuration" +msgstr "" + +msgid "DDNS Client Documentation" +msgstr "" + +msgid "DDNS Service provider" +msgstr "" + +msgid "DNS requests via TCP not supported" +msgstr "" + +msgid "DNS-Server" +msgstr "DNS-server" + +msgid "Date format" +msgstr "Datumformat" + +msgid "Defines the Web page to read systems IPv4-Address from" +msgstr "" + +msgid "Defines the Web page to read systems IPv6-Address from" +msgstr "" + +msgid "Defines the interface to read systems IP-Address from" +msgstr "" + +msgid "Defines the network to read systems IPv4-Address from" +msgstr "" + +msgid "Defines the network to read systems IPv6-Address from" +msgstr "" + +msgid "" +"Defines the source to read systems IPv4-Address from, that will be send to " +"the DDNS provider" +msgstr "" + +msgid "" +"Defines the source to read systems IPv6-Address from, that will be send to " +"the DDNS provider" +msgstr "" + +msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" +msgstr "" + +msgid "Details for" +msgstr "Detaljer för" + +msgid "Directory contains Log files for each running section" +msgstr "" + +msgid "" +"Directory contains PID and other status information for each running section" +msgstr "" + +msgid "Disabled" +msgstr "Inaktivera" + +msgid "Domain" +msgstr "Domän" + +msgid "Dynamic DNS" +msgstr "Dynamisk DNS" + +msgid "" +"Dynamic DNS allows that your router can be reached with a fixed hostname " +"while having a dynamically changing IP address." +msgstr "" + +msgid "Enable secure communication with DDNS provider" +msgstr "" + +msgid "Enabled" +msgstr "Aktiverad" + +msgid "Error" +msgstr "Fel" + +msgid "Error Retry Counter" +msgstr "" + +msgid "Error Retry Interval" +msgstr "" + +msgid "Event Network" +msgstr "" + +msgid "File" +msgstr "Fil" + +msgid "File not found" +msgstr "Filen hittades inte" + +msgid "File not found or empty" +msgstr "Filen hittades inte eller tom" + +msgid "" +"Follow this link<br />You will find more hints to optimize your system to " +"run DDNS scripts with all options" +msgstr "" + +msgid "For detailed information about parameter settings look here." +msgstr "" + +msgid "For supported codes look here" +msgstr "" + +msgid "Force IP Version" +msgstr "Tvinga IP-version" + +msgid "Force IP Version not supported" +msgstr "Påtvingad IP-version stöds inte" + +msgid "Force Interval" +msgstr "" + +msgid "Force TCP on DNS" +msgstr "" + +msgid "Forced IP Version don't matched" +msgstr "" + +msgid "Format" +msgstr "Format" + +msgid "Format: IP or FQDN" +msgstr "Format: IP eller FQDN" + +msgid "" +"GNU Wget will use the IP of given network, cURL will use the physical " +"interface." +msgstr "" +"GNU Wget kommer att använda IP-adressen för det angivna nätverket, cURL kommer att använda det fysiska " +"gränssnittet." + +msgid "Global Settings" +msgstr "Globala inställningar" + +msgid "HTTPS not supported" +msgstr "HTTPS stöds inte" + +msgid "Hints" +msgstr "Ledtrådar" + +msgid "Hostname/FQDN to validate, if IP update happen or necessary" +msgstr "" + +msgid "IP address source" +msgstr "IP-adressens källa" + +msgid "IP address version" +msgstr "Version för IP-adress" + +msgid "IPv4-Address" +msgstr "IPv4-adress" + +msgid "IPv6 address must be given in square brackets" +msgstr "" + +msgid "" +"IPv6 is currently not (fully) supported by this system<br />Please follow " +"the instructions on OpenWrt's homepage to enable IPv6 support<br />or update " +"your system to the latest OpenWrt Release" +msgstr "" + +msgid "IPv6 not supported" +msgstr "IPv6 stöds inte" + +msgid "IPv6-Address" +msgstr "IPv6-adress" + +msgid "If both cURL and GNU Wget are installed, Wget is used by default." +msgstr "Om både cURL och GNU Wget är installerade så används Wget som standard." + +msgid "" +"If this service section is disabled it could not be started.<br />Neither " +"from LuCI interface nor from console" +msgstr "" + +msgid "If using secure communication you should verify server certificates!" +msgstr "" + +msgid "" +"If you want to send updates for IPv4 and IPv6 you need to define two " +"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" +msgstr "" + +msgid "" +"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." +msgstr "" + +msgid "Info" +msgstr "Info" + +msgid "" +"Install 'ca-certificates' package or needed certificates by hand into /etc/" +"ssl/certs default directory" +msgstr "" + +msgid "Interface" +msgstr "Gränssnitt" + +msgid "" +"Interval to check for changed IP<br />Values below 5 minutes == 300 seconds " +"are not supported" +msgstr "" + +msgid "" +"Interval to force updates send to DDNS Provider<br />Setting this parameter " +"to 0 will force the script to only run once<br />Values lower 'Check " +"Interval' except '0' are not supported" +msgstr "" + +msgid "It is NOT recommended for casual users to change settings on this page." +msgstr "Det är INTE rekommenderat för vanliga användare att ändra inställningar på den här sidan." + +msgid "Last Update" +msgstr "Senaste uppdateringen" + +msgid "Loading" +msgstr "Laddar" + +msgid "Log File Viewer" +msgstr "Visare för loggfil" + +msgid "Log directory" +msgstr "" + +msgid "Log length" +msgstr "Loggens längd" + +msgid "Log to file" +msgstr "Logga till fil" + +msgid "Log to syslog" +msgstr "Logga till syslog" + +msgid "Lookup Hostname" +msgstr "Kolla upp värdnamn" + +msgid "NOT installed" +msgstr "INTE installerad" + +msgid "" +"Neither GNU Wget with SSL nor cURL installed to select a network to use for " +"communication." +msgstr "" + +msgid "" +"Neither GNU Wget with SSL nor cURL installed to support secure updates via " +"HTTPS protocol." +msgstr "" + +msgid "Network" +msgstr "Nätverk" + +msgid "Network on which the ddns-updater scripts will be started" +msgstr "" + +msgid "Never" +msgstr "Aldrig" + +msgid "Next Update" +msgstr "Nästa uppdatering" + +msgid "No certificates found" +msgstr "Inga ceritifikat hittades" + +msgid "No data" +msgstr "Ingen data" + +msgid "No logging" +msgstr "Ingen loggning" + +msgid "Non-public and by default blocked IP's" +msgstr "" + +msgid "Notice" +msgstr "" + +msgid "Number of last lines stored in log files" +msgstr "" + +msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." +msgstr "" + +msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." +msgstr "" + +msgid "OPTIONAL: Network to use for communication" +msgstr "" + +msgid "OPTIONAL: Proxy-Server for detection and updates." +msgstr "" + +msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." +msgstr "" + +msgid "On Error the script will retry the failed action after given time" +msgstr "" + +msgid "On Error the script will stop execution after given number of retrys" +msgstr "" + +msgid "OpenWrt Wiki" +msgstr "Wiki för OpenWrt" + +msgid "Optional Encoded Parameter" +msgstr "" + +msgid "Optional Parameter" +msgstr "Valfri parameter" + +msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" +msgstr "" + +msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" +msgstr "" + +msgid "Overview" +msgstr "" + +msgid "PROXY-Server" +msgstr "PROXY-server" + +msgid "PROXY-Server not supported" +msgstr "PROXY-servern stöds inte" + +msgid "Password" +msgstr "Lösenord" + +msgid "Path to CA-Certificate" +msgstr "" + +msgid "Please [Save & Apply] your changes first" +msgstr "Vänligen [Spara & Verkställ] dina ändringar först" + +msgid "Please press [Read] button" +msgstr "Vänligen tryck på [Läs]-knappen" + +msgid "Please update to the current version!" +msgstr "Vänligen uppdatera till den senaste versionen!" + +msgid "Process ID" +msgstr "" + +msgid "Read / Reread log file" +msgstr "Läs / Läs om loggfilen" + +msgid "Really change DDNS provider?" +msgstr "" + +msgid "Registered IP" +msgstr "Registrerad IP" + +msgid "Replaces [DOMAIN] in Update-URL" +msgstr "" + +msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" +msgstr "" + +msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" +msgstr "" + +msgid "Run once" +msgstr "Kör en gång" + +msgid "Script" +msgstr "Skript" + +msgid "Show more" +msgstr "Visa mer" + +msgid "Software update required" +msgstr "" + +msgid "Specifying a DNS-Server is not supported" +msgstr "" + +msgid "Start" +msgstr "Starta" + +msgid "Start / Stop" +msgstr "Starta / Stoppa" + +msgid "Status directory" +msgstr "" + +msgid "Stopped" +msgstr "Stoppad" + +msgid "" +"The currently installed 'ddns-scripts' package did not support all available " +"settings." +msgstr "" + +msgid "The default setting of '0' will retry infinite." +msgstr "" + +msgid "There is no service configured." +msgstr "Det finns ingen tjänst inställd." + +msgid "Timer Settings" +msgstr "" + +msgid "To change global settings click here" +msgstr "Klicka här för att ändra på globala inställningar" + +msgid "To use cURL activate this option." +msgstr "" + +msgid "URL" +msgstr "Webbadress" + +msgid "URL to detect" +msgstr "Webbadress att upptäcka" + +msgid "Unknown error" +msgstr "Okänt fel" + +msgid "" +"Update URL to be used for updating your DDNS Provider.<br />Follow " +"instructions you will find on their WEB page." +msgstr "" + +msgid "Update error" +msgstr "Uppdateringsfel" + +msgid "Use HTTP Secure" +msgstr "Använd Säker HTTP" + +msgid "Use cURL" +msgstr "Använd cURL" + +msgid "User defined script to read systems IP-Address" +msgstr "" + +msgid "Username" +msgstr "Användarnamn" + +msgid "Using specific DNS Server not supported" +msgstr "" + +msgid "Verify" +msgstr "Verkställ" + +msgid "Version" +msgstr "Version" + +msgid "Version Information" +msgstr "Information om versionen" + +msgid "Waiting for changes to be applied..." +msgstr "Väntar på att ändringarna ska bli verkställda..." + +msgid "Warning" +msgstr "Varning" + +msgid "" +"Writes detailed messages to log file. File will be truncated automatically." +msgstr "" + +msgid "" +"Writes log messages to syslog. Critical Errors will always be written to " +"syslog." +msgstr "" + +msgid "" +"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' " +"package, if you need to specify a DNS server to detect your registered IP." +msgstr "" + +msgid "" +"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " +"requests." +msgstr "" + +msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." +msgstr "" + +msgid "" +"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" +"*ssl' package." +msgstr "" + +msgid "You should install 'wget' or 'curl' package." +msgstr "" + +msgid "" +"You should install 'wget' or 'uclient-fetch' package or replace libcurl." +msgstr "" + +msgid "cURL is installed, but libcurl was compiled without proxy support." +msgstr "" + +msgid "cURL without Proxy Support" +msgstr "cURL utan Proxy-stöd" + +msgid "can not detect local IP. Please select a different Source combination" +msgstr "kan inte upptäcka lokal IP-adress. Vänligen välj en annorlunda Käll-kombination" + +msgid "can not resolve host:" +msgstr "kan inte avgöra värd:" + +msgid "config error" +msgstr "konfigurationsfel" + +msgid "days" +msgstr "dagar" + +msgid "directory or path/file" +msgstr "" + +msgid "either url or script could be set" +msgstr "kunde varken fastställa webbadress eller skript" + +msgid "enable here" +msgstr "aktivera här" + +msgid "file or directory not found or not 'IGNORE'" +msgstr "" + +msgid "help" +msgstr "hjälp" + +msgid "hours" +msgstr "timmar" + +msgid "installed" +msgstr "installerad" + +msgid "invalid FQDN / required - Sample" +msgstr "ogiltig FQDN / behövs - Urval" + +msgid "minimum value '0'" +msgstr "minimalt värde '0'" + +msgid "minimum value '1'" +msgstr "minimalt värde '1'" + +msgid "minimum value 5 minutes == 300 seconds" +msgstr "minimalt värde 5 minuter == 300 sekunder" + +msgid "minutes" +msgstr "minutrar" + +msgid "missing / required" +msgstr "saknas / behövs" + +msgid "must be greater or equal 'Check Interval'" +msgstr "" + +msgid "must start with 'http://'" +msgstr "måste börja med 'http://" + +msgid "nc (netcat) can not connect" +msgstr "nc (netcat) kan inte ansluta" + +msgid "never" +msgstr "aldrig" + +msgid "no data" +msgstr "ingen data" + +msgid "not found or not executable - Sample: '/path/to/script.sh'" +msgstr "" + +msgid "nslookup can not resolve host" +msgstr "" + +msgid "or" +msgstr "eller" + +msgid "or higher" +msgstr "eller större" + +msgid "please disable" +msgstr "vänligen inaktivera" + +msgid "please remove entry" +msgstr "vänligen ta bort inmatningen" + +msgid "please select 'IPv4' address version" +msgstr "vänligen välj version för 'IPv4'-adress" + +msgid "please select 'IPv4' address version in" +msgstr "" + +msgid "please set to 'default'" +msgstr "" + +msgid "proxy port missing" +msgstr "" + +msgid "required" +msgstr "behövs" + +msgid "seconds" +msgstr "sekunder" + +msgid "to run HTTPS without verification of server certificates (insecure)" +msgstr "för att köra HTTPS utan verifiering av server-certifikaten (osäkert)" + +msgid "unknown error" +msgstr "okänt fel" + +msgid "unspecific error" +msgstr "ospecifierat fel" + +msgid "use hostname, FQDN, IPv4- or IPv6-Address" +msgstr "använd värdnamn, FQDN, IPv4- eller IPv6-adress" diff --git a/applications/luci-app-diag-core/po/sv/diag_core.po b/applications/luci-app-diag-core/po/sv/diag_core.po index dd0a81a644..b5679655d0 100644 --- a/applications/luci-app-diag-core/po/sv/diag_core.po +++ b/applications/luci-app-diag-core/po/sv/diag_core.po @@ -10,10 +10,10 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "Configure Diagnostics" -msgstr "" +msgstr "Ställ in diagnostik" msgid "Diagnostics" -msgstr "" +msgstr "Diagnostik" msgid "" "The diagnostics available under this menu depend on what modules you have " @@ -29,3 +29,5 @@ msgid "" "With this menu you can configure network diagnostics, such as network device " "scans and ping tests." msgstr "" +"Med den här menyn så kan du ställa in nätverksdiagnostik så som igenomsökningar och " +"ping-tester för nätverksenheten." diff --git a/applications/luci-app-firewall/Makefile b/applications/luci-app-firewall/Makefile index 21804d7c2d..4fa85f2d5b 100644 --- a/applications/luci-app-firewall/Makefile +++ b/applications/luci-app-firewall/Makefile @@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Firewall and Portforwarding application LUCI_DEPENDS:=+firewall +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature 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 500d1bf32f..7553504572 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 @@ -21,7 +21,7 @@ nw.init(m.uci) local zone = fw:get_zone(arg[1]) if not zone then - luci.http.redirect(dsp.build_url("admin/network/firewall/zones")) + luci.http.redirect(ds.build_url("admin/network/firewall/zones")) return else m.title = "%s - %s" %{ diff --git a/applications/luci-app-firewall/po/sv/firewall.po b/applications/luci-app-firewall/po/sv/firewall.po index 2e169fb927..777c81787d 100644 --- a/applications/luci-app-firewall/po/sv/firewall.po +++ b/applications/luci-app-firewall/po/sv/firewall.po @@ -10,43 +10,43 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "%s in %s" -msgstr "" +msgstr "%s i %s" msgid "%s%s with %s" -msgstr "" +msgstr "%s%s med %s" msgid "%s, %s in %s" -msgstr "" +msgstr "%2, %s i %s" msgid "(Unnamed Entry)" -msgstr "" +msgstr "(Namnlös post)" msgid "(Unnamed Rule)" -msgstr "" +msgstr "(Namnlös regel)" msgid "(Unnamed SNAT)" -msgstr "" +msgstr "(Namnlös SNAT)" msgid "<var>%d</var> pkts. per <var>%s</var>" -msgstr "" +msgstr "<var>%d</var> pkt. per <var>%s</var>" msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts." -msgstr "" +msgstr "<var>%d</var> pkt. per <var>%s</var>, brustna <var>%d</var> pkt." msgid "<var>%s</var> and limit to %s" -msgstr "" +msgstr "<var>%s</var> och gränsen till %s" msgid "Action" -msgstr "" +msgstr "Åtgärd" msgid "Add" -msgstr "" +msgstr "Lägg till" msgid "Add and edit..." -msgstr "" +msgstr "Lägg till och redigera..." msgid "Advanced Settings" -msgstr "" +msgstr "Avancerade inställningar" msgid "Allow forward from <em>source zones</em>:" msgstr "" @@ -55,13 +55,13 @@ msgid "Allow forward to <em>destination zones</em>:" msgstr "" msgid "Any" -msgstr "" +msgstr "Alla" msgid "Covered networks" -msgstr "" +msgstr "Nätverk som omfattas" msgid "Custom Rules" -msgstr "" +msgstr "Anpassade regler" msgid "" "Custom rules allow you to execute arbritary iptables commands which are not " @@ -73,22 +73,22 @@ msgid "Destination IP address" msgstr "" msgid "Destination address" -msgstr "" +msgstr "Destinationsadress" msgid "Destination port" -msgstr "" +msgstr "Destinationsport" msgid "Destination zone" msgstr "" msgid "Do not rewrite" -msgstr "" +msgstr "Skriv inte om igen" msgid "Drop invalid packets" -msgstr "" +msgstr "Släpp ogiltiga paket" msgid "Enable" -msgstr "" +msgstr "Aktivera" msgid "Enable NAT Loopback" msgstr "" @@ -100,22 +100,22 @@ msgid "Enable logging on this zone" msgstr "" msgid "External IP address" -msgstr "" +msgstr "Extern IP-adress" msgid "External port" -msgstr "" +msgstr "Extern port" msgid "External zone" -msgstr "" +msgstr "Extern zon" msgid "Extra arguments" -msgstr "" +msgstr "Extra argument" msgid "Firewall" -msgstr "" +msgstr "Brandvägg" msgid "Firewall - Custom Rules" -msgstr "" +msgstr "Brandvägg - Anpassade regler" msgid "Firewall - Port Forwards" msgstr "" @@ -130,16 +130,16 @@ msgid "Force connection tracking" msgstr "" msgid "Forward" -msgstr "" +msgstr "Vidarebefordra" msgid "Forward to" -msgstr "" +msgstr "Vidarebefordra till" msgid "Friday" -msgstr "" +msgstr "Fredag" msgid "From %s in %s" -msgstr "" +msgstr "Från %s i %s" msgid "From %s in %s with source %s" msgstr "" @@ -148,40 +148,40 @@ msgid "From %s in %s with source %s and %s" msgstr "" msgid "General Settings" -msgstr "" +msgstr "Generella inställningar" msgid "IPv4" -msgstr "" +msgstr "IPv4" msgid "IPv4 and IPv6" -msgstr "" +msgstr "IPv4 och IPv6" msgid "IPv4 only" -msgstr "" +msgstr "Endast IPv4" msgid "IPv6" -msgstr "" +msgstr "IPv6" msgid "IPv6 only" -msgstr "" +msgstr "Endast IPv6" msgid "Input" -msgstr "" +msgstr "Inmatning" msgid "Inter-Zone Forwarding" msgstr "" msgid "Internal IP address" -msgstr "" +msgstr "Intern IP-adress" msgid "Internal port" -msgstr "" +msgstr "Intern port" msgid "Internal zone" -msgstr "" +msgstr "Intern zon" msgid "Limit log messages" -msgstr "" +msgstr "Begränsa loggmeddelanden" msgid "MSS clamping" msgstr "" @@ -190,7 +190,7 @@ msgid "Masquerading" msgstr "" msgid "Match" -msgstr "" +msgstr "Matcha" msgid "Match ICMP type" msgstr "" @@ -209,22 +209,22 @@ msgid "" msgstr "" msgid "Monday" -msgstr "" +msgstr "Måndag" msgid "Month Days" msgstr "" msgid "Name" -msgstr "" +msgstr "Namn" msgid "New SNAT rule" -msgstr "" +msgstr "Ny SNAT-regel" msgid "New forward rule" -msgstr "" +msgstr "Ny vidarebefordningsregel" msgid "New input rule" -msgstr "" +msgstr "Ny inmatningsregel" msgid "New port forward" msgstr "" @@ -247,13 +247,13 @@ msgid "" msgstr "" msgid "Open ports on router" -msgstr "" +msgstr "Öppna portar i router" msgid "Other..." -msgstr "" +msgstr "Andra..." msgid "Output" -msgstr "" +msgstr "Utmatning" msgid "Passes additional arguments to iptables. Use with care!" msgstr "" @@ -267,7 +267,7 @@ msgid "" msgstr "" msgid "Protocol" -msgstr "" +msgstr "Protokoll" msgid "" "Redirect matched incoming traffic to the given port on the internal host" @@ -277,7 +277,7 @@ msgid "Redirect matched incoming traffic to the specified internal host" msgstr "" msgid "Restart Firewall" -msgstr "" +msgstr "Starta om brandvägg" msgid "Restrict Masquerading to given destination subnets" msgstr "" @@ -286,7 +286,7 @@ msgid "Restrict Masquerading to given source subnets" msgstr "" msgid "Restrict to address family" -msgstr "" +msgstr "Begränsa till adressfamilj" msgid "Rewrite matched traffic to the given address." msgstr "" @@ -297,25 +297,25 @@ msgid "" msgstr "" msgid "Rewrite to source %s" -msgstr "" +msgstr "Skriv om igen till källan %s" msgid "Rewrite to source %s, %s" msgstr "" msgid "SNAT IP address" -msgstr "" +msgstr "IP-adress för SNAT" msgid "SNAT port" -msgstr "" +msgstr "SNAT-port" msgid "Saturday" -msgstr "" +msgstr "Lördag" msgid "Source IP address" -msgstr "" +msgstr "IP-adress för källa" msgid "Source MAC address" -msgstr "" +msgstr "MAC-adress för källa" msgid "Source NAT" msgstr "" @@ -336,19 +336,19 @@ msgid "Source zone" msgstr "" msgid "Start Date (yyyy-mm-dd)" -msgstr "" +msgstr "Startdatum (åååå-mm-dd)" msgid "Start Time (hh:mm:ss)" -msgstr "" +msgstr "Starttid (tt:mm:ss)" msgid "Stop Date (yyyy-mm-dd)" -msgstr "" +msgstr "Stopptid (åååå-mm-dd)" msgid "Stop Time (hh:mm:ss)" -msgstr "" +msgstr "Stopptid (tt:mm:ss)" msgid "Sunday" -msgstr "" +msgstr "Söndag" msgid "" "The firewall creates zones over your network interfaces to control network " @@ -383,22 +383,22 @@ msgid "" msgstr "" msgid "Thursday" -msgstr "" +msgstr "Torsdag" msgid "Time in UTC" -msgstr "" +msgstr "Tid enligt UTC" msgid "To %s at %s on <var>this device</var>" -msgstr "" +msgstr "Till %s vid %s på <var>den här enheten</var>" msgid "To %s in %s" -msgstr "" +msgstr "Till %s i %s" msgid "To %s on <var>this device</var>" -msgstr "" +msgstr "Till %s på <var>den här enheten</var>" msgid "To %s, %s in %s" -msgstr "" +msgstr "Till %s, %s i %s" msgid "To source IP" msgstr "" @@ -407,7 +407,7 @@ msgid "To source port" msgstr "" msgid "Traffic Rules" -msgstr "" +msgstr "Trafikregler" msgid "" "Traffic rules define policies for packets traveling between different zones, " @@ -416,19 +416,19 @@ msgid "" msgstr "" msgid "Tuesday" -msgstr "" +msgstr "Tisdag" msgid "Via %s" -msgstr "" +msgstr "Via %s" msgid "Via %s at %s" msgstr "" msgid "Wednesday" -msgstr "" +msgstr "Onsdag" msgid "Week Days" -msgstr "" +msgstr "Veckodagar" msgid "" "You may specify multiple by selecting \"-- custom --\" and then entering " @@ -436,37 +436,37 @@ msgid "" msgstr "" msgid "Zone %q" -msgstr "" +msgstr "Zon %q" msgid "Zone ⇒ Forwardings" msgstr "" msgid "Zones" -msgstr "" +msgstr "Zoner" msgid "accept" -msgstr "" +msgstr "acceptera" msgid "any" -msgstr "" +msgstr "alla" msgid "any host" -msgstr "" +msgstr "alla värdar" msgid "any router IP" msgstr "" msgid "any zone" -msgstr "" +msgstr "alla zoner" msgid "don't track" -msgstr "" +msgstr "spåra inte" msgid "drop" -msgstr "" +msgstr "släpp" msgid "reject" -msgstr "" +msgstr "neka" msgid "traffic" -msgstr "" +msgstr "trafik" diff --git a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua index d3fd150692..ca39c9bf30 100644 --- a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua +++ b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua @@ -3,7 +3,7 @@ module("luci.controller.mwan3", package.seeall) sys = require "luci.sys" ut = require "luci.util" -ip = "/usr/bin/ip -4 " +ip = "ip -4 " function index() if not nixio.fs.access("/etc/config/mwan3") then diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua index 7e863a371f..aeabc63616 100644 --- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua +++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua @@ -111,8 +111,8 @@ mwan_interface = m5:section(TypedSection, "interface", translate("Interfaces"), "Interfaces may not share the same name as configured members, policies or rules")) mwan_interface.addremove = true mwan_interface.dynamic = false - mwan_interface.sectionhead = "Interface" - mwan_interface.sortable = true + mwan_interface.sectionhead = translate("Interface") + mwan_interface.sortable = false mwan_interface.template = "cbi/tblsection" mwan_interface.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "interface", "%s") function mwan_interface.create(self, section) diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua index e7c16fdfdc..2b46376399 100644 --- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua +++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua @@ -107,9 +107,9 @@ family = mwan_interface:option(ListValue, "family", translate("Internet Protocol family:value("ipv4", translate("IPv4")) family:value("ipv6", translate("IPv6")) -track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking IP"), - translate("This IP address will be pinged to dermine if the link is up or down. Leave blank to assume interface is always online")) - track_ip.datatype = "ipaddr" +track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking hostname or IP address"), + translate("This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to assume interface is always online")) + track_ip.datatype = "host" reliability = mwan_interface:option(Value, "reliability", translate("Tracking reliability"), translate("Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up")) diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua index 3bccbd942f..efbe8f7902 100644 --- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua +++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua @@ -13,7 +13,7 @@ mwan_member = m5:section(TypedSection, "member", translate("Members"), "Members may not share the same name as configured interfaces, policies or rules")) mwan_member.addremove = true mwan_member.dynamic = false - mwan_member.sectionhead = "Member" + mwan_member.sectionhead = translate("Member") mwan_member.sortable = true mwan_member.template = "cbi/tblsection" mwan_member.extedit = ds.build_url("admin", "network", "mwan", "configuration", "member", "%s") diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua index 08c3f69de6..6640564d50 100644 --- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua +++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua @@ -42,7 +42,7 @@ mwan_policy = m5:section(TypedSection, "policy", translate("Policies"), "Policies may not share the same name as configured interfaces, members or rules")) mwan_policy.addremove = true mwan_policy.dynamic = false - mwan_policy.sectionhead = "Policy" + mwan_policy.sectionhead = translate("Policy") mwan_policy.sortable = true mwan_policy.template = "cbi/tblsection" mwan_policy.extedit = ds.build_url("admin", "network", "mwan", "configuration", "policy", "%s") @@ -65,7 +65,6 @@ use_member = mwan_policy:option(DummyValue, "use_member", translate("Members ass else return "—" end - end last_resort = mwan_policy:option(DummyValue, "last_resort", translate("Last resort")) @@ -73,11 +72,11 @@ last_resort = mwan_policy:option(DummyValue, "last_resort", translate("Last reso function last_resort.cfgvalue(self, s) local action = self.map:get(s, "last_resort") if action == "blackhole" then - return "blackhole (drop)" + return translate("blackhole (drop)") elseif action == "default" then - return "default (use main routing table)" + return translate("default (use main routing table)") else - return "unreachable (reject)" + return translate("unreachable (reject)") end end diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua index 412f369eb0..0f4c5950a0 100644 --- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua +++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua @@ -47,7 +47,7 @@ mwan_rule = m5:section(TypedSection, "rule", translate("Traffic Rules"), mwan_rule.addremove = true mwan_rule.anonymous = false mwan_rule.dynamic = false - mwan_rule.sectionhead = "Rule" + mwan_rule.sectionhead = translate("Rule") mwan_rule.sortable = true mwan_rule.template = "cbi/tblsection" mwan_rule.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "rule", "%s") @@ -93,10 +93,10 @@ sticky = mwan_rule:option(DummyValue, "sticky", translate("Sticky")) function sticky.cfgvalue(self, s) if self.map:get(s, "sticky") == "1" then stickied = 1 - return "Yes" + return translate("Yes") else stickied = nil - return "No" + return translate("No") end end @@ -133,7 +133,7 @@ errors = mwan_rule:option(DummyValue, "errors", translate("Errors")) if not string.find(error_protocol_list, " " .. s .. " ") then return "" else - return "<span title=\"No protocol specified\"><img src=\"/luci-static/resources/cbi/reset.gif\" alt=\"error\"></img></span>" + return "<span title=\"" .. translate("No protocol specified") .. "\"><img src=\"/luci-static/resources/cbi/reset.gif\" alt=\"error\"></img></span>" end end diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm index 14d404bc7c..e4a14adade 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm @@ -33,14 +33,14 @@ { output.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="padding: 20px; vertical-align: middle;" /> ' + - "Waiting for MWAN to " + task + "..." + String.format("<%:Waiting for MWAN to %s...%>", task) ; } else { output.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="padding: 20px; vertical-align: middle;" /> ' + - "Waiting for diagnostic results..." + "<%:Waiting for diagnostic results...%>" ; } @@ -56,7 +56,7 @@ } else { - output.innerHTML = '<pre id="diag_output_css"><strong>No diagnostic results returned</strong></pre>'; + output.innerHTML = '<pre id="diag_output_css"><strong><%:No diagnostic results returned%></strong></pre>'; } } ); @@ -93,20 +93,6 @@ </div> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin-left: 30px; - padding-right: 30px; - width: auto; - } - #mwan_diagnostics { - background-color: #FFFFFF; - border: 1px dotted #555555; - padding: 20px; - } - #diag_select { - padding: 12px 20px 20px 20px; - } #mwaniface { float: left; margin: 8px 20px 0px 0px; diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm index 4c2a0dc208..10b4f10558 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm @@ -8,17 +8,7 @@ </ul> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin: 0px 0px 0px 30px; - padding-right: 30px; - width: auto; - } - .cbi-section-node { - margin-top: 20px; - } .cbi-section { - border: 1px dotted #555555; padding: 20px; } </style> diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm index fba3fa6940..20ae6036fc 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm @@ -8,17 +8,7 @@ </ul> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin: 0px 0px 0px 30px; - padding-right: 30px; - width: auto; - } - .cbi-section-node { - margin-top: 20px; - } .cbi-section { - border: 1px dotted #555555; padding: 20px; } </style> diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm index cf90112078..bed43107c0 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm @@ -8,17 +8,7 @@ </ul> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin: 0px 0px 0px 30px; - padding-right: 30px; - width: auto; - } - .cbi-section-node { - margin-top: 20px; - } .cbi-section { - border: 1px dotted #555555; padding: 20px; } </style> diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm index 0a12496899..4174ef4b21 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm @@ -37,7 +37,7 @@ } else { - tshoot.innerHTML = '<strong>Error collecting troubleshooting information</strong>'; + tshoot.innerHTML = '<strong><%:Error collecting troubleshooting information%></strong>'; } } ); @@ -46,22 +46,11 @@ <div id="troubleshoot"> <fieldset class="cbi-section"> <legend><%:Troubleshooting Data%></legend> - <div id="troubleshoot_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div> + <div id="troubleshoot_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div> </fieldset> </div> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin-left: 30px; - padding-right: 30px; - width: auto; - } - #troubleshoot { - background-color: #FFFFFF; - border: 1px dotted #555555; - padding: 20px; - } #troubleshoot_text { padding: 20px; text-align: left; diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm index 5077674185..bb18d53493 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm @@ -8,17 +8,7 @@ </ul> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin: 0px 0px 0px 30px; - padding-right: 30px; - width: auto; - } - .cbi-section-node { - margin-top: 20px; - } .cbi-section { - border: 1px dotted #555555; padding: 20px; } </style> diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm b/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm index 99da4875b0..5d91c536eb 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm @@ -1,10 +1,4 @@ <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin-left: 30px; - padding-right: 30px; - width: auto; - } table td { /* cells showing the configuration values */ padding: 0px; text-align: center; diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm b/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm index 9329b92735..7cef0630ee 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm @@ -13,19 +13,19 @@ switch (mArray.wans[i].status) { case 'online': - stat = 'Online (tracking active)'; + stat = '<%:Online (tracking active)%>'; cssc = 'wanon'; break; case 'notMonitored': - stat = 'Online (tracking off)'; + stat = '<%:Online (tracking off)%>'; cssc = 'wanon'; break; case 'offline': - stat = 'Offline'; + stat = '<%:Offline%>'; cssc = 'wanoff'; break; case 'notEnabled': - stat = 'Disabled'; + stat = '<%:Disabled%>'; cssc = 'wanoff'; break; } @@ -38,7 +38,7 @@ } else { - status.innerHTML = '<strong>No MWAN interfaces found</strong>'; + status.innerHTML = '<strong><%:No MWAN interfaces found%></strong>'; } } ); @@ -46,16 +46,13 @@ <fieldset id="interface_field" class="cbi-section"> <legend><%:MWAN Interface Live Status%></legend> - <div id="mwan_status_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div> + <div id="mwan_status_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div> </fieldset> <style type="text/css"> .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ max-width: 1044px; } - #interface_field { - padding: 12px 20px 20px 20px; - } #mwan_status_text { display: table; font-size: 14px; diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm b/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm index b80b9f3acf..6a800c3f98 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm @@ -17,7 +17,7 @@ } else { - status.innerHTML = '<strong>No detailed status information available</strong>'; + status.innerHTML = '<strong><%:No detailed status information available%></strong>'; } } ); @@ -26,22 +26,11 @@ <div id="mwan_detail_status"> <fieldset class="cbi-section"> <legend><%:MWAN Detailed Status%></legend> - <div id="mwan_detail_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div> + <div id="mwan_detail_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div> </fieldset> </div> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin-left: 30px; - padding-right: 30px; - width: auto; - } - #mwan_detail_status { - border: 1px dotted #555555; - background-color: #FFFFFF; - padding: 20px; - } #mwan_detail_text { padding: 20px; text-align: left; diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm b/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm index 472c7ce7fc..2929a6df60 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm @@ -21,19 +21,19 @@ switch (mArray.wans[i].status) { case 'online': - status = 'Online (tracking active)'; + status = '<%:Online (tracking active)%>'; css = 'wanon'; break; case 'notMonitored': - status = 'Online (tracking off)'; + status = '<%:Online (tracking off)%>'; css = 'wanon'; break; case 'offline': - status = 'Offline'; + status = '<%:Offline%>'; css = 'wanoff'; break; case 'notEnabled': - status = 'Disabled'; + status = '<%:Disabled%>'; css = 'wanoff'; break; } @@ -46,18 +46,18 @@ } else { - statusDiv.innerHTML = '<strong>No MWAN interfaces found</strong>'; + statusDiv.innerHTML = '<strong><%:No MWAN interfaces found%></strong>'; } var logs = document.getElementById('mwan_statuslog_text'); if (mArray.mwanlog) { - var mwanLog = 'Last 50 MWAN systemlog entries. Newest entries sorted at the top :'; + var mwanLog = '<%:Last 50 MWAN systemlog entries. Newest entries sorted at the top :%>'; logs.innerHTML = String.format('<pre>%s<br /><br />%s</pre>', mwanLog, mArray.mwanlog[0]); } else { - logs.innerHTML = '<strong>No MWAN systemlog history found</strong>'; + logs.innerHTML = '<strong><%:No MWAN systemlog history found%></strong>'; } } ); @@ -66,29 +66,15 @@ <div id="mwan_interface_status"> <fieldset id="interface_field" class="cbi-section"> <legend><%:MWAN Interface Live Status%></legend> - <div id="mwan_status_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div> + <div id="mwan_status_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div> </fieldset> <fieldset class="cbi-section"> <legend><%:MWAN Interface Systemlog%></legend> - <div id="mwan_statuslog_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div> + <div id="mwan_statuslog_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div> </fieldset> </div> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin-left: 30px; - padding-right: 30px; - width: auto; - } - #mwan_interface_status { - background-color: #FFFFFF; - border: 1px dotted #555555; - padding: 20px; - } - #interface_field { - padding: 12px 20px 20px 20px; - } #mwan_status_text { display: table; font-size: 14px; diff --git a/applications/luci-app-mwan3/po/ja/mwan3.po b/applications/luci-app-mwan3/po/ja/mwan3.po index cae45b8a2f..0d6ea152d0 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\n" +"X-Generator: Poedit 2.0.2\n" "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n" "Plural-Forms: nplurals=1; plural=0;\n" "Language: ja\n" @@ -46,6 +46,9 @@ msgstr "IP ルールのチェック" msgid "Check routing table" msgstr "ルーティング テーブルのチェック" +msgid "Collecting data..." +msgstr "" + msgid "Configuration" msgstr "設定" @@ -73,6 +76,9 @@ msgstr "診断結果" msgid "Diagnostics" msgstr "診断機能" +msgid "Disabled" +msgstr "" + msgid "" "Downed interface will be deemed up after this many successful ping tests" msgstr "" @@ -82,6 +88,9 @@ msgstr "" msgid "Enabled" msgstr "有効" +msgid "Error collecting troubleshooting information" +msgstr "" + msgid "Errors" msgstr "エラー" @@ -135,6 +144,9 @@ msgstr "インターフェース" msgid "Internet Protocol" msgstr "インターネット プロトコル" +msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :" +msgstr "" + msgid "Last resort" msgstr "最終手段" @@ -209,6 +221,9 @@ msgstr "" "単一または複数のポート(例: \"22\" または \"80,443\")、あるいはポートの範囲" "(例: \"1024:2048\")を、クオーテーション無しで指定することができます。" +msgid "Member" +msgstr "" + msgid "Member used" msgstr "使用されるメンバー" @@ -244,6 +259,30 @@ msgstr "ネットワーク設定" msgid "No" msgstr "いいえ" +msgid "No MWAN interfaces found" +msgstr "" + +msgid "No MWAN systemlog history found" +msgstr "" + +msgid "No detailed status information available" +msgstr "" + +msgid "No diagnostic results returned" +msgstr "" + +msgid "No protocol specified" +msgstr "" + +msgid "Offline" +msgstr "" + +msgid "Online (tracking active)" +msgstr "" + +msgid "Online (tracking off)" +msgstr "" + msgid "Overview" msgstr "概要" @@ -292,6 +331,9 @@ msgstr "" "ん。また、15文字以内でなければなりません。<br />ポリシーでは、設定済みのイン" "ターフェースやメンバー、ルールと同じ名前を使用することはできません。" +msgid "Policy" +msgstr "" + msgid "Policy assigned" msgstr "アサイン済みポリシー" @@ -310,6 +352,9 @@ msgstr "デフォルトのホットプラグ スクリプトの復元" msgid "Restore..." msgstr "復元..." +msgid "Rule" +msgstr "" + msgid "Rules" msgstr "ルール" @@ -362,16 +407,17 @@ msgid "There are currently %d of 250 supported interfaces configured" msgstr "現在、250個中 %d 個のサポートされたインターフェースが設定済みです。" msgid "" -"This IP address will be pinged to dermine if the link is up or down. Leave " -"blank to assume interface is always online" +"This displays the metric assigned to this interface in /etc/config/network" msgstr "" -"これらは、リンクの Up または Down を判定するために Ping が送信されるIP アドレ" -"スです。常にオンラインとする場合、空欄のままにします。" +"/etc/config/network で、このインターフェースに割り当てられたメトリックです。" msgid "" -"This displays the metric assigned to this interface in /etc/config/network" +"This hostname or IP address will be pinged to determine if the link is up or " +"down. Leave blank to assume interface is always online" msgstr "" -"/etc/config/network で、このインターフェースに割り当てられたメトリックです。" +"リンクの Up または Down 状態を判定するために、このホスト名または IP アドレス" +"に対して Ping の送信が行われます。常にオンラインとする場合、空欄のままにしま" +"す。" msgid "This section allows you to modify the contents of /etc/config/mwan3" msgstr "" @@ -408,6 +454,9 @@ msgstr "" msgid "Tracking IP" msgstr "追跡 IP" +msgid "Tracking hostname or IP address" +msgstr "追跡ホスト名または IP アドレス" + msgid "Tracking reliability" msgstr "追跡の信頼性" @@ -525,6 +574,12 @@ msgstr "" "警告: このルールは不適切なプロトコルが指定されているか、または何も指定されて" "いません!プロトコルを指定し直してください!" +msgid "Waiting for MWAN to %s..." +msgstr "" + +msgid "Waiting for diagnostic results..." +msgstr "" + msgid "Weight" msgstr "ウエイト" @@ -560,3 +615,10 @@ msgstr "never" msgid "unreachable (reject)" msgstr "unreachable (reject)" + +#~ msgid "" +#~ "This IP address will be pinged to dermine if the link is up or down. " +#~ "Leave blank to assume interface is always online" +#~ msgstr "" +#~ "これらは、リンクの Up または Down を判定するために Ping が送信されるIP ア" +#~ "ドレスです。常にオンラインとする場合、空欄のままにします。" diff --git a/applications/luci-app-mwan3/po/templates/mwan3.pot b/applications/luci-app-mwan3/po/templates/mwan3.pot index 0bda248fae..d9bddf5e08 100644 --- a/applications/luci-app-mwan3/po/templates/mwan3.pot +++ b/applications/luci-app-mwan3/po/templates/mwan3.pot @@ -33,6 +33,9 @@ msgstr "" msgid "Check routing table" msgstr "" +msgid "Collecting data..." +msgstr "" + msgid "Configuration" msgstr "" @@ -60,6 +63,9 @@ msgstr "" msgid "Diagnostics" msgstr "" +msgid "Disabled" +msgstr "" + msgid "" "Downed interface will be deemed up after this many successful ping tests" msgstr "" @@ -67,6 +73,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Error collecting troubleshooting information" +msgstr "" + msgid "Errors" msgstr "" @@ -118,6 +127,9 @@ msgstr "" msgid "Internet Protocol" msgstr "" +msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :" +msgstr "" + msgid "Last resort" msgstr "" @@ -183,6 +195,9 @@ msgid "" "as a portrange (eg \"1024:2048\") without quotes" msgstr "" +msgid "Member" +msgstr "" + msgid "Member used" msgstr "" @@ -212,6 +227,30 @@ msgstr "" msgid "No" msgstr "" +msgid "No MWAN interfaces found" +msgstr "" + +msgid "No MWAN systemlog history found" +msgstr "" + +msgid "No detailed status information available" +msgstr "" + +msgid "No diagnostic results returned" +msgstr "" + +msgid "No protocol specified" +msgstr "" + +msgid "Offline" +msgstr "" + +msgid "Online (tracking active)" +msgstr "" + +msgid "Online (tracking off)" +msgstr "" + msgid "Overview" msgstr "" @@ -252,6 +291,9 @@ msgid "" "configured interfaces, members or rules" msgstr "" +msgid "Policy" +msgstr "" + msgid "Policy assigned" msgstr "" @@ -270,6 +312,9 @@ msgstr "" msgid "Restore..." msgstr "" +msgid "Rule" +msgstr "" + msgid "Rules" msgstr "" @@ -312,12 +357,12 @@ msgid "There are currently %d of 250 supported interfaces configured" msgstr "" msgid "" -"This IP address will be pinged to dermine if the link is up or down. Leave " -"blank to assume interface is always online" +"This displays the metric assigned to this interface in /etc/config/network" msgstr "" msgid "" -"This displays the metric assigned to this interface in /etc/config/network" +"This hostname or IP address will be pinged to determine if the link is up or " +"down. Leave blank to assume interface is always online" msgstr "" msgid "This section allows you to modify the contents of /etc/config/mwan3" @@ -343,6 +388,9 @@ msgstr "" msgid "Tracking IP" msgstr "" +msgid "Tracking hostname or IP address" +msgstr "" + msgid "Tracking reliability" msgstr "" @@ -429,6 +477,12 @@ msgid "" "specified! Please configure a specific protocol!" msgstr "" +msgid "Waiting for MWAN to %s..." +msgstr "" + +msgid "Waiting for diagnostic results..." +msgstr "" + msgid "Weight" msgstr "" diff --git a/applications/luci-app-mwan3/po/zh-cn/mwan3.po b/applications/luci-app-mwan3/po/zh-cn/mwan3.po index b8948b3163..d239312f9b 100644 --- a/applications/luci-app-mwan3/po/zh-cn/mwan3.po +++ b/applications/luci-app-mwan3/po/zh-cn/mwan3.po @@ -1,17 +1,7 @@ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Language-Team: \n" "Last-Translator: Hsing-Wang Liao <kuoruan@gmail.com>\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0\n" -"Last-Translator: \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Language: zh_CN\n" msgid "%d hour" msgstr "%d 小时" @@ -32,20 +22,23 @@ msgid "" "Acceptable values: 1-100. This many Tracking IP addresses must respond for " "the link to be deemed up" msgstr "" -"接受的值: 1-100。这个设置项指定了当多少个IP地址能够连通时接口会被认为在线" +"取值范围: 1-100。这个设置项指定了当多少个 IP 地址能够连通时接口会被认为在线" msgid "Acceptable values: 1-1000. Defaults to 1 if not set" -msgstr "接受的值: 1-100。如果不填写,默认值为 1" +msgstr "取值范围: 1-100。如果不填写,默认值为 1" msgid "Advanced" msgstr "高级" msgid "Check IP rules" -msgstr "检查IP规则" +msgstr "检查 IP 规则" msgid "Check routing table" msgstr "检查路由表" +msgid "Collecting data..." +msgstr "正在收集数据..." + msgid "Configuration" msgstr "配置" @@ -73,6 +66,9 @@ msgstr "诊断结果" msgid "Diagnostics" msgstr "诊断" +msgid "Disabled" +msgstr "禁用" + msgid "" "Downed interface will be deemed up after this many successful ping tests" msgstr "当 Ping 成功次数达到这个数值后,已经被认为离线的接口将会重新上线" @@ -80,6 +76,9 @@ msgstr "当 Ping 成功次数达到这个数值后,已经被认为离线的接 msgid "Enabled" msgstr "启用" +msgid "Error collecting troubleshooting information" +msgstr "收集故障排除信息时出错" + msgid "Errors" msgstr "错误" @@ -131,6 +130,9 @@ msgstr "接口" msgid "Internet Protocol" msgstr "互联网协议" +msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :" +msgstr "最近 50 条 MWAN 系统日志,最新条目排在顶部:" + msgid "Last resort" msgstr "备用成员" @@ -192,15 +194,19 @@ msgid "" msgstr "" "MWAN 支持最多 250 个物理或逻辑接口。<br />MWAN 要求所有接口必须在 /etc/" "config/network 中设定唯一的网关跃点。<br />名称必须与 /etc/config/network 中" -"的接口名称匹配。(可查看“高级”选项卡)<br />名称允许包括A-Z、a-z、0-9、_ 但是不" -"能有空格。<br />接口不应该与成员、策略、规则中的任意一个设置项使用相同的名称" +"的接口名称匹配。(可查看“高级”选项卡)<br />名称允许包括A-Z、a-z、0-9、_ 但是" +"不能有空格。<br />接口不应该与成员、策略、规则中的任意一个设置项使用相同的名" +"称" 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" msgstr "" -"可以输入一个或多个端口 (例如 \"22\" 或者 \"80,443\") 或者是一个端口范围 (例" -"如 \"1024:2048\") 不含引号" +"可以输入一个或多个端口(例如 \"22\" 或者 \"80,443\")或者是一个端口范围(例" +"如 \"1024:2048\")不含引号" + +msgid "Member" +msgstr "成员" msgid "Member used" msgstr "使用的成员" @@ -213,7 +219,7 @@ msgid "" ">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Members " "may not share the same name as configured interfaces, policies or rules" msgstr "" -"“成员”用来设置每一个 MWAN 接口的跃点数 (即接口优先级) 和所占比重。<br />名称" +"“成员”用来设置每一个 MWAN 接口的跃点数(即接口优先级)和所占比重。<br />名称" "允许包括 A-Z、 a-、0-9、_ 但是不能有空格。<br />成员不应该与接口、策略、规则" "中的任意一个设置项使用相同的名称" @@ -236,6 +242,30 @@ msgstr "网络配置文件" msgid "No" msgstr "否" +msgid "No MWAN interfaces found" +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 "Offline" +msgstr "离线" + +msgid "Online (tracking active)" +msgstr "在线(追踪启用中)" + +msgid "Online (tracking off)" +msgstr "在线(追踪已关闭)" + msgid "Overview" msgstr "概况" @@ -281,6 +311,9 @@ msgstr "" "包括A-Z、a-z、0-9、_ 但是不能有空格。名称应该在 15 个字符以内<br />策略不应该" "与接口、成员、规则中的任意一个设置项使用相同的名称" +msgid "Policy" +msgstr "策略" + msgid "Policy assigned" msgstr "分配的策略" @@ -299,6 +332,9 @@ msgstr "恢复默认的 hotplug 脚本" msgid "Restore..." msgstr "恢复..." +msgid "Rule" +msgstr "规则" + msgid "Rules" msgstr "规则" @@ -342,22 +378,20 @@ msgid "Stop MWAN" msgstr "停止 MWAN" msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes" -msgstr "支持 CIDR 记法 (例如: \"192.168.100.0/24\") 不含引号" +msgstr "支持 CIDR 记法(例如: \"192.168.100.0/24\")不含引号" msgid "There are currently %d of 250 supported interfaces configured" -msgstr "" - -msgid "" -"This IP address will be pinged to dermine if the link is up or down. Leave " -"blank to assume interface is always online" -msgstr "" -"MWAN 将会通过 Ping 这些 IP 地址来确定接口是否上线。如果留空,则 MWAN 认为该接" -"口永远在线" +msgstr "当前已配置 %d 个接口,最大支持 250 个" msgid "" "This displays the metric assigned to this interface in /etc/config/network" msgstr "这里显示了这个接口在 /etc/config/network 中配置的跃点数" +msgid "" +"This hostname or IP address will be pinged to determine if the link is up or " +"down. Leave blank to assume interface is always online" +msgstr "通过 ping 此主机或 IP 地址来确定链路是否在线。留空则认为接口始终在线" + msgid "This section allows you to modify the contents of /etc/config/mwan3" msgstr "这里允许你修改 /etc/config/mwan3 的内容" @@ -377,18 +411,21 @@ msgid "" "$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the " "device name attached to the interface (eth0.1, eth1, etc.)" msgstr "" -"这里允许你修改/etc/hotplug.d/iface/16-mwancustom 的内容<br />这可以在接口 " +"这里允许你修改 /etc/hotplug.d/iface/16-mwancustom 的内容<br />这可以在接口 " "ifup 或 ifdown Hotplug 事件时运行系统命令或脚本<br /><br />注意:<br />脚本的" "第一行必须是 "#!/bin/sh" 不含引号<br />以#开头的行是注释,不会执行" -"<br /><br />可用变量:<br />$ACTION 是 Hotplug 事件 (ifup, ifdown)<br />" -"$INTERFACE 是接口名称 (wan1、wan2 等)<br />$DEVICE 是连接到接口的设备名称 " -"(eth0.1、eth1 等)" +"<br /><br />可用变量:<br />$ACTION 是 Hotplug 事件(ifup, ifdown)<br />" +"$INTERFACE 是接口名称(wan1、wan2 等)<br />$DEVICE 是连接到接口的设备名称 " +"(eth0.1、eth1 等)" msgid "Tracking IP" -msgstr "跟踪的 IP" +msgstr "追踪的 IP" + +msgid "Tracking hostname or IP address" +msgstr "追踪的主机或 IP 地址" msgid "Tracking reliability" -msgstr "跟踪可靠性" +msgstr "追踪可靠性" msgid "Traffic Rules" msgstr "流量规则" @@ -410,70 +447,77 @@ msgid "View the contents of /etc/protocols for protocol descriptions" msgstr "请查看 /etc/protocols 获取可选协议详情" msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!" -msgstr "" +msgstr "警告: 已配置 %d 个接口,超过最大值 250!" msgid "" "WARNING: Some policies have names exceeding the maximum of 15 characters!" -msgstr "" +msgstr "警告: 某些策略的名称超过了 15 个字符!" msgid "" "WARNING: some interfaces are configured incorrectly or not at all in /etc/" "config/network!" -msgstr "" +msgstr "警告: 某些接口配置不正确或未配置到 /etc/config/network!" msgid "" "WARNING: some interfaces have a higher reliability requirement than there " "are tracking IP addresses!" -msgstr "" +msgstr "警告: 某些接口的追踪可靠性要求大于了追踪 IP 地址总数!" msgid "" "WARNING: some interfaces have duplicate metrics configured in /etc/config/" "network!" -msgstr "" +msgstr "警告: 某些接口在 /etc/config/network 中配置了相同的跃点数!" msgid "" "WARNING: some interfaces have no default route in the main routing table!" -msgstr "" +msgstr "警告: 某些接口在主路由表中没有默认路由!" msgid "" "WARNING: some interfaces have no metric configured in /etc/config/network!" -msgstr "" +msgstr "警告: 某些接口没有在 /etc/config/network 中配置跃点数!" 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 "" +msgstr "警告: 此接口和其他接口在 /etc/config/network 中配置了相同的跃点数!" msgid "" "WARNING: this interface has a higher reliability requirement than there are " "tracking IP addresses!" -msgstr "" +msgstr "警告: 此接口的追踪可靠性要求大于了追踪 IP 地址总数!" msgid "WARNING: this interface has no default route in the main routing table!" -msgstr "" +msgstr "警告: 此接口在主路由表中没有默认路由!" msgid "" "WARNING: this interface has no metric configured in /etc/config/network!" -msgstr "" +msgstr "警告: 此接口没有在 /etc/config/network 中配置跃点数!" msgid "" "WARNING: this interface is configured incorrectly or not at all in /etc/" "config/network!" -msgstr "" +msgstr "警告: 此接口配置不正确或未配置到 /etc/config/network!" msgid "" "WARNING: this policy's name is %d characters exceeding the maximum of 15!" -msgstr "" +msgstr "警告: 此策略的名称具有 %d 个字符,超过了 15 个字符!" msgid "" "WARNING: this rule is incorrectly configured with no or improper protocol " "specified! Please configure a specific protocol!" -msgstr "" +msgstr "警告: 此规则没有配置或配置了不正确的协议,请重新指定协议!" + +msgid "Waiting for MWAN to %s..." +msgstr "等待 MWAN %s..." + +msgid "Waiting for diagnostic results..." +msgstr "等待诊断结果..." msgid "Weight" msgstr "比重" @@ -492,10 +536,10 @@ msgid "always" msgstr "总是" msgid "blackhole (drop)" -msgstr "黑洞 (丢弃)" +msgstr "黑洞(丢弃)" msgid "default (use main routing table)" -msgstr "默认 (使用主路由表)" +msgstr "默认(使用主路由表)" msgid "ifdown" msgstr "ifdown" @@ -507,4 +551,4 @@ msgid "never" msgstr "从不" msgid "unreachable (reject)" -msgstr "不可达 (拒绝)" +msgstr "不可达(拒绝)" diff --git a/applications/luci-app-privoxy/Makefile b/applications/luci-app-privoxy/Makefile index e174c807b8..486cf0ee74 100644 --- a/applications/luci-app-privoxy/Makefile +++ b/applications/luci-app-privoxy/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2008-2015 The LuCI Team <luci@lists.subsignal.org> +# Copyright (C) 2008-2017 The LuCI Team <luci@lists.subsignal.org> # # This is free software, licensed under the Apache License, Version 2.0 . # @@ -14,10 +14,10 @@ PKG_VERSION:=1.0.6 # Release == build # increase on changes of translation files -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_LICENSE:=Apache-2.0 -PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com> +PKG_MAINTAINER:= # LuCI specific settings LUCI_TITLE:=LuCI Support for Privoxy WEB proxy @@ -30,7 +30,6 @@ help $(LUCI_TITLE) . Version: $(PKG_VERSION)-$(PKG_RELEASE) - $(PKG_MAINTAINER) endef include ../../luci.mk diff --git a/applications/luci-app-qos/Makefile b/applications/luci-app-qos/Makefile index dd322a347a..fd12557453 100644 --- a/applications/luci-app-qos/Makefile +++ b/applications/luci-app-qos/Makefile @@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Quality of Service configuration module LUCI_DEPENDS:=+qos-scripts +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-shadowsocks-libev/Makefile b/applications/luci-app-shadowsocks-libev/Makefile index 848a5c8317..d0923e07a4 100644 --- a/applications/luci-app-shadowsocks-libev/Makefile +++ b/applications/luci-app-shadowsocks-libev/Makefile @@ -1,14 +1,16 @@ # -# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org> +# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com> # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk -LUCI_TITLE:=LuCI Support for Shadowsocks-libev +LUCI_TITLE:=LuCI Support for shadowsocks-libev LUCI_DEPENDS:= +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua b/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua index ae968168f1..05d12e38b2 100644 --- a/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua +++ b/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua @@ -1,12 +1,33 @@ --- Copyright 2015 Jian Chang <aa65535@live.com> +-- Copyright 2017 Yousong Zhou <yszhou4tech@gmail.com> -- Licensed to the public under the Apache License 2.0. - +-- module("luci.controller.shadowsocks-libev", package.seeall) function index() - if not nixio.fs.access("/etc/config/shadowsocks-libev") then - return - end + entry({"admin", "services", "shadowsocks-libev"}, + alias("admin", "services", "shadowsocks-libev", "instances"), + _("Shadowsocks-libev"), 59) + + entry({"admin", "services", "shadowsocks-libev", "instances"}, + arcombine(cbi("shadowsocks-libev/instances"), cbi("shadowsocks-libev/instance-details")), + _("Local Instances"), 10).leaf = true + + entry({"admin", "services", "shadowsocks-libev", "servers"}, + cbi("shadowsocks-libev/servers"), + _("Remote Servers"), 20).leaf = true + + entry({"admin", "services", "shadowsocks-libev", "rules"}, + cbi("shadowsocks-libev/rules"), + _("Redir Rules"), 30).leaf = true + + entry({"admin", "services", "shadowsocks-libev", "status"}, call("ss_status"), nil).leaf = true + +end + +function ss_status() + local ut = require "luci.util" + local rv = ut.ubus("service", "list", {name = "shadowsocks-libev"})["shadowsocks-libev"] or {_=0} - entry({"admin", "services", "shadowsocks-libev"}, cbi("shadowsocks-libev"), _("ShadowSocks-libev"), 74).dependent = true + luci.http.prepare_content("application/json") + luci.http.write_json(rv) end diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev.lua deleted file mode 100644 index 76435e2f14..0000000000 --- a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev.lua +++ /dev/null @@ -1,156 +0,0 @@ --- Copyright 2015 Jian Chang <aa65535@live.com> --- Licensed to the public under the Apache License 2.0. - -local m, s, o, e, a - -if luci.sys.call("pidof ss-redir >/dev/null") == 0 then - m = Map("shadowsocks-libev", translate("ShadowSocks-libev"), translate("ShadowSocks-libev is running")) -else - m = Map("shadowsocks-libev", translate("ShadowSocks-libev"), translate("ShadowSocks-libev is not running")) -end - -e = { - "table", - "rc4", - "rc4-md5", - "aes-128-cfb", - "aes-192-cfb", - "aes-256-cfb", - "bf-cfb", - "camellia-128-cfb", - "camellia-192-cfb", - "camellia-256-cfb", - "cast5-cfb", - "des-cfb", - "idea-cfb", - "rc2-cfb", - "seed-cfb", - "salsa20", - "chacha20", -} - --- Global Setting -s = m:section(TypedSection, "shadowsocks-libev", translate("Global Setting")) -s.anonymous = true - -o = s:option(Flag, "enable", translate("Enable")) -o.default = 1 -o.rmempty = false - -o = s:option(Value, "server", translate("Server Address")) -o.datatype = "ipaddr" -o.rmempty = false - -o = s:option(Value, "server_port", translate("Server Port")) -o.datatype = "port" -o.rmempty = false - -o = s:option(Value, "local_port", translate("Local Port")) -o.datatype = "port" -o.default = 1080 -o.rmempty = false - -o = s:option(Value, "timeout", translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 60 -o.rmempty = false - -o = s:option(Value, "password", translate("Password")) -o.password = true -o.rmempty = false - -o = s:option(ListValue, "encrypt_method", translate("Encrypt Method")) -for i,v in ipairs(e) do - o:value(v) -end -o.rmempty = false - -o = s:option(Value, "ignore_list", translate("Ignore List")) -o:value("/dev/null", translate("Disabled")) -o.default = "/dev/null" -o.rmempty = false - --- UDP Relay -s = m:section(TypedSection, "shadowsocks-libev", translate("UDP Relay")) -s.anonymous = true - -o = s:option(ListValue, "udp_mode", translate("Relay Mode")) -o:value("0", translate("Disabled")) -o:value("1", translate("Enabled")) -o:value("2", translate("Custom")) -o.default = 0 -o.rmempty = false - -o = s:option(Value, "udp_server", translate("Server Address")) -o.datatype = "ipaddr" -o:depends("udp_mode", 2) - -o = s:option(Value, "udp_server_port", translate("Server Port")) -o.datatype = "port" -o:depends("udp_mode", 2) - -o = s:option(Value, "udp_local_port", translate("Local Port")) -o.datatype = "port" -o.default = 1081 -o:depends("udp_mode", 2) - -o = s:option(Value, "udp_timeout", translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 60 -o:depends("udp_mode", 2) - -o = s:option(Value, "udp_password", translate("Password")) -o.password = true -o:depends("udp_mode", 2) - -o = s:option(ListValue, "udp_encrypt_method", translate("Encrypt Method")) -for i,v in ipairs(e) do - o:value(v) -end -o:depends("udp_mode", 2) - --- UDP Forward -s = m:section(TypedSection, "shadowsocks-libev", translate("UDP Forward")) -s.anonymous = true - -o = s:option(Flag, "tunnel_enable", translate("Enable")) -o.default = 1 -o.rmempty = false - -o = s:option(Value, "tunnel_port", translate("UDP Local Port")) -o.datatype = "port" -o.default = 5300 - -o = s:option(Value, "tunnel_forward", translate("Forwarding Tunnel")) -o.default = "8.8.4.4:53" - --- Access Control -s = m:section(TypedSection, "shadowsocks-libev", translate("Access Control")) -s.anonymous = true - -s:tab("lan_ac", translate("LAN")) - -o = s:taboption("lan_ac", ListValue, "lan_ac_mode", translate("Access Control")) -o:value("0", translate("Disabled")) -o:value("1", translate("Allow listed only")) -o:value("2", translate("Allow all except listed")) -o.default = 0 -o.rmempty = false - -a = luci.sys.net.arptable() or {} - -o = s:taboption("lan_ac", DynamicList, "lan_ac_ip", translate("LAN IP List")) -o.datatype = "ipaddr" -for i,v in ipairs(a) do - o:value(v["IP address"]) -end - -s:tab("wan_ac", translate("WAN")) - -o = s:taboption("wan_ac", DynamicList, "wan_bp_ip", translate("Bypassed IP")) -o.datatype = "ip4addr" - -o = s:taboption("wan_ac", DynamicList, "wan_fw_ip", translate("Forwarded IP")) -o.datatype = "ip4addr" - -return m diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua new file mode 100644 index 0000000000..d9a61d0bf7 --- /dev/null +++ b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua @@ -0,0 +1,49 @@ +-- Copyright 2017 Yousong Zhou <yszhou4tech@gmail.com> +-- Licensed to the public under the Apache License 2.0. + +local ds = require "luci.dispatcher" +local ss = require "luci.model.shadowsocks-libev" + +local sname = arg[1] +local redirect_url = ds.build_url("admin/services/shadowsocks-libev/instances") +local s, o + +local m = Map("shadowsocks-libev") +local sdata = m:get(sname) +if not sdata then + luci.http.redirect(redirect_url) + return +end +local stype = sdata[".type"] +m.redirect = redirect_url +m.title = "shadowsocks-libev - %s - %s" % {stype, sname} + + +s = m:section(NamedSection, sname, stype) +s:tab("general", translate("General Settings")) +s:tab("advanced", translate("Advanced Settings")) +s:taboption("general", Flag, "disabled", translate("Disable")) +ss.option_install_package(s, "general") + +if stype == "ss_server" then + ss.options_server(s, "general") + o = s:taboption("general", Value, "bind_address", + translate("Bind address"), + translate("The address ss-server will initiate connection from")) + o.datatype = "ipaddr" + o.placeholder = "0.0.0.0" + ss.values_ipaddr(o) + o = s:taboption("general", Value, "manager_address", translate("Manager address")) + o.datatype = "hostport" +else + ss.options_client(s, "general") + if stype == "ss_tunnel" then + o = s:taboption("general", Value, "tunnel_address", + translate("Tunnel address"), + translate("The address ss-tunnel will forward traffic to")) + o.datatype = "hostport" + end +end +ss.options_common(s, "advanced") + +return m diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua new file mode 100644 index 0000000000..62a90fb416 --- /dev/null +++ b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua @@ -0,0 +1,104 @@ +-- Copyright 2017 Yousong Zhou <yszhou4tech@gmail.com> +-- Licensed to the public under the Apache License 2.0. + +local ds = require "luci.dispatcher" +local ss = require "luci.model.shadowsocks-libev" +local ut = require "luci.util" +local m, s, o + +m = Map("shadowsocks-libev", + translate("Local Instances"), + translate("Instances of shadowsocks-libev components, e.g. ss-local, \ + ss-redir, ss-tunnel, ss-server, etc. To enable an instance it \ + is required to enable both the instance itself and the remote \ + server it refers to.")) + +local instances = {} +local cfgtypes = { "ss_local", "ss_redir", "ss_server", "ss_tunnel" } + +for sname, sdata in pairs(m:get()) do + local key, value = ss.cfgvalue_overview(sdata) + if key ~= nil then + instances[key] = value + end +end + +s = m:section(Table, instances) +s.addremove = true +s.template_addremove = "shadowsocks-libev/add_instance" +s.extedit = function(self, section) + local value = instances[section] + if type(value) == "table" then + return ds.build_url(unpack(ds.context.requestpath), + "services/shadowsocks-libev/instances", + value[".name"]) + end +end +s.parse = function(self, ...) + Table.parse(self, ...) + + local crval = REMOVE_PREFIX .. self.config + local name = self.map:formvaluetable(crval) + for k,v in pairs(name) do + local value = instances[k] + local sname = value[".name"] + if type(value) == "table" then + m:del(sname) + instances[k] = nil + for _, oname in ipairs({"redir_tcp", "redir_udp"}) do + local ovalue = m:get("ss_rules", oname) + if ovalue == sname then + m:del("ss_rules", oname) + end + end + end + end + + local stype = m:formvalue("_newinst.type") + local sname = m:formvalue("_newinst.name") + if ut.contains(cfgtypes, stype) then + local created + if sname and #sname > 0 then + created = m:set(sname, nil, stype) + else + created = m:add(stype) + sname = created + end + if created then + m.uci:save("shadowsocks-libev") + luci.http.redirect(ds.build_url( + "admin/services/shadowsocks-libev/instances", sname + )) + end + end +end + +o = s:option(DummyValue, "name", translate("Name")) +o.rawhtml = true +o = s:option(DummyValue, "overview", translate("Overview")) +o.rawhtml = true + +s:option(DummyValue, "running", translate("Running")) + +o = s:option(Button, "disabled", translate("Enable/Disable")) +o.render = function(self, section, scope) + if instances[section].disabled then + self.title = translate("Disabled") + self.inputstyle = "reset" + else + self.title = translate("Enabled") + self.inputstyle = "save" + end + Button.render(self, section, scope) +end +o.write = function(self, section) + local sdata = instances[section] + if type(sdata) == "table" then + local sname = sdata[".name"] + local disabled = not sdata["disabled"] + sdata["disabled"] = disabled + m:set(sname, "disabled", tostring(disabled)) + end +end + +return m diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua new file mode 100644 index 0000000000..fe5f9c31b8 --- /dev/null +++ b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua @@ -0,0 +1,73 @@ +-- Copyright 2017 Yousong Zhou <yszhou4tech@gmail.com> +-- Licensed to the public under the Apache License 2.0. + +local ss = require("luci.model.shadowsocks-libev") + +local m, s, o + +m = Map("shadowsocks-libev", + translate("Redir Rules"), + translate("On this page you can configure how traffics are to be \ + forwarded to ss-redir instances. \ + If enabled, packets will first have their source ip addresses checked \ + against <em>Src ip bypass</em>, <em>Src ip forward</em>, \ + <em>Src ip checkdst</em> and if none matches <em>Src default</em> \ + will give the default action to be taken. \ + If the prior check results in action <em>checkdst</em>, packets will continue \ + to have their destination addresses checked.")) + + +s = m:section(NamedSection, "ss_rules", "ss-rules") +s:tab("general", translate("General Settings")) +s:tab("srcip", translate("Source Settings")) +s:tab("dstip", translate("Destination Settings")) + +s:taboption('general', Flag, "disabled", translate("Disable")) +ss.option_install_package(s, 'general') + +o = s:taboption('general', ListValue, "redir_tcp", + translate("ss-redir for TCP")) +ss.values_redir(o, 'tcp') +o = s:taboption('general', ListValue, "redir_udp", + translate("ss-redir for UDP")) +ss.values_redir(o, 'udp') + +o = s:taboption('general', ListValue, "local_default", + translate("Local-out default"), + translate("Default action for locally generated packets")) +ss.values_actions(o) +s:taboption('general', Value, "ipt_args", + translate("Extra arguments"), + translate("Passes additional arguments to iptables. Use with care!")) + +s:taboption('srcip', DynamicList, "src_ips_bypass", + translate("Src ip bypass"), + translate("Bypass redir action for packets with source addresses in this list")) +s:taboption('srcip', DynamicList, "src_ips_forward", + translate("Src ip forward"), + translate("Go through redir action for packets with source addresses in this list")) +s:taboption('srcip', DynamicList, "src_ips_checkdst", + translate("Src ip checkdst"), + translate("Continue to have dst address checked for packets with source addresses in this list")) +o = s:taboption('srcip', ListValue, "src_default", + translate("Src default"), + translate("Default action for packets whose source addresses do not match any of the source ip list")) +ss.values_actions(o) + +s:taboption('dstip', DynamicList, "dst_ips_bypass", + translate("Dst ip bypass"), + translate("Bypass redir action for packets with destination addresses in this list")) +s:taboption('dstip', DynamicList, "dst_ips_forward", + translate("Dst ip forward"), + translate("Go through redir action for packets with destination addresses in this list")) + +o = s:taboption('dstip', FileBrowser, "dst_ips_bypass_file", + translate("Dst ip bypass file"), + translate("File containing ip addresses for the purposes as with <em>Dst ip bypass</em>")) +o.datatype = "file" +s:taboption('dstip', FileBrowser, "dst_ips_forward_file", + translate("Dst ip forward file"), + translate("File containing ip addresses for the purposes as with <em>Dst ip forward</em>")) +o.datatype = "file" + +return m diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua new file mode 100644 index 0000000000..71c66562e1 --- /dev/null +++ b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua @@ -0,0 +1,31 @@ +-- Copyright 2017 Yousong Zhou <yszhou4tech@gmail.com> +-- Licensed to the public under the Apache License 2.0. + +local ds = require "luci.dispatcher" +local ss = require("luci.model.shadowsocks-libev") + +local m, s + +m = Map("shadowsocks-libev", + translate("Remote Servers"), + translate("Definition of remote shadowsocks servers. \ + Disable any of them will also disable instances refering to it.")) + +local sname = arg[1] +if sname then + if not m:get(sname) then + luci.http.redirect(ds.build_url("admin/services/shadowsocks-libev/servers")) + return + end + s = m:section(NamedSection, sname, "server") + m.title = m.title .. ' - ' .. sname +else + s = m:section(TypedSection, "server") + s.template = 'cbi/tblsection' + s.addremove = true +end + +s:option(Flag, "disabled", translate("Disable")) +ss.options_server(s) + +return m diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua new file mode 100644 index 0000000000..2753f458b5 --- /dev/null +++ b/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua @@ -0,0 +1,253 @@ +-- Copyright 2017 Yousong Zhou <yszhou4tech@gmail.com> +-- Licensed to the public under the Apache License 2.0. + +local _up = getfenv(3) +local ut = require("luci.util") +local ds = require("luci.dispatcher") +local nw = require("luci.model.network") +nw.init() +module("luci.model.shadowsocks-libev", function(m) + setmetatable(m, {__index=function (self, k) + local tb = _up + return rawget(self, k) or _up[k] + end}) +end) + +function values_actions(o) + for _, a in ipairs(actions) do + o:value(a) + end +end + +function values_redir(o, xmode) + o.map.uci.foreach("shadowsocks-libev", "ss_redir", function(sdata) + local sname = sdata[".name"] + local mode = sdata["mode"] + if mode and mode:find(xmode) then + local desc = "%s - %s" % {sname, mode} + o:value(sname, desc) + end + end) +end + +function values_serverlist(o) + o.map.uci.foreach("shadowsocks-libev", "server", function(sdata) + local sname = sdata[".name"] + local server = sdata["server"] + local server_port = sdata["server_port"] + if server and server_port then + local desc = "%s - %s:%s" % {sname, sdata["server"], sdata["server_port"]} + o:value(sname, desc) + end + end) +end + +function values_ipaddr(o) + local keys, vals = {}, {} + for _, v in ipairs(nw:get_interfaces()) do + for _, a in ipairs(v:ipaddrs()) do + o:value(a:host():string(), '%s (%s)' %{ a:host(), v:shortname() }) + end + end +end + +function options_client(s, tab) + local o + + o = s:taboption(tab, ListValue, "server", translate("Remote server")) + values_serverlist(o) + o = s:taboption(tab, Value, "local_address", translate("Local address")) + o.datatype = "ipaddr" + o.placeholder = "0.0.0.0" + values_ipaddr(o) + o = s:taboption(tab, Value, "local_port", translate("Local port")) + o.datatype = "port" +end + +function options_server(s, tab) + local o + local optfunc + + if tab == nil then + optfunc = function(...) return s:option(...) end + else + optfunc = function(...) return s:taboption(tab, ...) end + end + + o = optfunc(Value, "server", translate("Server")) + o.datatype = "host" + o.size = 16 + o = optfunc(Value, "server_port", translate("Server port")) + o.datatype = "port" + o.size = 5 + o = optfunc(ListValue, "method", translate("Method")) + for _, m in ipairs(methods) do + o:value(m) + end + o = optfunc(Value, "key", translate("Key (base64 encoding)")) + o.datatype = "base64" + o.password = true + o.size = 12 + o = optfunc(Value, "password", translate("Password")) + o.password = true + o.size = 12 +end + +function options_common(s, tab) + local o + + o = s:taboption(tab, ListValue, "mode", translate("Mode of operation")) + for _, m in ipairs(modes) do + o:value(m) + end + o.default = "tcp_and_udp" + o = s:taboption(tab, Value, "mtu", translate("MTU")) + o.datatype = "uinteger" + o = s:taboption(tab, Value, "timeout", translate("Timeout (sec)")) + o.datatype = "uinteger" + s:taboption(tab, Value, "user", translate("Run as")) + + s:taboption(tab, Flag, "verbose", translate("Verbose")) + s:taboption(tab, Flag, "fast_open", translate("Enable TCP Fast Open")) + s:taboption(tab, Flag, "reuse_port", translate("Enable SO_REUSEPORT")) +end + +function ucival_to_bool(val) + return val == "true" or val == "1" or val == "yes" or val == "on" +end + +function cfgvalue_overview(sdata) + local stype = sdata[".type"] + local lines = {} + + if stype == "ss_server" then + cfgvalue_overview_(sdata, lines, names_options_server) + cfgvalue_overview_(sdata, lines, names_options_common) + cfgvalue_overview_(sdata, lines, { + "bind_address", + "manager_address", + }) + elseif stype == "ss_local" or stype == "ss_redir" or stype == "ss_tunnel" then + cfgvalue_overview_(sdata, lines, names_options_client) + if stype == "ss_tunnel" then + cfgvalue_overview_(sdata, lines, {"tunnel_address"}) + end + cfgvalue_overview_(sdata, lines, names_options_common) + else + return nil, nil + end + local sname = sdata[".name"] + local key = "%s.%s" % {stype, sname} + local value = { + [".name"] = sname, + name = '%s.<var>%s</var>' % {stype, sname}, + overview = table.concat(lines, "</br>"), + disabled = ucival_to_bool(sdata["disabled"]), + } + return key, value +end + +function cfgvalue_overview_(sdata, lines, names) + local line + + for _, n in ipairs(names) do + local v = sdata[n] + if v ~= nil then + local fv = "<var>%s</var>" % ut.pcdata(v) + if sdata[".type"] ~= "ss_server" and n == "server" then + fv = '<a class="label" href="%s">%s</a>' % { + ds.build_url("admin/services/shadowsocks-libev/servers", v), fv} + end + line = n .. ": " .. fv + table.insert(lines, line) + end + end +end + +function option_install_package(s, tab) + local bin = s.sectiontype:gsub("_", "-", 1) + local installed = nixio.fs.access("/usr/bin/" .. bin) + if installed then + return + end + local opkg_package = "shadowsocks-libev-" .. bin + local p_install + if tab then + p_install = s:taboption(tab, Button, "_install") + else + p_install = s:option(Button, "_install") + end + p_install.title = translate("Package is not installed") + p_install.inputtitle = translate("Install package %q" % opkg_package) + p_install.inputstyle = "apply" + + function p_install.write() + return luci.http.redirect( + luci.dispatcher.build_url("admin/system/packages") .. + "?submit=1&install=%s" % opkg_package + ) + end +end + +names_options_server = { + "server", + "server_port", + "method", + "key", + "password", +} + +names_options_client = { + "server", + "local_address", + "local_port", +} + +names_options_common = { + "verbose", + "fast_open", + "reuse_port", + "mode", + "mtu", + "timeout", + "user", +} + +modes = { + "tcp_only", + "tcp_and_udp", + "udp_only", +} + +actions = { + "bypass", + "forward", + "checkdst", +} + +methods = { + -- aead + "aes-128-gcm", + "aes-192-gcm", + "aes-256-gcm", + -- stream + "table", + "rc4", + "rc4-md5", + "aes-128-cfb", + "aes-192-cfb", + "aes-256-cfb", + "aes-128-ctr", + "aes-192-ctr", + "aes-256-ctr", + "bf-cfb", + "camellia-128-cfb", + "camellia-192-cfb", + "camellia-256-cfb", + "salsa20", + "chacha20", + "chacha20-ietf", + "aes-128-gcm", + "aes-192-gcm", + "aes-256-gcm", +} 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 new file mode 100644 index 0000000000..219d89b074 --- /dev/null +++ b/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm @@ -0,0 +1,45 @@ +<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> +<script type="text/javascript">//<![CDATA[ + XHR.poll(5, '<%=url('admin/services/shadowsocks-libev/status')%>', null, + function(x, st) + { + var names = [ + <%- + for _, name in ipairs(self:cfgsections()) do + write("%q," % name) + end + -%> + ]; + var instances = st["instances"] || {}; + for (var i = 0, len = names.length; i < len; i++) { + var name = names[i]; + var el = document.getElementById('cbi-table-' + name + '-running'); + if (el) { + var running = instances.hasOwnProperty(name)? instances[name].running : false; + el.innerText = running ? 'yes' : 'no'; + } + } + } + ); +//]]></script> diff --git a/applications/luci-app-shadowsocks-libev/po/pt-br/shadowsocks-libev.po b/applications/luci-app-shadowsocks-libev/po/pt-br/shadowsocks-libev.po deleted file mode 100644 index f2b18e374c..0000000000 --- a/applications/luci-app-shadowsocks-libev/po/pt-br/shadowsocks-libev.po +++ /dev/null @@ -1,97 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.11\n" -"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "Access Control" -msgstr "Controle de Acesso" - -msgid "Allow all except listed" -msgstr "Permitir todos, exceto os listados" - -msgid "Allow listed only" -msgstr "Permitir somente os listados" - -msgid "Bypassed IP" -msgstr "Endereços IP Ignorados" - -msgid "Connection Timeout" -msgstr "Tempo limite de conexão" - -msgid "Custom" -msgstr "Personalizado" - -msgid "Disabled" -msgstr "Desabilitado" - -msgid "Enable" -msgstr "Ativar" - -msgid "Enabled" -msgstr "Ativado" - -msgid "Encrypt Method" -msgstr "Método de Cifragem" - -msgid "Forwarded IP" -msgstr "Endereço IP Encaminhado" - -msgid "Forwarding Tunnel" -msgstr "Tunel para Encaminhamento" - -msgid "Global Setting" -msgstr "Opções Globais" - -msgid "Ignore List" -msgstr "Lista de Ignorados" - -msgid "LAN" -msgstr "LAN" - -msgid "LAN IP List" -msgstr "Lista de endereços IP da LAN" - -msgid "Local Port" -msgstr "Porta Local" - -msgid "Password" -msgstr "Senha" - -msgid "Relay Mode" -msgstr "Modo de Retransmissor" - -msgid "Server Address" -msgstr "Endereço do Servidor" - -msgid "Server Port" -msgstr "Porta do servidor" - -msgid "ShadowSocks-libev" -msgstr "ShadowSocks-libev" - -msgid "ShadowSocks-libev is not running" -msgstr "O serviço ShadowSocks-libev está parado" - -msgid "ShadowSocks-libev is running" -msgstr "O serviço ShadowSocks-libev está em execução." - -msgid "UDP Forward" -msgstr "Encaminhamento UDP" - -msgid "UDP Local Port" -msgstr "Porta Local UDP" - -msgid "UDP Relay" -msgstr "Retransmissão UDP" - -msgid "WAN" -msgstr "WAN" diff --git a/applications/luci-app-shadowsocks-libev/po/sv/shadowsocks-libev.po b/applications/luci-app-shadowsocks-libev/po/sv/shadowsocks-libev.po deleted file mode 100644 index b0cf6d3316..0000000000 --- a/applications/luci-app-shadowsocks-libev/po/sv/shadowsocks-libev.po +++ /dev/null @@ -1,136 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Access Control" -msgstr "" - -msgid "Allow all except listed" -msgstr "" - -msgid "Allow listed only" -msgstr "" - -msgid "Bypassed IP" -msgstr "" - -msgid "Connection Timeout" -msgstr "" - -msgid "Custom" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encrypt Method" -msgstr "" - -msgid "Forwarded IP" -msgstr "" - -msgid "Forwarding Tunnel" -msgstr "" - -msgid "Global Setting" -msgstr "" - -msgid "Ignore List" -msgstr "" - -msgid "LAN" -msgstr "" - -msgid "LAN IP List" -msgstr "" - -msgid "Local Port" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Relay Mode" -msgstr "" - -msgid "Server Address" -msgstr "" - -msgid "Server Port" -msgstr "" - -msgid "ShadowSocks-libev" -msgstr "" - -msgid "ShadowSocks-libev is not running" -msgstr "" - -msgid "ShadowSocks-libev is running" -msgstr "" - -msgid "UDP Forward" -msgstr "" - -msgid "UDP Local Port" -msgstr "" - -msgid "UDP Relay" -msgstr "" - -msgid "WAN" -msgstr "" - -#~ msgid "Broadcast on all interfaces" -#~ msgstr "Sänd i alla gränssnitt" - -#~ msgid "Choose the host to wake up or enter a custom MAC address to use" -#~ msgstr "" -#~ "Välj värden som ska väckas upp eller fyll i en anpassad MAC-adress att " -#~ "använda" - -#~ msgid "Host to wake up" -#~ msgstr "Värd som ska väckas upp" - -#~ msgid "Network interface to use" -#~ msgstr "Nätverksgränssnitt som ska användas" - -#~ msgid "" -#~ "Sometimes only one of the two tools works. If one fails, try the other one" -#~ msgstr "" -#~ "Ibland så fungerar bara en av de två verktygen. Prova med den andra om " -#~ "den första misslyckades" - -#~ msgid "Specifies the interface the WoL packet is sent on" -#~ msgstr "Anger gränssnittet som fjärrstartspaketet skickas med" - -#~ msgid "Starting WoL utility:" -#~ msgstr "Startar hjälpprogrammet för fjärrstyrning av uppstart:" - -#~ msgid "Wake on LAN" -#~ msgstr "Fjärrstyrning av uppstart" - -#~ msgid "" -#~ "Wake on LAN is a mechanism to remotely boot computers in the local " -#~ "network." -#~ msgstr "" -#~ "Fjärrstyrning av uppstart är en mekanism för att starta upp datorer via " -#~ "fjärrstyrning i det lokala nätverket." - -#~ msgid "Wake up host" -#~ msgstr "Väck upp värden" - -#~ msgid "WoL program" -#~ msgstr "Program för fjärrstart" diff --git a/applications/luci-app-shadowsocks-libev/po/templates/shadowsocks-libev.pot b/applications/luci-app-shadowsocks-libev/po/templates/shadowsocks-libev.pot deleted file mode 100644 index 81bbcb72f4..0000000000 --- a/applications/luci-app-shadowsocks-libev/po/templates/shadowsocks-libev.pot +++ /dev/null @@ -1,86 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Access Control" -msgstr "" - -msgid "Allow all except listed" -msgstr "" - -msgid "Allow listed only" -msgstr "" - -msgid "Bypassed IP" -msgstr "" - -msgid "Connection Timeout" -msgstr "" - -msgid "Custom" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encrypt Method" -msgstr "" - -msgid "Forwarded IP" -msgstr "" - -msgid "Forwarding Tunnel" -msgstr "" - -msgid "Global Setting" -msgstr "" - -msgid "Ignore List" -msgstr "" - -msgid "LAN" -msgstr "" - -msgid "LAN IP List" -msgstr "" - -msgid "Local Port" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Relay Mode" -msgstr "" - -msgid "Server Address" -msgstr "" - -msgid "Server Port" -msgstr "" - -msgid "ShadowSocks-libev" -msgstr "" - -msgid "ShadowSocks-libev is not running" -msgstr "" - -msgid "ShadowSocks-libev is running" -msgstr "" - -msgid "UDP Forward" -msgstr "" - -msgid "UDP Local Port" -msgstr "" - -msgid "UDP Relay" -msgstr "" - -msgid "WAN" -msgstr "" diff --git a/applications/luci-app-shadowsocks-libev/po/zh-cn/shadowsocks-libev.po b/applications/luci-app-shadowsocks-libev/po/zh-cn/shadowsocks-libev.po deleted file mode 100644 index f86eee7e9f..0000000000 --- a/applications/luci-app-shadowsocks-libev/po/zh-cn/shadowsocks-libev.po +++ /dev/null @@ -1,97 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-12 14:12+0800\n" -"PO-Revision-Date: 2015-07-02 14:26+0800\n" -"Last-Translator: Jian Chang <aa65535@live.com>\n" -"Language: zh_CN\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: Pootle 2.0.6\n" - -msgid "Access Control" -msgstr "访问控制" - -msgid "Allow all except listed" -msgstr "仅允许列表外" - -msgid "Allow listed only" -msgstr "仅允许列表内" - -msgid "Bypassed IP" -msgstr "被忽略的IP" - -msgid "Connection Timeout" -msgstr "连接超时" - -msgid "Custom" -msgstr "自定义" - -msgid "Disabled" -msgstr "已禁用" - -msgid "Enable" -msgstr "启用" - -msgid "Enabled" -msgstr "已启用" - -msgid "Encrypt Method" -msgstr "加密方式" - -msgid "Forwarded IP" -msgstr "走代理的IP" - -msgid "Forwarding Tunnel" -msgstr "UDP转发地址" - -msgid "Global Setting" -msgstr "全局设置" - -msgid "Ignore List" -msgstr "忽略列表" - -msgid "LAN" -msgstr "" - -msgid "LAN IP List" -msgstr "内网IP列表" - -msgid "Local Port" -msgstr "本地端口" - -msgid "Password" -msgstr "密码" - -msgid "Relay Mode" -msgstr "中继模式" - -msgid "Server Address" -msgstr "服务器地址" - -msgid "Server Port" -msgstr "服务器端口" - -msgid "ShadowSocks-libev" -msgstr "ShadowSocks-libev" - -msgid "ShadowSocks-libev is not running" -msgstr "ShadowSocks-libev 未运行" - -msgid "ShadowSocks-libev is running" -msgstr "ShadowSocks-libev 运行中" - -msgid "UDP Forward" -msgstr "UDP转发" - -msgid "UDP Local Port" -msgstr "UDP本地端口" - -msgid "UDP Relay" -msgstr "UDP中继" - -msgid "WAN" -msgstr "" diff --git a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua index 1bc0714de8..ec26f02d0d 100644 --- a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua +++ b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua @@ -23,6 +23,7 @@ function index() s_general = _("General plugins"), s_network = _("Network plugins"), + apcups = _("APC UPS"), conntrack = _("Conntrack"), contextswitch = _("Context Switches"), cpu = _("Processor"), @@ -59,8 +60,8 @@ function index() -- our collectd menu local collectd_menu = { output = { "csv", "network", "rrdtool", "unixsock" }, - general = { "contextswitch", "cpu", "cpufreq", "df", "disk", "email", - "entropy", "exec", "irq", "load", "memory", + general = { "apcups", "contextswitch", "cpu", "cpufreq", "df", + "disk", "email", "entropy", "exec", "irq", "load", "memory", "nut", "processes", "sensors", "thermal", "uptime" }, network = { "conntrack", "dns", "interface", "iptables", "netlink", "olsrd", "openvpn", "ping", @@ -88,7 +89,7 @@ function index() _entry( { "admin", "statistics", "collectd", section, plugin }, cbi("luci_statistics/" .. plugin ), - labels[plugin], j * 10 + labels[plugin] or plugin, j * 10 ) end diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua new file mode 100644 index 0000000000..49e28c7cfd --- /dev/null +++ b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua @@ -0,0 +1,28 @@ +-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org> +-- Licensed to the public under the Apache License 2.0. + +m = Map("luci_statistics", + translate("APCUPS Plugin Configuration"), + translate( + "The APCUPS plugin collects statistics about the APC UPS." + )) + +-- collectd_apcups config section +s = m:section( NamedSection, "collectd_apcups", "luci_statistics" ) + +-- collectd_apcups.enable +enable = s:option( Flag, "enable", translate("Enable this plugin") ) +enable.default = 0 + +-- collectd_apcups.host (Host) +host = s:option( Value, "Host", translate("Monitor host"), translate ("Add multiple hosts separated by space.")) +host.default = "localhost" +host:depends( "enable", 1 ) + +-- collectd_apcups.port (Port) +port = s:option( Value, "Port", translate("Port for apcupsd communication") ) +port.isinteger = true +port.default = 3551 +port:depends( "enable", 1 ) + +return m diff --git a/applications/luci-app-statistics/luasrc/statistics/datatree.lua b/applications/luci-app-statistics/luasrc/statistics/datatree.lua index 806b054cb6..5176a19a22 100644 --- a/applications/luci-app-statistics/luasrc/statistics/datatree.lua +++ b/applications/luci-app-statistics/luasrc/statistics/datatree.lua @@ -13,9 +13,17 @@ local sections = uci:get_all("luci_statistics") Instance = util.class() function Instance.__init__( self, host ) - self._host = host or sections.collectd.Hostname or sys.hostname() - self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd" - self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd" + self._host = host or sys.hostname() + self._libdir = "/usr/lib/collectd" + self._rrddir = "/tmp/rrd" + + if sections and sections.collectd then + self._host = host or sections.collectd.Hostname or sys.hostname() + self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd" + end + if sections and sections.collectd_rrdtool then + self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd" + end self._libdir = self._libdir:gsub("/$","") self._rrddir = self._rrddir:gsub("/$","") diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua index 4e00e7f1fc..e29a2e17d9 100644 --- a/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua +++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua @@ -278,7 +278,7 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index ) -- create line1 statement _tif( _args, "LINE%d:%s_%s#%s:%s", - source.noarea and 2 or 1, + source.width or (source.noarea and 2 or 1), source.sname, var, line_color, legend ) end diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua new file mode 100644 index 0000000000..2a8aceec08 --- /dev/null +++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua @@ -0,0 +1,117 @@ +-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org> +-- Licensed to the public under the Apache License 2.0. + +module("luci.statistics.rrdtool.definitions.apcups",package.seeall) + +function rrdargs( graph, plugin, plugin_instance, dtype ) + + local voltagesdc = { + title = "%H: Voltages on APC UPS - Battery", + vlabel = "Volts DC", + alt_autoscale = true, + number_format = "%5.1lfV", + data = { + instances = { + voltage = { "battery" } + }, + + options = { + voltage = { title = "Battery voltage", noarea=true } + } + } + } + + local voltages = { + title = "%H: Voltages on APC UPS - AC", + vlabel = "Volts AC", + alt_autoscale = true, + number_format = "%5.1lfV", + data = { + instances = { + voltage = { "input", "output" } + }, + + options = { + voltage_output = { color = "00e000", title = "Output voltage", noarea=true, overlay=true }, + voltage_input = { color = "ffb000", title = "Input voltage", noarea=true, overlay=true } + } + } + } + + local percentload = { + title = "%H: Load on APC UPS ", + vlabel = "Percent", + y_min = "0", + y_max = "100", + number_format = "%5.1lf%%", + data = { + sources = { + percent_load = { "value" } + }, + instances = { + percent = "load" + }, + options = { + percent_load = { color = "00ff00", title = "Load level" } + } + } + } + + local charge_percent = { + title = "%H: Battery charge on APC UPS ", + vlabel = "Percent", + y_min = "0", + y_max = "100", + number_format = "%5.1lf%%", + data = { + types = { "charge" }, + options = { + charge = { color = "00ff0b", title = "Charge level" } + } + } + } + + local temperature = { + title = "%H: Battery temperature on APC UPS ", + vlabel = "\176C", + number_format = "%5.1lf\176C", + data = { + types = { "temperature" }, + options = { + temperature = { color = "ffb000", title = "Battery temperature" } } + } + } + + local timeleft = { + title = "%H: Time left on APC UPS ", + vlabel = "Minutes", + number_format = "%.1lfm", + data = { + sources = { + timeleft = { "value" } + }, + options = { + timeleft = { color = "0000ff", title = "Time left" } + } + } + } + + local frequency = { + title = "%H: Incoming line frequency on APC UPS ", + vlabel = "Hz", + number_format = "%5.0lfhz", + data = { + sources = { + frequency_input = { "value" } + }, + instances = { + frequency = "frequency" + }, + options = { + frequency_frequency = { color = "000fff", title = "Line frequency" } + } + } + } + + return { voltages, voltagesdc, percentload, charge_percent, temperature, timeleft, frequency } +end diff --git a/applications/luci-app-statistics/root/etc/config/luci_statistics b/applications/luci-app-statistics/root/etc/config/luci_statistics index c081a8e724..8cc918e3db 100644 --- a/applications/luci-app-statistics/root/etc/config/luci_statistics +++ b/applications/luci-app-statistics/root/etc/config/luci_statistics @@ -49,6 +49,11 @@ config statistics 'collectd_unixsock' # input plugins +config statistics 'collectd_apcups' + option enable '0' + option Host 'localhost' + option Port '3551' + config statistics 'collectd_conntrack' option enable '0' diff --git a/applications/luci-app-statistics/root/usr/bin/stat-genconfig b/applications/luci-app-statistics/root/usr/bin/stat-genconfig index 090344cee4..2bf63c1fe6 100755 --- a/applications/luci-app-statistics/root/usr/bin/stat-genconfig +++ b/applications/luci-app-statistics/root/usr/bin/stat-genconfig @@ -255,6 +255,12 @@ end plugins = { + apcups = { + { "Host", "Port" }, + { }, + { } + }, + collectd = { { "BaseDir", "Include", "PIDFile", "PluginDir", "TypesDB", "Interval", "ReadThreads", "Hostname" }, { }, @@ -461,8 +467,10 @@ preprocess = { section("collectd") +section("logfile") + for plugin in pairs(plugins) do - if plugin ~= "collectd" then + if (plugin ~= "collectd") and (plugin ~= "logfile") then section( plugin ) end end diff --git a/applications/luci-app-travelmate/po/ja/travelmate.po b/applications/luci-app-travelmate/po/ja/travelmate.po index e4a8b8bda2..bd1d54739c 100644 --- a/applications/luci-app-travelmate/po/ja/travelmate.po +++ b/applications/luci-app-travelmate/po/ja/travelmate.po @@ -7,18 +7,20 @@ msgstr "" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.1\n" +"X-Generator: Poedit 2.0.3\n" "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n" "Plural-Forms: nplurals=1; plural=0;\n" "Language: ja\n" -msgid "<br /> Network Interface 'trm_wwan' created successfully." -msgstr "" -"<br /> ネットワーク インターフェース 'trm_wwan' の作成に成功しました。" - msgid "Add Interface" msgstr "インターフェースの追加" +msgid "Add Uplink" +msgstr "アップリンクの追加" + +msgid "Add Wireless Uplink Configuration" +msgstr "無線アップリンク追加の設定" + msgid "" "Additional trigger delay in seconds before travelmate processing begins." msgstr "Travelmate の処理が開始されるまでの、追加の遅延時間(秒)です。" @@ -26,12 +28,8 @@ msgstr "Travelmate の処理が開始されるまでの、追加の遅延時間 msgid "Advanced" msgstr "詳細設定" -msgid "" -"Automatically create a new wireless wan uplink interface 'trm_wwan', " -"configure it to use dhcp and" -msgstr "" -"新しい無線 WAN インターフェース 'trm_wwan' を自動的に作成し、 DHCP を使用する" -"よう構成して" +msgid "Back to overview" +msgstr "概要へ戻る" msgid "" "Configuration of the travelmate package to to enable travel router " @@ -45,6 +43,27 @@ msgstr "接続制限" msgid "Create Uplink Interface" msgstr "アップリンク インターフェースの作成" +msgid "" +"Create a new wireless wan uplink interface, configure it to use dhcp and" +msgstr "" +"新規の無線 WAN アップリンク インターフェースを作成し、 DHCP を使用するよう構" +"成して" + +msgid "Delete" +msgstr "削除" + +msgid "Delete this Uplink" +msgstr "このアップリンクを削除" + +msgid "Device" +msgstr "デバイス" + +msgid "Disabled" +msgstr "無効" + +msgid "Edit" +msgstr "編集" + msgid "Edit Firewall Configuration" msgstr "ファイアウォール設定の編集" @@ -57,6 +76,12 @@ msgstr "Travelmate 設定の編集" msgid "Edit Wireless Configuration" msgstr "無線設定の編集" +msgid "Edit Wireless Uplink Configuration" +msgstr "無線アップリンク設定の編集" + +msgid "Edit this Uplink" +msgstr "このアップリンクを編集" + msgid "Enable 'automatic' mode" msgstr "'automatic' モードの有効化" @@ -66,15 +91,21 @@ msgstr "Travelmate の有効化" msgid "Enable verbose debug logging" msgstr "詳細なデバッグ ログの有効化" +msgid "Encryption" +msgstr "暗号化" + msgid "Extra options" msgstr "拡張オプション" +msgid "Find and join network on" +msgstr "ネットワークの検索と参加:" + msgid "" "For further information <a href=\"%s\" target=\"_blank\">see online " "documentation</a>" msgstr "" -"詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a>を確" -"認してください。" +"詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a> を" +"確認してください。" msgid "How long should travelmate wait for a successful wlan interface reload" msgstr "" @@ -82,26 +113,36 @@ msgstr "" "す。" msgid "How many times should travelmate try to connect to an Uplink" -msgstr "Travelmate がアップリンクに対して接続を試行する回数です。" +msgstr "Travelmate がアップリンクへの接続を試行する回数です。" msgid "Input file not found, please check your configuration." msgstr "入力ファイルが見つかりません。設定を確認してください。" -msgid "Interface Setup" -msgstr "インターフェース設定" - msgid "Interface Timeout" msgstr "インターフェース タイムアウト" +msgid "Interface Wizard" +msgstr "インターフェース ウィザード" + msgid "Keep travelmate in an active state." msgstr "Travelmate をアクティブ状態で維持します。" msgid "Last rundate" msgstr "最終実行日時" +msgid "Mode" +msgstr "モード" + +msgid "Name of the uplink interface that triggers travelmate processing." +msgstr "" +"Travelmate の処理のトリガーとなる、アップリンク インターフェースの名前です。" + msgid "Online Status" msgstr "オンライン ステータス" +msgid "Open" +msgstr "オープン" + msgid "" "Options for further tweaking in case the defaults are not suitable for you." msgstr "デフォルトの設定が適切でない場合、さらに設定するためのオプションです。" @@ -112,11 +153,22 @@ msgstr "全体タイムアウト" msgid "Overview" msgstr "概要" +msgid "Passphrase (%s)" +msgstr "暗号フレーズ (%s)" + +msgid "" +"Provides an overview of all configured uplink interfaces for travelmate. You " +"can edit and delete existing interfaces or scan for new uplinks." +msgstr "" +"Travelmate における、全ての設定済みアップリンク インターフェースの一覧です。" +"既存のインターフェースを編集または削除したり、新規アップリンクの追加のために" +"スキャンを行うことができます。" + msgid "Radio selection" msgstr "無線の選択" -msgid "Restrict interface trigger to certain interface(s)" -msgstr "インターフェース トリガーを特定のインターフェースに限定する" +msgid "Repeat scan" +msgstr "再スキャン" msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'" msgstr "Travelmate が特定の無線に接続するようにします。例: 'radio0'" @@ -124,26 +176,23 @@ msgstr "Travelmate が特定の無線に接続するようにします。例: 'r msgid "Runtime information" msgstr "実行情報" -msgid "" -"Scan & Add new wireless stations via standard <a href=\"%s\">Wireless " -"Setup</a>" -msgstr "" -"通常の<a href=\"%s\">無線設定</a>にて、新規の無線ステーションのスキャン及び追" -"加を行います。" +msgid "SSID" +msgstr "SSID" -msgid "" -"Space separated list of interfaces that trigger travelmate processing. To " -"disable event driven (re-)starts remove all entries." -msgstr "" -"Travelmate の処理のトリガーとなる、スペースで区切られたインターフェースのリス" -"トです。処理を発生させるイベントを無効にするには、全てのエントリーを削除して" -"空欄にします。" +msgid "Scan" +msgstr "スキャン:" + +msgid "Signal strength" +msgstr "信号強度" + +msgid "Specify the secret encryption key here." +msgstr "暗号キーを設定します。" msgid "Station Interface" msgstr "ステーション インターフェース" msgid "Station Radio" -msgstr "ステーション 無線" +msgstr "ステーション電波" msgid "Station SSID" msgstr "ステーション SSID" @@ -198,9 +247,42 @@ msgstr "Travelmate バージョン" msgid "Trigger delay" msgstr "トリガー遅延" +msgid "Unknown" +msgstr "不明" + +msgid "Uplink / Trigger interface" +msgstr "アップリンク/トリガー インターフェース" + +msgid "Uplink Interface" +msgstr "アップリンク インターフェース" + +msgid "Uplink SSID" +msgstr "アップリンク SSID" + +msgid "Uplink interface" +msgstr "アップリンク インターフェース" + msgid "View Logfile" msgstr "ログファイルの確認" +msgid "WEP" +msgstr "WEP" + +msgid "WEP passphrase" +msgstr "WEP 暗号キー" + +msgid "WPA / WPA2" +msgstr "WPA / WPA2" + +msgid "WPA passphrase" +msgstr "WPA 暗号キー" + +msgid "Wireless Scan" +msgstr "無線スキャン" + +msgid "Wireless Stations" +msgstr "無線ステーション" + msgid "" "add it to the wan zone of the firewall. This step has only to be done once." msgstr "" @@ -210,126 +292,11 @@ msgstr "" msgid "connected" msgstr "接続済み" +msgid "hidden" +msgstr "(不明)" + msgid "n/a" msgstr "利用不可" msgid "not connected" msgstr "未接続" - -#~ msgid "." -#~ msgstr "。" - -#~ msgid "" -#~ "Automatically create a new wireless wan interface, configure it to use " -#~ "dhcp and add it to the wan zone of the firewall. This step has only to be " -#~ "done once." -#~ msgstr "" -#~ "新しい無線 WAN インターフェースを自動的に作成し、DHCP を使用するよう構成し" -#~ "てファイアウォールの wan ゾーンに追加します。このステップは、一度だけ実行" -#~ "する必要があります。" - -#~ msgid "Direct Link: <a href=\"%s\">Wireless Setup</a>" -#~ msgstr "ダイレクト リンク: <a href=\"%s\">無線設定</a>" - -#~ msgid "For further information" -#~ msgstr "詳細情報は" - -#~ msgid "Name of the new wireless wan interface" -#~ msgstr "新しい無線 WAN のインターフェース名" - -#~ msgid "" -#~ "Network Interface '%s' created successfully. Feel free to scan & add new " -#~ "stations via standard wireless setup." -#~ msgstr "" -#~ "ネットワーク インターフェース '%s' の作成に成功しました。通常の無線設定に" -#~ "て、スキャン及び新規ステーションの追加が可能です。" - -#~ msgid "Setup WWAN Interface" -#~ msgstr "WWAN インターフェース設定" - -#~ msgid "" -#~ "The allowed characters are: <code>A-Z</code>, <code>a-z</code>, " -#~ "<code>0-9</code> and <code>_</code> (3-15 characters)." -#~ msgstr "" -#~ "使用可能文字: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> and " -#~ "<code>_</code>(3 - 15文字)" - -#~ msgid "The given network interface name already exist" -#~ msgstr "入力されたネットワーク インターフェース名は、既に存在しています。" - -#~ msgid "see online documentation" -#~ msgstr "オンライン ドキュメントを確認してください" - -#~ msgid "" -#~ "Brief advice: Create a wwan interface, configure it to use dhcp and add " -#~ "it to the wan zone in firewall. Create the wifi interfaces to be used " -#~ "('client' mode, assigned to wwan network, left as disabled). Travelmate " -#~ "will try to connect to the known wifi client interfaces in the defined " -#~ "order." -#~ msgstr "" -#~ "簡単な解説: 予めWWANインターフェースを作成し、DHCPを使用するよう構成して" -#~ "ファイアウォールのWANゾーンに追加します。また、使用される無線インター" -#~ "フェースを作成しておきます(\"クライアント\" モード、WWANに割り当て、無効" -#~ "状態)。Travelmateは、登録されている順序で既知の無線クライアント インター" -#~ "フェースへの接続を試行します。" - -#~ msgid "" -#~ "Configuration of the Travelmate package to enable travel router " -#~ "functionality." -#~ msgstr "トラベル ルータ機能を有効にする、Travelmate パッケージの設定です。" - -#~ msgid "Debug logging" -#~ msgstr "デバッグ ログ" - -#~ msgid "Default 20, range 10-60" -#~ msgstr "既定値 20、範囲 10 - 60" - -#~ msgid "Default 3, range 1-10" -#~ msgstr "既定値 3、範囲 1 - 10" - -#~ msgid "Disable this if you want to use iwinfo instead of iw" -#~ msgstr "iw の代わりに iwinfo を使用したい場合、この設定を無効にします。" - -#~ msgid "Enable Travelmate" -#~ msgstr "Travelmateの有効化" - -#~ msgid "Global options" -#~ msgstr "全般オプション" - -#~ msgid "Link to detailed advice" -#~ msgstr "詳細な解説へのリンク" - -#~ msgid "Max. number of connection retries to an uplink" -#~ msgstr "確立までの接続試行回数" - -#~ msgid "Max. timeout in seconds for wlan interface reload" -#~ msgstr "無線LANインターフェース リロード時の最大待機時間(秒)" - -#~ msgid "Restrict reload trigger to certain interface(s)" -#~ msgstr "リロード トリガを特定のインターフェースに限定する" - -#~ msgid "" -#~ "Space separated list of wwan interfaces that trigger reload action. To " -#~ "disable reload trigger set it to 'false'. Default: empty" -#~ msgstr "" -#~ "リロード動作のトリガとなる、スペースで区切られたWWAN インターフェースのリ" -#~ "ストです。リロードのトリガを無効にするには、'false' を設定します。既定値:" -#~ "(空)" - -#~ msgid "Use iw for scanning" -#~ msgstr "スキャンに iw を使用する" - -#~ msgid "Default 3, range 0-10. Set to 0 to allow unlimited retries" -#~ msgstr "既定値 3、範囲 0 - 10。再試行回数を制限しない場合、0 に設定します。" - -#~ msgid "Default 30, range 5-60" -#~ msgstr "既定値 30、範囲 5 - 60" - -#~ msgid "Default: empty = use all radios." -#~ msgstr "デフォルト:(空)= 全ての無線を使用" - -#~ msgid "Loop timeout in seconds for wlan monitoring" -#~ msgstr "無線LAN モニターのループ タイムアウト(秒)" - -#~ msgid "Use only one radio, e.g. 'radio0'" -#~ msgstr "単一の無線のみ使用する 例: 'radio0'" diff --git a/applications/luci-app-travelmate/po/pt-br/travelmate.po b/applications/luci-app-travelmate/po/pt-br/travelmate.po index 4eff34e3e1..5e09759c4a 100644 --- a/applications/luci-app-travelmate/po/pt-br/travelmate.po +++ b/applications/luci-app-travelmate/po/pt-br/travelmate.po @@ -12,10 +12,13 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "Language: pt_BR\n" -msgid "<br /> Network Interface 'trm_wwan' created successfully." +msgid "Add Interface" msgstr "" -msgid "Add Interface" +msgid "Add Uplink" +msgstr "" + +msgid "Add Wireless Uplink Configuration" msgstr "" msgid "" @@ -25,9 +28,7 @@ msgstr "" msgid "Advanced" msgstr "" -msgid "" -"Automatically create a new wireless wan uplink interface 'trm_wwan', " -"configure it to use dhcp and" +msgid "Back to overview" msgstr "" msgid "" @@ -41,6 +42,25 @@ msgstr "" msgid "Create Uplink Interface" msgstr "" +msgid "" +"Create a new wireless wan uplink interface, configure it to use dhcp and" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "Delete this Uplink" +msgstr "" + +msgid "Device" +msgstr "" + +msgid "Disabled" +msgstr "" + +msgid "Edit" +msgstr "" + msgid "Edit Firewall Configuration" msgstr "" @@ -53,6 +73,12 @@ msgstr "" msgid "Edit Wireless Configuration" msgstr "" +msgid "Edit Wireless Uplink Configuration" +msgstr "" + +msgid "Edit this Uplink" +msgstr "" + msgid "Enable 'automatic' mode" msgstr "" @@ -62,9 +88,15 @@ msgstr "" msgid "Enable verbose debug logging" msgstr "" +msgid "Encryption" +msgstr "" + msgid "Extra options" msgstr "Opções adicionais" +msgid "Find and join network on" +msgstr "" + msgid "" "For further information <a href=\"%s\" target=\"_blank\">see online " "documentation</a>" @@ -79,10 +111,10 @@ msgstr "" msgid "Input file not found, please check your configuration." msgstr "" -msgid "Interface Setup" +msgid "Interface Timeout" msgstr "" -msgid "Interface Timeout" +msgid "Interface Wizard" msgstr "" msgid "Keep travelmate in an active state." @@ -91,9 +123,18 @@ msgstr "" msgid "Last rundate" msgstr "" +msgid "Mode" +msgstr "" + +msgid "Name of the uplink interface that triggers travelmate processing." +msgstr "" + msgid "Online Status" msgstr "" +msgid "Open" +msgstr "" + msgid "" "Options for further tweaking in case the defaults are not suitable for you." msgstr "" @@ -104,10 +145,18 @@ msgstr "" msgid "Overview" msgstr "" +msgid "Passphrase (%s)" +msgstr "" + +msgid "" +"Provides an overview of all configured uplink interfaces for travelmate. You " +"can edit and delete existing interfaces or scan for new uplinks." +msgstr "" + msgid "Radio selection" msgstr "" -msgid "Restrict interface trigger to certain interface(s)" +msgid "Repeat scan" msgstr "" msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'" @@ -116,14 +165,16 @@ msgstr "" msgid "Runtime information" msgstr "" -msgid "" -"Scan & Add new wireless stations via standard <a href=\"%s\">Wireless " -"Setup</a>" +msgid "SSID" msgstr "" -msgid "" -"Space separated list of interfaces that trigger travelmate processing. To " -"disable event driven (re-)starts remove all entries." +msgid "Scan" +msgstr "" + +msgid "Signal strength" +msgstr "" + +msgid "Specify the secret encryption key here." msgstr "" msgid "Station Interface" @@ -175,9 +226,42 @@ msgstr "" msgid "Trigger delay" msgstr "" +msgid "Unknown" +msgstr "" + +msgid "Uplink / Trigger interface" +msgstr "" + +msgid "Uplink Interface" +msgstr "" + +msgid "Uplink SSID" +msgstr "" + +msgid "Uplink interface" +msgstr "" + msgid "View Logfile" msgstr "" +msgid "WEP" +msgstr "" + +msgid "WEP passphrase" +msgstr "" + +msgid "WPA / WPA2" +msgstr "" + +msgid "WPA passphrase" +msgstr "" + +msgid "Wireless Scan" +msgstr "" + +msgid "Wireless Stations" +msgstr "" + msgid "" "add it to the wan zone of the firewall. This step has only to be done once." msgstr "" @@ -185,6 +269,9 @@ msgstr "" msgid "connected" msgstr "" +msgid "hidden" +msgstr "" + msgid "n/a" msgstr "" diff --git a/applications/luci-app-travelmate/po/templates/travelmate.pot b/applications/luci-app-travelmate/po/templates/travelmate.pot index 615c3a79ce..a0e5629696 100644 --- a/applications/luci-app-travelmate/po/templates/travelmate.pot +++ b/applications/luci-app-travelmate/po/templates/travelmate.pot @@ -1,10 +1,13 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -msgid "<br /> Network Interface 'trm_wwan' created successfully." +msgid "Add Interface" msgstr "" -msgid "Add Interface" +msgid "Add Uplink" +msgstr "" + +msgid "Add Wireless Uplink Configuration" msgstr "" msgid "" @@ -14,9 +17,7 @@ msgstr "" msgid "Advanced" msgstr "" -msgid "" -"Automatically create a new wireless wan uplink interface 'trm_wwan', " -"configure it to use dhcp and" +msgid "Back to overview" msgstr "" msgid "" @@ -30,6 +31,25 @@ msgstr "" msgid "Create Uplink Interface" msgstr "" +msgid "" +"Create a new wireless wan uplink interface, configure it to use dhcp and" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "Delete this Uplink" +msgstr "" + +msgid "Device" +msgstr "" + +msgid "Disabled" +msgstr "" + +msgid "Edit" +msgstr "" + msgid "Edit Firewall Configuration" msgstr "" @@ -42,6 +62,12 @@ msgstr "" msgid "Edit Wireless Configuration" msgstr "" +msgid "Edit Wireless Uplink Configuration" +msgstr "" + +msgid "Edit this Uplink" +msgstr "" + msgid "Enable 'automatic' mode" msgstr "" @@ -51,9 +77,15 @@ msgstr "" msgid "Enable verbose debug logging" msgstr "" +msgid "Encryption" +msgstr "" + msgid "Extra options" msgstr "" +msgid "Find and join network on" +msgstr "" + msgid "" "For further information <a href=\"%s\" target=\"_blank\">see online " "documentation</a>" @@ -68,10 +100,10 @@ msgstr "" msgid "Input file not found, please check your configuration." msgstr "" -msgid "Interface Setup" +msgid "Interface Timeout" msgstr "" -msgid "Interface Timeout" +msgid "Interface Wizard" msgstr "" msgid "Keep travelmate in an active state." @@ -80,9 +112,18 @@ msgstr "" msgid "Last rundate" msgstr "" +msgid "Mode" +msgstr "" + +msgid "Name of the uplink interface that triggers travelmate processing." +msgstr "" + msgid "Online Status" msgstr "" +msgid "Open" +msgstr "" + msgid "" "Options for further tweaking in case the defaults are not suitable for you." msgstr "" @@ -93,10 +134,18 @@ msgstr "" msgid "Overview" msgstr "" +msgid "Passphrase (%s)" +msgstr "" + +msgid "" +"Provides an overview of all configured uplink interfaces for travelmate. You " +"can edit and delete existing interfaces or scan for new uplinks." +msgstr "" + msgid "Radio selection" msgstr "" -msgid "Restrict interface trigger to certain interface(s)" +msgid "Repeat scan" msgstr "" msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'" @@ -105,14 +154,16 @@ msgstr "" msgid "Runtime information" msgstr "" -msgid "" -"Scan & Add new wireless stations via standard <a href=\"%s\">Wireless " -"Setup</a>" +msgid "SSID" msgstr "" -msgid "" -"Space separated list of interfaces that trigger travelmate processing. To " -"disable event driven (re-)starts remove all entries." +msgid "Scan" +msgstr "" + +msgid "Signal strength" +msgstr "" + +msgid "Specify the secret encryption key here." msgstr "" msgid "Station Interface" @@ -164,9 +215,42 @@ msgstr "" msgid "Trigger delay" msgstr "" +msgid "Unknown" +msgstr "" + +msgid "Uplink / Trigger interface" +msgstr "" + +msgid "Uplink Interface" +msgstr "" + +msgid "Uplink SSID" +msgstr "" + +msgid "Uplink interface" +msgstr "" + msgid "View Logfile" msgstr "" +msgid "WEP" +msgstr "" + +msgid "WEP passphrase" +msgstr "" + +msgid "WPA / WPA2" +msgstr "" + +msgid "WPA passphrase" +msgstr "" + +msgid "Wireless Scan" +msgstr "" + +msgid "Wireless Stations" +msgstr "" + msgid "" "add it to the wan zone of the firewall. This step has only to be done once." msgstr "" @@ -174,6 +258,9 @@ msgstr "" msgid "connected" msgstr "" +msgid "hidden" +msgstr "" + msgid "n/a" msgstr "" diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua index 847c98a3e8..bfaacb40bc 100644 --- a/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua +++ b/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua @@ -3,8 +3,20 @@ -- Copyright 2016 Dan Luedtke <mail@danrl.com> -- Licensed to the public under the Apache License 2.0. +local m +local s1 +local ena, mcf, lsv, rlh, rpv, vld, nvd, eds, prt, tlm +local ctl, dlk, dom, dty, lfq, wfq, exa, ctl, d64, pfx, qry, qrs +local pro, tgr, rsc, rsn, ag2 + m = Map("unbound", translate("Recursive DNS"), - translate("Unbound is a validating, recursive, and caching DNS resolver.")) + translatef("<a href=\"%s\" target=\"_blank\">Unbound</a>" + .. " is a validating, recursive, and caching DNS resolver. " + .. "UCI help can be found on " + .. "<a href=\"%s\" target=\"_blank\">github</a>.", + "https://www.unbound.net/", + "https://github.com/openwrt/packages/blob/master/net/unbound/files/README.md")) + s1 = m:section(TypedSection, "unbound") s1.addremove = false @@ -24,19 +36,19 @@ mcf = s1:taboption("service", Flag, "manual_conf", translate("Manual Conf:"), mcf.rmempty = false function ena.cfgvalue(self, section) - return luci.sys.init.enabled("unbound") and self.enabled or self.disabled + return luci.sys.init.enabled("unbound") and self.enabled or self.disabled end function ena.write(self, section, value) - if value == "1" then - luci.sys.init.enable("unbound") - luci.sys.call("/etc/init.d/unbound start >/dev/null") - else - luci.sys.call("/etc/init.d/unbound stop >/dev/null") - luci.sys.init.disable("unbound") - end - - return Flag.write(self, section, value) + if value == "1" then + luci.sys.init.enable("unbound") + luci.sys.call("/etc/init.d/unbound start >/dev/null") + else + luci.sys.call("/etc/init.d/unbound stop >/dev/null") + luci.sys.init.disable("unbound") + end + + return Flag.write(self, section, value) end --Basic Tab @@ -125,6 +137,15 @@ wfq:value("4", translate("Interface FQDN, All Addresses")) wfq:depends({ dhcp_link = "none" }) wfq:depends({ dhcp_link = "odhcpd" }) +exa = s1:taboption("advanced", ListValue, "add_extra_dns", translate("Extra DNS:"), + translate("Use extra DNS entries found in /etc/config/dhcp")) +exa:value("0", translate("Ignore")) +exa:value("1", translate("Include Network/Hostnames")) +exa:value("2", translate("Advanced MX/SRV RR")) +exa:value("3", translate("Advanced CNAME RR")) +exa:depends({ dhcp_link = "none" }) +exa:depends({ dhcp_link = "odhcpd" }) + ctl = s1:taboption("advanced", Flag, "dhcp4_slaac6", translate("DHCPv4 to SLAAC:"), translate("Use DHCPv4 MAC to discover IP6 hosts SLAAC (EUI64)")) ctl.rmempty = false @@ -179,11 +200,17 @@ rsc.rmempty = false ag2 = s1:taboption("resource", Value, "root_age", translate("Root DSKEY Age:"), translate("Limit days between RFC5011 to reduce flash writes")) ag2.datatype = "and(uinteger,min(1),max(99))" -ag2:value("14", "14") -ag2:value("28", "28 ("..translate("default")..")") -ag2:value("45", "45") -ag2:value("90", "90") +ag2:value("3", "3") +ag2:value("9", "9 ("..translate("default")..")") +ag2:value("12", "12") +ag2:value("24", "24") ag2:value("99", "99 ("..translate("never")..")") +tgr = s1:taboption("resource", Value, "trigger", translate("Trigger Networks:"), + translate("Networks that may trigger Unbound to reload (avoid wan6)")) +tgr.template = "cbi/network_netlist" +tgr.widget = "checkbox" +tgr.cast = "string" + return m diff --git a/applications/luci-app-watchcat/po/sv/watchcat.po b/applications/luci-app-watchcat/po/sv/watchcat.po index 0b811bceea..07aa726493 100644 --- a/applications/luci-app-watchcat/po/sv/watchcat.po +++ b/applications/luci-app-watchcat/po/sv/watchcat.po @@ -19,6 +19,8 @@ msgid "" "How often to check internet connection. Default unit is seconds, you can you " "use the suffix 'm' for minutes, 'h' for hours or 'd' for days" msgstr "" +"Hur ofta internet-anslutningen ska kollas. Standardenheten är sekunder, du kan använda " +"tillägget 'm' för minutrar, 't' för timmar eller 'd' för dagar" msgid "" "In periodic mode, it defines the reboot period. In internet mode, it defines " @@ -28,7 +30,7 @@ msgid "" msgstr "" msgid "Operating mode" -msgstr "" +msgstr "Driftsläge" msgid "Period" msgstr "Period" @@ -37,7 +39,7 @@ msgid "Ping host" msgstr "Pinga värd" msgid "Ping period" -msgstr "" +msgstr "Period för pingning" msgid "Watchcat" msgstr "Watchcat" diff --git a/applications/luci-app-wifischedule/po/sv/wifischedule.po b/applications/luci-app-wifischedule/po/sv/wifischedule.po new file mode 100644 index 0000000000..ca4e5aac78 --- /dev/null +++ b/applications/luci-app-wifischedule/po/sv/wifischedule.po @@ -0,0 +1,101 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "Activate wifi" +msgstr "Aktivera wifi" + +msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi" +msgstr "" + +msgid "Could not find required programm /usr/bin/iwinfo" +msgstr "" + +msgid "Cron Jobs" +msgstr "Cron-jobb" + +msgid "Day(s) of Week" +msgstr "Dag(ar) i veckan" + +msgid "Defines a schedule when to turn on and off wifi." +msgstr "Anger ett schema när wifi ska startas och stängas ner." + +msgid "Determine Modules Automatically" +msgstr "Avgör moduler automatiskt" + +msgid "Disable wifi gracefully" +msgstr "Inaktivera wifi elegant" + +msgid "Disabled wifi forced" +msgstr "Inaktivering av wifi påtvingat" + +msgid "Enable" +msgstr "Aktivera" + +msgid "Enable Wifi Schedule" +msgstr "Aktivera Wifi-schema" + +msgid "Enable logging" +msgstr "Aktivera loggning" + +msgid "Force disabling wifi even if stations associated" +msgstr "" + +msgid "Friday" +msgstr "Fredag" + +msgid "Global Settings" +msgstr "Globala inställningar" + +msgid "Monday" +msgstr "Måndag" + +msgid "Saturday" +msgstr "Lördag" + +msgid "Schedule" +msgstr "Schema" + +msgid "Schedule events" +msgstr "Schemalägg händelser" + +msgid "Start Time" +msgstr "Starttid" + +msgid "Start WiFi" +msgstr "Starta WiFi" + +msgid "Stop Time" +msgstr "Stopptid" + +msgid "Stop WiFi" +msgstr "Stoppa WiFi" + +msgid "Sunday" +msgstr "Söndag" + +msgid "The value %s is invalid" +msgstr "Värdet %s är ogiltigt" + +msgid "Thursday" +msgstr "Torsdag" + +msgid "Tuesday" +msgstr "Tisdag" + +msgid "Unload Modules (experimental; saves more power)" +msgstr "Befria moduler (experimentiell; sparar mer ström)" + +msgid "View Cron Jobs" +msgstr "Se Cron-jobb" + +msgid "View Logfile" +msgstr "Se loggfilen" + +msgid "Wednesday" +msgstr "Onsdag" + +msgid "Wifi Schedule" +msgstr "Wifi-schema" + +msgid "Wifi Schedule Logfile" +msgstr "Loggfil för Wifi-schema" diff --git a/applications/luci-app-wireguard/luasrc/view/wireguard.htm b/applications/luci-app-wireguard/luasrc/view/wireguard.htm index 5b5d59a969..5af6232ae6 100644 --- a/applications/luci-app-wireguard/luasrc/view/wireguard.htm +++ b/applications/luci-app-wireguard/luasrc/view/wireguard.htm @@ -17,22 +17,22 @@ data[line[1]] = { name = line[1], public_key = line[3], - listen_port = line[5], - fwmark = line[6], + listen_port = line[4], + fwmark = line[5], peers = { } } else local peer = { public_key = line[2], - endpoint = line[3], + endpoint = line[4], allowed_ips = { }, - latest_handshake = line[5], - transfer_rx = line[6], - transfer_tx = line[7], - persistent_keepalive = line[8] + latest_handshake = line[6], + transfer_rx = line[7], + transfer_tx = line[8], + persistent_keepalive = line[9] } if not (line[4] == '(none)') then - for ipkey, ipvalue in pairs(string.split(line[4], ",")) do + for ipkey, ipvalue in pairs(string.split(line[5], ",")) do if #ipvalue > 0 then table.insert(peer['allowed_ips'], ipvalue) end diff --git a/applications/luci-app-wireguard/po/sv/wireguard.po b/applications/luci-app-wireguard/po/sv/wireguard.po new file mode 100644 index 0000000000..b7e3ed5b58 --- /dev/null +++ b/applications/luci-app-wireguard/po/sv/wireguard.po @@ -0,0 +1,62 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "Allowed IPs" +msgstr "Tillåtna IP-adresser" + +msgid "Collecting data..." +msgstr "Samlar in data..." + +msgid "Configuration" +msgstr "Konfiguration" + +msgid "Data Received" +msgstr "Mottagen data" + +msgid "Data Transmitted" +msgstr "Överförd data" + +msgid "Endpoint" +msgstr "Slutpunkt" + +msgid "Firewall Mark" +msgstr "" + +msgid "Interface" +msgstr "Gränssnitt" + +msgid "Interface does not have a public key!" +msgstr "Gränssnittet har inte en publik nyckel!" + +msgid "Latest Handshake" +msgstr "Senaste handskakning" + +msgid "Listen Port" +msgstr "Lyssningsport" + +msgid "Never" +msgstr "Aldrig" + +msgid "Peer" +msgstr "" + +msgid "Persistent Keepalive" +msgstr "" + +msgid "Public Key" +msgstr "Publik nyckel" + +msgid "WireGuard Status" +msgstr "Status för WireGuard" + +msgid "h ago" +msgstr "t sedan" + +msgid "m ago" +msgstr "m sedan" + +msgid "over a day ago" +msgstr "över en dag sedan" + +msgid "s ago" +msgstr "s sedan" diff --git a/applications/luci-app-wol/po/sv/wol.po b/applications/luci-app-wol/po/sv/wol.po index 5b3e923476..923d4fdbac 100644 --- a/applications/luci-app-wol/po/sv/wol.po +++ b/applications/luci-app-wol/po/sv/wol.po @@ -18,13 +18,13 @@ msgstr "" "använda" msgid "Host to wake up" -msgstr "Värd som ska väckas upp" +msgstr "Värd att väcka upp" msgid "Network interface to use" -msgstr "Nätverksgränssnitt som ska användas" +msgstr "Nätverksgränssnitt att använda" msgid "Send to broadcast address" -msgstr "" +msgstr "Skicka till sändningsadress" msgid "" "Sometimes only one of the two tools works. If one fails, try the other one" |