mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-10-11 16:49:22 +00:00
Minor cleanup of pex and other commands.
This commit is contained in:
@@ -190,10 +190,6 @@ initialize_command_local() {
|
|||||||
core::DownloadList* dList = control->core()->download_list();
|
core::DownloadList* dList = control->core()->download_list();
|
||||||
torrent::FileManager* fileManager = torrent::file_manager();
|
torrent::FileManager* fileManager = torrent::file_manager();
|
||||||
|
|
||||||
if (rpc::call_command_value("method.use_deprecated") == 1) {
|
|
||||||
CMD_ANY_LIST ("file.append", std::bind(&cmd_file_append, std::placeholders::_2));
|
|
||||||
}
|
|
||||||
|
|
||||||
CMD_ANY ("system.hostname", std::bind(&system_hostname));
|
CMD_ANY ("system.hostname", std::bind(&system_hostname));
|
||||||
CMD_ANY ("system.pid", std::bind(&getpid));
|
CMD_ANY ("system.pid", std::bind(&getpid));
|
||||||
|
|
||||||
|
|||||||
@@ -325,7 +325,8 @@ initialize_command_network() {
|
|||||||
CMD_ANY ("network.listen.backlog", [](auto, auto) { return torrent::runtime::network_config()->listen_backlog(); });
|
CMD_ANY ("network.listen.backlog", [](auto, auto) { return torrent::runtime::network_config()->listen_backlog(); });
|
||||||
CMD_ANY_VALUE_V ("network.listen.backlog.set", [](auto, auto& value) { return torrent::runtime::network_config()->set_listen_backlog(value); });
|
CMD_ANY_VALUE_V ("network.listen.backlog.set", [](auto, auto& value) { return torrent::runtime::network_config()->set_listen_backlog(value); });
|
||||||
|
|
||||||
CMD_VAR_BOOL ("protocol.pex", true);
|
CMD_ANY ("protocol.pex", [](auto, auto) { return torrent::runtime::client_config()->is_pex_enabled(); });
|
||||||
|
CMD_ANY_VALUE_V ("protocol.pex.set", [](auto, auto& value) { return torrent::runtime::client_config()->set_pex_enabled(value); });
|
||||||
|
|
||||||
CMD_ANY_LIST ("protocol.encryption", [](auto, auto) { return get_encryption(); });
|
CMD_ANY_LIST ("protocol.encryption", [](auto, auto) { return get_encryption(); });
|
||||||
CMD_ANY_LIST ("protocol.encryption.set", [](auto, auto& args) { return apply_encryption(args); });
|
CMD_ANY_LIST ("protocol.encryption.set", [](auto, auto& args) { return apply_encryption(args); });
|
||||||
@@ -401,8 +402,10 @@ initialize_command_network() {
|
|||||||
CMD_ANY ("network.xmlrpc.size_limit", [](auto, auto) { return rpc::rpc.size_limit(); });
|
CMD_ANY ("network.xmlrpc.size_limit", [](auto, auto) { return rpc::rpc.size_limit(); });
|
||||||
CMD_ANY_VALUE_V ("network.xmlrpc.size_limit.set", [](auto, auto& arg) { return rpc::rpc.set_size_limit(arg); });
|
CMD_ANY_VALUE_V ("network.xmlrpc.size_limit.set", [](auto, auto& arg) { return rpc::rpc.set_size_limit(arg); });
|
||||||
|
|
||||||
CMD_VAR_BOOL ("network.rpc.use_xmlrpc", true);
|
CMD_ANY ("network.rpc.use_xmlrpc", [](auto, auto) { return rpc::rpc.use_xmlrpc(); });
|
||||||
CMD_VAR_BOOL ("network.rpc.use_jsonrpc", true);
|
CMD_ANY_VALUE_V ("network.rpc.use_xmlrpc.set", [](auto, auto& arg) { return rpc::rpc.set_use_xmlrpc(arg); });
|
||||||
|
CMD_ANY ("network.rpc.use_jsonrpc", [](auto, auto) { return rpc::rpc.use_jsonrpc(); });
|
||||||
|
CMD_ANY_VALUE_V ("network.rpc.use_jsonrpc.set", [](auto, auto& arg) { return rpc::rpc.set_use_jsonrpc(arg); });
|
||||||
|
|
||||||
CMD_ANY ("network.block.ipv4", [nw_config](auto, auto) { return nw_config->is_block_ipv4(); });
|
CMD_ANY ("network.block.ipv4", [nw_config](auto, auto) { return nw_config->is_block_ipv4(); });
|
||||||
CMD_ANY_VALUE_V ("network.block.ipv4.set", [nw_config](auto, auto& value) { return nw_config->set_block_ipv4(value); });
|
CMD_ANY_VALUE_V ("network.block.ipv4.set", [nw_config](auto, auto& value) { return nw_config->set_block_ipv4(value); });
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
#include <torrent/rate.h>
|
#include <torrent/rate.h>
|
||||||
#include <torrent/data/file_utils.h>
|
#include <torrent/data/file_utils.h>
|
||||||
#include <torrent/net/http_stack.h>
|
#include <torrent/net/http_stack.h>
|
||||||
|
#include <torrent/runtime/client_config.h>
|
||||||
#include <torrent/utils/string_manip.h>
|
#include <torrent/utils/string_manip.h>
|
||||||
|
|
||||||
#include "control.h"
|
#include "control.h"
|
||||||
@@ -271,7 +272,7 @@ DownloadFactory::receive_success() {
|
|||||||
if (!m_session && m_variables["tied_to_file"].as_value())
|
if (!m_session && m_variables["tied_to_file"].as_value())
|
||||||
rpc::call_command("d.tied_to_file.set", m_uri.empty() ? m_variables["tied_file"] : m_uri, rpc::make_target(download));
|
rpc::call_command("d.tied_to_file.set", m_uri.empty() ? m_variables["tied_file"] : m_uri, rpc::make_target(download));
|
||||||
|
|
||||||
rpc::call_command("d.peer_exchange.set", rpc::call_command_value("protocol.pex"), rpc::make_target(download));
|
rpc::call_command("d.peer_exchange.set", torrent::runtime::client_config()->is_pex_enabled(), rpc::make_target(download));
|
||||||
|
|
||||||
torrent::resume_load_addresses(*download->download(), resumeObject);
|
torrent::resume_load_addresses(*download->download(), resumeObject);
|
||||||
torrent::resume_load_file_priorities(*download->download(), resumeObject);
|
torrent::resume_load_file_priorities(*download->download(), resumeObject);
|
||||||
|
|||||||
+6
-37
@@ -113,25 +113,20 @@ bool
|
|||||||
RpcManager::process(RPCType type, const char* in_buffer, uint32_t length, slot_response_callback callback) {
|
RpcManager::process(RPCType type, const char* in_buffer, uint32_t length, slot_response_callback callback) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case RPCType::XML:
|
case RPCType::XML:
|
||||||
// TODO: 'network.rpc.use_xmlrpc' should be a bool in RpcManager, not a command variable.
|
if (!m_xmlrpc.is_valid() || !m_use_xmlrpc) {
|
||||||
if (m_xmlrpc.is_valid() && rpc::call_command_value("network.rpc.use_xmlrpc")) {
|
|
||||||
return m_xmlrpc.process(in_buffer, length, callback);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
const std::string response = "<?xml version=\"1.0\"?><methodResponse><fault><value><struct><member><name>faultCode</name><value><i8>-501</i8></value></member><member><name>faultString</name><value><string>XML-RPC not supported</string></value></member></struct></value></fault></methodResponse>";
|
const std::string response = "<?xml version=\"1.0\"?><methodResponse><fault><value><struct><member><name>faultCode</name><value><i8>-501</i8></value></member><member><name>faultString</name><value><string>XML-RPC not supported</string></value></member></struct></value></fault></methodResponse>";
|
||||||
return callback(response.c_str(), response.size());
|
return callback(response.c_str(), response.size());
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
|
return m_xmlrpc.process(in_buffer, length, callback);
|
||||||
|
|
||||||
case RPCType::JSON:
|
case RPCType::JSON:
|
||||||
if (rpc::call_command_value("network.rpc.use_jsonrpc")) {
|
if (!m_use_jsonrpc) {
|
||||||
return m_jsonrpc.process(in_buffer, length, callback);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
const std::string response = "{\"jsonrpc\":\"2.0\",\"error\":{\"code\":-32601,\"message\":\"JSON-RPC not supported\"},\"id\":null}";
|
const std::string response = "{\"jsonrpc\":\"2.0\",\"error\":{\"code\":-32601,\"message\":\"JSON-RPC not supported\"},\"id\":null}";
|
||||||
return callback(response.c_str(), response.size());
|
return callback(response.c_str(), response.size());
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
|
return m_jsonrpc.process(in_buffer, length, callback);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw torrent::input_error("invalid parameters: unknown RPC type");
|
throw torrent::input_error("invalid parameters: unknown RPC type");
|
||||||
@@ -172,32 +167,6 @@ RpcManager::cleanup() {
|
|||||||
m_jsonrpc.cleanup();
|
m_jsonrpc.cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
|
||||||
RpcManager::is_type_enabled(RPCType type) const {
|
|
||||||
switch (type) {
|
|
||||||
case RPCType::XML:
|
|
||||||
return m_is_xmlrpc_enabled;
|
|
||||||
case RPCType::JSON:
|
|
||||||
return m_is_jsonrpc_enabled;
|
|
||||||
default:
|
|
||||||
throw torrent::input_error("invalid parameters: unknown RPC type");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
RpcManager::set_type_enabled(RPCType type, bool enabled) {
|
|
||||||
switch (type) {
|
|
||||||
case RPCType::XML:
|
|
||||||
m_is_xmlrpc_enabled = enabled;
|
|
||||||
break;
|
|
||||||
case RPCType::JSON:
|
|
||||||
m_is_jsonrpc_enabled = enabled;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw torrent::input_error("invalid parameters: unknown RPC type");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
RpcManager::insert_command(const char* name, const char* parm, const char* doc) {
|
RpcManager::insert_command(const char* name, const char* parm, const char* doc) {
|
||||||
m_xmlrpc.insert_command(name, parm, doc);
|
m_xmlrpc.insert_command(name, parm, doc);
|
||||||
|
|||||||
+13
-4
@@ -67,8 +67,11 @@ public:
|
|||||||
int dialect() { return m_xmlrpc.dialect(); }
|
int dialect() { return m_xmlrpc.dialect(); }
|
||||||
void set_dialect(int dialect) { m_xmlrpc.set_dialect(dialect); }
|
void set_dialect(int dialect) { m_xmlrpc.set_dialect(dialect); }
|
||||||
|
|
||||||
bool is_type_enabled(RPCType type) const;
|
bool use_xmlrpc() const;
|
||||||
void set_type_enabled(RPCType type, bool enabled);
|
void set_use_xmlrpc(bool v);
|
||||||
|
|
||||||
|
bool use_jsonrpc() const;
|
||||||
|
void set_use_jsonrpc(bool v);
|
||||||
|
|
||||||
bool process(RPCType type, const char* in_buffer, uint32_t length, slot_response_callback callback);
|
bool process(RPCType type, const char* in_buffer, uint32_t length, slot_response_callback callback);
|
||||||
bool process_untrusted(RPCType type, const char* in_buffer, uint32_t length, slot_response_callback callback);
|
bool process_untrusted(RPCType type, const char* in_buffer, uint32_t length, slot_response_callback callback);
|
||||||
@@ -102,8 +105,9 @@ private:
|
|||||||
JsonRpc m_jsonrpc;
|
JsonRpc m_jsonrpc;
|
||||||
|
|
||||||
bool m_handlers_initialized{};
|
bool m_handlers_initialized{};
|
||||||
bool m_is_jsonrpc_enabled{true};
|
|
||||||
bool m_is_xmlrpc_enabled{true};
|
bool m_use_jsonrpc{true};
|
||||||
|
bool m_use_xmlrpc{true};
|
||||||
|
|
||||||
std::atomic<bool> m_scgi_allow_compression{true};
|
std::atomic<bool> m_scgi_allow_compression{true};
|
||||||
std::atomic<unsigned int> m_scgi_min_compress_size{1000};
|
std::atomic<unsigned int> m_scgi_min_compress_size{1000};
|
||||||
@@ -116,6 +120,11 @@ private:
|
|||||||
|
|
||||||
extern RpcManager rpc;
|
extern RpcManager rpc;
|
||||||
|
|
||||||
|
inline bool RpcManager::use_xmlrpc() const { return m_use_xmlrpc; }
|
||||||
|
inline void RpcManager::set_use_xmlrpc(bool v) { m_use_xmlrpc = v; }
|
||||||
|
inline bool RpcManager::use_jsonrpc() const { return m_use_jsonrpc; }
|
||||||
|
inline void RpcManager::set_use_jsonrpc(bool v) { m_use_jsonrpc = v; }
|
||||||
|
|
||||||
} // namespace rpc
|
} // namespace rpc
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user