diff options
Diffstat (limited to 'applications')
81 files changed, 1303 insertions, 358 deletions
diff --git a/applications/luci-app-adblock/po/sv/adblock.po b/applications/luci-app-adblock/po/sv/adblock.po index 4cb932c601..449b22eae5 100644 --- a/applications/luci-app-adblock/po/sv/adblock.po +++ b/applications/luci-app-adblock/po/sv/adblock.po @@ -2,7 +2,7 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8\n" msgid "-------" -msgstr "" +msgstr "-------" msgid "Adblock" msgstr "Adblock" @@ -11,10 +11,10 @@ msgid "Adblock Logfile" msgstr "Adblock's loggfil" msgid "Adblock Status" -msgstr "" +msgstr "Status för Adblock" msgid "Adblock Version" -msgstr "Version för Adblock" +msgstr "Version av Adblock" msgid "Additional trigger delay in seconds before adblock processing begins." msgstr "" @@ -35,11 +35,15 @@ msgid "" "Caution: Please don't select big lists or many lists at once on low memory " "devices to prevent OOM exceptions!" msgstr "" +"Försiktig: Vänligen välj inte stora listor eller många listor på samma gång för enheter " +"med lite minne för att undvika OOM-undantag!" msgid "" "Choose 'none' to disable automatic startups, 'timed' to use a classic " "timeout (default 30 sec.) or select another trigger interface." msgstr "" +"Välj 'inga' för att stänga av automatiska uppstarter, 'tidsinställd för att använda ett klassiskt " +"avbrott (30 sek. är standard) eller välj ett annat utlösande gränssnitt." msgid "Collecting data..." msgstr "Samlar in data..." @@ -56,10 +60,10 @@ msgid "" msgstr "" msgid "DNS Backend (DNS Directory)" -msgstr "" +msgstr "DNS-bakände (DNS-mapp)" msgid "DNS Directory" -msgstr "" +msgstr "DNS-mapp" msgid "Description" msgstr "Beskrivning" @@ -135,7 +139,7 @@ msgid "Invalid domain specified!" msgstr "Ogiltig domän angiven!" msgid "Last Run" -msgstr "" +msgstr "Kördes senast" msgid "" "List URLs and Shallalist category selections are configurable in the " @@ -180,7 +184,7 @@ msgid "Please edit this file directly in a terminal session." msgstr "Vänligen redigera den här filen direkt i en terminal-session." msgid "Please update your adblock config file to use this package." -msgstr "" +msgstr "Vänligen uppdatera din adblock's konfigurationsfil till att använda det här paketet." msgid "Query" msgstr "Fråga" @@ -192,7 +196,7 @@ msgid "Redirect all DNS queries from 'lan' zone to the local resolver." msgstr "" msgid "Resume" -msgstr "" +msgstr "Återuppta" msgid "Runtime Information" msgstr "Information om körtid" @@ -204,10 +208,10 @@ msgid "Save" msgstr "Spara" msgid "Startup Trigger" -msgstr "" +msgstr "Uppstartslösare" msgid "Suspend" -msgstr "" +msgstr "Stäng av" msgid "Suspend / Resume Adblock" msgstr "Upphäv / Återuppta adblock" @@ -275,19 +279,19 @@ msgid "Yes" msgstr "Ja" msgid "disabled" -msgstr "" +msgstr "inaktiverad" msgid "enabled" -msgstr "" +msgstr "aktiverad" msgid "error" -msgstr "" +msgstr "fel" msgid "n/a" msgstr "n/a" msgid "paused" -msgstr "" +msgstr "pausad" #~ msgid "Blocked domains (overall)" #~ msgstr "Blockerade domäner (övergripande)" diff --git a/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po b/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po index cac09d76a6..20d77cbcf7 100644 --- a/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po +++ b/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po @@ -1,5 +1,5 @@ msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" +msgstr "Content-Type: text/plain; charset=UTF-8\n" msgid "Action" msgstr "Åtgärd" @@ -74,9 +74,9 @@ msgid "" "might be necessary to renew the address of your computer to reach the device " "again, depending on your settings." msgstr "" -"Systemet stänger ner nu.<br /> STÄNG INTE AV ENHETEN!<br /> Beroende -"på dina inställningar så kan det vara nödvändigt att förnya din dators adress " -"för att nå enheten igen." +"Systemet stänger ner nu.<br /> STÄNG INTE AV ENHETEN!<br /> Beroende på dina " +"inställningar så kan det vara nödvändigt att förnya din dators adress för " +"att nå enheten igen." msgid "" "WARNING: An alternative partition might have its own settings and completely " @@ -94,12 +94,13 @@ msgid "" "support power off.<br /><br /> Click \"Proceed\" below to power off your " "device." msgstr "" -"VARNING: Att stänga av kan resultera i en omstart i en enhet som inte " -"har stöd för avstängning.<br /><br /> Klicka på \"Fortsätt\" nedanför för att stänga av din " -"enhet." +"VARNING: Att stänga av kan resultera i en omstart i en enhet som inte har " +"stöd för avstängning.<br /><br /> Klicka på \"Fortsätt\" nedanför för att " +"stänga av din enhet." msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "Varning: Det finns osparade ändringar som kommer att förloras vid omstart!" +msgstr "" +"Varning: Det finns osparade ändringar som kommer att förloras vid omstart!" msgid "Warning: This system does not have two partitions!" msgstr "Varning: Det här systemet har inte två partitioner!" diff --git a/applications/luci-app-aria2/po/zh-cn/aria2.po b/applications/luci-app-aria2/po/zh-cn/aria2.po index 823699d7bd..3cdc2759b1 100644 --- a/applications/luci-app-aria2/po/zh-cn/aria2.po +++ b/applications/luci-app-aria2/po/zh-cn/aria2.po @@ -1,74 +1,91 @@ -msgid "Aria2" -msgstr "" - -msgid "Aria2 is a multi-protocol & multi-source download utility, here you can configure the settings." -msgstr "Aria2 是一个支持多协议多线程的下载器, 你可以在这里对其进行配置" +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8\n" -msgid "Aria2 Status" -msgstr "Aria2 状态" +msgid "\"Falloc\" is not available in all cases." +msgstr "\"Falloc\" 并不是在所有情况下都可用" -msgid "Open YAAW" -msgstr "打开YAAW" +msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled" +msgstr "启用<abbr title=\"分布式哈希表\">DHT</abbr>" -msgid "Open WebUI-Aria2" -msgstr "打开WebUI-Aria2" +msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled" +msgstr "启用<abbr title=\"本地节点发现\">LPD</abbr>" -msgid "The Aria2 service is running." -msgstr "Aria2 正在运行" +msgid "Additional Bt tracker enabled" +msgstr "添加额外的Tracker" -msgid "The Aria2 service is not running." -msgstr "Aria2 未运行" +msgid "Aria2" +msgstr "" msgid "Aria2 Settings" msgstr "Aria2 配置" +msgid "Aria2 Status" +msgstr "Aria2 状态" + msgid "General settings" -msgstr "一般设置" +msgstr "基本设置" msgid "Files and Locations" msgstr "文件和目录" -msgid "Enabled" -msgstr "启用" +msgid "" +"Aria2 is a multi-protocol & multi-source download utility, here you can " +"configure the settings." +msgstr "Aria2 是一个支持多协议多线程的下载器, 你可以在这里对其进行配置" -msgid "Task Settings" -msgstr "任务设置" +msgid "Autosave session interval" +msgstr "定时保存会话间隔" msgid "BitTorrent Settings" msgstr "BT设置" -msgid "Run daemon as user" -msgstr "以此用户权限运行" +msgid "BitTorrent listen port" +msgstr "BT监听端口" -msgid "RPC port" -msgstr "RPC端口" +msgid "Collecting data..." +msgstr "" -msgid "RPC authentication method" -msgstr "RPC认证方式" +msgid "Config file directory" +msgstr "配置文件目录" -msgid "No Authentication" -msgstr "无认证" +msgid "Debug" +msgstr "调试" -msgid "Username & Password" -msgstr "用户名与密码" +msgid "Default download directory" +msgstr "默认下载目录" -msgid "Token" -msgstr "令牌" +msgid "Disk cache" +msgstr "磁盘缓存" -msgid "RPC username" -msgstr "RPC用户名" +msgid "Enable log" +msgstr "启用日志" -msgid "RPC password" -msgstr "RPC密码" +msgid "Enabled" +msgstr "启用" -msgid "RPC Token" -msgstr "RPC令牌" +msgid "Error" +msgstr "错误" + +msgid "Extra Settings" +msgstr "附加选项" + +msgid "Falloc" +msgstr "" + +msgid "Follow torrent" +msgstr "自动添加下载的种子" msgid "Generate Randomly" msgstr "随机生成" -msgid "Enable log" -msgstr "启用日志" +msgid "Info" +msgstr "信息" + +msgid "List of additional Bt tracker" +msgstr "附加Tracker列表" + +msgid "List of extra settings" +msgstr "附加选项列表" msgid "Log file is in the config file dir." msgstr "日志文件在配置文件目录下" @@ -76,125 +93,116 @@ msgstr "日志文件在配置文件目录下" msgid "Log level" msgstr "日志记录等级" -msgid "Debug" -msgstr "调试" - -msgid "Info" -msgstr "信息" - -msgid "Notice" -msgstr "注意" - -msgid "Warn" -msgstr "警告" +msgid "Max concurrent downloads" +msgstr "最大同时下载任务数" -msgid "Error" -msgstr "错误" +msgid "Max connection per server" +msgstr "单服务器最大连接数" -msgid "Config file directory" -msgstr "配置文件目录" +msgid "Max number of peers per torrent" +msgstr "单个种子最大连接数" -msgid "Default download directory" -msgstr "默认下载目录" +msgid "Max number of split" +msgstr "单文件最大线程数" -msgid "Disk cache" -msgstr "磁盘缓存" +msgid "Min split size" +msgstr "最小文件分片大小" -msgid "in bytes, You can append K or M." -msgstr "单位 B, 你可以在数字后跟上 K 或 M" +msgid "No Authentication" +msgstr "无认证" -msgid "Preallocation" -msgstr "磁盘预分配" +msgid "Notice" +msgstr "注意" msgid "Off" msgstr "关闭" -msgid "Prealloc" -msgstr "" - -msgid "Trunc" -msgstr "" - -msgid "Falloc" -msgstr "" - -msgid "\"Falloc\" is not available in all cases." -msgstr "\"Falloc\" 并不是在所有情况下都可用" +msgid "Open WebUI-Aria2" +msgstr "打开WebUI-Aria2" -msgid "Overall speed limit enabled" -msgstr "启用全局限速" +msgid "Open YAAW" +msgstr "打开YAAW" msgid "Overall download limit" msgstr "全局下载限速" -msgid "in bytes/sec, You can append K or M." -msgstr "单位 B/s, 你可以在数字后跟上 K 或 M" +msgid "Overall speed limit enabled" +msgstr "启用全局限速" msgid "Overall upload limit" msgstr "全局上传限速" -msgid "Per task speed limit enabled" -msgstr "启用单任务限速" - msgid "Per task download limit" msgstr "单任务下载限速" +msgid "Per task speed limit enabled" +msgstr "启用单任务限速" + msgid "Per task upload limit" msgstr "单任务上传限速" -msgid "Max concurrent downloads" -msgstr "最大同时下载任务数" +msgid "Prealloc" +msgstr "" -msgid "Max connection per server" -msgstr "单服务器最大连接数" +msgid "Preallocation" +msgstr "磁盘预分配" -msgid "Min split size" -msgstr "最小文件分片大小" +msgid "Prefix of peer ID" +msgstr "Peer ID前缀" -msgid "Max number of split" -msgstr "单文件最大线程数" +msgid "RPC Token" +msgstr "RPC令牌" -msgid "Autosave session interval" -msgstr "定时保存会话间隔" +msgid "RPC authentication method" +msgstr "RPC认证方式" -msgid "Sec" -msgstr "秒" +msgid "RPC password" +msgstr "RPC密码" -msgid "User agent value" -msgstr "用户代理(UA)" +msgid "RPC port" +msgstr "RPC端口" -msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled" -msgstr "启用<abbr title=\"分布式哈希表\">DHT</abbr>" +msgid "RPC username" +msgstr "RPC用户名" -msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled" -msgstr "启用<abbr title=\"本地节点发现\">LPD</abbr>" +msgid "Run daemon as user" +msgstr "以此用户权限运行" -msgid "Follow torrent" -msgstr "自动添加下载的种子" +msgid "Sec" +msgstr "秒" -msgid "BitTorrent listen port" -msgstr "BT监听端口" +msgid "Task Settings" +msgstr "任务设置" -msgid "Max number of peers per torrent" -msgstr "单个种子最大连接数" +msgid "The Aria2 service is not running." +msgstr "Aria2 未运行" -msgid "Additional Bt tracker enabled" -msgstr "添加额外的Tracker" +msgid "The Aria2 service is running." +msgstr "Aria2 正在运行" -msgid "List of additional Bt tracker" -msgstr "附加Tracker列表" +msgid "Token" +msgstr "令牌" -msgid "Prefix of peer ID" -msgstr "Peer ID前缀" +msgid "Trunc" +msgstr "" -msgid "Extra Settings" -msgstr "附加选项" +msgid "Use WebSocket" +msgstr "使用WebSocket" -msgid "List of extra settings" -msgstr "附加选项列表" +msgid "User agent value" +msgstr "用户代理(UA)" + +msgid "Username & Password" +msgstr "用户名与密码" msgid "View Json-RPC URL" msgstr "查看 Json-RPC URL" -msgid "Use WebSocket" -msgstr "使用WebSocket" +msgid "Warn" +msgstr "警告" + +msgid "in bytes, You can append K or M." +msgstr "单位 B, 你可以在数字后跟上 K 或 M" + +msgid "in bytes/sec, You can append K or M." +msgstr "单位 B/s, 你可以在数字后跟上 K 或 M" diff --git a/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm b/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm index 1e423b49f0..d04745abd1 100644 --- a/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm +++ b/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm @@ -79,19 +79,28 @@ <div style="display: none" id="update_info" class="alert-message info"></div> <div style="display: none" id="update_error" class="alert-message danger"></div> </div> -<input class="cbi-button" value="search for updates" onclick="update_request()" type="button" id="update_button"> +<p> + <input class="cbi-button" style="display: none;" value="edit installed packages" onclick="edit_packages()" type="button" id="edit_button"> + <textarea style="display: none; width: 100%;" id="edit_packages" rows="15"></textarea> +</P> +<p> + <input class="cbi-button" value="search for updates" onclick="update_request()" type="button" id="update_button"> +</p> +<p> + <input style="display: none" class="cbi-button" value="show build log" onclick="window.open(data.log_url);" type="button" id="log_button"> +</p> <div style="display: none" id="packages" class="alert-message success"></div> <div class="cbi-value" id="update_packages_container" style="display: block"> - <label class="cbi-value-title" for="keep">search for package updates:</label> - <div class="cbi-value-field"> - <input type="checkbox" name="update_packages" id="update_packages" /> - </div> + <label class="cbi-value-title" for="update_packages"> + <input type="checkbox" name="update_packages" id="update_packages" /> + Search for package updates + </label> </div> <div class="cbi-value" id="keep_container" style="display: none"> - <label class="cbi-value-title" for="keep">keep settings:</label> - <div class="cbi-value-field"> - <input type="checkbox" name="keep" id="keep" checked="checked" /> - </div> + <label class="cbi-value-title" for="keep"> + <input type="checkbox" name="keep" id="keep" checked="checked" /> + Keep settings + </label> </div> <script type="text/javascript"> @@ -102,6 +111,13 @@ ubus_counter = 1 origin = document.location.href.replace(location.pathname, "") ubus_url = origin + "/ubus/" +function edit_packages() { + data.edit_packages = true + document.getElementById("edit_button").style.display = "none"; + document.getElementById("edit_packages").value = data.packages.join("\n"); + document.getElementById("edit_packages").style.display = "block"; +} + // requests to the update server function server_request(request_dict, path, callback) { url = data.update_server + "/" + path @@ -238,6 +254,8 @@ function update_request_callback(response_object) { } else if (response_object.status === 200) { // new release/updates response_object_content = JSON.parse(response_object.responseText) + document.getElementById("edit_button").style.display = "block"; + document.getElementById("update_button").disabled = false; update_request_200(response_object_content) } } @@ -280,11 +298,18 @@ function update_request_200(response_content) { // request the image, need merge with update_request function image_request() { console.log("image_request") + document.getElementById("update_button").disabled = true; document.getElementById("update_packages_container").style.display = "none"; + document.getElementById("edit_packages").style.display = "none"; + document.getElementById("edit_button").style.display = "none"; request_dict = {} request_dict.version = latest_version; request_dict.board = data.board_name - request_dict.packages = data.packages; + if(data.edit_packages == true) { + request_dict.packages = document.getElementById("edit_packages").value.split("\n") + } else { + request_dict.packages = data.packages; + } request_dict.model = data.model server_request(request_dict, "image-request", image_request_handler) } @@ -294,7 +319,12 @@ function image_request_handler(response) { response_content = JSON.parse(response.responseText) update_error(response_content.error) } else if (response.status === 500) { - image_request_500() + response_content = JSON.parse(response.responseText) + update_error(response_content.error) + if(response_content.log != undefined) { + data.log_url = response_content.log + document.getElementById("log_button").style.display = "block"; + } } else if (response.status === 503) { update_error("please wait. server overloaded") // handle overload @@ -317,10 +347,14 @@ function image_request_handler(response) { setTimeout(image_request, 5000) } else if (response.status === 200) { // ready to download - response_content = JSON.parse(response.responseText) - update_info("image created") - document.getElementById("update_button").value = "sysupgrade" - document.getElementById("update_button").onclick = function() {download_image(response_content.url); } + response_content = JSON.parse(response.responseText); + data.image_url = response_content.url; + data.log_url = data.image_url + ".log"; + update_info("image created"); + document.getElementById("log_button").style.display = "block"; + document.getElementById("update_button").disabled = false; + document.getElementById("update_button").value = "sysupgrade"; + document.getElementById("update_button").onclick = download_image; document.getElementById("keep_container").style.display = "block"; } } @@ -338,7 +372,7 @@ function upload_image(blob) { upload_request.addEventListener('load', function(event) { // this checksum should be parsed - document.getElementById("update_info").innerHTML = "flashing... please wait" // show fancy indicator http://www.ajaxload.info/ + document.getElementById("update_info").innerHTML = "flashing... please wait"; // show fancy indicator http://www.ajaxload.info/ ubus_request("attendedsysupgrade", "sysupgrade", { "keep_settings": document.getElementById("keep").checked }, 'done'); }); @@ -352,12 +386,12 @@ function upload_image(blob) { } // download image from server once the url was received by image_request -function download_image(url) { +function download_image() { console.log("download_image") - document.getElementById("update_button").value = "flashing..." + document.getElementById("update_button").value = "downloading image"; document.getElementById("update_button").disabled = true; var download_request = new XMLHttpRequest(); - download_request.open("GET", url); + download_request.open("GET", data.image_url); download_request.responseType = "arraybuffer"; download_request.onload = function () { @@ -366,7 +400,7 @@ function download_image(url) { upload_image(blob) } }; - document.getElementById("update_info").innerHTML = "downloading image" + document.getElementById("update_info").innerHTML = "downloading image"; download_request.send(); } diff --git a/applications/luci-app-ddns/po/it/ddns.po b/applications/luci-app-ddns/po/it/ddns.po index 3b9d5f48de..4b8d2f844e 100644 --- a/applications/luci-app-ddns/po/it/ddns.po +++ b/applications/luci-app-ddns/po/it/ddns.po @@ -725,7 +725,7 @@ msgid "missing / required" msgstr "mancante / richiesto" msgid "must be greater or equal 'Check Interval'" -msgstr "deve essere più grande o uguale "Controlla Intervallo'" +msgstr "deve essere più grande o uguale 'Controlla Intervallo'" msgid "must start with 'http://'" msgstr "deve iniziare con 'http://'" diff --git a/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po index c735323955..d68116bf7b 100644 --- a/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po +++ b/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po @@ -91,7 +91,7 @@ msgid "MAC range and information used to override system and IEEE databases" msgstr "" msgid "Milliseconds to sleep between requests (default 100)" -msgstr "" +msgstr "Millisekunder att sova mellan förfrågningar (100 är standard)" msgid "Model" msgstr "Modell" @@ -109,7 +109,7 @@ msgid "Networks to scan for devices" msgstr "Nätverk att skanna efter enheter i" msgid "Networks to scan for supported devices" -msgstr "" +msgstr "Nätverk att skanna efter enheter som stöds" msgid "No SIP devices" msgstr "Inga SIP-enheter" @@ -118,10 +118,10 @@ msgid "No devices detected" msgstr "Upptäckte inga enheter" msgid "Number of times to send requests (default 1)" -msgstr "" +msgstr "Antalet gånger att skicka förfrågningar (1 är standard)" msgid "OUI Owner" -msgstr "" +msgstr "OUI-ägare" msgid "" "Override the information returned by the MAC to Device Info Script (mac-to-" @@ -129,13 +129,13 @@ msgid "" msgstr "" msgid "Perform Scans (this can take a few minutes)" -msgstr "" +msgstr "Utför skanningar (det här kan ta ett par minuter)" msgid "Phone Information" msgstr "Information om telefon" msgid "Phone Scan" -msgstr "Skanning av telefon" +msgstr "Skanna telefon" msgid "Phone Scanning Configuration" msgstr "Konfiguration av skanning i telefon" @@ -156,7 +156,7 @@ msgid "Repeat Scans (this can take a few minutes)" msgstr "Repetera skanningar (det här kan ta några minuter)" msgid "SIP Device Information" -msgstr "" +msgstr "Information om SIP-enhet" msgid "SIP Device Scan" msgstr "" @@ -195,7 +195,7 @@ msgid "Time to wait for responses in seconds (default 10)" msgstr "Tid att vänta på svar i sekunder (standard 10)" msgid "Timeout" -msgstr "" +msgstr "Avbrott" msgid "Use Configuration" msgstr "Använd konfiguration" diff --git a/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua b/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua index 6d6790a839..9f6472e7de 100644 --- a/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua +++ b/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua @@ -17,8 +17,8 @@ function index() entry({"admin", "services", "dnscrypt-proxy", "advanced"}, firstchild(), _("Advanced"), 100) entry({"admin", "services", "dnscrypt-proxy", "advanced", "configuration"}, cbi("dnscrypt-proxy/configuration_tab"), _("Edit DNSCrypt-Proxy Configuration"), 110).leaf = true entry({"admin", "services", "dnscrypt-proxy", "advanced", "cfg_dnsmasq"}, cbi("dnscrypt-proxy/cfg_dnsmasq_tab"), _("Edit Dnsmasq Configuration"), 120).leaf = true - entry({"admin", "services", "dnscrypt-proxy", "advanced", "view_reslist"}, call("view_reslist"), _("View Resolver List"), 130).leaf = true - + entry({"admin", "services", "dnscrypt-proxy", "advanced", "cfg_resolvcrypt"}, cbi("dnscrypt-proxy/cfg_resolvcrypt_tab"), _("Edit Resolvcrypt Configuration"), 130).leaf = true + entry({"admin", "services", "dnscrypt-proxy", "advanced", "view_reslist"}, call("view_reslist"), _("View Resolver List"), 140).leaf = true end function view_reslist() @@ -27,6 +27,12 @@ function view_reslist() end function logread() - local logfile = util.trim(util.exec("logread -e 'dnscrypt-proxy'")) + local logfile + + if nixio.fs.access("/var/log/messages") then + logfile = util.trim(util.exec("cat /var/log/messages | grep 'dnscrypt-proxy'")) + else + logfile = util.trim(util.exec("logread -e 'dnscrypt-proxy'")) + end templ.render("dnscrypt-proxy/logread", {title = i18n.translate("DNSCrypt-Proxy Logfile"), content = logfile}) end diff --git a/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua b/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua index d22abbfd39..6e75ac9f97 100644 --- a/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua +++ b/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua @@ -7,6 +7,8 @@ local uci_input = "/etc/config/dhcp" if not nxfs.access(uci_input) then m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) + m.reset = false + m.submit = false return m end diff --git a/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua b/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua new file mode 100644 index 0000000000..f172b15f81 --- /dev/null +++ b/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua @@ -0,0 +1,39 @@ +-- Copyright 2017 Dirk Brenken (dev@brenken.org) +-- This is free software, licensed under the Apache License, Version 2.0 + +local nxfs = require("nixio.fs") +local util = require("luci.util") +local res_input = "/etc/resolv-crypt.conf" + +if not nxfs.access(res_input) then + m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) + m.reset = false + m.submit = false + return m +end + +m = SimpleForm("input", nil) +m:append(Template("dnscrypt-proxy/config_css")) +m.submit = translate("Save") +m.reset = false + +s = m:section(SimpleSection, nil, + translate("This form allows you to modify the content of the resolv-crypt configuration file (/etc/resolv-crypt.conf).")) + +f = s:option(TextValue, "data") +f.rows = 20 +f.rmempty = true + +function f.cfgvalue() + return nxfs.readfile(res_input) or "" +end + +function f.write(self, section, data) + return nxfs.writefile(res_input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") +end + +function s.handle(self, state, data) + return true +end + +return m diff --git a/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua b/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua index 7ab84ab7fa..368c6673ad 100644 --- a/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua +++ b/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua @@ -11,15 +11,16 @@ local plug_cnt = tonumber(luci.sys.exec("env -i /usr/sbin/dnscrypt-proxy --vers local res_list = {} local url = "https://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-resolvers.csv" -if not fs.access("/lib/libustream-ssl.so") then - m = SimpleForm("error", nil, translate("SSL support not available, please install an libustream-ssl variant to use this package.")) - m.submit = false - m.reset = false - return m -end - if not fs.access(res_input) then - luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1") + if not fs.access("/lib/libustream-ssl.so") then + m = SimpleForm("error", nil, translate("No default resolver list and no SSL support available.<br />") + .. translate("Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv' to use this package.")) + m.submit = false + m.reset = false + return m + else + luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1") + end end if not uci:get_first("dnscrypt-proxy", "global") then @@ -29,23 +30,64 @@ if not uci:get_first("dnscrypt-proxy", "global") then end for line in io.lines(res_input) do - local name = line:match("^[%w_.-]*") - res_list[#res_list + 1] = { name = name } + local name, + location, + dnssec, + nolog = line:match("^([^,]+),.-,\".-\",\"*(.-)\"*,.-,[0-9],\"*([yesno]+)\"*,\"*([yesno]+)\"*,.*") + if name ~= "" and name ~= "Name" then + if location == "" then + location = "-" + end + if dnssec == "" then + dnssec = "-" + end + if nolog == "" then + nolog = "-" + end + res_list[#res_list + 1] = { name = name, location = location, dnssec = dnssec, nolog = nolog } + end end m = Map("dnscrypt-proxy", translate("DNSCrypt-Proxy"), translate("Configuration of the DNSCrypt-Proxy package. ") - .. translate("Keep in mind to configure Dnsmasq as well. ") .. translatef("For further information " .. "<a href=\"%s\" target=\"_blank\">" .. "see the wiki online</a>", "https://wiki.openwrt.org/inbox/dnscrypt")) +m:chain("dhcp") function m.on_after_commit(self) - luci.sys.call("env -i /etc/init.d/dnsmasq restart >/dev/null 2>&1") + function d1.validate(self, value, s1) + if value == "1" then + uci:commit("dnscrypt-proxy") + uci:set("dhcp", s1, "noresolv", 1) + if not fs.access("/etc/resolv-crypt.conf") or nixio.fs.stat("/etc/resolv-crypt.conf").size == 0 then + uci:set("dhcp", s1, "resolvfile", "/tmp/resolv.conf.auto") + else + uci:set("dhcp", s1, "resolvfile", "/etc/resolv-crypt.conf") + end + local server_list = {} + local cnt = 1 + uci:foreach("dnscrypt-proxy", "dnscrypt-proxy", function(s) + server_list[cnt] = s['address'] .. "#" .. s['port'] + cnt = cnt + 1 + end) + server_list[cnt] = "/pool.ntp.org/8.8.8.8" + uci:set_list("dhcp", s1, "server", server_list) + if cnt > 2 then + uci:set("dhcp", s1, "allservers", 1) + else + uci:set("dhcp", s1, "allservers", 0) + end + uci:save("dhcp") + uci:commit("dhcp") + end + return value + end luci.sys.call("env -i /etc/init.d/dnscrypt-proxy restart >/dev/null 2>&1") + luci.sys.call("env -i /etc/init.d/dnsmasq restart >/dev/null 2>&1") end -s = m:section(TypedSection, "global", translate("General options")) +s = m:section(TypedSection, "global", translate("General Options")) s.anonymous = true -- Main dnscrypt-proxy resource list @@ -62,21 +104,53 @@ o3 = s:option(DummyValue, "", translate("File Checksum")) o3.template = "dnscrypt-proxy/res_options" o3.value = luci.sys.exec("sha256sum " .. res_input .. " | awk '{print $1}'") -btn = s:option(Button, "", translate("Refresh Resolver List")) -btn.inputtitle = translate("Refresh List") -btn.inputstyle = "apply" -btn.disabled = false -function btn.write(self, section, value) - luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "dnscrypt-proxy")) +if fs.access("/lib/libustream-ssl.so") then + btn1 = s:option(Button, "", translate("Refresh Resolver List"), + translate("Download the current resolver list from 'download.dnscrypt.org'.")) + btn1.inputtitle = translate("Refresh List") + btn1.inputstyle = "apply" + btn1.disabled = false + function btn1.write() + luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1") + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "dnscrypt-proxy")) + end +else + btn1 = s:option(Button, "", translate("Refresh Resolver List"), + translate("No SSL support available.<br />") + .. translate("Please install a 'libustream-ssl' library to download the current resolver list from 'download.dnscrypt.org'.")) + btn1.inputtitle = translate("-------") + btn1.inputstyle = "button" + btn1.disabled = true +end + +if not fs.access("/etc/resolv-crypt.conf") or nixio.fs.stat("/etc/resolv-crypt.conf").size == 0 then + btn2 = s:option(Button, "", translate("Create Custom Config File"), + translate("Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS upstream timeouts with multiple DNSCrypt instances.<br />") + .. translatef("For further information " + .. "<a href=\"%s\" target=\"_blank\">" + .. "see the wiki online</a>", "https://wiki.openwrt.org/inbox/dnscrypt")) + btn2.inputtitle = translate("Create Config File") + btn2.inputstyle = "apply" + btn2.disabled = false + function btn2.write() + luci.sys.call("env -i echo 'options timeout:1' > '/etc/resolv-crypt.conf'") + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "dnscrypt-proxy")) + end +else + btn2 = s:option(Button, "", translate("Create Custom Config File"), + translate("The config file '/etc/resolv-crypt.conf' already exist.<br />") + .. translate("Please edit the file manually in the 'Advanced' section.")) + btn2.inputtitle = translate("-------") + btn2.inputstyle = "button" + btn2.disabled = true end -- Trigger settings -t = s:option(DynamicList, "procd_trigger", translate("Startup Trigger"), - translate("By default the DNSCrypt-Proxy startup will be triggered by ifup events of multiple network interfaces. ") - .. translate("To restrict the trigger, add only the relevant network interface(s). ") - .. translate("Usually the 'wan' interface should work for most users.")) +t = s:option(ListValue, "procd_trigger", translate("Startup Trigger"), + translate("By default the DNSCrypt-Proxy startup will be triggered by ifup events of 'All' available network interfaces.<br />") + .. translate("To restrict the trigger, select only the relevant network interface. Usually the 'wan' interface should work for most users.")) +t:value("", "All") if dump then local i, v for i, v in ipairs(dump.interface) do @@ -85,57 +159,38 @@ if dump then end end end +t.default = procd_trigger or "All" t.rmempty = true --- Extra options - -ds = s:option(DummyValue, "_dummy", translate("Extra options"), - translate("Options for further tweaking in case the defaults are not suitable for you.")) -ds.template = "cbi/nullsection" - -btn = s:option(Button, "", translate("Create custom config file"), - translate("Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS upstream timeouts with multiple DNSCrypt instances. ") - .. translatef("For further information " - .. "<a href=\"%s\" target=\"_blank\">" - .. "see the wiki online</a>", "https://wiki.openwrt.org/inbox/dnscrypt")) -btn.inputtitle = translate("Create Config File") -btn.inputstyle = "apply" -btn.disabled = false -function btn.write(self, section, value) - if not fs.access("/etc/resolv-crypt.conf") then - luci.sys.call("env -i echo 'options timeout:1' > '/etc/resolv-crypt.conf'") - end -end - -- Mandatory options per instance -s = m:section(TypedSection, "dnscrypt-proxy", translate("Instance options")) +s = m:section(TypedSection, "dnscrypt-proxy", translate("Instance Options")) s.anonymous = true s.addremove = true -o1 = s:option(Value, "address", translate("IP Address"), +i1 = s:option(Value, "address", translate("IP Address"), translate("The local IPv4 or IPv6 address. The latter one should be specified within brackets, e.g. '[::1]'.")) -o1.default = address or "127.0.0.1" -o1.rmempty = false +i1.default = address or "127.0.0.1" +i1.rmempty = false -o2 = s:option(Value, "port", translate("Port"), +i2 = s:option(Value, "port", translate("Port"), translate("The listening port for DNS queries.")) -o2.datatype = "port" -o2.default = port -o2.rmempty = false - -o3 = s:option(ListValue, "resolver", translate("Resolver"), - translate("Name of the remote DNS service for resolving queries.")) -o3.datatype = "hostname" -o3.widget = "select" +i2.datatype = "port" +i2.default = port +i2.rmempty = false + +i3 = s:option(ListValue, "resolver", translate("Resolver (LOC/SEC/NOLOG)"), + translate("Name of the remote DNS service for resolving queries incl. Location, DNSSEC- and NOLOG-Flag.")) +i3.datatype = "hostname" +i3.widget = "select" local i, v for i, v in ipairs(res_list) do - if v.name ~= "Name" then - o3:value(v.name) + if v.name then + i3:value(v.name, v.name .. " (" .. v.location .. "/" .. v.dnssec .. "/" .. v.nolog .. ")") end end -o3.default = resolver -o3.rmempty = false +i3.default = resolver +i3.rmempty = false -- Extra options per instance @@ -174,4 +229,17 @@ if plug_cnt > 0 then e6.optional = true end -return m +-- Dnsmasq options + +m1 = Map("dhcp") + +s1 = m1:section(TypedSection, "dnsmasq", translate("Dnsmasq Options")) +s1.anonymous = true + +d1 = s1:option(Flag, "", translate("Transfer Options To Dnsmasq"), + translate("Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />") + .. translate("Please note: This may change the values for 'noresolv', 'resolvfile', 'allservers' and the list 'server' settings.")) +d1.default = d1.enabled +d1.rmempty = false + +return m, m1 diff --git a/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po b/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po index 0328df2279..2cd01c019e 100644 --- a/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po +++ b/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po @@ -7,17 +7,24 @@ msgstr "" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.3\n" +"X-Generator: Poedit 2.0.4\n" "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n" "Plural-Forms: nplurals=1; plural=0;\n" "Language: ja\n" +msgid "-------" +msgstr "(利用不可)" + msgid "Advanced" msgstr "詳細" msgid "Alternate Resolver List" msgstr "代替 リゾルバ リスト" +msgid "" +"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />" +msgstr "Dnsmasq の構成に、DNSCrypt-Proxy を指定する設定を適用します。<br />" + msgid "Blacklist" msgstr "ブラックリスト" @@ -26,26 +33,26 @@ msgstr "IPv6 のブロック" msgid "" "By default the DNSCrypt-Proxy startup will be triggered by ifup events of " -"multiple network interfaces." +"'All' available network interfaces.<br />" msgstr "" -"デフォルトでは、 DNSCrypt-Proxy は全ネットワーク インターフェースの ifup イベ" -"ントによりトリガされ起動します。" +"デフォルトでは、 DNSCrypt-Proxy は利用可能な全ネットワーク インターフェース" +"の ifup イベントによりトリガされ起動します。<br />" msgid "Configuration of the DNSCrypt-Proxy package." msgstr "DNSCrypt-Proxy パッケージの設定です。" msgid "" "Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS " -"upstream timeouts with multiple DNSCrypt instances." +"upstream timeouts with multiple DNSCrypt instances.<br />" msgstr "" "複数の DNSCrypt インスタンスで DNS アップストリーム タイムアウトの設定値を共" "用するため、 'options timeout:1' を含めた '/etc/resolv-crypt.conf' を作成しま" -"す。" +"す。<br />" msgid "Create Config File" msgstr "設定ファイルの作成" -msgid "Create custom config file" +msgid "Create Custom Config File" msgstr "カスタム設定ファイルの作成" msgid "DNS Query Logfile" @@ -66,21 +73,28 @@ msgstr "デフォルト リゾルバ リスト" msgid "Disable IPv6 to speed up DNSCrypt-Proxy." msgstr "DNSCrypt-Proxy の高速化のため、IPv6 を無効化します。" +msgid "Dnsmasq Options" +msgstr "Dnsmasq オプション" + +msgid "Download the current resolver list from 'download.dnscrypt.org'." +msgstr "" +"現在のリゾルバ リストを 'download.dnscrypt.org' からダウンロードします。" + msgid "Edit DNSCrypt-Proxy Configuration" msgstr "DNSCrypt-Proxy 設定の編集" msgid "Edit Dnsmasq Configuration" msgstr "Dnsmasq 設定の編集" +msgid "Edit Resolvcrypt Configuration" +msgstr "Resolvcrypt 設定の編集" + msgid "Enable Caching to speed up DNSCcrypt-Proxy." msgstr "DNSCrypt-Proxy の高速化のため、キャッシュ機能を有効化します。" msgid "Ephemeral Keys" msgstr "一時的なキー" -msgid "Extra options" -msgstr "拡張オプション" - msgid "File Checksum" msgstr "ファイル チェックサム" @@ -94,8 +108,8 @@ msgstr "" "詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン Wiki</a> を確認して" "ください。" -msgid "General options" -msgstr "全般設定" +msgid "General Options" +msgstr "全般オプション" msgid "IP Address" msgstr "IP アドレス" @@ -107,12 +121,9 @@ msgstr "" msgid "Input file not found, please check your configuration." msgstr "入力ファイルが見つかりません。設定を確認してください。" -msgid "Instance options" +msgid "Instance Options" msgstr "インスタンス オプション" -msgid "Keep in mind to configure Dnsmasq as well." -msgstr "Dnsmasq を適切に設定する必要があることに留意してください。" - msgid "Local Cache" msgstr "ローカル キャッシュ" @@ -129,16 +140,47 @@ msgstr "" "受信した DNS クエリをファイルに記録します。これにより、ネットワークで何が起き" "ているかをリアルタイムに把握することが可能です。" -msgid "Name of the remote DNS service for resolving queries." -msgstr "クエリの名前解決を行う、リモートの DNS サービス名です。" - msgid "" -"Options for further tweaking in case the defaults are not suitable for you." -msgstr "デフォルト設定が適切でない場合、追加で設定するためのオプションです。" +"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- " +"and NOLOG-Flag." +msgstr "" +"クエリの名前解決を行う、ロケーション, DNSSECの有無, NOLOG フラグを含めたリ" +"モート DNS サービスの名前です。" + +msgid "No SSL support available.<br />" +msgstr "利用可能な SSL サポートがありません。<br />" + +msgid "No default resolver list and no SSL support available.<br />" +msgstr "" +"デフォルトのリゾルバ リストと、利用可能な SSL サポートがありません。<br />" msgid "Overview" msgstr "概要" +msgid "Please edit the file manually in the 'Advanced' section." +msgstr "'詳細' タブで手動でファイルを編集してください。" + +msgid "" +"Please install a 'libustream-ssl' library to download the current resolver " +"list from 'download.dnscrypt.org'." +msgstr "" +"現在のリゾルバ リストを 'download.dnscrypt.org' からダウンロードするために、 " +"'libustream-ssl' ライブラリをインストールしてください。" + +msgid "" +"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-" +"resolvers.csv' to use this package." +msgstr "" +"このパッケージを利用するには、リゾルバ リストを '/usr/share/dnscrypt-proxy/" +"dnscrypt-resolvers.csv' にインストールしてください。" + +msgid "" +"Please note: This may change the values for 'noresolv', 'resolvfile', " +"'allservers' and the list 'server' settings." +msgstr "" +"注: これは、 'noresolv' および 'resolvfile', 'allservers', 'list server' の設" +"定値を変更する場合があります。" + msgid "Port" msgstr "ポート" @@ -148,15 +190,8 @@ msgstr "リストのリフレッシュ" msgid "Refresh Resolver List" msgstr "リゾルバ リストのリフレッシュ" -msgid "Resolver" -msgstr "リゾルバ" - -msgid "" -"SSL support not available, please install an libustream-ssl variant to use " -"this package." -msgstr "" -"SSL サポートが利用できません。このパッケージを使用するには libustream-ssl 等" -"をインストールし、 SSL サポートを有効にしてください。" +msgid "Resolver (LOC/SEC/NOLOG)" +msgstr "リゾルバ(LOC/SEC/NOLOG)" msgid "Save" msgstr "保存" @@ -167,6 +202,9 @@ msgstr "デフォルトとは異なるリゾルバ リストを設定します msgid "Startup Trigger" msgstr "スタートアップ トリガ" +msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />" +msgstr "設定ファイル '/etc/resolv-crypt.conf' は既に存在しています。<br />" + msgid "The listening port for DNS queries." msgstr "DNS クエリを待ち受けるポートです。" @@ -199,6 +237,13 @@ msgstr "" "このフォームでは、メインの Dnsmasq 設定ファイル (/etc/config/dhcp) の内容を変" "更することができます。" +msgid "" +"This form allows you to modify the content of the resolv-crypt configuration " +"file (/etc/resolv-crypt.conf)." +msgstr "" +"このフォームでは、 resolv-crypt 設定ファイル(/etc/resolv-crypt.conf)の内容" +"を変更することができます。" + msgid "This form shows the content of the current DNSCrypt Resolver List." msgstr "" "このフォームには、現在の DNSCrypt リゾルバ リストの内容が表示されます。" @@ -217,13 +262,15 @@ msgstr "" "このオプションは、通常よりも CPU リソースを多く使用するほか、ほとんどの " "DNSCrypt サーバーでは不要なものです。" -msgid "To restrict the trigger, add only the relevant network interface(s)." +msgid "" +"To restrict the trigger, select only the relevant network interface. Usually " +"the 'wan' interface should work for most users." msgstr "" -"トリガを限定するには、適切なネットワーク インターフェースのみを追加してくださ" -"い。" +"トリガを限定するには、適切なインターフェースを選択してください。通常、 'wan' " +"インターフェースがほとんどのユーザーに適しています。" -msgid "Usually the 'wan' interface should work for most users." -msgstr "通常、 'wan' インターフェースがほとんどのユーザーに適しています。" +msgid "Transfer Options To Dnsmasq" +msgstr "Dnsmasq の転送オプション" msgid "View Logfile" msgstr "ログファイルの確認" diff --git a/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot b/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot index ea83e7a184..59bded87b8 100644 --- a/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot +++ b/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot @@ -1,12 +1,19 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" +msgid "-------" +msgstr "" + msgid "Advanced" msgstr "" msgid "Alternate Resolver List" msgstr "" +msgid "" +"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />" +msgstr "" + msgid "Blacklist" msgstr "" @@ -15,7 +22,7 @@ msgstr "" msgid "" "By default the DNSCrypt-Proxy startup will be triggered by ifup events of " -"multiple network interfaces." +"'All' available network interfaces.<br />" msgstr "" msgid "Configuration of the DNSCrypt-Proxy package." @@ -23,13 +30,13 @@ msgstr "" msgid "" "Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS " -"upstream timeouts with multiple DNSCrypt instances." +"upstream timeouts with multiple DNSCrypt instances.<br />" msgstr "" msgid "Create Config File" msgstr "" -msgid "Create custom config file" +msgid "Create Custom Config File" msgstr "" msgid "DNS Query Logfile" @@ -50,19 +57,25 @@ msgstr "" msgid "Disable IPv6 to speed up DNSCrypt-Proxy." msgstr "" +msgid "Dnsmasq Options" +msgstr "" + +msgid "Download the current resolver list from 'download.dnscrypt.org'." +msgstr "" + msgid "Edit DNSCrypt-Proxy Configuration" msgstr "" msgid "Edit Dnsmasq Configuration" msgstr "" -msgid "Enable Caching to speed up DNSCcrypt-Proxy." +msgid "Edit Resolvcrypt Configuration" msgstr "" -msgid "Ephemeral Keys" +msgid "Enable Caching to speed up DNSCcrypt-Proxy." msgstr "" -msgid "Extra options" +msgid "Ephemeral Keys" msgstr "" msgid "File Checksum" @@ -76,7 +89,7 @@ msgid "" "online</a>" msgstr "" -msgid "General options" +msgid "General Options" msgstr "" msgid "IP Address" @@ -88,10 +101,7 @@ msgstr "" msgid "Input file not found, please check your configuration." msgstr "" -msgid "Instance options" -msgstr "" - -msgid "Keep in mind to configure Dnsmasq as well." +msgid "Instance Options" msgstr "" msgid "Local Cache" @@ -106,16 +116,38 @@ msgid "" "is happening on the network." msgstr "" -msgid "Name of the remote DNS service for resolving queries." +msgid "" +"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- " +"and NOLOG-Flag." msgstr "" -msgid "" -"Options for further tweaking in case the defaults are not suitable for you." +msgid "No SSL support available.<br />" +msgstr "" + +msgid "No default resolver list and no SSL support available.<br />" msgstr "" msgid "Overview" msgstr "" +msgid "Please edit the file manually in the 'Advanced' section." +msgstr "" + +msgid "" +"Please install a 'libustream-ssl' library to download the current resolver " +"list from 'download.dnscrypt.org'." +msgstr "" + +msgid "" +"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-" +"resolvers.csv' to use this package." +msgstr "" + +msgid "" +"Please note: This may change the values for 'noresolv', 'resolvfile', " +"'allservers' and the list 'server' settings." +msgstr "" + msgid "Port" msgstr "" @@ -125,12 +157,7 @@ msgstr "" msgid "Refresh Resolver List" msgstr "" -msgid "Resolver" -msgstr "" - -msgid "" -"SSL support not available, please install an libustream-ssl variant to use " -"this package." +msgid "Resolver (LOC/SEC/NOLOG)" msgstr "" msgid "Save" @@ -142,6 +169,9 @@ msgstr "" msgid "Startup Trigger" msgstr "" +msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />" +msgstr "" + msgid "The listening port for DNS queries." msgstr "" @@ -165,6 +195,11 @@ msgid "" "file (/etc/config/dhcp)." msgstr "" +msgid "" +"This form allows you to modify the content of the resolv-crypt configuration " +"file (/etc/resolv-crypt.conf)." +msgstr "" + msgid "This form shows the content of the current DNSCrypt Resolver List." msgstr "" @@ -178,10 +213,12 @@ msgid "" "server." msgstr "" -msgid "To restrict the trigger, add only the relevant network interface(s)." +msgid "" +"To restrict the trigger, select only the relevant network interface. Usually " +"the 'wan' interface should work for most users." msgstr "" -msgid "Usually the 'wan' interface should work for most users." +msgid "Transfer Options To Dnsmasq" msgstr "" msgid "View Logfile" diff --git a/applications/luci-app-fwknopd/root/etc/uci-defaults/40_luci-fwknopd b/applications/luci-app-fwknopd/root/etc/uci-defaults/40_luci-fwknopd index 65ef012450..9e5057e701 100644 --- a/applications/luci-app-fwknopd/root/etc/uci-defaults/40_luci-fwknopd +++ b/applications/luci-app-fwknopd/root/etc/uci-defaults/40_luci-fwknopd @@ -3,6 +3,7 @@ #-- Licensed to the public under the GNU General Public License v2. . /lib/functions/network.sh +[ "$(uci -q get fwknopd.@access[0].KEY)" != "CHANGEME" ] && exit 0 uci batch <<EOF add ucitrack fwknopd set ucitrack.@fwknopd[-1].init=fwknopd diff --git a/applications/luci-app-fwknopd/root/usr/sbin/gen-qr.sh b/applications/luci-app-fwknopd/root/usr/sbin/gen-qr.sh index abca5d3e5a..48850bd361 100644 --- a/applications/luci-app-fwknopd/root/usr/sbin/gen-qr.sh +++ b/applications/luci-app-fwknopd/root/usr/sbin/gen-qr.sh @@ -4,23 +4,23 @@ if [ "$1" != "" ]; then entry_num=$1 fi -key_base64=$(uci get fwknopd.@access[$entry_num].KEY_BASE64) -key=$(uci get fwknopd.@access[$entry_num].KEY) -hmac_key_base64=$(uci get fwknopd.@access[$entry_num].HMAC_KEY_BASE64) -hmac_key=$(uci get fwknopd.@access[$entry_num].HMAC_KEY) +key_base64=$(uci -q get fwknopd.@access[$entry_num].KEY_BASE64) +key=$(uci -q get fwknopd.@access[$entry_num].KEY) +hmac_key_base64=$(uci -q get fwknopd.@access[$entry_num].HMAC_KEY_BASE64) +hmac_key=$(uci -q get fwknopd.@access[$entry_num].HMAC_KEY) -if [ $key_base64 != "" ]; then +if [ "$key_base64" != "" ]; then qr="KEY_BASE64:$key_base64" fi -if [ $key != "" ]; then +if [ "$key" != "" ]; then qr="$qr KEY:$key" fi -if [ $hmac_key_base64 != "" ]; then +if [ "$hmac_key_base64" != "" ]; then qr="$qr HMAC_KEY_BASE64:$hmac_key_base64" fi -if [ $hmac_key != "" ]; then +if [ "$hmac_key" != "" ]; then qr="$qr HMAC_KEY:$hmac_key" fi -qrencode -o - "$qr" +qrencode -t svg -I -o - "$qr" diff --git a/applications/luci-app-minidlna/luasrc/model/cbi/minidlna.lua b/applications/luci-app-minidlna/luasrc/model/cbi/minidlna.lua index bc467fde40..3f59e53643 100644 --- a/applications/luci-app-minidlna/luasrc/model/cbi/minidlna.lua +++ b/applications/luci-app-minidlna/luasrc/model/cbi/minidlna.lua @@ -130,7 +130,7 @@ o:value("P", translate("Pictures")) s:taboption("general", DynamicList, "media_dir", translate("Media directories:"), - translate("Set this to the directory you want scanned. If you want to restrict the directory to a specific content type, you can prepend the type ('A' for audio, 'V' for video, 'P' for images), followed by a comma, to the directory (eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified.")) + translate("Set this to the directory you want scanned. If you want to restrict the directory to a specific content type, you can prepend the type ('A' for audio, 'V' for video, 'P' for images), followed by a comma, to the directory (eg. A,/mnt/media/Music). Multiple directories can be specified.")) o = s:taboption("general", DynamicList, "album_art_names", translate("Album art names:"), diff --git a/applications/luci-app-minidlna/po/ca/minidlna.po b/applications/luci-app-minidlna/po/ca/minidlna.po index 5b2915dc75..ed710e5a97 100644 --- a/applications/luci-app-minidlna/po/ca/minidlna.po +++ b/applications/luci-app-minidlna/po/ca/minidlna.po @@ -134,7 +134,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/cs/minidlna.po b/applications/luci-app-minidlna/po/cs/minidlna.po index 3f0f87ccb2..f642510776 100644 --- a/applications/luci-app-minidlna/po/cs/minidlna.po +++ b/applications/luci-app-minidlna/po/cs/minidlna.po @@ -136,7 +136,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/de/minidlna.po b/applications/luci-app-minidlna/po/de/minidlna.po index 3d866e8824..4d20ec2a8d 100644 --- a/applications/luci-app-minidlna/po/de/minidlna.po +++ b/applications/luci-app-minidlna/po/de/minidlna.po @@ -152,7 +152,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" "Spezifiziert die zu durchsuchenden Medienverzeichnisse. Durch Voranstellung " "eines Buchstaben gefolgt von einem Komma kann ein Verzeichnis auf einen " diff --git a/applications/luci-app-minidlna/po/el/minidlna.po b/applications/luci-app-minidlna/po/el/minidlna.po index b6780c3ce4..d7af11cd5d 100644 --- a/applications/luci-app-minidlna/po/el/minidlna.po +++ b/applications/luci-app-minidlna/po/el/minidlna.po @@ -131,7 +131,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/en/minidlna.po b/applications/luci-app-minidlna/po/en/minidlna.po index ef1ebe2f6f..fefcfcc946 100644 --- a/applications/luci-app-minidlna/po/en/minidlna.po +++ b/applications/luci-app-minidlna/po/en/minidlna.po @@ -148,12 +148,12 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgid "Specify the path to the MiniSSDPd socket." msgstr "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/es/minidlna.po b/applications/luci-app-minidlna/po/es/minidlna.po index ea0605624f..e08fff7efc 100644 --- a/applications/luci-app-minidlna/po/es/minidlna.po +++ b/applications/luci-app-minidlna/po/es/minidlna.po @@ -145,11 +145,11 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" "Directorio a explorar. Si quiere restringir el directorio a un contenido " "específico puede añadir el tipo ('A' par audio, 'V' para vídeo o 'P' para " -"imágenes), seguido por una coma al nombre del directorio (ej. media_dir=A,/" +"imágenes), seguido por una coma al nombre del directorio (ej. A,/" "mnt/media/Music). Se puede establecer varios directorios." msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/fr/minidlna.po b/applications/luci-app-minidlna/po/fr/minidlna.po index dde8f1bcef..5eb2e1bba2 100644 --- a/applications/luci-app-minidlna/po/fr/minidlna.po +++ b/applications/luci-app-minidlna/po/fr/minidlna.po @@ -131,7 +131,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/he/minidlna.po b/applications/luci-app-minidlna/po/he/minidlna.po index b6780c3ce4..d7af11cd5d 100644 --- a/applications/luci-app-minidlna/po/he/minidlna.po +++ b/applications/luci-app-minidlna/po/he/minidlna.po @@ -131,7 +131,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/hu/minidlna.po b/applications/luci-app-minidlna/po/hu/minidlna.po index dcb6064eb7..4f259c1028 100644 --- a/applications/luci-app-minidlna/po/hu/minidlna.po +++ b/applications/luci-app-minidlna/po/hu/minidlna.po @@ -150,12 +150,12 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" "Állítsa be a vizsgálandó könyvtárra. Ha a könyvtárat egy adott típusú " "tartalom szerint szeretné korlátozni, akkor a neve előtt vesszővel " "elválasztva megadhatja a típust ('A' az audió, 'V' a videó, 'P' a képek " -"számára. pl.: media_dir=A,/mnt/media/Music). Több könyvtár is megadható." +"számára. pl.: A,/mnt/media/Music). Több könyvtár is megadható." msgid "Specify the path to the MiniSSDPd socket." msgstr "A MiniSSDPd socket elérési útját határozza meg." diff --git a/applications/luci-app-minidlna/po/it/minidlna.po b/applications/luci-app-minidlna/po/it/minidlna.po index 3adb8c1e99..b118916f6a 100644 --- a/applications/luci-app-minidlna/po/it/minidlna.po +++ b/applications/luci-app-minidlna/po/it/minidlna.po @@ -152,12 +152,12 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" "Impostare la cartella che si desidera sottoporre a scansione. Se si desidera " "limitare la directory per un tipo di contenuto specifico, è possibile " "anteporre il tipo ('A' per l'audio, 'V' per video, 'P' per le immagini), " -"seguito da una virgola, nella cartella (es. media_dir = A,/mnt/media/Music). " +"seguito da una virgola, nella cartella (es. A,/mnt/media/Music). " "Cartelle multiple possono essere specificate." msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/ja/minidlna.po b/applications/luci-app-minidlna/po/ja/minidlna.po index c29c10d75e..66bc503a24 100644 --- a/applications/luci-app-minidlna/po/ja/minidlna.po +++ b/applications/luci-app-minidlna/po/ja/minidlna.po @@ -146,12 +146,12 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" "miniDLNA がスキャンするディレクトリを設定します。ディレクトリを特定のコンテン" "ツに制限したい場合、タイプをパスのはじめに付け、コンマ記号で区切ることで設定" "できます ('A'=オーディオ \"audio\", 'V'=ビデオ \"video\", 'P'=写真 \"images" -"\", 例: media_dir=A,/mnt/media/Music)。また、このオプションは複数のディレクト" +"\", 例: A,/mnt/media/Music)。また、このオプションは複数のディレクト" "リを登録可能です。" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/ms/minidlna.po b/applications/luci-app-minidlna/po/ms/minidlna.po index f0e6bb25e4..a9f875e1bb 100644 --- a/applications/luci-app-minidlna/po/ms/minidlna.po +++ b/applications/luci-app-minidlna/po/ms/minidlna.po @@ -130,7 +130,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/no/minidlna.po b/applications/luci-app-minidlna/po/no/minidlna.po index dac9c4be4c..4d70e39c5b 100644 --- a/applications/luci-app-minidlna/po/no/minidlna.po +++ b/applications/luci-app-minidlna/po/no/minidlna.po @@ -150,12 +150,12 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" "Her kan en velge den katalogen som blir skannet. Om du ønsker å begrense " "katalogen til en spesifikk innholdstype kan sette en bokstav foran ('A' for " "lyd, 'V' for video, 'P' for bilder), etterfulgt av et komma og katalogen. " -"(f.eks media_dir=A,/mnt/media/Musikk). Flere kataloger kan brukes." +"(f.eks A,/mnt/media/Musikk). Flere kataloger kan brukes." msgid "Specify the path to the MiniSSDPd socket." msgstr "Angi banen til MiniSSDPd socketen." diff --git a/applications/luci-app-minidlna/po/pl/minidlna.po b/applications/luci-app-minidlna/po/pl/minidlna.po index c06bfc3cd6..6215dc8f15 100644 --- a/applications/luci-app-minidlna/po/pl/minidlna.po +++ b/applications/luci-app-minidlna/po/pl/minidlna.po @@ -149,11 +149,11 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" "Ustaw tu folder, który chcesz skanować. Jeśli chcesz ograniczyć folder do " "konkretnego typu zawartości, możesz poprzedzić ścieżkę typem (\"A\" dla " -"audio, \"V\" dla wideo, \"P\" dla obrazów) i przecinkiem (np media_dir=A,/" +"audio, \"V\" dla wideo, \"P\" dla obrazów) i przecinkiem (np A,/" "mnt/media/Muzyka). Możesz podać kilka folderów." msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/pt-br/minidlna.po b/applications/luci-app-minidlna/po/pt-br/minidlna.po index 583bb3d806..29c7a7ca15 100644 --- a/applications/luci-app-minidlna/po/pt-br/minidlna.po +++ b/applications/luci-app-minidlna/po/pt-br/minidlna.po @@ -151,12 +151,12 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" "Defina esta opção para o diretório que você deseja verificar. Se você quiser " "restringir o diretório para um tipo específico de conteúdo, você pode " "prefixar o tipo ('A' para áudio, 'V' para o vídeo, 'P' para imagens), " -"seguido por uma vírgula, para o diretório (por exemplo media_dir = A, / " +"seguido por uma vírgula, para o diretório (por exemplo A, / " "mnt / media / Música). Vários diretórios podem ser especificados." msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/pt/minidlna.po b/applications/luci-app-minidlna/po/pt/minidlna.po index 30b4e1ddfb..95d6b32666 100644 --- a/applications/luci-app-minidlna/po/pt/minidlna.po +++ b/applications/luci-app-minidlna/po/pt/minidlna.po @@ -138,7 +138,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/ro/minidlna.po b/applications/luci-app-minidlna/po/ro/minidlna.po index 65737c4002..786ac98489 100644 --- a/applications/luci-app-minidlna/po/ro/minidlna.po +++ b/applications/luci-app-minidlna/po/ro/minidlna.po @@ -135,7 +135,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/ru/minidlna.po b/applications/luci-app-minidlna/po/ru/minidlna.po index f97ed05cce..893fc71a89 100644 --- a/applications/luci-app-minidlna/po/ru/minidlna.po +++ b/applications/luci-app-minidlna/po/ru/minidlna.po @@ -151,12 +151,12 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" "Директории, которые необходимо сканировать. Если вы хотите установить " "ограничение на определённый тип содержимого в директории, вы можете написать " "тип ('A' для аудио, 'V' для видео, 'P' для изображений) перед путём к " -"директории, за которым следует запятая (напр. media_dir=A,/mnt/media/Music). " +"директории, за которым следует запятая (напр. A,/mnt/media/Music). " "Может быть указано несколько директорий." msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/sk/minidlna.po b/applications/luci-app-minidlna/po/sk/minidlna.po index 8ae7cb3ae7..0ea592e249 100644 --- a/applications/luci-app-minidlna/po/sk/minidlna.po +++ b/applications/luci-app-minidlna/po/sk/minidlna.po @@ -131,7 +131,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/sv/minidlna.po b/applications/luci-app-minidlna/po/sv/minidlna.po index 7140555048..169d55ab6b 100644 --- a/applications/luci-app-minidlna/po/sv/minidlna.po +++ b/applications/luci-app-minidlna/po/sv/minidlna.po @@ -132,7 +132,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/templates/minidlna.pot b/applications/luci-app-minidlna/po/templates/minidlna.pot index 033dfa5264..d5658249d0 100644 --- a/applications/luci-app-minidlna/po/templates/minidlna.pot +++ b/applications/luci-app-minidlna/po/templates/minidlna.pot @@ -124,7 +124,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/tr/minidlna.po b/applications/luci-app-minidlna/po/tr/minidlna.po index a819da5b4f..973dbd0791 100644 --- a/applications/luci-app-minidlna/po/tr/minidlna.po +++ b/applications/luci-app-minidlna/po/tr/minidlna.po @@ -131,7 +131,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/uk/minidlna.po b/applications/luci-app-minidlna/po/uk/minidlna.po index 2eb83bd75d..8bf5160f37 100644 --- a/applications/luci-app-minidlna/po/uk/minidlna.po +++ b/applications/luci-app-minidlna/po/uk/minidlna.po @@ -132,7 +132,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/vi/minidlna.po b/applications/luci-app-minidlna/po/vi/minidlna.po index a819da5b4f..973dbd0791 100644 --- a/applications/luci-app-minidlna/po/vi/minidlna.po +++ b/applications/luci-app-minidlna/po/vi/minidlna.po @@ -131,7 +131,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-minidlna/po/zh-cn/minidlna.po b/applications/luci-app-minidlna/po/zh-cn/minidlna.po index bd569344e9..393b116e34 100644 --- a/applications/luci-app-minidlna/po/zh-cn/minidlna.po +++ b/applications/luci-app-minidlna/po/zh-cn/minidlna.po @@ -132,12 +132,12 @@ msgstr "" "设定严格遵守DLNA标准。这将允许服务器端降小大尺寸JPEG图像,在(至少)索尼DLNA" "的产品这可能会降低JPEG服务性能。" -# 如果写成media_dir=A,/mnt/media/Music,uci会报错。实际上应该是A,/mnt/media/Music,这样生成的minidlna.conf刚好是media_dir=A,/mnt/media/Music +# 如果写成A,/mnt/media/Music,uci会报错。实际上应该是A,/mnt/media/Music,这样生成的minidlna.conf刚好是A,/mnt/media/Music msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" "设置要扫描的目录。如果你想限制特定内容类型的目录,你可以在前面加上类型(用于音频'A','V'视频,'P'图片),其次是用逗号分隔的目录(如A,/mnt" "/媒体/音乐)。可以指定多个目录。" diff --git a/applications/luci-app-minidlna/po/zh-tw/minidlna.po b/applications/luci-app-minidlna/po/zh-tw/minidlna.po index c563adbb34..5dad93e583 100644 --- a/applications/luci-app-minidlna/po/zh-tw/minidlna.po +++ b/applications/luci-app-minidlna/po/zh-tw/minidlna.po @@ -134,7 +134,7 @@ msgid "" "Set this to the directory you want scanned. If you want to restrict the " "directory to a specific content type, you can prepend the type ('A' for " "audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified." +"(eg. A,/mnt/media/Music). Multiple directories can be specified." msgstr "" msgid "Specify the path to the MiniSSDPd socket." diff --git a/applications/luci-app-noddos/Makefile b/applications/luci-app-noddos/Makefile new file mode 100644 index 0000000000..4c2b9044a9 --- /dev/null +++ b/applications/luci-app-noddos/Makefile @@ -0,0 +1,18 @@ +# Copyright (C) 2017 Steven Hessing (steven.hessing@gmail.com) +# Based on initial implementation by Stan Grishin (stangri@melmac.net) +# This is free software, licensed under the GNU General Public License v3. + +include $(TOPDIR)/rules.mk + +PKG_LICENSE:=GPLv3 +PKG_MAINTAINER:=Steven Hessing <steven.hessing@gmail.com> + +LUCI_TITLE:=Noddos Service Web UI +LUCI_DESCRIPTION:=Provides Web UI for Noddos service. +LUCI_DEPENDS:=+luci +noddos +LUCI_PKGARCH:=all +PKG_RELEASE:=1 + +include ../../luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-noddos/htdocs/cgi-bin/clientdetails b/applications/luci-app-noddos/htdocs/cgi-bin/clientdetails new file mode 100755 index 0000000000..6ff4ce59f2 --- /dev/null +++ b/applications/luci-app-noddos/htdocs/cgi-bin/clientdetails @@ -0,0 +1,91 @@ +#!/usr/bin/lua + +-- clientdetails.lua : Provides details about client devices discovered by Noddos +-- Copyright (C) 2017 Steven Hessing (steven.hessing@gmail.com) +-- This is free software, licensed under the GNU General Public License v3. + +require "nixio.fs" + +print ("Content-type: Text/html\n") +local info = os.getenv("QUERY_STRING") + +local params = {} +local echo = {} + +function print_row(key) + print ("<tr><th>") + print (key) + print ("</th><td>") + print (device[key]) + print ("</td></tr>") +end + +for name, value in string.gmatch(info .. '&', '(.-)%=(.-)%&') do + value = string.gsub(value , '%+', ' ') + value = string.gsub(value , '%%(%x%x)', function(dpc) + return string.char(tonumber(dpc,16)) + end ) + params[name] = value + + value = string.gsub(value, "%&", "&") + value = string.gsub(value, "%<", "<") + value = string.gsub(value, '%"', """) + echo[name] = value +end + +device = {} +profile = {} + +if nixio.fs.access("/var/lib/noddos/DeviceDump.json") then + io.input("/var/lib/noddos/DeviceDump.json") + local t = io.read("*all") + local json = require "luci.jsonc" + local devdump = json.parse(t) + for i, v in ipairs(devdump) do + if v.MacAddress == params["mac"] then + device = v + end + end + io.input("/var/lib/noddos/DeviceProfiles.json") + t = io.read("*all") + local temp = json.parse(t) + for i, v in ipairs(temp) do + if device.DeviceProfileUuid == v.DeviceProfileUuid then + profile = v + end + end +end +pagetop = [[ +<html> + <head> + <title>Client Details by Noddos</title> + <meta charset="utf-8"> + <!--[if lt IE 9]><script src="/luci-static/bootstrap/html5.js?v=git-17.100.70571-29fabe2"></script><![endif]--> + <meta name="viewport" content="initial-scale=1.0"> + <link rel="stylesheet" href="/luci-static/bootstrap/cascade.css?v=git-17.100.70571-29fabe2"> + <link rel="stylesheet" media="only screen and (max-device-width: 854px)" href="/luci-static/bootstrap/mobile.css?v=git-17.100.70571-29fabe2" type="text/css" /> + <link rel="shortcut icon" href="/luci-static/bootstrap/favicon.ico"> + <script src="/luci-static/resources/xhr.js?v=git-17.100.70571-29fabe2"></script> + </head> + <body text=blue> + <h1>Client Details</h1> +]] +print (pagetop) + +if params["mac"] ~= nil then + print ("<table>") + for i, key in ipairs{"MacAddress", "Ipv4Address", "Ipv6Address", "DeviceProfileUuid", "DhcpHostname", "DhcpVendor", "SsdpFriendlyName", "SsdpLocation", "SsdpManufacturer", "SsdpModelName", "SsdpModelUrl", "SsdpSerialNumber", "SsdpServer","SsdpUserAgent", "MdnsDeviceUrl", "MdnsHw", "MdnsManufacturer", "MdnsModelName", "MdnsOs", "WsDiscoveryTypes", "WsDiscoveryXaddrs", "DnsQueries"} do + print_row(key) + end + print ("</table>") +else + print ("no mac address specified") +end + +pagebase = [[<br><br> +Client Details by +<a href=http://www.noddos.io>Noddos</a> +</body></html> +]] + +print (pagebase) diff --git a/applications/luci-app-noddos/luasrc/controller/noddos.lua b/applications/luci-app-noddos/luasrc/controller/noddos.lua new file mode 100644 index 0000000000..c45e24bc97 --- /dev/null +++ b/applications/luci-app-noddos/luasrc/controller/noddos.lua @@ -0,0 +1,10 @@ +-- Copyright 2017 Steven Hessing (steven.hessing@gmail.com) +-- This is free software, licensed under the GNU General Public License v3. +-- /usr/lib/lua/luci/controller/noddos.lua + +module("luci.controller.noddos", package.seeall) +function index() + entry({"admin", "status", "noddos"}, template("noddos/clients"), _("Noddos Clients"), 3) + entry({"admin", "network", "noddos"}, cbi("noddos"), _("Noddos Client Tracking"), 55) +end + diff --git a/applications/luci-app-noddos/luasrc/model/cbi/noddos.lua b/applications/luci-app-noddos/luasrc/model/cbi/noddos.lua new file mode 100644 index 0000000000..3abb73bc66 --- /dev/null +++ b/applications/luci-app-noddos/luasrc/model/cbi/noddos.lua @@ -0,0 +1,46 @@ +-- Copyright 2017 Steven Hessing (steven.hessing@gmail.com) +-- This is free software, licensed under the GNU General Public License v3. +-- /usr/lib/lua/luci/model/cbi/noddos.lua + +m = Map("noddos", translate("Client Firewall"), + translate("Noddos controls traffic from the clients on your network to the Internet. " .. + "This helps protect your network, the bandwidth on your Internet connection and " .. + "the Internet")) + +s = m:section(TypedSection, "noddos", translate("Server Settings")) +s.anonymous = true +s.addremove = false + +s:option(Flag, "rfc1918", + translate("Private networks"), + translate("Report traffic to private networks (10/8, 172.16/12, 192.168/16, fd75:6b5d:352c:ed05::/64)")).default=false + +s:option(Flag, "upload", + translate("Upload anonimized traffic stats"), + translate("Uploading your statistics helps improving device recognition " .. + "and discovering hacked devices & botnets")) + +o = s:option(DynamicList, "whitelistipv4", + translate("Excluded IPv4 addresses"), + translate("Don't monitor these IPv4 addresses")) +o.optional = true +o.placeholder = "127.0.0.1 192.168.1.1" +o.delimiter = " " +o.datatype="list(ip4addr)" + +o = s:option(DynamicList, "whitelistipv6", + translate("Excluded IPv6 addresses"), + translate("Don't monitor these IPv6 addresses")) +o.optional = true +o.delimiter = " " +o.datatype="list(ip6addr)" + +o = s:option(DynamicList, "whitelistmac", + translate("Excluded MAC addresses"), + translate("Don't monitor these MAC addresses")) +o.optional = true +o.delimiter = " " +o.datatype="list(macaddr)" + +return m + diff --git a/applications/luci-app-noddos/luasrc/view/noddos/clients.htm b/applications/luci-app-noddos/luasrc/view/noddos/clients.htm new file mode 100644 index 0000000000..f2fb9312a7 --- /dev/null +++ b/applications/luci-app-noddos/luasrc/view/noddos/clients.htm @@ -0,0 +1,111 @@ +<%# + Copyright (C) 2017 Steven Hessing <steven.hessing@gmail.com> + This is free software, licensed under the GNU General Public License v3. + /usr/lib/lua/luci/view/clients.htm +-%> + +<%- + + require "nixio.fs" + require "os" + + local last_modified = "<boottime>" + local style = true + local v + local devdump + + if nixio.fs.access("/var/lib/noddos/DeviceDump.json") then + last_modified = os.date("%c", nixio.fs.stat("/var/lib/noddos/DeviceDump.json")['mtime']) + io.input("/var/lib/noddos/DeviceDump.json") + t = io.read("*all") + devdump = luci.jsonc.parse(t) + io.input("/var/lib/noddos/DeviceProfiles.json") + t = io.read("*all") + temp = luci.jsonc.parse(t) + devicevalues = {} + for i, v in ipairs(temp) do + devicevalues[v.DeviceProfileUuid] = v + end + end +-%> + +<%+header%> + +<div class="cbi-map" id="cbi-network"> + <h2 name="content"><%:Clients%></h2> + <div class="cbi-map-descr"><%:The following clients have been discovered on the network. The last discovery was completed at %><%=last_modified%></div> + + <fieldset class="cbi-section"> + <legend><%:Recognized Clients%></legend> + <div class="cbi-section-node"> + <table class="cbi-section-table"> + <tr class="cbi-section-table-titles"> + <th class="cbi-section-table-cell"><%:Hostname%></th> + <th class="cbi-section-table-cell"><%:IPv4%></th> + <th class="cbi-section-table-cell"><%:MAC%></th> + <th class="cbi-section-table-cell"><%:Manufacturer%></th> + <th class="cbi-section-table-cell"><%:Model%></th> + <th class="cbi-section-table-cell"><%:Class%></th> + </tr> + + <% + for i,v in ipairs(devdump) do + if v.DeviceProfileUuid ~= "" then + %> + <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> + <td class="cbi-value-field"><%=v.Hostname%></td> + <td class="cbi-value-field"><%=v.Ipv4Address%></td> + <td class="cbi-value-field"><a href="/cgi-bin/clientdetails?mac=<%=v.MacAddress%>"><%=v.MacAddress%></a></td> + <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].Manufacturer%></td> + <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].Model%></td> + <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].ThingClass%></td> + </tr> + <% + style=false + end + end + %> + </table> + </div> + </fieldset> + <br /> + <fieldset class="cbi-section"> + <legend><%:Unrecognized Clients%></legend> + <div class="cbi-section-node"> + <table class="cbi-section-table"> + <tr class="cbi-section-table-titles"> + <th class="cbi-section-table-cell"><%:Hostname%></th> + <th class="cbi-section-table-cell"><%:IPv4%></th> + <th class="cbi-section-table-cell"><%:MAC%></th> + <th class="cbi-section-table-cell"><%:Manufacturer%></th> + <th class="cbi-section-table-cell"><%:Model%></th> + <th class="cbi-section-table-cell"><%:DhcpVendor%></th> + <th class="cbi-section-table-cell"><%:DhcpHostname%></th> + </tr> + + <% + for i,v in ipairs(devdump) do + if v.DeviceProfileUuid == "" then + %> + <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> + <td class="cbi-value-field"><%=v.Hostname%></td> + <td class="cbi-value-field"><%=v.Ipv4Address%></td> + <td class="cbi-value-field"><a href="/cgi-bin/clientdetails?mac=<%=v.MacAddress%>"><%=v.MacAddress%></a></td> + <td class="cbi-value-field"><%=v.SsdpManufacturer%></td> + <td class="cbi-value-field"><%=v.SsdpModelName%></td> + <td class="cbi-value-field"><%=v.DhcpVendor1%></td> + <td class="cbi-value-field"><%=v.DhcpHostname%></td> + </tr> + <% + style=false + end + end + %> + </table> + </div> + </fieldset> + +</div> + +<%+footer%> + diff --git a/applications/luci-app-noddos/po/ja/noddos.po b/applications/luci-app-noddos/po/ja/noddos.po new file mode 100644 index 0000000000..c6b461747f --- /dev/null +++ b/applications/luci-app-noddos/po/ja/noddos.po @@ -0,0 +1,111 @@ +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 2.0.4\n" +"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Language: ja\n" + +msgid "Class" +msgstr "クラス" + +msgid "Client Firewall" +msgstr "クライアント ファイアウォール" + +msgid "Clients" +msgstr "クライアント" + +msgid "DhcpHostname" +msgstr "DHCP ホスト名" + +msgid "DhcpVendor" +msgstr "DHCP ベンダー" + +msgid "Don't monitor these IPv4 addresses" +msgstr "これらの IPv4 アドレスを監視しません。" + +msgid "Don't monitor these IPv6 addresses" +msgstr "これらの IPv6 アドレスを監視しません。" + +msgid "Don't monitor these MAC addresses" +msgstr "これらの MAC アドレスを監視しません。" + +msgid "Excluded IPv4 addresses" +msgstr "除外する IPv4 アドレス" + +msgid "Excluded IPv6 addresses" +msgstr "除外する IPv6 アドレス" + +msgid "Excluded MAC addresses" +msgstr "除外する MAC アドレス" + +msgid "Hostname" +msgstr "ホスト名" + +msgid "IPv4" +msgstr "IPv4" + +msgid "MAC" +msgstr "MAC" + +msgid "Manufacturer" +msgstr "製造元" + +msgid "Model" +msgstr "モデル" + +msgid "Noddos Client Tracking" +msgstr "Noddos クライアント トラッキング" + +msgid "Noddos Clients" +msgstr "Noddos クライアント" + +msgid "" +"Noddos controls traffic from the clients on your network to the Internet. " +"This helps protect your network, the bandwidth on your Internet connection " +"and the Internet" +msgstr "" +"Noddos は、ネットワーク内のクライアントからインターネットへのトラフィックを制" +"御します。これは、ネットワークとインターネット接続の帯域幅、インターネットの" +"保護に役立ちます。" + +msgid "Private networks" +msgstr "プライベート ネットワーク" + +msgid "Recognized Clients" +msgstr "識別済クライアント" + +msgid "" +"Report traffic to private networks (10/8, 172.16/12, 192.168/16, " +"fd75:6b5d:352c:ed05::/64)" +msgstr "" +"プライベート ネットワークへのトラフィックについてのレポート(10/8, " +"172.16/12, 192.168/16, fd75:6b5d:352c:ed05::/64)" + +msgid "Server Settings" +msgstr "サーバー設定" + +msgid "" +"The following clients have been discovered on the network. The last " +"discovery was completed at" +msgstr "" +"以下のクライアントがネットワーク内で見つかりました。探索の最終実行日時:" + +msgid "Unrecognized Clients" +msgstr "未識別クライアント" + +msgid "Upload anonimized traffic stats" +msgstr "匿名トラフィック状況のアップロード" + +msgid "" +"Uploading your statistics helps improving device recognition and discovering " +"hacked devices & botnets" +msgstr "" +"デバイスの識別や、ハックされたデバイスとボットネットの発見の改善に役立てるた" +"め、統計をアップロードします。" diff --git a/applications/luci-app-noddos/po/templates/noddos.pot b/applications/luci-app-noddos/po/templates/noddos.pot new file mode 100644 index 0000000000..69d135770b --- /dev/null +++ b/applications/luci-app-noddos/po/templates/noddos.pot @@ -0,0 +1,92 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "Class" +msgstr "" + +msgid "Client Firewall" +msgstr "" + +msgid "Clients" +msgstr "" + +msgid "DhcpHostname" +msgstr "" + +msgid "DhcpVendor" +msgstr "" + +msgid "Don't monitor these IPv4 addresses" +msgstr "" + +msgid "Don't monitor these IPv6 addresses" +msgstr "" + +msgid "Don't monitor these MAC addresses" +msgstr "" + +msgid "Excluded IPv4 addresses" +msgstr "" + +msgid "Excluded IPv6 addresses" +msgstr "" + +msgid "Excluded MAC addresses" +msgstr "" + +msgid "Hostname" +msgstr "" + +msgid "IPv4" +msgstr "" + +msgid "MAC" +msgstr "" + +msgid "Manufacturer" +msgstr "" + +msgid "Model" +msgstr "" + +msgid "Noddos Client Tracking" +msgstr "" + +msgid "Noddos Clients" +msgstr "" + +msgid "" +"Noddos controls traffic from the clients on your network to the Internet. " +"This helps protect your network, the bandwidth on your Internet connection " +"and the Internet" +msgstr "" + +msgid "Private networks" +msgstr "" + +msgid "Recognized Clients" +msgstr "" + +msgid "" +"Report traffic to private networks (10/8, 172.16/12, 192.168/16, " +"fd75:6b5d:352c:ed05::/64)" +msgstr "" + +msgid "Server Settings" +msgstr "" + +msgid "" +"The following clients have been discovered on the network. The last " +"discovery was completed at" +msgstr "" + +msgid "Unrecognized Clients" +msgstr "" + +msgid "Upload anonimized traffic stats" +msgstr "" + +msgid "" +"Uploading your statistics helps improving device recognition and discovering " +"hacked devices & botnets" +msgstr "" diff --git a/applications/luci-app-noddos/root/etc/uci-defaults/40_luci-noddos b/applications/luci-app-noddos/root/etc/uci-defaults/40_luci-noddos new file mode 100644 index 0000000000..17abbc41ca --- /dev/null +++ b/applications/luci-app-noddos/root/etc/uci-defaults/40_luci-noddos @@ -0,0 +1,14 @@ +#!/bin/sh + +# Copyright (C) 2017 Steven Hessing (steven.hessing@live.com) +# This is free software, licensed under the GNU General Public License v3 + +uci -q batch <<-EOF >/dev/null + delete ucitrack.@noddos[-1] + add ucitrack noddos + set ucitrack.@noddos[-1].init=noddos + commit ucitrack +EOF + +rm -f /tmp/luci-indexcache +exit 0 diff --git a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua index 7865881cb6..dc7718217c 100644 --- a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua +++ b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua @@ -685,6 +685,10 @@ local knownParams = { "tls_auth", "/etc/openvpn/tlsauth.key", translate("Additional authentication over TLS") }, + { Value, + "tls_crypt", + "/etc/openvpn/tlscrypt.key", + translate("Encrypt and authenticate all control channel packets with the key") }, -- { Value, -- "askpass", -- "[file]", diff --git a/applications/luci-app-openvpn/po/ca/openvpn.po b/applications/luci-app-openvpn/po/ca/openvpn.po index 1b75fe6cd7..d756469078 100644 --- a/applications/luci-app-openvpn/po/ca/openvpn.po +++ b/applications/luci-app-openvpn/po/ca/openvpn.po @@ -199,6 +199,9 @@ msgstr "Activa la interfície de gestió a <em>IP</em> <em>port</em>" msgid "Enabled" msgstr "Activat" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "Xifra d'encriptació per paquets" diff --git a/applications/luci-app-openvpn/po/cs/openvpn.po b/applications/luci-app-openvpn/po/cs/openvpn.po index c68742217e..4fba010530 100644 --- a/applications/luci-app-openvpn/po/cs/openvpn.po +++ b/applications/luci-app-openvpn/po/cs/openvpn.po @@ -194,6 +194,9 @@ msgstr "" msgid "Enabled" msgstr "Povoleno" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-openvpn/po/de/openvpn.po b/applications/luci-app-openvpn/po/de/openvpn.po index dc382ee44d..a203c92e79 100644 --- a/applications/luci-app-openvpn/po/de/openvpn.po +++ b/applications/luci-app-openvpn/po/de/openvpn.po @@ -197,6 +197,9 @@ msgstr "Administratorschnittstelle aktivieren" msgid "Enabled" msgstr "Einschalten" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "Verschlüsselungsalgorithmus für Pakete" diff --git a/applications/luci-app-openvpn/po/el/openvpn.po b/applications/luci-app-openvpn/po/el/openvpn.po index 2c787d816c..63dd8985a8 100644 --- a/applications/luci-app-openvpn/po/el/openvpn.po +++ b/applications/luci-app-openvpn/po/el/openvpn.po @@ -198,6 +198,9 @@ msgstr "" msgid "Enabled" msgstr "Ενεργοποιημένο" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-openvpn/po/en/openvpn.po b/applications/luci-app-openvpn/po/en/openvpn.po index a5994dc292..51819f6b09 100644 --- a/applications/luci-app-openvpn/po/en/openvpn.po +++ b/applications/luci-app-openvpn/po/en/openvpn.po @@ -197,6 +197,9 @@ msgstr "Enable management interface on <em>IP</em> <em>port</em>" msgid "Enabled" msgstr "Enabled" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "Encrypt and authenticate all control channel packets with the key" + msgid "Encryption cipher for packets" msgstr "Encryption cipher for packets" diff --git a/applications/luci-app-openvpn/po/es/openvpn.po b/applications/luci-app-openvpn/po/es/openvpn.po index a5141831ce..819e7ee509 100644 --- a/applications/luci-app-openvpn/po/es/openvpn.po +++ b/applications/luci-app-openvpn/po/es/openvpn.po @@ -196,6 +196,9 @@ msgstr "Interfaz de gestión en <em>IP</em> <em>puerto</em>" msgid "Enabled" msgstr "Activado" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "Cifra de encriptación de paquetes" diff --git a/applications/luci-app-openvpn/po/fr/openvpn.po b/applications/luci-app-openvpn/po/fr/openvpn.po index e2f33dc164..331d1931e8 100644 --- a/applications/luci-app-openvpn/po/fr/openvpn.po +++ b/applications/luci-app-openvpn/po/fr/openvpn.po @@ -206,6 +206,9 @@ msgstr "Activer l'interface de gestion sur <em>IP</em> <em>port</em>" msgid "Enabled" msgstr "Activé" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "Méthode de chiffrement des paquets" diff --git a/applications/luci-app-openvpn/po/he/openvpn.po b/applications/luci-app-openvpn/po/he/openvpn.po index 3528444199..517da49080 100644 --- a/applications/luci-app-openvpn/po/he/openvpn.po +++ b/applications/luci-app-openvpn/po/he/openvpn.po @@ -192,6 +192,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-openvpn/po/hu/openvpn.po b/applications/luci-app-openvpn/po/hu/openvpn.po index 1f9d691d04..67a8217b1a 100644 --- a/applications/luci-app-openvpn/po/hu/openvpn.po +++ b/applications/luci-app-openvpn/po/hu/openvpn.po @@ -196,6 +196,9 @@ msgstr "" msgid "Enabled" msgstr "Engedélyezve" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-openvpn/po/it/openvpn.po b/applications/luci-app-openvpn/po/it/openvpn.po index 233c144c57..834015b8e8 100644 --- a/applications/luci-app-openvpn/po/it/openvpn.po +++ b/applications/luci-app-openvpn/po/it/openvpn.po @@ -198,6 +198,9 @@ msgstr "" msgid "Enabled" msgstr "Abilitato" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-openvpn/po/ja/openvpn.po b/applications/luci-app-openvpn/po/ja/openvpn.po index 5474008682..232ae27e1f 100644 --- a/applications/luci-app-openvpn/po/ja/openvpn.po +++ b/applications/luci-app-openvpn/po/ja/openvpn.po @@ -196,6 +196,9 @@ msgstr "" msgid "Enabled" msgstr "有効" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-openvpn/po/ms/openvpn.po b/applications/luci-app-openvpn/po/ms/openvpn.po index c439c3eb15..6c6e0d6046 100644 --- a/applications/luci-app-openvpn/po/ms/openvpn.po +++ b/applications/luci-app-openvpn/po/ms/openvpn.po @@ -191,6 +191,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-openvpn/po/no/openvpn.po b/applications/luci-app-openvpn/po/no/openvpn.po index 3528444199..517da49080 100644 --- a/applications/luci-app-openvpn/po/no/openvpn.po +++ b/applications/luci-app-openvpn/po/no/openvpn.po @@ -192,6 +192,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-openvpn/po/pl/openvpn.po b/applications/luci-app-openvpn/po/pl/openvpn.po index e289a80fc1..bef5a13a1a 100644 --- a/applications/luci-app-openvpn/po/pl/openvpn.po +++ b/applications/luci-app-openvpn/po/pl/openvpn.po @@ -197,6 +197,9 @@ msgstr "Włącz interfejs zarządzalny na <em>IP</em> <em>port</em>" msgid "Enabled" msgstr "Włączone" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "Szyfrowanie dla pakietów" diff --git a/applications/luci-app-openvpn/po/pt-br/openvpn.po b/applications/luci-app-openvpn/po/pt-br/openvpn.po index 84b0540581..26642e2c46 100644 --- a/applications/luci-app-openvpn/po/pt-br/openvpn.po +++ b/applications/luci-app-openvpn/po/pt-br/openvpn.po @@ -198,6 +198,9 @@ msgstr "Ativar o interface de gestão em <em>IP</em> <em>porta</em>" msgid "Enabled" msgstr "Ativado" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "Cifra de encriptação para pacotes" diff --git a/applications/luci-app-openvpn/po/pt/openvpn.po b/applications/luci-app-openvpn/po/pt/openvpn.po index 95c50a571a..d74b0a690d 100644 --- a/applications/luci-app-openvpn/po/pt/openvpn.po +++ b/applications/luci-app-openvpn/po/pt/openvpn.po @@ -198,6 +198,9 @@ msgstr "Activar o interface de gestão em <em>IP</em> <em>porta</em>" msgid "Enabled" msgstr "Activado" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "Cifra de encriptação para pacotes" diff --git a/applications/luci-app-openvpn/po/ro/openvpn.po b/applications/luci-app-openvpn/po/ro/openvpn.po index 4a7a5b7515..ef5e7ce379 100644 --- a/applications/luci-app-openvpn/po/ro/openvpn.po +++ b/applications/luci-app-openvpn/po/ro/openvpn.po @@ -193,6 +193,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-openvpn/po/ru/openvpn.po b/applications/luci-app-openvpn/po/ru/openvpn.po index 00e585c374..89cf1161cc 100644 --- a/applications/luci-app-openvpn/po/ru/openvpn.po +++ b/applications/luci-app-openvpn/po/ru/openvpn.po @@ -200,6 +200,9 @@ msgstr "Включить интерфейс управления на <em>IP</em msgid "Enabled" msgstr "Включено" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "Шифровать и аутентифициоровать ключом все пакеты канала управления" + msgid "Encryption cipher for packets" msgstr "Шифрование для пакетов" diff --git a/applications/luci-app-openvpn/po/sk/openvpn.po b/applications/luci-app-openvpn/po/sk/openvpn.po index f001c12eaf..9005529762 100644 --- a/applications/luci-app-openvpn/po/sk/openvpn.po +++ b/applications/luci-app-openvpn/po/sk/openvpn.po @@ -191,6 +191,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-openvpn/po/sv/openvpn.po b/applications/luci-app-openvpn/po/sv/openvpn.po index c03e1495cb..838f4650dd 100644 --- a/applications/luci-app-openvpn/po/sv/openvpn.po +++ b/applications/luci-app-openvpn/po/sv/openvpn.po @@ -192,6 +192,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-openvpn/po/templates/openvpn.pot b/applications/luci-app-openvpn/po/templates/openvpn.pot index f2e4011662..126cab076f 100644 --- a/applications/luci-app-openvpn/po/templates/openvpn.pot +++ b/applications/luci-app-openvpn/po/templates/openvpn.pot @@ -184,6 +184,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-openvpn/po/tr/openvpn.po b/applications/luci-app-openvpn/po/tr/openvpn.po index 7b8ffad34c..917c36d561 100644 --- a/applications/luci-app-openvpn/po/tr/openvpn.po +++ b/applications/luci-app-openvpn/po/tr/openvpn.po @@ -191,6 +191,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-openvpn/po/uk/openvpn.po b/applications/luci-app-openvpn/po/uk/openvpn.po index a6910c2309..e98b52a8ae 100644 --- a/applications/luci-app-openvpn/po/uk/openvpn.po +++ b/applications/luci-app-openvpn/po/uk/openvpn.po @@ -195,6 +195,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-openvpn/po/vi/openvpn.po b/applications/luci-app-openvpn/po/vi/openvpn.po index 8e8b96dc7f..f3873b068f 100644 --- a/applications/luci-app-openvpn/po/vi/openvpn.po +++ b/applications/luci-app-openvpn/po/vi/openvpn.po @@ -197,6 +197,9 @@ msgstr "Kích hoạt giao diện điều hành trên <em>IP</em> <em>cổng</em> msgid "Enabled" msgstr "Kích hoạt " +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "Encryption cipher cho các gói" diff --git a/applications/luci-app-openvpn/po/zh-cn/openvpn.po b/applications/luci-app-openvpn/po/zh-cn/openvpn.po index 3904ac4bf8..093a9cd071 100644 --- a/applications/luci-app-openvpn/po/zh-cn/openvpn.po +++ b/applications/luci-app-openvpn/po/zh-cn/openvpn.po @@ -196,6 +196,9 @@ msgstr "在<em>IP</em> <em>port</em>上启用可管理接口" msgid "Enabled" msgstr "启用" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "加密数据包" diff --git a/applications/luci-app-openvpn/po/zh-tw/openvpn.po b/applications/luci-app-openvpn/po/zh-tw/openvpn.po index f26aeb097a..556fb9b8f0 100644 --- a/applications/luci-app-openvpn/po/zh-tw/openvpn.po +++ b/applications/luci-app-openvpn/po/zh-tw/openvpn.po @@ -190,6 +190,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Encrypt and authenticate all control channel packets with the key" +msgstr "" + msgid "Encryption cipher for packets" msgstr "" diff --git a/applications/luci-app-p2pblock/po/pt-br/p2pblock.po b/applications/luci-app-p2pblock/po/pt-br/p2pblock.po index de3638164e..8ebac375f2 100644 --- a/applications/luci-app-p2pblock/po/pt-br/p2pblock.po +++ b/applications/luci-app-p2pblock/po/pt-br/p2pblock.po @@ -1,3 +1,7 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" + msgid "Block Time" msgstr "Tempo de bloqueio" diff --git a/applications/luci-app-radicale/po/pt-br/radicale.po b/applications/luci-app-radicale/po/pt-br/radicale.po index 67bf586908..17417fa499 100644 --- a/applications/luci-app-radicale/po/pt-br/radicale.po +++ b/applications/luci-app-radicale/po/pt-br/radicale.po @@ -14,11 +14,15 @@ msgstr "" msgid "" "'AUTO' selects the highest protocol version that client and server support." -msgstr "'AUTO' seleciona a versão mais alto protocolo que o cliente e o servidor suportar." +msgstr "" +"'AUTO' seleciona a versão mais alto protocolo que o cliente e o servidor " +"suportar." msgid "" "'Hostname:Port' or 'IPv4:Port' or '[IPv6]:Port' Radicale should listen on" -msgstr "'NomeDoEquipamento:porta' ou 'IPv4:Porta' ou '[IPv6]:Porta' em que o Radicale deve escutar" +msgstr "" +"'NomeDoEquipamento:porta' ou 'IPv4:Porta' ou '[IPv6]:Porta' em que o " +"Radicale deve escutar" msgid "AUTO" msgstr "AUTO" @@ -48,7 +52,9 @@ msgstr "Autenticação" msgid "" "Authentication login is matched against the 'user' key, and collection's " "path is matched against the 'collection' key." -msgstr "O nome do usuário na autenticação é comparado com a chave do 'user', e o caminho da coleção é comparado com a chave 'coleção'." +msgstr "" +"O nome do usuário na autenticação é comparado com a chave do 'user', e o " +"caminho da coleção é comparado com a chave 'coleção'." msgid "Authentication method" msgstr "Método de autenticação" @@ -68,7 +74,9 @@ msgstr "CalDAV/CardDAV" msgid "" "Calendars and address books are available for both local and remote access, " "possibly limited through authentication policies." -msgstr "Agendas e contados estão disponíveis tanto para acesso local como remoto, possivelmente limitado através das políticas de autenticação." +msgstr "" +"Agendas e contados estão disponíveis tanto para acesso local como remoto, " +"possivelmente limitado através das políticas de autenticação." msgid "Certificate file" msgstr "Arquivo do certificado" @@ -76,7 +84,9 @@ msgstr "Arquivo do certificado" msgid "" "Change here the encoding Radicale will use instead of 'UTF-8' for responses " "to the client and/or to store data inside collections." -msgstr "Mude aqui a codificação que o Radicale usará em vez de 'UTF-8' para respostas a clientes ou para armazenar dados dentro das coleções." +msgstr "" +"Mude aqui a codificação que o Radicale usará em vez de 'UTF-8' para " +"respostas a clientes ou para armazenar dados dentro das coleções." msgid "Ciphers" msgstr "Cifras" @@ -95,7 +105,11 @@ msgid "" "Cross-origin resource sharing (CORS) is a mechanism that allows restricted " "resources (e.g. fonts, JavaScript, etc.) on a web page to be requested from " "another domain outside the domain from which the resource originated." -msgstr "O compartilhamento de recursos de origem cruzada (CORS) é um mecanismo que permite que os recursos de acesso restrito (por exemplo, fontes, JavaScript, etc.) em uma página web ser solicitado de outro domínio fora do domínio a partir do qual o recurso foi originado." +msgstr "" +"O compartilhamento de recursos de origem cruzada (CORS) é um mecanismo que " +"permite que os recursos de acesso restrito (por exemplo, fontes, JavaScript, " +"etc.) em uma página web ser solicitado de outro domínio fora do domínio a " +"partir do qual o recurso foi originado." msgid "Custom" msgstr "Personalizadas" @@ -108,7 +122,9 @@ msgid "Debug" msgstr "Depuração" msgid "Delay (in seconds) during system boot before Radicale start" -msgstr "Atraso (em segundos) durante a inicialização do sistema antes do Radicale iniciar" +msgstr "" +"Atraso (em segundos) durante a inicialização do sistema antes do Radicale " +"iniciar" #, fuzzy msgid "Directory" @@ -131,7 +147,9 @@ msgstr "Ativar HTTPS" msgid "" "Enable/Disable auto-start of Radicale on system start-up and interface events" -msgstr "Ativar/Desativar iniciação automática do Radicale na iniciação do sistema e em eventos de interface" +msgstr "" +"Ativar/Desativar iniciação automática do Radicale na iniciação do sistema e " +"em eventos de interface" msgid "Encoding" msgstr "Codificação" @@ -164,7 +182,9 @@ msgstr "Sistema de arquivos" msgid "" "For example, for the 'user' key, '.+' means 'authenticated user' and '.*' " "means 'anybody' (including anonymous users)." -msgstr "Por exemplo, para a chave 'user', '.+' Significa 'usuário autenticado' e '.*' Significa 'qualquer um' (incluindo usuários anônimos)." +msgstr "" +"Por exemplo, para a chave 'user', '.+' Significa 'usuário autenticado' e '." +"*' Significa 'qualquer um' (incluindo usuários anônimos)." msgid "Full access for Owner only" msgstr "Acesso completo somente para o proprietário" @@ -228,7 +248,8 @@ msgid "Number of backup files of log to create." msgstr "Número de backups dos arquivos de registros(log) a serem criados." msgid "OPTIONAL: See python's ssl module for available ciphers" -msgstr "Opcional: veja o módulo SSL do python para conhecer as cifras disponíveis" +msgstr "" +"Opcional: veja o módulo SSL do python para conhecer as cifras disponíveis" msgid "One or more missing/invalid fields on tab" msgstr "Um ou campos inválidos/ausentes na aba" @@ -242,7 +263,9 @@ msgstr "O caminho/arquivo é necessário!" msgid "" "Place here the 'user:password' pairs for your users which should have access " "to Radicale." -msgstr "Coloque aqui os pares 'usuário:senha' para os seus usuários que devem ter acesso a Radicale." +msgstr "" +"Coloque aqui os pares 'usuário:senha' para os seus usuários que devem ter " +"acesso a Radicale." msgid "Please install current version !" msgstr "Por favor, instale a versão atual!" @@ -263,7 +286,9 @@ msgid "Radicale CalDAV/CardDAV Server" msgstr "Radicale Servidor CalDAV/CardDAV" msgid "Radicale uses '/etc/radicale/rights' as regexp-based file." -msgstr "Radicale usa o '/etc/radicale/rights' como arquivo baseado em expressão regular." +msgstr "" +"Radicale usa o '/etc/radicale/rights' como arquivo baseado em expressão " +"regular." msgid "Radicale uses '/etc/radicale/users' as htpasswd file." msgstr "Radicale usa o '/etc/radicale/users' como o arquivo htpasswd." @@ -307,7 +332,9 @@ msgid "Server" msgstr "Servidor" msgid "Setting this parameter to '0' will disable rotation of log-file." -msgstr "Definindo este parâmetro para '0' irá desativar a rotação dos arquivos de registros(log)." +msgstr "" +"Definindo este parâmetro para '0' irá desativar a rotação dos arquivos de " +"registros(log)." msgid "Software package '%s' is not installed." msgstr "O pacote de software '%s' não está instalado." @@ -349,18 +376,23 @@ msgstr "Sistema" msgid "" "The Radicale Project is a complete CalDAV (calendar) and CardDAV (contact) " "server solution." -msgstr "O Projeto Radicale é uma solução completa de CalDAV (agenda) e CardDAV (contatos)." +msgstr "" +"O Projeto Radicale é uma solução completa de CalDAV (agenda) e CardDAV " +"(contatos)." msgid "" "They can be viewed and edited by calendar and contact clients on mobile " "phones or computers." -msgstr "Eles podem ser visualizados e editados pelos clientes de agenda e de contatos em telefones celulares ou computadores." +msgstr "" +"Eles podem ser visualizados e editados pelos clientes de agenda e de " +"contatos em telefones celulares ou computadores." msgid "To edit the file follow this link!" msgstr "Para editar o arquivo, siga este link!" msgid "To view latest log file follow this link!" -msgstr "Para visualizar mais recente arquivo de registros(log), siga este link!" +msgstr "" +"Para visualizar mais recente arquivo de registros(log), siga este link!" msgid "Value is not a number" msgstr "O valor não é um número" @@ -384,7 +416,9 @@ msgstr "Informação da Versão" msgid "" "WARNING: Only 'File-system' is documented and tested by Radicale development" -msgstr "AVISO: Apenas 'Sistema de Arquivos "está documentado e testado pelo desenvolvimento do Radicale" +msgstr "" +"AVISO: Apenas 'Sistema de Arquivos está documentado e testado pelo " +"desenvolvimento do Radicale" #, fuzzy msgid "Warning" @@ -393,12 +427,16 @@ msgstr "Alerta" msgid "" "You can also get groups from the user regex in the collection with {0}, {1}, " "etc." -msgstr "Você também pode obter grupos a partir da expressão regular do usuário na coleção com {0}, {1} , etc." +msgstr "" +"Você também pode obter grupos a partir da expressão regular do usuário na " +"coleção com {0}, {1} , etc." msgid "" "You can use Python's ConfigParser interpolation values %(login)s and " "%(path)s." -msgstr "Você pode usar a interpolação de valores %(login)s e %(path)s do ConfigParser do Python." +msgstr "" +"Você pode usar a interpolação de valores %(login)s e %(path)s do " +"ConfigParser do Python." msgid "crypt" msgstr "cifrar" @@ -429,4 +467,3 @@ msgstr "necessário" msgid "salted SHA-1" msgstr "SHA-1 com salto" - diff --git a/applications/luci-app-simple-adblock/po/sv/simple-adblock.po b/applications/luci-app-simple-adblock/po/sv/simple-adblock.po new file mode 100644 index 0000000000..e95f95f02b --- /dev/null +++ b/applications/luci-app-simple-adblock/po/sv/simple-adblock.po @@ -0,0 +1,80 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8\n" + +msgid "Blacklisted Domain URLs" +msgstr "Svartlistade domänadresser" + +msgid "Blacklisted Domains" +msgstr "Svartlistade domäner" + +msgid "Blacklisted Hosts URLs" +msgstr "Svartlistade värdadresser" + +msgid "Controls system log and console output verbosity" +msgstr "Kontrollerar systemloggar och detaljnivån för konsoll-utmatningen" + +msgid "Enable/start service" +msgstr "Aktivera/starta tjänsten" + +msgid "Force Router DNS" +msgstr "" + +msgid "Force Router DNS server to all local devices" +msgstr "" + +msgid "Forces Router DNS use on local devices, also known as DNS Hijacking" +msgstr "" + +msgid "Individual domains to be blacklisted" +msgstr "Individuella domäner som ska svartlistas" + +msgid "Individual domains to be whitelisted" +msgstr "Individulla domäner som ska svartlistas" + +msgid "LED to indicate status" +msgstr "LED för att indikera status" + +msgid "Let local devices use their own DNS servers if set" +msgstr "" + +msgid "Output Verbosity Setting" +msgstr "" + +msgid "Pick the LED not already used in" +msgstr "" + +msgid "Simple AdBlock" +msgstr "Simple AdBlock" + +msgid "Simple AdBlock Settings" +msgstr "Inställningar för Simple AdBlock" + +msgid "Some output" +msgstr "Viss utmatning" + +msgid "Suppress output" +msgstr "Förträng utmatning" + +msgid "System LED Configuration" +msgstr "" + +msgid "URLs to lists of domains to be blacklisted" +msgstr "" + +msgid "URLs to lists of domains to be whitelisted" +msgstr "" + +msgid "URLs to lists of hosts to be blacklisted" +msgstr "" + +msgid "Verbose output" +msgstr "Utförlig utmatning" + +msgid "Whitelisted Domain URLs" +msgstr "Vitlistade domänadresser" + +msgid "Whitelisted Domains" +msgstr "Vitlistade domäner" + +msgid "none" +msgstr "ingen" diff --git a/applications/luci-app-splash/po/sv/splash.po b/applications/luci-app-splash/po/sv/splash.po index 055c67b866..a5ebcb7efe 100644 --- a/applications/luci-app-splash/po/sv/splash.po +++ b/applications/luci-app-splash/po/sv/splash.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" +"Last-Translator: Kristoffer Grundström <hamnisdude@gmail.com>\n" "Language-Team: none\n" "Language: sv\n" "MIME-Version: 1.0\n" @@ -45,6 +45,8 @@ msgstr "" msgid "" "Become an active member of this community and help by operating your own node" msgstr "" +"Bli en aktiv medlem av det här sällskapet och hjälp till genom att " +"tillhandahålla en egen nod" msgid "Blacklist" msgstr "Svartlista" diff --git a/applications/luci-app-upnp/po/zh-cn/upnp.po b/applications/luci-app-upnp/po/zh-cn/upnp.po index 693bbc12e9..022e16ec00 100644 --- a/applications/luci-app-upnp/po/zh-cn/upnp.po +++ b/applications/luci-app-upnp/po/zh-cn/upnp.po @@ -82,7 +82,7 @@ msgid "External ports" msgstr "外部端口" msgid "General Settings" -msgstr "一般设置" +msgstr "基本设置" msgid "Internal addresses" msgstr "内部地址" |