luci-app-aria2: Refactor, new views and more options

This commit contains:

* Refactor package code.
* Add options for RPC, HTTP/HTTPS and BT.
* Improve descriptions for some options.
* New views for config files and log files.
* Also updated translation for simplified Chinese.

Signed-off-by: Xingwang Liao <kuoruan@gmail.com>
This commit is contained in:
Xingwang Liao 2019-03-29 17:09:37 +08:00
parent 9a979e6db5
commit f90de782a7
No known key found for this signature in database
GPG key ID: CA5778EE630FED50
17 changed files with 5953 additions and 1441 deletions

View file

@ -1,39 +1,18 @@
#
# Copyright (C) 2016 Openwrt.org
# Copyright (C) 2017-2019 Xingwang Liao <kuoruan@gmail.com>
#
# This is free software, licensed under the Apache License, Version 2.0 .
# This is free software, licensed under the MIT License.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-aria2
# Version == major.minor.patch
# increase "minor" on new functionality and "patch" on patches/optimization
PKG_VERSION:=1.0.1
# Release == build
# increase on changes of translation files
PKG_RELEASE:=4
PKG_LICENSE:=Apache-2.0
PKG_MAINTAINER:=Hsing-Wang Liao <kuoruan@gmail.com>
# LuCI specific settings
LUCI_TITLE:=LuCI Support for Aria2
LUCI_DEPENDS:=+luci-lib-ipkg +aria2
LUCI_DEPENDS:=+aria2 +luci-lib-ipkg
LUCI_PKGARCH:=all
define Package/$(PKG_NAME)/config
# shown in make menuconfig <Help>
help
$(LUCI_TITLE)
.
Version: $(PKG_VERSION)-$(PKG_RELEASE)
$(PKG_MAINTAINER)
endef
PKG_MAINTAINER:=Xingwang Liao <kuoruan@gmail.com>
PKG_LICENSE:=MIT
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature

View file

@ -1,15 +1,11 @@
--[[
LuCI - Lua Configuration Interface - aria2 support
-- Copyright 2016-2019 Xingwang Liao <kuoruan@gmail.com>
-- Licensed to the public under the MIT License.
Copyright 2014-2015 nanpuyue <nanpuyue@gmail.com>
Modified by kuoruan <kuoruan@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
]]--
local fs = require "nixio.fs"
local sys = require "luci.sys"
local http = require "luci.http"
local util = require "luci.util"
local uci = require "luci.model.uci".cursor()
module("luci.controller.aria2", package.seeall)
@ -18,26 +14,48 @@ function index()
return
end
local page = entry({"admin", "services", "aria2"}, cbi("aria2"), _("Aria2 Settings"))
page.dependent = true
entry({"admin", "services", "aria2"},
firstchild(), _("Aria2")).dependent = false
entry({"admin", "services", "aria2", "status"}, call("status")).leaf = true
entry({"admin", "services", "aria2", "config"},
cbi("aria2/config"), _("Configuration"), 1)
entry({"admin", "services", "aria2", "file"},
form("aria2/files"), _("Files"), 2)
entry({"admin", "services", "aria2", "log"},
firstchild(), _("Log"), 3)
entry({"admin", "services", "aria2", "log", "view"},
template("aria2/log_template"))
entry({"admin", "services", "aria2", "log", "read"},
call("action_log_read"))
entry({"admin", "services", "aria2", "status"},
call("action_status"))
end
function status()
local sys = require "luci.sys"
local ipkg = require "luci.model.ipkg"
local http = require "luci.http"
local uci = require "luci.model.uci".cursor()
function action_status()
local status = {
running = (sys.call("pidof aria2c > /dev/null") == 0),
yaaw = ipkg.installed("yaaw"),
webui = ipkg.installed("webui-aria2"),
ariang = (ipkg.installed("ariang") or ipkg.installed("ariang-nginx"))
running = (sys.call("pidof aria2c >/dev/null") == 0)
}
http.prepare_content("application/json")
http.write_json(status)
end
function action_log_read()
local data = { log = "", syslog = "" }
local log_file = uci:get("aria2", "main", "log") or "/var/log/aria2.log"
if fs.access(log_file) then
data.log = util.trim(sys.exec("tail -n 50 %s | sed 'x;1!H;$!d;x'" % log_file))
end
data.syslog = util.trim(sys.exec("logread | grep aria2 | tail -n 50 | sed 'x;1!H;$!d;x'"))
http.prepare_content("application/json")
http.write_json(data)
end

View file

@ -1,211 +0,0 @@
--[[
LuCI - Lua Configuration Interface - Aria2 support
Copyright 2014-2016 nanpuyue <nanpuyue@gmail.com>
Modified by maz-1 <ohmygod19993@gmail.com>
Modified by kuoruan <kuoruan@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
]]--
local sys = require "luci.sys"
local util = require "luci.util"
local uci = require "luci.model.uci".cursor()
local cfgbtn = "<input type=\"button\" value=\"" .. translate("Generate Randomly") .. "\" onclick=\"randomSecret(32);\" />"
local sessionbtn = "<input class=\"cbi-button mar-10\" type=\"button\" value=\"" .. translate("View Json-RPC URL") .. "\" onclick=\"showRPCURL();\" />"
local aria2rpctxt = "<input class=\"mar-10\" id=\"aria2rpcpath\" onmouseover=\"obj=document.getElementById(this.id);obj.focus();obj.select()\" />"
local use_websocket = "<input id=\"use_websocket\" type=\"checkbox\" /><label for=\"use_websocket\">" .. translate("Use WebSocket") .. "</label>"
function ipkg_ver(pkg)
local version = nil
local control = io.open("/usr/lib/opkg/info/%s.control" % pkg, "r")
if control then
local ln
repeat
ln = control:read("*l")
if ln and ln:match("^Version: ") then
version = ln:gsub("^Version: ", ""):gsub("-%d", "")
break
end
until not ln
control:close()
end
return version
end
function ipkg_ver_lined(pkg)
return ipkg_ver(pkg):gsub("%.", "-")
end
m = Map("aria2", translate("Aria2"), translate("Aria2 is a multi-protocol &amp; multi-source download utility, here you can configure the settings."))
m:section(SimpleSection).template = "aria2/overview_status"
s = m:section(TypedSection, "aria2", translate("Aria2 Settings"))
s.addremove = false
s.anonymous = true
s:tab("general", translate("General Settings"))
s:tab("file", translate("Files and Locations"))
s:tab("task", translate("Task Settings"))
s:tab("bittorrent", translate("BitTorrent Settings"))
o = s:taboption("general", Flag, "enabled", translate("Enabled"))
o.rmempty = false
user = s:taboption("general", ListValue, "user", translate("Run daemon as user"))
local p_user
for _, p_user in util.vspairs(util.split(sys.exec("cat /etc/passwd | cut -f 1 -d :"))) do
user:value(p_user)
end
o = s:taboption("general", Value, "rpc_listen_port", translate("RPC port"))
o.datatype = "port"
o.placeholder = "6800"
rpc_auth_method = s:taboption("general", ListValue, "rpc_auth_method", translate("RPC authentication method"))
rpc_auth_method:value("none", translate("No Authentication"))
rpc_auth_method:value("user_pass", translate("Username & Password"))
rpc_auth_method:value("token", translate("Token"))
o = s:taboption("general", Value, "rpc_user", translate("RPC username"))
o:depends("rpc_auth_method", "user_pass")
o.rmempty = false
o = s:taboption("general", Value, "rpc_passwd", translate("RPC password"))
o:depends("rpc_auth_method", "user_pass")
o.password = true
o.rmempty = true
o = s:taboption("general", Value, "rpc_secret", translate("RPC Token"), "<br/>" .. cfgbtn)
o:depends("rpc_auth_method", "token")
o.rmempty = true
o = s:taboption("file", Value, "config_dir", translate("Config file directory"))
o.placeholder = "/var/etc/aria2"
o = s:taboption("file", Flag, "enable_logging", translate("Enable log"), translate("The default log file is /var/log/aria2.log"))
o.enabled = "true"
o.disabled = "false"
o = s:taboption("file", ListValue, "log_level", translate("Log level"))
o:depends("enable_logging", "true")
o:value("debug", translate("Debug"))
o:value("info", translate("Info"))
o:value("notice", translate("Notice"))
o:value("warn", translate("Warn"))
o:value("error", translate("Error"))
o = s:taboption("file", Value, "dir", translate("Default download directory"))
o.rmempty = false
o = s:taboption("file", Value, "disk_cache", translate("Disk cache"), translate("in bytes, You can append K or M."))
o.rmempty = true
o = s:taboption("file", ListValue, "file_allocation", translate("Preallocation"), translate("\"Falloc\" is not available in all cases."))
o:value("none", translate("Off"))
o:value("prealloc", translate("Prealloc"))
o:value("trunc", translate("Trunc"))
o:value("falloc", translate("Falloc"))
overall_speed_limit = s:taboption("task", Flag, "overall_speed_limit", translate("Overall speed limit enabled"))
overall_speed_limit.rmempty = true
o = s:taboption("task", Value, "max_overall_download_limit", translate("Overall download limit"), translate("in bytes/sec, You can append K or M."))
o:depends("overall_speed_limit", "1")
o = s:taboption("task", Value, "max_overall_upload_limit", translate("Overall upload limit"), translate("in bytes/sec, You can append K or M."))
o:depends("overall_speed_limit", "1")
task_speed_limit = s:taboption("task", Flag, "task_speed_limit", translate("Per task speed limit enabled"))
task_speed_limit.rmempty = true
o = s:taboption("task", Value, "max_download_limit", translate("Per task download limit"), translate("in bytes/sec, You can append K or M."))
o:depends("task_speed_limit", "1")
o = s:taboption("task", Value, "max_upload_limit", translate("Per task upload limit"), translate("in bytes/sec, You can append K or M."))
o:depends("task_speed_limit", "1")
o = s:taboption("task", Value, "max_concurrent_downloads", translate("Max concurrent downloads"))
o.placeholder = "5"
o = s:taboption("task", Value, "max_connection_per_server", translate("Max connection per server"), "1-16")
o.datatype = "range(1, 16)"
o.placeholder = "1"
o = s:taboption("task", Value, "min_split_size", translate("Min split size"), "1M-1024M")
o.placeholder = "20M"
o = s:taboption("task", Value, "split", translate("Max number of split"))
o.placeholder = "5"
o = s:taboption("task", Value, "save_session_interval", translate("Autosave session interval"), translate("Sec"))
o.default = "30"
o = s:taboption("task", Value, "user_agent", translate("User agent value"))
o.placeholder = "aria2/" .. ipkg_ver("aria2")
o = s:taboption("bittorrent", Flag, "enable_dht", translate("<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"))
o.enabled = "true"
o.disabled = "false"
o = s:taboption("bittorrent", Flag, "bt_enable_lpd", translate("<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"))
o.enabled = "true"
o.disabled = "false"
o = s:taboption("bittorrent", Flag, "follow_torrent", translate("Follow torrent"))
o.enabled = "true"
o.disabled = "false"
o = s:taboption("bittorrent", Value, "listen_port", translate("BitTorrent listen port"))
o.placeholder = "6881-6999"
o = s:taboption("bittorrent", Value, "bt_max_peers", translate("Max number of peers per torrent"))
o.placeholder = "55"
bt_tracker_enable = s:taboption("bittorrent", Flag, "bt_tracker_enable", translate("Additional Bt tracker enabled"))
bt_tracker = s:taboption("bittorrent", DynamicList, "bt_tracker", translate("List of additional Bt tracker"))
bt_tracker:depends("bt_tracker_enable", "1")
bt_tracker.rmempty = true
function bt_tracker.cfgvalue(self, section)
local rv = {}
local val = Value.cfgvalue(self, section)
if type(val) == "table" then
val = table.concat(val, ",")
elseif not val then
val = ""
end
for v in val:gmatch("[^,%s]+") do
rv[#rv+1] = v
end
return rv
end
function bt_tracker.write(self, section, value)
local rv = {}
for v in util.imatch(value) do
rv[#rv+1] = v
end
Value.write(self, section, table.concat(rv, ","))
end
o = s:taboption("bittorrent", Value, "peer_id_prefix", translate("Prefix of peer ID"))
o.placeholder = "A2-" .. ipkg_ver_lined("aria2") .. "-"
s = m:section(TypedSection, "aria2", translate("Extra Settings"))
s.addremove = false
s.anonymous = true
o = s:option(DynamicList, "extra_settings", translate("List of extra settings"))
o.placeholder = "option=value"
o.rmempty = true
m:section(SimpleSection, nil, sessionbtn .. use_websocket .. aria2rpctxt)
return m

View file

@ -0,0 +1,491 @@
-- Copyright 2017-2019 Xingwang Liao <kuoruan@gmail.com>
-- Licensed to the public under the MIT License.
local sys = require "luci.sys"
local util = require "luci.util"
local m, s, o
local function aria2_info()
if sys.call("command -v aria2c >/dev/null") ~= 0 then
return nil
end
local info = {}
local line
for line in util.execi("aria2c -v 2>/dev/null | grep -E '^(aria2 version|Enabled Features)'") do
if line:match("^aria2 version") then
local _, _, v = line:find("([%d%.]+)$")
info.version = v
elseif line:match("^Enabled Features") then
info.gzip = line:find("GZip") ~= nil
info.https = line:find("HTTPS") ~= nil
info.bt = line:find("BitTorrent") ~= nil
info.sftp = line:find("SFTP") ~= nil
info.adns = line:find("Async DNS") ~= nil
info.cookie = line:find("Firefox3 Cookie") ~= nil
end
end
return info
end
local aria2 = aria2_info()
m = Map("aria2", "%s - %s" % { translate("Aria2"), translate("Settings") },
"<p>%s</p><p>%s</p>" % {
translate("Aria2 is a lightweight multi-protocol &amp; multi-source, cross platform download utility."),
translatef("For more information, please visit: %s",
"<a href=\"https://aria2.github.io\" target=\"_blank\">https://aria2.github.io</a>")
})
if not aria2 then
m:section(SimpleSection, nil, "<span style=\"color: red;\">%s</span>" %
translate("Error: Can't find aria2c in PATH, please reinstall aria2."))
m.reset = false
m.submit = false
return m
end
m:append(Template("aria2/settings_header"))
s = m:section(NamedSection, "main", "aria2")
s.addremove = false
s.anonymous = true
s:tab("basic", translate("Basic Options"))
o = s:taboption("basic", Flag, "enabled", translate("Enabled"))
o.rmempty = false
o = s:taboption("basic", ListValue, "user", translate("Run daemon as user"),
translate("Leave blank to use default user."))
o:value("")
local user
for user in util.execi("cat /etc/passwd | cut -d':' -f1") do
o:value(user)
end
o = s:taboption("basic", Value, "dir", translate("Download directory"),
translate("The directory to store the downloaded file. eg. <code>/mnt/sda1</code>"))
o.rmempty = false
o = s:taboption("basic", Value, "config_dir", translate("Config file directory"),
translate("The directory to store the config file, session file and DHT file."))
o.placeholder = "/var/etc/aria2"
o = s:taboption("basic", Flag, "enable_logging", translate("Enable logging"))
o.rmempty = false
o = s:taboption("basic", Value, "log", translate("Log file"),
translate("The file name of the log file."))
o:depends("enable_logging", "1")
o.placeholder = "/var/log/aria2.log"
o = s:taboption("basic", ListValue, "log_level", translate("Log level"))
o:depends("enable_logging", "1")
o:value("debug", translate("Debug"))
o:value("info", translate("Info"))
o:value("notice", translate("Notice"))
o:value("warn", translate("Warn"))
o:value("error", translate("Error"))
o.default = "warn"
o = s:taboption("basic", Value, "max_concurrent_downloads", translate("Max concurrent downloads"))
o.placeholder = "5"
s:tab("rpc", translate("RPC Options"))
o = s:taboption("rpc", Flag, "pause", translate("Pause"), translate("Pause download after added."))
o.enabled = "true"
o.disabled = "false"
o.default = "false"
o = s:taboption("rpc", Flag, "pause_metadata", translate("Pause metadata"),
translate("Pause downloads created as a result of metadata download."))
o.enabled = "true"
o.disabled = "false"
o.default = "false"
o = s:taboption("rpc", Value, "rpc_listen_port", translate("RPC port"))
o.datatype = "range(1024,65535)"
o.placeholder = "6800"
o = s:taboption("rpc", ListValue, "rpc_auth_method", translate("RPC authentication method"))
o:value("none", translate("No Authentication"))
o:value("user_pass", translate("Username & Password"))
o:value("token", translate("Token"))
o = s:taboption("rpc", Value, "rpc_user", translate("RPC username"))
o:depends("rpc_auth_method", "user_pass")
o = s:taboption("rpc", Value, "rpc_passwd", translate("RPC password"))
o:depends("rpc_auth_method", "user_pass")
o.password = true
o = s:taboption("rpc", Value, "rpc_secret", translate("RPC token"))
o:depends("rpc_auth_method", "token")
o.template = "aria2/value_with_btn"
o.btntext = translate("Generate Randomly")
o.btnclick = "randomToken();"
if aria2.https then
o = s:taboption("rpc", Flag, "rpc_secure", translate("RPC secure"),
translate("RPC transport will be encrypted by SSL/TLS. The RPC clients must use https"
.. " scheme to access the server. For WebSocket client, use wss scheme."))
o.enabled = "true"
o.disabled = "false"
o.rmempty = false
o = s:taboption("rpc", Value, "rpc_certificate", translate("RPC certificate"),
translate("Use the certificate in FILE for RPC server. The certificate must be either"
.. " in PKCS12 (.p12, .pfx) or in PEM format.<br/>PKCS12 files must contain the"
.. " certificate, a key and optionally a chain of additional certificates. Only PKCS12"
.. " files with a blank import password can be opened!<br/>When using PEM, you have to"
.. " specify the \"RPC private key\" as well."))
o:depends("rpc_secure", "true")
o.datatype = "file"
o = s:taboption("rpc", Value, "rpc_private_key", translate("RPC private key"),
translate("Use the private key in FILE for RPC server. The private key must be"
.. " decrypted and in PEM format."))
o:depends("rpc_secure", "true")
o.datatype = "file"
end
o = s:taboption("rpc", Flag, "_use_ws", translate("Use WebSocket"))
o = s:taboption("rpc", Value, "_rpc_url", translate("Json-RPC URL"))
o.template = "aria2/value_with_btn"
o.onmouseover = "this.focus();this.select();"
o.btntext = translate("Show URL")
o.btnclick = "showRPCURL();"
s:tab("http", translate("HTTP/FTP/SFTP Options"))
o = s:taboption("http", Flag, "enable_proxy", translate("Enable proxy"))
o.rmempty = false
o = s:taboption("http", Value, "all_proxy", translate("All proxy"),
translate("Use a proxy server for all protocols."))
o:depends("enable_proxy", "1")
o.placeholder = "[http://][USER:PASSWORD@]HOST[:PORT]"
o = s:taboption("http", Value, "all_proxy_user", translate("Proxy user"))
o:depends("enable_proxy", "1")
o = s:taboption("http", Value, "all_proxy_passwd", translate("Proxy password"))
o:depends("enable_proxy", "1")
o.password = true
if aria2.https then
o = s:taboption("http", Flag, "check_certificate", translate("Check certificate"),
translate("Verify the peer using certificates specified in \"CA certificate\" option."))
o.enabled = "true"
o.disabled = "false"
o.default = "true"
o.rmempty = false
o = s:taboption("http", Value, "ca_certificate", translate("CA certificate"),
translate("Use the certificate authorities in FILE to verify the peers. The certificate"
.. " file must be in PEM format and can contain multiple CA certificates."))
o:depends("check_certificate", "true")
o.datatype = "file"
o = s:taboption("http", Value, "certificate", translate("Certificate"),
translate("Use the client certificate in FILE. The certificate must be either in PKCS12"
.. " (.p12, .pfx) or in PEM format.<br/>PKCS12 files must contain the certificate, a"
.. " key and optionally a chain of additional certificates. Only PKCS12 files with a"
.. " blank import password can be opened!<br/>When using PEM, you have to specify the"
.. " \"Private key\" as well."))
o.datatype = "file"
o = s:taboption("http", Value, "private_key", translate("Private key"),
translate("Use the private key in FILE. The private key must be decrypted and in PEM"
.. " format. The behavior when encrypted one is given is undefined."))
o.datatype = "file"
end
if aria2.gzip then
o = s:taboption("http", Flag, "http_accept_gzip", translate("HTTP accept gzip"),
translate("Send <code>Accept: deflate, gzip</code> request header and inflate response"
.. " if remote server responds with <code>Content-Encoding: gzip</code> or"
.. " <code>Content-Encoding: deflate</code>."))
o.enabled = "true"
o.disabled = "false"
o.default = "false"
end
o = s:taboption("http", Flag, "http_no_cache", translate("HTTP no cache"),
translate("Send <code>Cache-Control: no-cache</code> and <code>Pragma: no-cache</code>"
.. " header to avoid cached content. If disabled, these headers are not sent and you"
.. " can add Cache-Control header with a directive you like using \"Header\" option."))
o.enabled = "true"
o.disabled = "false"
o.default = "false"
o = s:taboption("http", DynamicList, "header", translate("Header"),
translate("Append HEADERs to HTTP request header."))
o = s:taboption("http", Value, "connect_timeout", translate("Connect timeout"),
translate("Set the connect timeout in seconds to establish connection to HTTP/FTP/proxy server." ..
" After the connection is established, this option makes no effect and \"Timeout\" option is used instead."))
o.datatype = "uinteger"
o.placeholder = "60"
o = s:taboption("http", Value, "timeout", translate("Timeout"))
o.datatype = "uinteger"
o.placeholder = "60"
o = s:taboption("http", Value, "lowest_speed_limit", translate("Lowest speed limit"),
"%s %s" % {
translate("Close connection if download speed is lower than or equal to this value(bytes per sec). " ..
"0 means has no lowest speed limit."),
translate("You can append K or M.")
})
o.placeholder = "0"
o = s:taboption("http", Value, "max_connection_per_server", translate("Max connection per server"),
translate("The maximum number of connections to one server for each download."))
o.datatype = "uinteger"
o.placeholder = "1"
o = s:taboption("http", Value, "split", translate("Max number of split"),
translate("Download a file using N connections."))
o.datatype = "uinteger"
o.placeholder = "5"
o = s:taboption("http", Value, "min_split_size", translate("Min split size"),
translate("Don't split less than 2*SIZE byte range. Possible values: 1M-1024M."))
o.placeholder = "20M"
o = s:taboption("http", Value, "max_tries", translate("Max tries"))
o.datatype = "uinteger"
o.placeholder = "5"
o = s:taboption("http", Value, "retry_wait", translate("Retry wait"),
translate("Set the seconds to wait between retries."))
o.datatype = "uinteger"
o.placeholder = "0"
o = s:taboption("http", Value, "user_agent", translate("User agent"),
translate("Set user agent for HTTP(S) downloads."))
o.placeholder = "aria2/%s" % { aria2.version and aria2.version or "$VERSION" }
if aria2.bt then
s:tab("bt", translate("BitTorrent Options"))
o = s:taboption("bt", Flag, "enable_dht", translate("IPv4 <abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"),
"%s %s" % {
translate("Enable IPv4 DHT functionality. It also enables UDP tracker support."),
translate("This option will be ignored if a private flag is set in a torrent.")
})
o.enabled = "true"
o.disabled = "false"
o.default = "true"
o.rmempty = false
o = s:taboption("bt", Flag, "enable_dht6", translate("IPv6 <abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"),
"%s %s" % {
translate("Enable IPv6 DHT functionality."),
translate("This option will be ignored if a private flag is set in a torrent.")
})
o.enabled = "true"
o.disabled = "false"
o = s:taboption("bt", Flag, "bt_enable_lpd", translate("<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"),
"%s %s" % {
translate("Enable Local Peer Discovery."),
translate("This option will be ignored if a private flag is set in a torrent.")
})
o.enabled = "true"
o.disabled = "false"
o.default = "false"
o = s:taboption("bt", Flag, "enable_peer_exchange", translate("Enable peer exchange"),
"%s %s" % {
translate("Enable Peer Exchange extension."),
translate("This option will be ignored if a private flag is set in a torrent.")
})
o.enabled = "true"
o.disabled = "false"
o.default = "true"
o.rmempty = false
o = s:taboption("bt", Flag, "bt_save_metadata", translate("Sava metadata"),
translate("Save meta data as \".torrent\" file. This option has effect only when BitTorrent"
.. " Magnet URI is used. The file name is hex encoded info hash with suffix \".torrent\"."))
o.enabled = "true"
o.disabled = "false"
o.default = "false"
o = s:taboption("bt", Flag, "bt_remove_unselected_file", translate("Remove unselected file"),
translate("Removes the unselected files when download is completed in BitTorrent. Please"
.. " use this option with care because it will actually remove files from your disk."))
o.enabled = "true"
o.disabled = "false"
o.default = "false"
o = s:taboption("bt", Flag, "bt_seed_unverified", translate("Seed unverified"),
translate("Seed previously downloaded files without verifying piece hashes."))
o.enabled = "true"
o.disabled = "false"
o.default = "false"
o = s:taboption("bt", Value, "listen_port", translate("BitTorrent listen port"),
translate("Set TCP port number for BitTorrent downloads. Accept format: \"6881,6885\","
.. " \"6881-6999\" and \"6881-6889,6999\". Make sure that the specified ports are open"
.. " for incoming TCP traffic."))
o.placeholder = "6881-6999"
o = s:taboption("bt", Value, "dht_listen_port", translate("DHT Listen port"),
translate("Set UDP listening port used by DHT(IPv4, IPv6) and UDP tracker. Make sure that the "
.. "specified ports are open for incoming UDP traffic."))
o:depends("enable_dht", "true")
o:depends("enable_dht6", "true")
o.placeholder = "6881-6999"
o = s:taboption("bt", ListValue, "follow_torrent", translate("Follow torrent"))
o:value("true", translate("True"))
o:value("false", translate("False"))
o:value("mem", translate("Keep in memory"))
o = s:taboption("bt", Value, "max_overall_upload_limit", translate("Max overall upload limit"),
"%s %s" % {
translate("Set max overall upload speed in bytes/sec. 0 means unrestricted."),
translate("You can append K or M.")
})
o.placeholder = "0"
o = s:taboption("bt", Value, "max_upload_limit", translate("Max upload limit"),
"%s %s" % {
translate("Set max upload speed per each torrent in bytes/sec. 0 means unrestricted."),
translate("You can append K or M.")
})
o.placeholder = "0"
o = s:taboption("bt", Value, "bt_max_open_files", translate("Max open files"),
translate("Specify maximum number of files to open in multi-file BitTorrent download globally."))
o.datatype = "uinteger"
o.placeholder = "100"
o = s:taboption("bt", Value, "bt_max_peers", translate("Max peers"),
translate("Specify the maximum number of peers per torrent, 0 means unlimited."))
o.datatype = "uinteger"
o.placeholder = "55"
o = s:taboption("bt", Value, "bt_request_peer_speed_limit", translate("Request peer speed limit"),
"%s %s" % {
translate("If the whole download speed of every torrent is lower than SPEED, aria2"
.. " temporarily increases the number of peers to try for more download speed."
.. " Configuring this option with your preferred download speed can increase your"
.. " download speed in some cases."),
translate("You can append K or M.")
})
o.placeholder = "50K"
o = s:taboption("bt", Value, "bt_stop_timeout", translate("Stop timeout"),
translate("Stop BitTorrent download if download speed is 0 in consecutive N seconds. If 0 is"
.. " given, this feature is disabled."))
o.datatype = "uinteger"
o.placeholder = "0"
o = s:taboption("bt", Value, "peer_id_prefix", translate("Prefix of peer ID"),
translate("Specify the prefix of peer ID. The peer ID in BitTorrent is 20 byte length."
.. " If more than 20 bytes are specified, only first 20 bytes are used. If less than 20"
.. " bytes are specified, random byte data are added to make its length 20 bytes."))
o.placeholder = "A2-%s-" % {
aria2.version and string.gsub(aria2.version, "%.", "-") or "$MAJOR-$MINOR-$PATCH"
}
o = s:taboption("bt", Value, "seed_ratio", translate("Seed ratio"),
translate("Specify share ratio. Seed completed torrents until share ratio reaches RATIO."
.. " You are strongly encouraged to specify equals or more than 1.0 here. Specify 0.0 if"
.. " you intend to do seeding regardless of share ratio."))
o.datatype = "ufloat"
o.placeholder = "1.0"
o = s:taboption("bt", Value, "seed_time", translate("Seed time"),
translate("Specify seeding time in minutes. If \"Seed ratio\" option is"
.. " specified along with this option, seeding ends when at least one of the conditions"
.. " is satisfied. Specifying 0 disables seeding after download completed."))
o.datatype = "ufloat"
o = s:taboption("bt", DynamicList, "bt_tracker", translate("Additional BT tracker"),
translate("List of additional BitTorrent tracker's announce URI."))
o.placeholder = "http://tracker.example.com/announce"
end
s:tab("advance", translate("Advanced Options"))
o = s:taboption("advance", Flag, "disable_ipv6", translate("IPv6 disabled"),
translate("Disable IPv6. This is useful if you have to use broken DNS and want to avoid terribly"
.. " slow AAAA record lookup."))
o.enabled = "true"
o.disabled = "false"
o.default = "false"
o = s:taboption("advance", Value, "auto_save_interval", translate("Auto save interval"),
translate("Save a control file(*.aria2) every N seconds. If 0 is given, a control file is not"
.. " saved during download."))
o.datatype = "range(0, 600)"
o.placeholder = "60"
o = s:taboption("advance", Value, "save_session_interval", translate("Save session interval"),
translate("Save error/unfinished downloads to session file every N seconds. If 0 is given, file"
.. " will be saved only when aria2 exits."))
o.datatype = "uinteger"
o.placeholder = "0"
o = s:taboption("advance", Value, "disk_cache", translate("Disk cache"),
"%s %s" % {
translate("Enable disk cache (in bytes), set 0 to disabled."),
translate("You can append K or M.")
})
o.placeholder = "16M"
o = s:taboption("advance", ListValue, "file_allocation", translate("File allocation"),
translate("Specify file allocation method. If you are using newer file systems such as ext4"
.. " (with extents support), btrfs, xfs or NTFS(MinGW build only), \"falloc\" is your best choice."
.. " It allocates large(few GiB) files almost instantly, but it may not be available if your system"
.. " doesn't have posix_fallocate(3) function. Don't use \"falloc\" with legacy file systems such as"
.. " ext3 and FAT32 because it takes almost same time as \"prealloc\" and it blocks aria2 entirely"
.. " until allocation finishes."))
o:value("none", translate("None"))
o:value("prealloc", translate("prealloc"))
o:value("trunc", translate("trunc"))
o:value("falloc", translate("falloc"))
o.default = "prealloc"
o = s:taboption("advance", Flag, "force_save", translate("Force save"),
translate("Save download to session file even if the download is completed or removed."
.. " This option also saves control file in that situations. This may be useful to save"
.. " BitTorrent seeding which is recognized as completed state."))
o.enabled = "true"
o.disabled = "false"
o.default = "false"
o = s:taboption("advance", Value, "max_overall_download_limit", translate("Max overall download limit"),
"%s %s" % {
translate("Set max overall download speed in bytes/sec. 0 means unrestricted."),
translate("You can append K or M.")
})
o.placeholder = "0"
o = s:taboption("advance", Value, "max_download_limit", translate("Max download limit"),
"%s %s" % {
translate("Set max download speed per each download in bytes/sec. 0 means unrestricted."),
translate("You can append K or M.")
})
o.placeholder = "0"
s = m:section(NamedSection, "main", "aria2", translate("Extra Settings"),
translate("Settings in this section will be added to config file."))
s.addremove = false
s.anonymous = true
o = s:option(DynamicList, "extra_setting", translate("Settings list"),
translate("List of extra settings. Format: option=value, eg. <code>netrc-path=/tmp/.netrc</code>."))
o.placeholder = "option=value"
return m

View file

@ -0,0 +1,39 @@
-- Copyright 2017-2019 Xingwang Liao <kuoruan@gmail.com>
-- Licensed to the public under the MIT License.
local m, s, o
local fs = require "nixio.fs"
local util = require "luci.util"
local uci = require "luci.model.uci".cursor()
local config_dir = uci:get("aria2", "main", "config_dir") or "/var/etc/aria2"
local config_file = "%s/aria2.conf.main" % config_dir
local session_file = "%s/aria2.session.main" % config_dir
m = SimpleForm("aria2", "%s - %s" % { translate("Aria2"), translate("Files") },
translate("Here shows the files used by aria2."))
m.reset = false
m.submit = false
s = m:section(SimpleSection, nil, translatef("Content of config file: <code>%s</code>", config_file))
o = s:option(TextValue, "_config")
o.rows = 20
o.readonly = true
o.cfgvalue = function()
local v = fs.readfile(config_file) or translate("File does not exist.")
return util.trim(v) ~= "" and v or translate("Empty file.")
end
s = m:section(SimpleSection, nil, translatef("Content of session file: <code>%s</code>", session_file))
o = s:option(TextValue, "_session")
o.rows = 20
o.readonly = true
o.cfgvalue = function()
local v = fs.readfile(session_file) or translate("File does not exist.")
return util.trim(v) ~= "" and v or translate("Empty file.")
end
return m

View file

@ -0,0 +1,55 @@
<%#
Copyright 2017-2019 Xingwang Liao <kuoruan@gmail.com>
Licensed to the public under the MIT License.
-%>
<% css = [[
#log_text {
padding: 10px;
text-align: left;
}
#log_text pre {
word-break: break-all;
margin: 0;
}
.description {
background-color: #33ccff;
}
]]
-%>
<%+header%>
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
<script type="text/javascript">//<![CDATA[
XHR.poll(10, '<%=url("admin/services/aria2/log/read")%>', null,
function(x, data) {
var logElm = document.getElementById('log_text');
if (logElm) {
logElm.innerHTML = data
? String.format(
'<pre>%s%s%s%s</pre>',
'<span class="description"><%:Last 50 lines of log file:%></span><br/><br/>',
data.log || '<%:No log data.%>',
'<br/><br/><span class="description"><%:Last 50 lines of syslog:%></span><br/><br/>',
data.syslog || '<%:No log data.%>'
)
: '<strong><%:Failed to load log data.%></strong>';
}
}
);
//]]></script>
<div class="cbi-map">
<h2 name="content"><%:Aria2%> - <%:Log Data%></h2>
<fieldset class="cbi-section">
<div id="log_text">
<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
<%:Collecting data...%>
</div>
<div style="text-align:right"><small><%:Refresh every 10 seconds.%></small></div>
</fieldset>
</div>
<%+footer%>

View file

@ -1,84 +0,0 @@
<script type="text/javascript">//<![CDATA[
XHR.poll(-1, '<%=luci.dispatcher.build_url("admin/services/aria2/status")%>', null,
function(x, data) {
var tb = document.getElementById('aria2_status');
if (data && tb) {
if (data.running) {
var links = '<em><%:The Aria2 service is running.%></em>';
if (data.yaaw) {
links += '<input class="cbi-button mar-10" type="button" value="<%:Open YAAW%>" onclick="openWebUI(\'yaaw\');" />';
}
if (data.webui) {
links += '<input class="cbi-button mar-10" type="button" value="<%:Open WebUI-Aria2%>" onclick="openWebUI(\'webui-aria2\');" />';
}
if (data.ariang) {
links += '<input class="cbi-button mar-10" type="button" value="<%:Open AriaNg%>" onclick="openWebUI(\'ariang\');" />';
}
tb.innerHTML = links;
} else {
tb.innerHTML = '<em><%:The Aria2 service is not running.%></em>';
}
}
}
);
function randomString(len) {
len = len || 32;
var $chars = 'abcdefghijklmnopqrstuvwxyz1234567890';
var maxPos = $chars.length;
var pwd = '';
for (var i = 0; i < len; i++) {
pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
}
return pwd;
};
function randomSecret() {
var Token = document.getElementById("cbid.aria2.main.rpc_secret");
Token.value = randomString(32);
};
function showRPCURL() {
var websocket = document.getElementById("use_websocket");
var protocol = (websocket.checked) ? "ws" : "http";
var newTextNode = document.getElementById("aria2rpcpath");
var auth_method = document.getElementById("cbid.aria2.main.rpc_auth_method");
var auth_port = document.getElementById("cbid.aria2.main.rpc_listen_port");
var auth_port_value;
if (window.location.protocol == "https:") {
protocol += "s";
}
if (auth_port.value == "") {
auth_port_value = "6800";
} else {
auth_port_value = auth_port.value;
}
if (auth_method.value == "token") {
var auth_token = document.getElementById("cbid.aria2.main.rpc_secret");
newTextNode.value = protocol + "://token:" + auth_token.value + "@" + document.domain + ":" + auth_port_value + "/jsonrpc";
} else if (auth_method.value == "user_pass") {
var auth_user = document.getElementById("cbid.aria2.main.rpc_user");
var auth_passwd = document.getElementById("cbid.aria2.main.rpc_passwd");
newTextNode.value = protocol + "://" + auth_user.value + ":" + auth_passwd.value + "@" + document.domain + ":" + auth_port_value + "/jsonrpc";
} else {
newTextNode.value = protocol + "://" + document.domain + ":" + auth_port_value + "/jsonrpc";
}
};
function openWebUI(path) {
var curWwwPath = window.document.location.href;
var pathName = window.document.location.pathname;
var pos = curWwwPath.indexOf(pathName);
var localhostPath = curWwwPath.substring(0, pos);
var url = localhostPath + "/" + path;
window.open(url);
};
//]]>
</script>
<style>.mar-10 {margin-left: 10px; margin-right: 10px;}</style>
<fieldset class="cbi-section">
<legend><%:Aria2 Status%></legend>
<p id="aria2_status">
<em><%:Collecting data...%></em>
</p>
</fieldset>

View file

@ -0,0 +1,116 @@
<%#
Copyright 2017-2019 Xingwang Liao <kuoruan@gmail.com>
Licensed to the public under the MIT License.
-%>
<%
local ipkg = require "luci.model.ipkg"
local has_ui = false
local uilist = {
supported = {
["ariang"] = "AriaNg",
["webui-aria2"] = "WebUI-Aria2",
["yaaw"] = "YAAW"
},
installed = {}
}
for k in pairs(uilist.supported) do
if ipkg.installed(k) then
uilist.installed[#uilist.installed + 1] = k
has_ui = true
end
end
%>
<fieldset class="cbi-section">
<p id="aria2_status">
<em><%:Collecting data...%></em>
</p>
<% if has_ui then %>
<p>
<%:Installed web interface: %>
<%- for _, v in pairs(uilist.installed) do %>
<input type="button" class="cbi-button" style="margin: 0 5px;" value="<%=uilist.supported[v]%>" onclick="openWebInterface('<%=v%>');" />
<%- end %>
<p>
<% end %>
</fieldset>
<script type="text/javascript">//<![CDATA[
XHR.poll(5, '<%=url("admin/services/aria2/status")%>', null,
function(x, data) {
var tb = document.getElementById('aria2_status');
if (data && tb) {
tb.innerHTML = data.running
? '<%:The Aria2 service is running.%>'
: '<%:The Aria2 service is not running.%>';
}
}
);
function randomString(len) {
var randomStr = '';
var restLen = len;
while ((restLen = len - randomStr.length) > 0) {
randomStr += Math.random().toString(36).substring(2, 2 + restLen);
}
return randomStr;
}
function randomToken() {
var len = 32;
var inputLength = prompt('<%:Please input token length:%>', len);
if (inputLength === null || inputLength === '') {
return;
} else if (/^\d+$/.test(inputLength)) {
len = parseInt(inputLength);
}
var secretInput = document.getElementById('cbid.aria2.main.rpc_secret');
if (secretInput) {
secretInput.value = randomString(len);
}
};
function showRPCURL() {
var portElm = document.getElementById('cbid.aria2.main.rpc_listen_port');
var authMethodElm = document.getElementById('cbid.aria2.main.rpc_auth_method');
var useWSElm = document.getElementById('cbid.aria2.main._use_ws');
var secureElm = document.getElementById('cbid.aria2.main.rpc_secure');
var port = (portElm && /^\d+$/.test(portElm.value)) ? parseInt(portElm.value) : 6800;
var authMethod = (authMethodElm && authMethodElm.value) ? authMethodElm.value : "none";
var useWS = (useWSElm && useWSElm.checked) ? true : false;
var secure = (secureElm && secureElm.checked) ? true : false;
var protocol = useWS
? (secure ? 'wss' : 'ws')
: (secure ? 'https' : 'http');
var url = protocol + "://";
if (authMethod == 'token') {
var authToken = document.getElementById('cbid.aria2.main.rpc_secret').value;
url += 'token:' + authToken + '@';
} else if (authMethod == 'user_pass') {
var authUser = document.getElementById('cbid.aria2.main.rpc_user').value;
var authPasswd = document.getElementById('cbid.aria2.main.rpc_passwd').value;
url += authUser + ':' + authPasswd + '@';
}
url += window.location.hostname + ':' + port + '/jsonrpc';
var rpcUrlElm = document.getElementById('cbid.aria2.main._rpc_url');
if (rpcUrlElm) {
rpcUrlElm.value = url;
} else {
alert(url)
}
};
function openWebInterface(path) {
var host = window.location.host;
var protocol = window.location.protocol;
window.open(protocol + '//' + host + '/' + path);
};
//]]></script>

View file

@ -0,0 +1,22 @@
<%#
Copyright 2017-2019 Xingwang Liao <kuoruan@gmail.com>
Licensed to the public under the MIT License.
-%>
<%+cbi/valueheader%>
<input data-update="change" type="text" class="cbi-input-text"<%=
attr("id", cbid) ..
attr("name", cbid) ..
attr("value", self:cfgvalue(section) or self.default) ..
ifattr(self.size, "size") ..
ifattr(self.placeholder, "placeholder") ..
ifattr(self.maxlength, "maxlength") ..
ifattr(self.datatype, "data-type", self.datatype) ..
ifattr(self.onmouseover, "onmouseover")
%> />
<%- if self.btntext then -%>
<div class="cbi-button cbi-button-neutral" title="<%=self.btntext%>" aria-label="<%=self.btntext%>"<%=
ifattr(self.btnclick, "onclick", self.btnclick)
%>><span style="font-weight: normal;"><%=self.btntext%></span></div>
<% end %>
<%+cbi/valuefooter%>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,284 +1,789 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:110
msgid "\"Falloc\" is not available in all cases."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:153
msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:157
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:296
msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:171
msgid "Additional Bt tracker enabled"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:414
msgid "Additional BT tracker"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:45
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:419
msgid "Advanced Options"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:169
msgid "All proxy"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:228
msgid "Append HEADERs to HTTP request header."
msgstr ""
#: applications/luci-app-aria2/luasrc/controller/aria2.lua:18
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:35
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/files.lua:14
#: applications/luci-app-aria2/luasrc/view/aria2/log_template.htm:45
msgid "Aria2"
msgstr ""
#: applications/luci-app-aria2/luasrc/controller/aria2.lua:21
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:49
msgid "Aria2 Settings"
msgstr ""
#: applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm:80
msgid "Aria2 Status"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:45
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:37
msgid ""
"Aria2 is a multi-protocol &amp; multi-source download utility, here you can "
"configure the settings."
"Aria2 is a lightweight multi-protocol &amp; multi-source, cross platform "
"download utility."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:147
msgid "Autosave session interval"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:428
msgid "Auto save interval"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:56
msgid "BitTorrent Settings"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:56
msgid "Basic Options"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:165
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:276
msgid "BitTorrent Options"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:335
msgid "BitTorrent listen port"
msgstr ""
#: applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm:82
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:189
msgid "CA certificate"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:195
msgid "Certificate"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:182
msgid "Check certificate"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:242
msgid ""
"Close connection if download speed is lower than or equal to this "
"value(bytes per sec). 0 means has no lowest speed limit."
msgstr ""
#: applications/luci-app-aria2/luasrc/view/aria2/log_template.htm:49
#: applications/luci-app-aria2/luasrc/view/aria2/settings_header.htm:29
msgid "Collecting data..."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:89
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:73
msgid "Config file directory"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:98
#: applications/luci-app-aria2/luasrc/controller/aria2.lua:21
msgid "Configuration"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:230
msgid "Connect timeout"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/files.lua:19
msgid "Content of config file: <code>%s</code>"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/files.lua:29
msgid "Content of session file: <code>%s</code>"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:341
msgid "DHT Listen port"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:87
msgid "Debug"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:104
msgid "Default download directory"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:422
msgid ""
"Disable IPv6. This is useful if you have to use broken DNS and want to avoid "
"terribly slow AAAA record lookup."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:107
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:440
msgid "Disk cache"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:92
msgid "Enable log"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:259
msgid "Don't split less than 2*SIZE byte range. Possible values: 1M-1024M."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:58
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:254
msgid "Download a file using N connections."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:69
msgid "Download directory"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/files.lua:26
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/files.lua:36
msgid "Empty file."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:280
msgid "Enable IPv4 DHT functionality. It also enables UDP tracker support."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:290
msgid "Enable IPv6 DHT functionality."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:298
msgid "Enable Local Peer Discovery."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:307
msgid "Enable Peer Exchange extension."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:442
msgid "Enable disk cache (in bytes), set 0 to disabled."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:77
msgid "Enable logging"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:305
msgid "Enable peer exchange"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:166
msgid "Enable proxy"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:58
msgid "Enabled"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:102
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:91
msgid "Error"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:201
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:44
msgid "Error: Can't find aria2c in PATH, please reinstall aria2."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:482
msgid "Extra Settings"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:114
msgid "Falloc"
#: applications/luci-app-aria2/luasrc/view/aria2/log_template.htm:39
msgid "Failed to load log data."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:54
msgid "Files and Locations"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:350
msgid "False"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:161
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:447
msgid "File allocation"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/files.lua:25
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/files.lua:35
msgid "File does not exist."
msgstr ""
#: applications/luci-app-aria2/luasrc/controller/aria2.lua:24
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/files.lua:14
msgid "Files"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:348
msgid "Follow torrent"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:53
msgid "General Settings"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:38
msgid "For more information, please visit: %s"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:19
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:460
msgid "Force save"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:129
msgid "Generate Randomly"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:99
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:210
msgid "HTTP accept gzip"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:219
msgid "HTTP no cache"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:164
msgid "HTTP/FTP/SFTP Options"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:227
msgid "Header"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/files.lua:15
msgid "Here shows the files used by aria2."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:278
msgid "IPv4 <abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:288
msgid "IPv6 <abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:421
msgid "IPv6 disabled"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:379
msgid ""
"If the whole download speed of every torrent is lower than SPEED, aria2 "
"temporarily increases the number of peers to try for more download speed. "
"Configuring this option with your preferred download speed can increase your "
"download speed in some cases."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:88
msgid "Info"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:172
msgid "List of additional Bt tracker"
#: applications/luci-app-aria2/luasrc/view/aria2/settings_header.htm:33
msgid "Installed web interface:"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:205
msgid "List of extra settings"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:158
msgid "Json-RPC URL"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:96
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:351
msgid "Keep in memory"
msgstr ""
#: applications/luci-app-aria2/luasrc/view/aria2/log_template.htm:34
msgid "Last 50 lines of log file:"
msgstr ""
#: applications/luci-app-aria2/luasrc/view/aria2/log_template.htm:36
msgid "Last 50 lines of syslog:"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:62
msgid "Leave blank to use default user."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:415
msgid "List of additional BitTorrent tracker's announce URI."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:488
msgid ""
"List of extra settings. Format: option=value, eg. <code>netrc-path=/tmp/."
"netrc</code>."
msgstr ""
#: applications/luci-app-aria2/luasrc/view/aria2/log_template.htm:48
msgid "Loading"
msgstr ""
#: applications/luci-app-aria2/luasrc/controller/aria2.lua:27
msgid "Log"
msgstr ""
#: applications/luci-app-aria2/luasrc/view/aria2/log_template.htm:45
msgid "Log Data"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:80
msgid "Log file"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:85
msgid "Log level"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:134
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:240
msgid "Lowest speed limit"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:94
msgid "Max concurrent downloads"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:137
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:248
msgid "Max connection per server"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:168
msgid "Max number of peers per torrent"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:475
msgid "Max download limit"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:144
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:253
msgid "Max number of split"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:141
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:367
msgid "Max open files"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:468
msgid "Max overall download limit"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:353
msgid "Max overall upload limit"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:372
msgid "Max peers"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:262
msgid "Max tries"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:360
msgid "Max upload limit"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:258
msgid "Min split size"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:72
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:115
msgid "No Authentication"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:100
#: applications/luci-app-aria2/luasrc/view/aria2/log_template.htm:35
#: applications/luci-app-aria2/luasrc/view/aria2/log_template.htm:37
msgid "No log data."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:454
msgid "None"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:89
msgid "Notice"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:111
msgid "Off"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:99
msgid "Pause"
msgstr ""
#: applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm:15
msgid "Open AriaNg"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:99
msgid "Pause download after added."
msgstr ""
#: applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm:12
msgid "Open WebUI-Aria2"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:105
msgid "Pause downloads created as a result of metadata download."
msgstr ""
#: applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm:9
msgid "Open YAAW"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:104
msgid "Pause metadata"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:119
msgid "Overall download limit"
#: applications/luci-app-aria2/luasrc/view/aria2/settings_header.htm:64
msgid "Please input token length:"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:116
msgid "Overall speed limit enabled"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:122
msgid "Overall upload limit"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:128
msgid "Per task download limit"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:125
msgid "Per task speed limit enabled"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:131
msgid "Per task upload limit"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:112
msgid "Prealloc"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:110
msgid "Preallocation"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:198
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:393
msgid "Prefix of peer ID"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:85
msgid "RPC Token"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:203
msgid "Private key"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:71
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:177
msgid "Proxy password"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:174
msgid "Proxy user"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:97
msgid "RPC Options"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:114
msgid "RPC authentication method"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:80
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:140
msgid "RPC certificate"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:122
msgid "RPC password"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:67
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:110
msgid "RPC port"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:76
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:149
msgid "RPC private key"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:133
msgid "RPC secure"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:126
msgid "RPC token"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:134
msgid ""
"RPC transport will be encrypted by SSL/TLS. The RPC clients must use https "
"scheme to access the server. For WebSocket client, use wss scheme."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:119
msgid "RPC username"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:61
#: applications/luci-app-aria2/luasrc/view/aria2/log_template.htm:51
msgid "Refresh every 10 seconds."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:322
msgid "Remove unselected file"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:323
msgid ""
"Removes the unselected files when download is completed in BitTorrent. "
"Please use this option with care because it will actually remove files from "
"your disk."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:377
msgid "Request peer speed limit"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:266
msgid "Retry wait"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:61
msgid "Run daemon as user"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:147
msgid "Sec"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:315
msgid "Sava metadata"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:55
msgid "Task Settings"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:429
msgid ""
"Save a control file(*.aria2) every N seconds. If 0 is given, a control file "
"is not saved during download."
msgstr ""
#: applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm:19
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:461
msgid ""
"Save download to session file even if the download is completed or removed. "
"This option also saves control file in that situations. This may be useful "
"to save BitTorrent seeding which is recognized as completed state."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:435
msgid ""
"Save error/unfinished downloads to session file every N seconds. If 0 is "
"given, file will be saved only when aria2 exits."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:316
msgid ""
"Save meta data as \".torrent\" file. This option has effect only when "
"BitTorrent Magnet URI is used. The file name is hex encoded info hash with "
"suffix \".torrent\"."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:434
msgid "Save session interval"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:330
msgid "Seed previously downloaded files without verifying piece hashes."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:401
msgid "Seed ratio"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:408
msgid "Seed time"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:329
msgid "Seed unverified"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:211
msgid ""
"Send <code>Accept: deflate, gzip</code> request header and inflate response "
"if remote server responds with <code>Content-Encoding: gzip</code> or "
"<code>Content-Encoding: deflate</code>."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:220
msgid ""
"Send <code>Cache-Control: no-cache</code> and <code>Pragma: no-cache</code> "
"header to avoid cached content. If disabled, these headers are not sent and "
"you can add Cache-Control header with a directive you like using \"Header\" "
"option."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:336
msgid ""
"Set TCP port number for BitTorrent downloads. Accept format: \"6881,6885\", "
"\"6881-6999\" and \"6881-6889,6999\". Make sure that the specified ports are "
"open for incoming TCP traffic."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:342
msgid ""
"Set UDP listening port used by DHT(IPv4, IPv6) and UDP tracker. Make sure "
"that the specified ports are open for incoming UDP traffic."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:477
msgid ""
"Set max download speed per each download in bytes/sec. 0 means unrestricted."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:470
msgid "Set max overall download speed in bytes/sec. 0 means unrestricted."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:355
msgid "Set max overall upload speed in bytes/sec. 0 means unrestricted."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:362
msgid ""
"Set max upload speed per each torrent in bytes/sec. 0 means unrestricted."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:231
msgid ""
"Set the connect timeout in seconds to establish connection to HTTP/FTP/proxy "
"server. After the connection is established, this option makes no effect and "
"\"Timeout\" option is used instead."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:267
msgid "Set the seconds to wait between retries."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:272
msgid "Set user agent for HTTP(S) downloads."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:35
msgid "Settings"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:483
msgid "Settings in this section will be added to config file."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:487
msgid "Settings list"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:161
msgid "Show URL"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:448
msgid ""
"Specify file allocation method. If you are using newer file systems such as "
"ext4 (with extents support), btrfs, xfs or NTFS(MinGW build only), \"falloc"
"\" is your best choice. It allocates large(few GiB) files almost instantly, "
"but it may not be available if your system doesn't have posix_fallocate(3) "
"function. Don't use \"falloc\" with legacy file systems such as ext3 and "
"FAT32 because it takes almost same time as \"prealloc\" and it blocks aria2 "
"entirely until allocation finishes."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:368
msgid ""
"Specify maximum number of files to open in multi-file BitTorrent download "
"globally."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:409
msgid ""
"Specify seeding time in minutes. If \"Seed ratio\" option is specified along "
"with this option, seeding ends when at least one of the conditions is "
"satisfied. Specifying 0 disables seeding after download completed."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:402
msgid ""
"Specify share ratio. Seed completed torrents until share ratio reaches "
"RATIO. You are strongly encouraged to specify equals or more than 1.0 here. "
"Specify 0.0 if you intend to do seeding regardless of share ratio."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:373
msgid "Specify the maximum number of peers per torrent, 0 means unlimited."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:394
msgid ""
"Specify the prefix of peer ID. The peer ID in BitTorrent is 20 byte length. "
"If more than 20 bytes are specified, only first 20 bytes are used. If less "
"than 20 bytes are specified, random byte data are added to make its length "
"20 bytes."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:388
msgid ""
"Stop BitTorrent download if download speed is 0 in consecutive N seconds. If "
"0 is given, this feature is disabled."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:387
msgid "Stop timeout"
msgstr ""
#: applications/luci-app-aria2/luasrc/view/aria2/settings_header.htm:48
msgid "The Aria2 service is not running."
msgstr ""
#: applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm:7
#: applications/luci-app-aria2/luasrc/view/aria2/settings_header.htm:47
msgid "The Aria2 service is running."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:92
msgid "The default log file is /var/log/aria2.log"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:74
msgid "The directory to store the config file, session file and DHT file."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:74
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:70
msgid "The directory to store the downloaded file. eg. <code>/mnt/sda1</code>"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:81
msgid "The file name of the log file."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:249
msgid "The maximum number of connections to one server for each download."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:281
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:291
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:299
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:308
msgid "This option will be ignored if a private flag is set in a torrent."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:236
msgid "Timeout"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:117
msgid "Token"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:113
msgid "Trunc"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:349
msgid "True"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:22
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:156
msgid "Use WebSocket"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:150
msgid "User agent value"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:170
msgid "Use a proxy server for all protocols."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:73
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:190
msgid ""
"Use the certificate authorities in FILE to verify the peers. The certificate "
"file must be in PEM format and can contain multiple CA certificates."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:141
msgid ""
"Use the certificate in FILE for RPC server. The certificate must be either "
"in PKCS12 (.p12, .pfx) or in PEM format.<br/>PKCS12 files must contain the "
"certificate, a key and optionally a chain of additional certificates. Only "
"PKCS12 files with a blank import password can be opened!<br/>When using PEM, "
"you have to specify the \"RPC private key\" as well."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:196
msgid ""
"Use the client certificate in FILE. The certificate must be either in PKCS12 "
"(.p12, .pfx) or in PEM format.<br/>PKCS12 files must contain the "
"certificate, a key and optionally a chain of additional certificates. Only "
"PKCS12 files with a blank import password can be opened!<br/>When using PEM, "
"you have to specify the \"Private key\" as well."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:150
msgid ""
"Use the private key in FILE for RPC server. The private key must be "
"decrypted and in PEM format."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:204
msgid ""
"Use the private key in FILE. The private key must be decrypted and in PEM "
"format. The behavior when encrypted one is given is undefined."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:271
msgid "User agent"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:116
msgid "Username & Password"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:20
msgid "View Json-RPC URL"
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:183
msgid ""
"Verify the peer using certificates specified in \"CA certificate\" option."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:101
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:90
msgid "Warn"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:107
msgid "in bytes, You can append K or M."
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:244
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:356
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:363
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:383
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:443
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:471
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:478
msgid "You can append K or M."
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:119
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:122
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:128
#: applications/luci-app-aria2/luasrc/model/cbi/aria2.lua:131
msgid "in bytes/sec, You can append K or M."
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:457
msgid "falloc"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:455
msgid "prealloc"
msgstr ""
#: applications/luci-app-aria2/luasrc/model/cbi/aria2/config.lua:456
msgid "trunc"
msgstr ""

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -7,5 +7,19 @@ uci -q batch <<-EOF >/dev/null
commit ucitrack
EOF
if [ ."$(uci -q get aria2.main)" != ."aria2" ]; then
uci -q batch <<-EOF >/dev/null
add aria2 aria2
rename aria2.@aria2[-1]="main"
set aria2.main.enabled=0
set aria2.main.dir="/var/run/aria2"
set aria2.main.config_dir="/var/etc/aria2"
add_list aria2.main.header=""
add_list aria2.main.bt_tracker=""
add_list aria2.main.extra_setting=""
commit aria2
EOF
fi
rm -f /tmp/luci-indexcache
exit 0