You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
4.7 KiB
Lua

1 year ago
-- Copyright 2014-2018 Sandor Balazsi <sandor.balazsi@gmail.com>
-- Licensed to the public under the GNU General Public License.
local rtorrent = require "rtorrent"
local common = require "luci.model.cbi.rtorrent.common"
local config = rtorrent.batchcall({
"throttle.global_up.max_rate", "throttle.global_down.max_rate",
"throttle.max_downloads.global", "throttle.max_uploads.global",
"throttle.max_uploads",
"throttle.min_peers.normal", "throttle.max_peers.normal",
"throttle.min_peers.seed", "throttle.max_peers.seed"
})
local function set_config(key, value)
if tonumber(value) ~= config[key] then
rtorrent.call(key .. ".set", "", value)
luci.http.redirect(luci.dispatcher.build_url("admin/rtorrent/admin/rtorrent"))
end
end
f = SimpleForm("rtorrent", translate("Admin - rTorrent"))
speed = f:section(SimpleSection)
speed.title = translate("Bandwidth limits")
speed.render = function(self, ...)
luci.template.render("rtorrent/tabmenu", { self = {
pages = common.get_admin_pages(),
page = "rTorrent"
}})
SimpleSection.render(self, ...)
end
upload_rate = speed:option(Value, "upload_rate", translate("Upload limit (KiB/sec)"),
translate("Global upload rate (0: unlimited)"))
upload_rate.rmempty = false
upload_rate.default = config["throttle.global_up.max_rate"] / 1024
upload_rate.datatype = "uinteger"
function upload_rate.write(self, section, value)
set_config("throttle.global_up.max_rate", value .. "k")
end
download_rate = speed:option(Value, "download_rate", translate("Download limit (KiB/sec)"),
translate("Global downlaod rate (0: unlimited)"))
download_rate.rmempty = false
download_rate.default = config["throttle.global_down.max_rate"] / 1024
download_rate.datatype = "uinteger"
function download_rate.write(self, section, value)
set_config("throttle.global_down.max_rate", value .. "k")
end
global_limits = f:section(SimpleSection)
global_limits.title = translate("Global limits")
max_downloads_global = global_limits:option(Value, "max_downloads_global", translate("Download slots"),
translate("Maximum number of simultaneous downloads"))
max_downloads_global.rmempty = false
max_downloads_global.default = config["throttle.max_downloads.global"]
max_downloads_global.datatype = "uinteger"
function max_downloads_global.write(self, section, value)
set_config("throttle.max_downloads.global", value)
end
max_uploads_global = global_limits:option(Value, "max_uploads_global", translate("Upload slots"),
translate("Maximum number of simultaneous uploads"))
max_uploads_global.rmempty = false
max_uploads_global.default = config["throttle.max_uploads.global"]
max_uploads_global.datatype = "uinteger"
function max_uploads_global.write(self, section, value)
set_config("throttle.max_uploads.global", value)
end
torrent_limits = f:section(SimpleSection)
torrent_limits.title = translate("Torrent limits")
max_uploads = torrent_limits:option(Value, "max_uploads", translate("Maximum uploads"),
translate("Maximum number of simultanious uploads per torrent"))
max_uploads.rmempty = false
max_uploads.default = config["throttle.max_uploads"]
max_uploads.datatype = "uinteger"
function max_uploads.write(self, section, value)
set_config("throttle.max_uploads", value)
end
min_peers = torrent_limits:option(Value, "min_peers", translate("Minimum peers"),
translate("Minimum number of peers to connect to per torrent"))
min_peers.rmempty = false
min_peers.default = config["throttle.min_peers.normal"]
min_peers.datatype = "uinteger"
function min_peers.write(self, section, value)
set_config("throttle.min_peers.normal", value)
end
max_peers = torrent_limits:option(Value, "max_peers", translate("Maximum peers"),
translate("Maximum number of peers to connect to per torrent"))
max_peers.rmempty = false
max_peers.default = config["throttle.max_peers.normal"]
max_peers.datatype = "uinteger"
function max_peers.write(self, section, value)
set_config("throttle.max_peers.normal", value)
end
min_peers_seed = torrent_limits:option(Value, "min_peers_seed", translate("Minimum seeds"),
translate("Minimum number of seeds for completed torrents (-1 = same as peers)"))
min_peers_seed.rmempty = false
min_peers_seed.default = config["throttle.min_peers.seed"]
min_peers_seed.datatype = "integer"
function min_peers_seed.write(self, section, value)
set_config("throttle.min_peers.seed", value)
end
max_peers_seed = torrent_limits:option(Value, "max_peers_seed", translate("Maximum seeds"),
translate("Maximum number of seeds for completed torrents (-1 = same as peers)"))
max_peers_seed.rmempty = false
max_peers_seed.default = config["throttle.max_peers.seed"]
max_peers_seed.datatype = "integer"
function max_peers_seed.write(self, section, value)
set_config("throttle.max_peers.seed", value)
end
-- dir = f:field(DummyValue, "dummy", luci.dispatcher.context.authuser)
return f