From f0182383cef0439493eb4460033d2141a6d78096 Mon Sep 17 00:00:00 2001
From: Beginner <70857188+Beginner-Go@users.noreply.github.com>
Date: Sun, 7 Nov 2021 18:51:06 +0800
Subject: [PATCH] luci-app-qbittorrent: tidy up code (#8194)
---
package/lean/luci-app-qbittorrent/Makefile | 13 +-
.../luasrc/controller/qbittorrent.lua | 14 +-
.../luasrc/model/cbi/qbittorrent.lua | 371 ------------------
.../luasrc/model/cbi/qbittorrent/advanced.lua | 96 +++++
.../luasrc/model/cbi/qbittorrent/basic.lua | 39 ++
.../model/cbi/qbittorrent/bittorrent.lua | 112 ++++++
.../model/cbi/qbittorrent/connection.lua | 41 ++
.../model/cbi/qbittorrent/downloads.lua | 87 ++++
.../luasrc/model/cbi/qbittorrent/webgui.lua | 56 +++
.../view/qbittorrent/qbittorrent_status.htm | 9 +-
.../po/zh-cn/qbittorrent.po | 118 +++---
.../root/etc/config/qbittorrent | 1 -
.../root/etc/uci-defaults/luci-qbittorrent | 0
13 files changed, 509 insertions(+), 448 deletions(-)
delete mode 100644 package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent.lua
create mode 100644 package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/advanced.lua
create mode 100644 package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/basic.lua
create mode 100644 package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/bittorrent.lua
create mode 100644 package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/connection.lua
create mode 100644 package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/downloads.lua
create mode 100644 package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/webgui.lua
mode change 100644 => 100755 package/lean/luci-app-qbittorrent/root/etc/uci-defaults/luci-qbittorrent
diff --git a/package/lean/luci-app-qbittorrent/Makefile b/package/lean/luci-app-qbittorrent/Makefile
index 62d41a27f..11b35741d 100644
--- a/package/lean/luci-app-qbittorrent/Makefile
+++ b/package/lean/luci-app-qbittorrent/Makefile
@@ -5,12 +5,15 @@
include $(TOPDIR)/rules.mk
-
PKG_NAME:=luci-app-qbittorrent
PKG_VERSION=1.0
-PKG_RELEASE:=22
+PKG_RELEASE:=23
-include $(INCLUDE_DIR)/package.mk
+LUCI_TITLE:=LuCI support for qBittorrent
+LUCI_PKGARCH:=all
+LUCI_DEPENDS:= \
+ +PACKAGE_luci-app-qbittorrent_static:qBittorrent-static \
+ +PACKAGE_luci-app-qbittorrent_dynamic:qbittorrent
define Package/$(PKG_NAME)/config
choice
@@ -28,10 +31,6 @@ define Package/$(PKG_NAME)/config
endchoice
endef
-LUCI_TITLE:=LuCI support for qBittorrent
-LUCI_DEPENDS:=+PACKAGE_luci-app-qbittorrent_static:qBittorrent-static +PACKAGE_luci-app-qbittorrent_dynamic:qbittorrent
-LUCI_PKGARCH:=all
-
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/lean/luci-app-qbittorrent/luasrc/controller/qbittorrent.lua b/package/lean/luci-app-qbittorrent/luasrc/controller/qbittorrent.lua
index eab196270..f6c303db1 100644
--- a/package/lean/luci-app-qbittorrent/luasrc/controller/qbittorrent.lua
+++ b/package/lean/luci-app-qbittorrent/luasrc/controller/qbittorrent.lua
@@ -5,13 +5,19 @@ function index()
return
end
- entry({"admin", "nas", "qBittorrent"}, cbi("qbittorrent"), _("qBittorrent"))
+ entry({"admin", "nas", "qBittorrent"}, alias("admin", "nas", "qBittorrent", "basic"), _("qBittorrent"), 30).dependent = true
+ entry({"admin", "nas", "qBittorrent", "basic"}, cbi("qbittorrent/basic"), _("Basic Settings"), 1).leaf = true
+ entry({"admin", "nas", "qBittorrent", "connection"}, cbi("qbittorrent/connection"), _("Connection Settings"), 2).leaf = true
+ entry({"admin", "nas", "qBittorrent", "downloads"}, cbi("qbittorrent/downloads"), _("Download Settings"), 3).leaf = true
+ entry({"admin", "nas", "qBittorrent", "bittorrent"}, cbi("qbittorrent/bittorrent"), _("Bittorrent Settings"), 4).leaf = true
+ entry({"admin", "nas", "qBittorrent", "webgui"}, cbi("qbittorrent/webgui"), _("WebUI Settings"), 5).leaf = true
+ entry({"admin", "nas", "qBittorrent", "advanced"}, cbi("qbittorrent/advanced"), _("Advance Settings"), 6).leaf = true
entry({"admin", "nas", "qBittorrent", "status"}, call("act_status")).leaf = true
end
function act_status()
- local e={}
- e.running=luci.sys.call("pgrep qbittorrent-nox >/dev/null")==0
+ local e = {}
+ e.running = luci.sys.call("pgrep qbittorrent-nox >/dev/null") == 0
luci.http.prepare_content("application/json")
luci.http.write_json(e)
-end
\ No newline at end of file
+end
diff --git a/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent.lua b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent.lua
deleted file mode 100644
index aba6a9297..000000000
--- a/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent.lua
+++ /dev/null
@@ -1,371 +0,0 @@
-
-local o=luci.sys.exec("uci get qbittorrent.main.Port | xargs echo -n") or 8080
-
-local a=(luci.sys.call("pidof qbittorrent-nox > /dev/null")==0)
-
-local t=""
-if a then
-t="
"
-end
-
-function titlesplit(Value)
- return "
" .. translate(Value) .. "
" -end - -m = Map("qbittorrent", translate("qBittorrent"), translate("qBittorrent is a cross-platform free and open-source BitTorrent client")..t) - -s = m:section(NamedSection, "main", "qbittorrent") - -s:tab("basic", translate("Basic Settings")) - -o = s:taboption("basic", Flag, "enabled", translate("Enabled")) -o.default = "1" - -o = s:taboption("basic", ListValue, "user", translate("Run daemon as user")) -local u -for u in luci.util.execi("cat /etc/passwd | cut -d ':' -f1") do - o:value(u) -end - -o = s:taboption("basic", Value, "profile", translate("Store configuration files in the Path")) -o.default = '/tmp' - -o = s:taboption("basic", Value, "SavePath", translate("Store download files in the Path")) -o.placeholder = "/tmp/download" - -o = s:taboption("basic", Value, "Port", translate("WEBUI listening port")) -o.datatype = "port" -o.placeholder = "8080" - -o = s:taboption("basic", Flag, "UseRandomPort", translate("Use Random Port"), translate("Randomly assigns a different port every time qBittorrent starts up")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("basic", Value, "PortRangeMin", translate("Connection Port"), translate("Incoming connection port")) -o:depends("UseRandomPort", false) -o.datatype = "range(1024,65535)" - - -s:tab("connection", translate("Connection Settings")) - -o = s:taboption("connection", Flag, "UPnP", translate("Use UPnP for Connections"), translate("Use UPnP/ NAT-PMP port forwarding from my router. Refer to the " - .. "wiki.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - - -o = s:taboption("connection", Value, "GlobalDLLimit", translate("Global Download Speed"), translate("Global Download Speed Limit(KiB/s).")) -o.datatype = "float" -o.placeholder = "0" - -o = s:taboption("connection", Value, "GlobalUPLimit", translate("Global Upload Speed"), translate("Global Upload Speed Limit(KiB/s).")) -o.datatype = "float" -o.placeholder = "0" - -o = s:taboption("connection", Value, "GlobalDLLimitAlt", translate("Alternative Download Speed"), translate("Alternative Download Speed Limit(KiB/s).")) -o.datatype = "float" -o.placeholder = "10" - -o = s:taboption("connection", Value, "GlobalUPLimitAlt", translate("Alternative Upload Speed"), translate("Alternative Upload Speed Limit(KiB/s).")) -o.datatype = "float" -o.placeholder = "10" - -o = s:taboption("connection", ListValue, "BTProtocol", translate("Enabled protocol"), translate("The protocol that was enabled.")) -o:value("Both", translate("TCP and UTP")) -o:value("TCP", translate("TCP")) -o:value("UTP", translate("UTP")) -o.default = "Both" - -o = s:taboption("connection", Value, "InetAddress", translate("Inet Address"), translate("The address that respond to the trackers.")) - -s:tab("downloads", translate("Download Settings")) - -o = s:taboption("downloads", Flag, "CreateTorrentSubfolder", translate("Create Subfolder"), translate("Create subfolder for torrents with multiple files.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("downloads", Flag, "StartInPause", translate("Start In Pause"), translate("Do not start the download automatically.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.disabled - -o = s:taboption("downloads", Flag, "AutoDeleteAddedTorrentFile", translate("Auto Delete Torrent File"), translate("The .torrent files will be deleted afterwards.")) -o.enabled = "IfAdded" -o.disabled = "Never" -o.default = o.disabled - -o = s:taboption("downloads", Flag, "PreAllocation", translate("Pre Allocation"), translate("Pre-allocate disk space for all files.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.disabled - -o = s:taboption("downloads", Flag, "UseIncompleteExtension", translate("Use Incomplete Extension"), translate("The incomplete task will be added the extension of !qB.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.disabled - -o = s:taboption("downloads", Flag, "TempPathEnabled", translate("Temp Path Enabled")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("downloads", Value, "TempPath", translate("Temp Path"), translate("The absolute and relative path can be set.")) -o:depends("TempPathEnabled", "true") -o.placeholder = "temp/" - -o = s:taboption("downloads", Value, "DiskWriteCacheSize", translate("Disk Cache Size (MiB)"), translate("The value -1 is auto and 0 is disable. In default, it is set to 64MiB.")) -o.datatype = "integer" -o.placeholder = "64" - -o = s:taboption("downloads", Value, "DiskWriteCacheTTL", translate("Disk Cache TTL (s)"), translate("In default, it is set to 60s.")) -o.datatype = "integer" -o.placeholder = "60" - -o = s:taboption("downloads", DummyValue, "Saving Management", titlesplit("Saving Management")) - -o = s:taboption("downloads", ListValue, "DisableAutoTMMByDefault", translate("Default Torrent Management Mode")) -o:value("true", translate("Manual")) -o:value("false", translate("Automaic")) -o.default = "true" - -o = s:taboption("downloads", ListValue, "CategoryChanged", translate("Torrent Category Changed"), translate("Choose the action when torrent category changed.")) -o:value("true", translate("Switch torrent to Manual Mode")) -o:value("false", translate("Relocate torrent")) -o.default = "false" - -o = s:taboption("downloads", ListValue, "DefaultSavePathChanged", translate("Default Save Path Changed"), translate("Choose the action when default save path changed.")) -o:value("true", translate("Switch affected torrent to Manual Mode")) -o:value("false", translate("Relocate affected torrent")) -o.default = "true" - -o = s:taboption("downloads", ListValue, "CategorySavePathChanged", translate("Category Save Path Changed"), translate("Choose the action when category save path changed.")) -o:value("true", translate("Switch affected torrent to Manual Mode")) -o:value("false", translate("Relocate affected torrent")) -o.default = "true" - -o = s:taboption("downloads", Value, "TorrentExportDir", translate("Torrent Export Dir"), translate("The .torrent files will be copied to the target directory.")) - -o = s:taboption("downloads", Value, "FinishedTorrentExportDir", translate("Finished Torrent Export Dir"), translate("The .torrent files for finished downloads will be copied to the target directory.")) - -s:tab("bittorrent", translate("Bittorrent Settings")) - -o = s:taboption("bittorrent", Flag, "DHT", translate("Enable DHT"), translate("Enable DHT (decentralized network) to find more peers")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("bittorrent", Flag, "PeX", translate("Enable PeX"), translate("Enable Peer Exchange (PeX) to find more peers")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("bittorrent", Flag, "LSD", translate("Enable LSD"), translate("Enable Local Peer Discovery to find more peers")) -o.enabled = "true" -o.disabled = "false" -o.default = o.disabled - -o = s:taboption("bittorrent", Flag, "uTP_rate_limited", translate("uTP Rate Limit"), translate("Apply rate limit to μTP protocol.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("bittorrent", ListValue, "Encryption", translate("Encryption Mode"), translate("Enable DHT (decentralized network) to find more peers")) -o:value("0", translate("Prefer Encryption")) -o:value("1", translate("Require Encryption")) -o:value("2", translate("Disable Encryption")) -o.default = "0" - -o = s:taboption("bittorrent", Value, "MaxConnecs", translate("Max Connections"), translate("The max number of connections.")) -o.datatype = "integer" -o.placeholder = "500" - -o = s:taboption("bittorrent", Value, "MaxConnecsPerTorrent", translate("Max Connections Per Torrent"), translate("The max number of connections per torrent.")) -o.datatype = "integer" -o.placeholder = "100" - -o = s:taboption("bittorrent", Value, "MaxUploads", translate("Max Uploads"), translate("The max number of connected peers.")) -o.datatype = "integer" -o.placeholder = "8" - -o = s:taboption("bittorrent", Value, "MaxUploadsPerTorrent", translate("Max Uploads Per Torrent"), translate("The max number of connected peers per torrent.")) -o.datatype = "integer" -o.placeholder = "4" - -o = s:taboption("bittorrent", Value, "MaxRatio", translate("Max Ratio"), translate("The max ratio for seeding. -1 is to disable the seeding.")) -o.datatype = "float" -o.placeholder = "-1" - -o = s:taboption("bittorrent", ListValue, "MaxRatioAction", translate("Max Ratio Action"), translate("The action when reach the max seeding ratio.")) -o:value("0", translate("Pause them")) -o:value("1", translate("Remove them")) -o.defaule = "0" - -o = s:taboption("bittorrent", Value, "GlobalMaxSeedingMinutes", translate("Max Seeding Minutes"), translate("Units: minutes")) -o.datatype = "integer" - -o = s:taboption("bittorrent", DummyValue, "Queueing Setting", titlesplit("Queueing Setting")) - -o = s:taboption("bittorrent", Flag, "QueueingEnabled", translate("Enable Torrent Queueing")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("bittorrent", Value, "MaxActiveDownloads", translate("Maximum Active Downloads")) -o.datatype = "integer" -o.placeholder = "3" - -o = s:taboption("bittorrent", Value, "MaxActiveUploads", translate("Max Active Uploads")) -o.datatype = "integer" -o.placeholder = "3" - -o = s:taboption("bittorrent", Value, "MaxActiveTorrents", translate("Max Active Torrents")) -o.datatype = "integer" -o.placeholder = "5" - -o = s:taboption("bittorrent", Flag, "IgnoreSlowTorrents", translate("Ignore Slow Torrents"), translate("Do not count slow torrents in these limits.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.disabled - -o = s:taboption("bittorrent", Value, "SlowTorrentsDownloadRate", translate("Download rate threshold"), translate("Units: KiB/s")) -o.datatype = "integer" -o.placeholder = "2" - -o = s:taboption("bittorrent", Value, "SlowTorrentsUploadRate", translate("Upload rate threshold"), translate("Units: KiB/s")) -o.datatype = "integer" -o.placeholder = "2" - -o = s:taboption("bittorrent", Value, "SlowTorrentsInactivityTimer", translate("Torrent inactivity timer"), translate("Units: seconds")) -o.datatype = "integer" -o.placeholder = "60" - -s:tab("webgui", translate("WebUI Settings")) - -o = s:taboption("webgui", Flag, "UseUPnP", translate("Use UPnP for WebUI"), translate("Using the UPnP / NAT-PMP port of the router for connecting to WebUI.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.disabled - ---o = s:taboption("webgui", Value, "Username", translate("Username"), translate("The login name for WebUI.")) ---o.placeholder = "admin" - ---o = s:taboption("webgui", Value, "Password", translate("Password"), translate("The login password for WebUI.")) ---o.password = true - -o = s:taboption("webgui", Value, "Locale", translate("Locale Language")) -o:value("en", translate("English")) -o:value("zh", translate("Chinese")) -o.default = "en" - -o = s:taboption("webgui", Flag, "CSRFProtection", translate("CSRF Protection"), translate("Enable Cross-Site Request Forgery (CSRF) protection.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("webgui", Flag, "ClickjackingProtection", translate("Clickjacking Protection"), translate("Enable clickjacking protection.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("webgui", Flag, "HostHeaderValidation", translate("Host Header Validation"), translate("Validate the host header.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("webgui", Flag, "LocalHostAuth", translate("Local Host Authentication"), translate("Force authentication for clients on localhost.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("webgui", Flag, "AuthSubnetWhitelistEnabled", translate("Enable Subnet Whitelist")) -o.enabled = "true" -o.disabled = "false" -o.default = o.disabled - -o = s:taboption("webgui", DynamicList, "AuthSubnetWhitelist", translate("Subnet Whitelist")) -o:depends("AuthSubnetWhitelistEnabled", "true") - -s:tab("advanced", translate("Advance Settings")) - -o = s:taboption("advanced", Flag, "AnonymousMode", translate("Anonymous Mode"), translate("When enabled, qBittorrent will take certain measures to try" - .. " to mask its identity. Refer to the wiki")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("advanced", Flag, "SuperSeeding", translate("Super Seeding"), translate("The super seeding mode.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.disabled - -o = s:taboption("advanced", Value, "configuration", translate("Profile Folder Suffix"), translate("Suffix for profile folder")) - -o = s:taboption("advanced", Flag, "IncludeOverhead", translate("Limit Overhead Usage"), translate("The overhead usage is been limitted.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.disabled - -o = s:taboption("advanced", Flag, "IgnoreLimitsLAN", translate("Ignore LAN Limit"), translate("Ignore the speed limit to LAN.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("advanced", Flag, "osCache", translate("Use os Cache")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("advanced", Value, "OutgoingPortsMax", translate("Max Outgoing Port"), translate("The max outgoing port.")) -o.datatype = "port" - -o = s:taboption("advanced", Value, "OutgoingPortsMin", translate("Min Outgoing Port"), translate("The min outgoing port.")) -o.datatype = "port" - -o = s:taboption("advanced", ListValue, "SeedChokingAlgorithm", translate("Choking Algorithm"), translate("The strategy of choking algorithm.")) -o:value("RoundRobin", translate("Round Robin")) -o:value("FastestUpload", translate("Fastest Upload")) -o:value("AntiLeech", translate("Anti-Leech")) -o.default = "FastestUpload" - -o = s:taboption("advanced", Flag, "AnnounceToAllTrackers", translate("Announce To All Trackers")) -o.enabled = "true" -o.disabled = "false" -o.default = o.disabled - -o = s:taboption("advanced", Flag, "AnnounceToAllTiers", translate("Announce To All Tiers")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("advanced", Flag, "Enabled", translate("Enable Log"), translate("Enable logger to log file.")) -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("advanced", Value, "Path", translate("Log Path"), translate("The path for qbittorrent log.")) -o:depends("Enabled", "true") - -o = s:taboption("advanced", Flag, "Backup", translate("Enable Backup"), translate("Backup log file when oversize the given size.")) -o:depends("Enabled", "true") -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("advanced", Flag, "DeleteOld", translate("Delete Old Backup"), translate("Delete the old log file.")) -o:depends("Enabled", "true") -o.enabled = "true" -o.disabled = "false" -o.default = o.enabled - -o = s:taboption("advanced", Value, "MaxSizeBytes", translate("Log Max Size"), translate("The max size for qbittorrent log (Unit: Bytes).")) -o:depends("Enabled", "true") -o.placeholder = "66560" - -o = s:taboption("advanced", Value, "SaveTime", translate("Log Saving Period"), translate("The log file will be deteted after given time. 1d -- 1 day, 1m -- 1 month, 1y -- 1 year")) -o:depends("Enabled", "true") -o.datatype = "string" - -return m diff --git a/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/advanced.lua b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/advanced.lua new file mode 100644 index 000000000..fbad4299b --- /dev/null +++ b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/advanced.lua @@ -0,0 +1,96 @@ +m = Map("qbittorrent") + +s = m:section(NamedSection, "main", "qbittorrent") + +o = s:option(Flag, "AnonymousMode", translate("Anonymous Mode")) +o.description = translate("When enabled, qBittorrent will take certain measures to try to mask its identity. Refer to the wiki") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Flag, "SuperSeeding", translate("Super Seeding")) +o.description = translate("The super seeding mode.") +o.enabled = "true" +o.disabled = "false" +o.default = o.disabled + +o = s:option(Value, "configuration", translate("Profile Folder Suffix")) +o.description = translate("Suffix for profile folder, for example, qBittorrent_[NAME].") + +o = s:option(Flag, "IncludeOverhead", translate("Limit Overhead Usage")) +o.description = translate("The overhead usage is been limitted.") +o.enabled = "true" +o.disabled = "false" +o.default = o.disabled + +o = s:option(Flag, "IgnoreLimitsLAN", translate("Ignore LAN Limit")) +o.description = translate("Ignore the speed limit to LAN.") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Flag, "osCache", translate("Use os Cache")) +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Value, "OutgoingPortsMax", translate("Max Outgoing Port")) +o.description = translate("The max outgoing port.") +o.datatype = "port" + +o = s:option(Value, "OutgoingPortsMin", translate("Min Outgoing Port")) +o.description = translate("The min outgoing port.") +o.datatype = "port" + +o = s:option(ListValue, "SeedChokingAlgorithm", translate("Choking Algorithm")) +o.description = translate("The strategy of choking algorithm.") +o:value("RoundRobin", translate("Round Robin")) +o:value("FastestUpload", translate("Fastest Upload")) +o:value("AntiLeech", translate("Anti-Leech")) +o.default = "FastestUpload" + +o = s:option(Flag, "AnnounceToAllTrackers", translate("Announce To All Trackers")) +o.enabled = "true" +o.disabled = "false" +o.default = o.disabled + +o = s:option(Flag, "AnnounceToAllTiers", translate("Announce To All Tiers")) +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Flag, "Enabled", translate("Enable Log")) +o.description = translate("Enable logger to log file.") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Value, "Path", translate("Log Path")) +o.description = translate("The path for qbittorrent log.") +o:depends("Enabled", "true") + +o = s:option(Flag, "Backup", translate("Enable Backup")) +o.description = translate("Backup log file when oversize the given size.") +o:depends("Enabled", "true") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Flag, "DeleteOld", translate("Delete Old Backup")) +o.description = translate("Delete the old log file.") +o:depends("Enabled", "true") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Value, "MaxSizeBytes", translate("Log Max Size")) +o.description = translate("The max size for qbittorrent log (Unit: Bytes).") +o:depends("Enabled", "true") +o.placeholder = "66560" + +o = s:option(Value, "SaveTime", translate("Log Saving Period")) +o.description = translate("The log file will be deteted after given time. 1d -- 1 day, 1m -- 1 month, 1y -- 1 year.") +o:depends("Enabled", "true") +o.datatype = "string" + +return m diff --git a/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/basic.lua b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/basic.lua new file mode 100644 index 000000000..8bf32dabb --- /dev/null +++ b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/basic.lua @@ -0,0 +1,39 @@ +m = Map("qbittorrent") +m.title = translate("qBittorrent") +m.description = translate("qBittorrent is a cross-platform free and open-source BitTorrent client") + +m:section(SimpleSection).template = "qbittorrent/qbittorrent_status" + +s = m:section(NamedSection, "main", "qbittorrent") + +o = s:option(Flag, "enabled", translate("Enabled")) +o.default = "1" + +o = s:option(ListValue, "user", translate("Run daemon as user")) +local u +for u in luci.util.execi("cat /etc/passwd | cut -d ':' -f1") do + o:value(u) +end + +o = s:option(Value, "profile", translate("Store configuration files in the Path")) +o.default = '/tmp' + +o = s:option(Value, "SavePath", translate("Store download files in the Path")) +o.placeholder = "/tmp/download" + +o = s:option(Value, "Port", translate("WEBUI listening port")) +o.datatype = "port" +o.placeholder = "8080" + +o = s:option(Flag, "UseRandomPort", translate("Use Random Port")) +o.description = translate("Randomly assigns a different port every time qBittorrent starts up.") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Value, "PortRangeMin", translate("Connection Port")) +o.description = translate("Incoming connection port.") +o:depends("UseRandomPort", false) +o.datatype = "range(1024,65535)" + +return m diff --git a/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/bittorrent.lua b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/bittorrent.lua new file mode 100644 index 000000000..f044ab8e1 --- /dev/null +++ b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/bittorrent.lua @@ -0,0 +1,112 @@ +m = Map("qbittorrent") + +s = m:section(NamedSection, "main", "qbittorrent") + +o = s:option(Flag, "DHT", translate("Enable DHT")) +o.description = translate("Enable DHT (decentralized network) to find more peers.") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Flag, "PeX", translate("Enable PeX")) +o.description = translate("Enable Peer Exchange (PeX) to find more peers.") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Flag, "LSD", translate("Enable LSD")) +o.description = translate("Enable Local Peer Discovery to find more peers.") +o.enabled = "true" +o.disabled = "false" +o.default = o.disabled + +o = s:option(Flag, "uTP_rate_limited", translate("uTP Rate Limit")) +o.description = translate("Apply rate limit to uTP protocol.") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(ListValue, "Encryption", translate("Encryption Mode")) +o.description = translate("Enable DHT (decentralized network) to find more peers.") +o:value("0", translate("Prefer Encryption")) +o:value("1", translate("Require Encryption")) +o:value("2", translate("Disable Encryption")) +o.default = "0" + +o = s:option(Value, "MaxConnecs", translate("Max Connections")) +o.description = translate("The max number of connections.") +o.datatype = "integer" +o.placeholder = "500" + +o = s:option(Value, "MaxConnecsPerTorrent", translate("Max Connections Per Torrent")) +o.description = translate("The max number of connections per torrent.") +o.datatype = "integer" +o.placeholder = "100" + +o = s:option(Value, "MaxUploads", translate("Max Uploads")) +o.description = translate("The max number of connected peers.") +o.datatype = "integer" +o.placeholder = "8" + +o = s:option(Value, "MaxUploadsPerTorrent", translate("Max Uploads Per Torrent")) +o.description = translate("The max number of connected peers per torrent.") +o.datatype = "integer" +o.placeholder = "4" + +o = s:option(Value, "MaxRatio", translate("Max Ratio")) +o.description = translate("The max ratio for seeding. -1 is to disable the seeding.") +o.datatype = "float" +o.placeholder = "-1" + +o = s:option(ListValue, "MaxRatioAction", translate("Max Ratio Action")) +o.description = translate("The action when reach the max seeding ratio.") +o:value("0", translate("Pause them")) +o:value("1", translate("Remove them")) +o.defaule = "0" + +o = s:option(Value, "GlobalMaxSeedingMinutes", translate("Max Seeding Minutes")) +o.description = translate("Units: minutes") +o.datatype = "integer" + +s = m:section(NamedSection, "main", "qbittorrent") +s.title = translate("Queueing Setting") + +o = s:option(Flag, "QueueingEnabled", translate("Enable Torrent Queueing")) +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Value, "MaxActiveDownloads", translate("Maximum Active Downloads")) +o.datatype = "integer" +o.placeholder = "3" + +o = s:option(Value, "MaxActiveUploads", translate("Max Active Uploads")) +o.datatype = "integer" +o.placeholder = "3" + +o = s:option(Value, "MaxActiveTorrents", translate("Max Active Torrents")) +o.datatype = "integer" +o.placeholder = "5" + +o = s:option(Flag, "IgnoreSlowTorrents", translate("Ignore Slow Torrents")) +o.description = translate("Do not count slow torrents in these limits.") +o.enabled = "true" +o.disabled = "false" +o.default = o.disabled + +o = s:option(Value, "SlowTorrentsDownloadRate", translate("Download rate threshold")) +o.description = translate("Units: KiB/s") +o.datatype = "integer" +o.placeholder = "2" + +o = s:option(Value, "SlowTorrentsUploadRate", translate("Upload rate threshold")) +o.description = translate("Units: KiB/s") +o.datatype = "integer" +o.placeholder = "2" + +o = s:option(Value, "SlowTorrentsInactivityTimer", translate("Torrent inactivity timer")) +o.description = translate("Units: seconds") +o.datatype = "integer" +o.placeholder = "60" + +return m diff --git a/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/connection.lua b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/connection.lua new file mode 100644 index 000000000..a17677393 --- /dev/null +++ b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/connection.lua @@ -0,0 +1,41 @@ +m = Map("qbittorrent") + +s = m:section(NamedSection, "main", "qbittorrent") + +o = s:option(Flag, "UPnP", translate("Use UPnP for Connections")) +o.description = translate("Use UPnP/ NAT-PMP port forwarding from my router. Refer to the wiki") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Value, "GlobalDLLimit", translate("Global Download Speed")) +o.description = translate("Global Download Speed Limit(KiB/s).") +o.datatype = "float" +o.placeholder = "0" + +o = s:option(Value, "GlobalUPLimit", translate("Global Upload Speed")) +o.description = translate("Global Upload Speed Limit(KiB/s).") +o.datatype = "float" +o.placeholder = "0" + +o = s:option(Value, "GlobalDLLimitAlt", translate("Alternative Download Speed")) +o.description = translate("Alternative Download Speed Limit(KiB/s).") +o.datatype = "float" +o.placeholder = "10" + +o = s:option(Value, "GlobalUPLimitAlt", translate("Alternative Upload Speed")) +o.description = translate("Alternative Upload Speed Limit(KiB/s).") +o.datatype = "float" +o.placeholder = "10" + +o = s:option(ListValue, "BTProtocol", translate("Enabled protocol")) +o.description = translate("The protocol that was enabled.") +o:value("Both", translate("TCP and UTP")) +o:value("TCP", translate("TCP")) +o:value("UTP", translate("UTP")) +o.default = "Both" + +o = s:option(Value, "InetAddress", translate("Inet Address")) +o.description = translate("The address that respond to the trackers.") + +return m diff --git a/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/downloads.lua b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/downloads.lua new file mode 100644 index 000000000..27a798df3 --- /dev/null +++ b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/downloads.lua @@ -0,0 +1,87 @@ +m = Map("qbittorrent") + +s = m:section(NamedSection, "main", "qbittorrent") + +o = s:option(Flag, "CreateTorrentSubfolder", translate("Create Subfolder")) +o.description = translate("Create subfolder for torrents with multiple files.") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Flag, "StartInPause", translate("Start In Pause")) +o.description = translate("Do not start the download automatically.") +o.enabled = "true" +o.disabled = "false" +o.default = o.disabled + +o = s:option(Flag, "AutoDeleteAddedTorrentFile", translate("Auto Delete Torrent File")) +o.description = translate("The .torrent files will be deleted afterwards.") +o.enabled = "IfAdded" +o.disabled = "Never" +o.default = o.disabled + +o = s:option(Flag, "PreAllocation", translate("Pre Allocation")) +o.description = translate("Pre-allocate disk space for all files.") +o.enabled = "true" +o.disabled = "false" +o.default = o.disabled + +o = s:option(Flag, "UseIncompleteExtension", translate("Use Incomplete Extension")) +o.description = translate("The incomplete task will be added the extension of !qB.") +o.enabled = "true" +o.disabled = "false" +o.default = o.disabled + +o = s:option(Flag, "TempPathEnabled", translate("Temp Path Enabled")) +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Value, "TempPath", translate("Temp Path")) +o.description = translate("The absolute and relative path can be set.") +o:depends("TempPathEnabled", "true") +o.placeholder = "temp/" + +o = s:option(Value, "DiskWriteCacheSize", translate("Disk Cache Size (MiB)")) +o.description = translate("The value -1 is auto and 0 is disable. In default, it is set to 64MiB.") +o.datatype = "integer" +o.placeholder = "64" + +o = s:option(Value, "DiskWriteCacheTTL", translate("Disk Cache TTL (s)")) +o.description = translate("In default, it is set to 60s.") +o.datatype = "integer" +o.placeholder = "60" + +s = m:section(NamedSection, "main", "qbittorrent") +s.title = translate("Saving Management") + +o = s:option(ListValue, "DisableAutoTMMByDefault", translate("Default Torrent Management Mode")) +o:value("true", translate("Manual")) +o:value("false", translate("Automaic")) +o.default = "true" + +o = s:option(ListValue, "CategoryChanged", translate("Torrent Category Changed")) +o.description = translate("Choose the action when torrent category changed.") +o:value("true", translate("Switch torrent to Manual Mode")) +o:value("false", translate("Relocate torrent")) +o.default = "false" + +o = s:option(ListValue, "DefaultSavePathChanged", translate("Default Save Path Changed")) +o.description = translate("Choose the action when default save path changed.") +o:value("true", translate("Switch affected torrent to Manual Mode")) +o:value("false", translate("Relocate affected torrent")) +o.default = "true" + +o = s:option(ListValue, "CategorySavePathChanged", translate("Category Save Path Changed")) +o.description = translate("Choose the action when category save path changed.") +o:value("true", translate("Switch affected torrent to Manual Mode")) +o:value("false", translate("Relocate affected torrent")) +o.default = "true" + +o = s:option(Value, "TorrentExportDir", translate("Torrent Export Dir")) +o.description = translate("The .torrent files will be copied to the target directory.") + +o = s:option(Value, "FinishedTorrentExportDir", translate("Finished Torrent Export Dir")) +o.description = translate("The .torrent files for finished downloads will be copied to the target directory.") + +return m diff --git a/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/webgui.lua b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/webgui.lua new file mode 100644 index 000000000..d6201adba --- /dev/null +++ b/package/lean/luci-app-qbittorrent/luasrc/model/cbi/qbittorrent/webgui.lua @@ -0,0 +1,56 @@ +m = Map("qbittorrent") + +s = m:section(NamedSection, "main", "qbittorrent") + +o = s:option(Flag, "UseUPnP", translate("Use UPnP for WebUI")) +o.description = translate("Using the UPnP / NAT-PMP port of the router for connecting to WebUI.") +o.enabled = "true" +o.disabled = "false" +o.default = o.disabled + +--o = s:option(Value, "Username", translate("Username")) +--o.description = translate("The login name for WebUI.") +--o.placeholder = "admin" + +--o = s:option(Value, "Password", translate("Password")) +--o.description = translate("The login password for WebUI.") +--o.password = true + +o = s:option(Value, "Locale", translate("Locale Language")) +o:value("en", translate("English")) +o:value("zh", translate("Chinese")) +o.default = "en" + +o = s:option(Flag, "CSRFProtection", translate("CSRF Protection")) +o.description = translate("Enable Cross-Site Request Forgery (CSRF) protection.") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Flag, "ClickjackingProtection", translate("Clickjacking Protection")) +o.description = translate("Enable clickjacking protection.") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Flag, "HostHeaderValidation", translate("Host Header Validation")) +o.description = translate("Validate the host header.") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Flag, "LocalHostAuth", translate("Local Host Authentication")) +o.description = translate("Force authentication for clients on localhost.") +o.enabled = "true" +o.disabled = "false" +o.default = o.enabled + +o = s:option(Flag, "AuthSubnetWhitelistEnabled", translate("Enable Subnet Whitelist")) +o.enabled = "true" +o.disabled = "false" +o.default = o.disabled + +o = s:option(DynamicList, "AuthSubnetWhitelist", translate("Subnet Whitelist")) +o:depends("AuthSubnetWhitelistEnabled", "true") + +return m diff --git a/package/lean/luci-app-qbittorrent/luasrc/view/qbittorrent/qbittorrent_status.htm b/package/lean/luci-app-qbittorrent/luasrc/view/qbittorrent/qbittorrent_status.htm index 13ebe1c97..8dc93a8e4 100644 --- a/package/lean/luci-app-qbittorrent/luasrc/view/qbittorrent/qbittorrent_status.htm +++ b/package/lean/luci-app-qbittorrent/luasrc/view/qbittorrent/qbittorrent_status.htm @@ -4,7 +4,7 @@ XHR.poll(3, '<%=url([[admin]], [[nas]], [[qBittorrent]], [[status]])%>', null, var tb = document.getElementById('qBittorrent_status'); if (data && tb) { if (data.running) { - var links = 'qBittorrent <%:RUNNING%>'; + var links = 'qBittorrent <%:RUNNING%>'; tb.innerHTML = links; } else { tb.innerHTML = 'qBittorrent <%:NOT RUNNING%>'; @@ -12,6 +12,11 @@ XHR.poll(3, '<%=url([[admin]], [[nas]], [[qBittorrent]], [[status]])%>', null, } } ); + +function openwebui(){ + var url = window.location.host+":<%=luci.sys.exec("uci -q get qbittorrent.main.Port"):gsub("^%s*(.-)%s*$", "%1")%>"; + window.open('http://'+url,'target',''); +} //]]> @@ -19,4 +24,4 @@ XHR.poll(3, '<%=url([[admin]], [[nas]], [[qBittorrent]], [[status]])%>', null,<%:Collecting data...%>
- \ No newline at end of file + diff --git a/package/lean/luci-app-qbittorrent/po/zh-cn/qbittorrent.po b/package/lean/luci-app-qbittorrent/po/zh-cn/qbittorrent.po index 962cee5f3..5907dc4af 100644 --- a/package/lean/luci-app-qbittorrent/po/zh-cn/qbittorrent.po +++ b/package/lean/luci-app-qbittorrent/po/zh-cn/qbittorrent.po @@ -14,15 +14,12 @@ msgstr "" msgid "qbittorrent" msgstr "qbittorrent" -msgid "Running" +msgid "RUNNING" msgstr "运行中" -msgid "Not running" +msgid "NOT RUNNING" msgstr "未运行" -msgid "qbittorrent Run Status" -msgstr "qbittorrent运行状态" - msgid "Basic Settings" msgstr "基本设置" @@ -30,7 +27,7 @@ msgid "Enable" msgstr "启用" msgid "qBittorrent is a cross-platform free and open-source BitTorrent client" -msgstr "qBittorrent是一个基于 QT 的跨平台的开源 BitTorrent 客户端" +msgstr "qBittorrent 是一个基于 QT 的跨平台的开源 BitTorrent 客户端" msgid "profile_dir" msgstr "配置文件目录" @@ -60,7 +57,7 @@ msgid "Store download files in the Path" msgstr "下载文件存放目录" msgid "WEBUI Settings" -msgstr "WEBUI设置" +msgstr "WEBUI 设置" msgid "WEBUI listening port" msgstr "WebUI 监听端口" @@ -68,15 +65,14 @@ msgstr "WebUI 监听端口" msgid "Use Random Port" msgstr "使用随机端口" -msgid "Randomly assigns a different port every time qBittorrent starts up" -msgstr "在每次启动时使用不同的传入连接端口" +msgid "Randomly assigns a different port every time qBittorrent starts up." +msgstr "在每次启动时使用不同的传入连接端口。" msgid "Connection Port" msgstr "连接端口" -msgid "Incoming connection port" -msgstr "" -"推荐在防火墙 -> 流量规则 中,打开这个端口获得更好的下载速度( TCP+UDP )" +msgid "Incoming connection port." +msgstr "推荐在防火墙 -> 流量规则 中,打开这个端口获得更好的下载速度( TCP+UDP )。" msgid "Bittorrent Settings" msgstr "Bittorrent 设置" @@ -93,12 +89,8 @@ msgstr "用户组" msgid "Parent Path for Profile Folder" msgstr "配置保存路径" -msgid "" -"The path for storing profile folder using by command: --profile [PATH]" -"b>." -msgstr "" -"配置文件的保存路径,默认的配置文件夹在/tmp下。例如:/etc/config"
-"code>。"
+msgid "The path for storing profile folder using by command: --profile [PATH]."
+msgstr "配置文件的保存路径,默认的配置文件夹在/tmp下。例如:/etc/config
。"
msgid "Profile Folder Suffix"
msgstr "配置目录后缀"
@@ -107,7 +99,7 @@ msgid "Suffix for profile folder, for example, qBittorrent_[NAME]."
msgstr "配置文件文件夹的后缀。例如: qBittorrent_[NAME]。"
msgid "Locale Language"
-msgstr "WebUI语言"
+msgstr "WebUI 语言"
msgid "English"
msgstr "英文"
@@ -148,9 +140,7 @@ msgstr "日志保存期限"
msgid "The max size for qbittorrent log (Unit: Bytes)."
msgstr "设定日志文件的大小(单位:字节)"
-msgid ""
-"The log file will be deteted after given time. 1d -- 1 day, 1m -- 1 month, "
-"1y -- 1 year"
+msgid "The log file will be deteted after given time. 1d -- 1 day, 1m -- 1 month, 1y -- 1 year."
msgstr "设定日志文件的时间(1d-1天,1m-1个月,1y-1年)"
msgid "Connection Settings"
@@ -160,7 +150,7 @@ msgid "Use UPnP for Connections"
msgstr "端口自动转发"
msgid "Use UPnP/ NAT-PMP port forwarding from my router."
-msgstr "使用路由器的UPnP/NAT-PMP端口自动转发。"
+msgstr "使用路由器的 UPnP/NAT-PMP 端口自动转发。"
msgid "Use different port on each startup voids the first"
msgstr "在每次启动时使用随机的端口,可能会使第一个启动无效"
@@ -199,7 +189,7 @@ msgid "The protocol that was enabled."
msgstr "当前已启用的协议。"
msgid "TCP and UTP"
-msgstr "TCP和UTP"
+msgstr "TCP 和 UTP"
msgid "Inet Address"
msgstr "输入地址"
@@ -241,14 +231,12 @@ msgid "Use Incomplete Extension"
msgstr "使用扩展名"
msgid "The incomplete task will be added the extension of !qB."
-msgstr "为不完整的文件添加后缀名!qB
。"
+msgstr "为不完整的文件添加后缀名 !qB"
msgid "Save Path"
msgstr "文件保存路径"
-msgid ""
-"The path to save the download file. For example:/mnt/sda1/download"
-"code>"
+msgid "The path to save the download file. For example:/mnt/sda1/download
"
msgstr "下载文件的保存路径。例如:/mnt/sda1/download
"
msgid "Temp Path Enabled"
@@ -267,7 +255,7 @@ msgid "The value -1 is auto and 0 is disable. In default, it is set to 64MiB."
msgstr "数值1是自动的,0是禁用的。默认设置为64MiB。"
msgid "Disk Cache TTL (s)"
-msgstr "磁盘缓存TTL"
+msgstr "磁盘缓存 TTL"
msgid "In default, it is set to 60s."
msgstr "默认设置为60秒。"
@@ -318,40 +306,37 @@ msgid "Torrent Export Dir"
msgstr "种子导出目录"
msgid "The .torrent files will be copied to the target directory."
-msgstr "种子文件将被复制到目标目录。例如:/etc/config
。"
+msgstr "种子文件将被复制到目标目录。例如:/etc/config"
msgid "Finished Torrent Export Dir"
msgstr "复制种子文件"
-msgid ""
-"The .torrent files for finished downloads will be copied to the target "
-"directory."
-msgstr ""
-"将已下载完成的种子文件复制到目标目录,例如:/etc/config
。"
+msgid "The .torrent files for finished downloads will be copied to the target directory."
+msgstr "将已下载完成的种子文件复制到目标目录,例如:/etc/config"
msgid "Enable DHT"
-msgstr "启用DHT"
+msgstr "启用 DHT"
-msgid "Enable DHT (decentralized network) to find more peers"
-msgstr "启用DHT(去中心化网络) 使DHT(分散网络)能够找到更多的对等点"
+msgid "Enable DHT (decentralized network) to find more peers."
+msgstr "启用 DHT(去中心化网络) 使 DHT(分散网络)能够找到更多的对等点。"
msgid "Enable PeX"
-msgstr "启用PeX"
+msgstr "启用 PeX"
-msgid "Enable Peer Exchange (PeX) to find more peers"
-msgstr "启用用户交换(PeX)以找到更多用户"
+msgid "Enable Peer Exchange (PeX) to find more peers."
+msgstr "启用用户交换(PeX)以找到更多用户。"
msgid "Enable LSD"
-msgstr "启用LSD"
+msgstr "启用 LSD"
-msgid "Enable Local Peer Discovery to find more peers"
-msgstr "启用本地用户发现以找到更多用户"
+msgid "Enable Local Peer Discovery to find more peers."
+msgstr "启用本地用户发现以找到更多用户。"
msgid "uTP Rate Limit"
-msgstr "uTP速度限制"
+msgstr "uTP 速度限制"
-msgid "Apply rate limit to µTP protocol."
-msgstr "针对µTP协议进行速度限制。"
+msgid "Apply rate limit to uTP protocol."
+msgstr "针对 uTP 协议进行速度限制。"
msgid "Encryption Mode"
msgstr "加密模式"
@@ -459,25 +444,25 @@ msgid "Password"
msgstr "密码"
msgid "Use UPnP for WebUI"
-msgstr "WebUI端口转发"
+msgstr "WebUI 端口转发"
msgid "Using the UPnP / NAT-PMP port of the router for connecting to WebUI."
-msgstr "使用路由器的UPnP/NAT-PMP端口转发到WebUI。"
+msgstr "使用路由器的 UPnP/NAT-PMP 端口转发到 WebUI。"
msgid "The login name for WebUI."
-msgstr "WebUI的登录用户名设置。"
+msgstr "WebUI 的登录用户名设置。"
msgid "The login password for WebUI."
-msgstr "WebUI用户的登录密码设置。"
+msgstr "WebUI 用户的登录密码设置。"
msgid "The listening port for WebUI."
-msgstr "WebUI的登录端口设置,默认端口:8080。"
+msgstr "WebUI 的登录端口设置,默认端口:8080。"
msgid "CSRF Protection"
-msgstr "CSRF保护"
+msgstr "CSRF 保护"
msgid "Enable Cross-Site Request Forgery (CSRF) protection."
-msgstr "启用跨站点请求伪造(CSRF)保护。"
+msgstr "启用跨站点请求伪造 (CSRF) 保护。"
msgid "Clickjacking Protection"
msgstr "劫持保护"
@@ -525,13 +510,13 @@ msgid "The overhead usage is been limitted."
msgstr "对传送总开销进行速度限制。"
msgid "Ignore LAN Limit"
-msgstr "LAN限制"
+msgstr "LAN 限制"
msgid "Ignore the speed limit to LAN."
-msgstr "忽略对LAN的速度限制。"
+msgstr "忽略对 LAN 的速度限制。"
msgid "Use os Cache"
-msgstr "使用OS操作系统缓存管理"
+msgstr "使用 OS 操作系统缓存管理"
msgid "Max Outgoing Port"
msgstr "端口设置"
@@ -539,6 +524,9 @@ msgstr "端口设置"
msgid "Min Outgoing Port"
msgstr "端口设置"
+msgid "The max outgoing port."
+msgstr "最大输出端口。"
+
msgid "The min outgoing port."
msgstr "最小输出端口。"
@@ -558,10 +546,10 @@ msgid "Anti-Leech"
msgstr "反吸血"
msgid "Announce To All Trackers"
-msgstr "对所有Trackers宣告"
+msgstr "对所有 Trackers 宣告"
msgid "Announce To All Tiers"
-msgstr "对所有Tiers宣告"
+msgstr "对所有 Tiers 宣告"
msgid "configuration file"
msgstr "配置文件"
@@ -570,12 +558,16 @@ msgid "Operation log"
msgstr "运行日志"
msgid "This page is the log document content of qbittorrent."
-msgstr "本页是qBittorrent的日志文档内容。"
+msgstr "本页是 qBittorrent 的日志文档内容。"
-msgid ""
-"This page is the content of the configuration document under /etc/config/"
-"qbittorrent."
+msgid "This page is the content of the configuration document under /etc/config/qbittorrent."
msgstr "本页是/etc/config/qbittorrent下的配置文档内容。"
msgid "Open Web Interface"
msgstr "打开管理页面"
+
+msgid "Use UPnP/ NAT-PMP port forwarding from my router. Refer to the wiki"
+msgstr "使用路由器的 UPnP/NAT-PMP 端口转发,参考 wiki"
+
+msgid "When enabled, qBittorrent will take certain measures to try to mask its identity. Refer to the wiki"
+msgstr "启用后 qBittorrent 将采取某些措施来尝试掩盖其身份,参考wiki"
diff --git a/package/lean/luci-app-qbittorrent/root/etc/config/qbittorrent b/package/lean/luci-app-qbittorrent/root/etc/config/qbittorrent
index a7fa2820b..45e3c2b94 100644
--- a/package/lean/luci-app-qbittorrent/root/etc/config/qbittorrent
+++ b/package/lean/luci-app-qbittorrent/root/etc/config/qbittorrent
@@ -17,4 +17,3 @@ config qbittorrent 'main'
option UseRandomPort 'false'
option PortRangeMin '55555'
option enabled '0'
-
diff --git a/package/lean/luci-app-qbittorrent/root/etc/uci-defaults/luci-qbittorrent b/package/lean/luci-app-qbittorrent/root/etc/uci-defaults/luci-qbittorrent
old mode 100644
new mode 100755