diff --git a/src/command_download.cc b/src/command_download.cc index 6844fb5a..2799a0db 100644 --- a/src/command_download.cc +++ b/src/command_download.cc @@ -378,18 +378,19 @@ t_multicall(core::Download* download, const torrent::Object::list_type& args) { // Add some pre-parsing of the commands, so we don't spend time // parsing and searching command map for every single call. - torrent::Object result_raw = torrent::Object::create_list(); - torrent::Object::list_type& result = result_raw.as_list(); + + auto result_raw = torrent::Object::create_list(); + auto& result = result_raw.as_list(); for (uint32_t idx = 0, last = download->tracker_list_size(); idx < last; idx++) { - auto& row = result.insert(result.end(), torrent::Object::create_list())->as_list(); + auto& row = result.insert(result.end(), torrent::Object::create_list())->as_list(); auto tracker = download->tracker_controller().at(idx); if (!tracker.is_valid()) continue; - for (torrent::Object::list_const_iterator cItr = ++args.begin(); cItr != args.end(); cItr++) { - const std::string& cmd = cItr->as_string(); + for (auto cItr = ++args.begin(); cItr != args.end(); cItr++) { + auto& cmd = cItr->as_string(); row.push_back(rpc::parse_command(rpc::make_target(&tracker), cmd.c_str(), cmd.c_str() + cmd.size()).first); } @@ -408,13 +409,13 @@ p_multicall(core::Download* download, const torrent::Object::list_type& args) { // Add some pre-parsing of the commands, so we don't spend time // parsing and searching command map for every single call. - torrent::Object resultRaw = torrent::Object::create_list(); - torrent::Object::list_type& result = resultRaw.as_list(); + auto resultRaw = torrent::Object::create_list(); + auto& result = resultRaw.as_list(); for (const auto& connection : *download->connection_list()) { torrent::Object::list_type& row = result.insert(result.end(), torrent::Object::create_list())->as_list(); - for (torrent::Object::list_const_iterator cItr = ++args.begin(); cItr != args.end(); cItr++) { + for (auto cItr = ++args.begin(); cItr != args.end(); cItr++) { const std::string& cmd = cItr->as_string(); row.push_back(rpc::parse_command(rpc::make_target(connection), cmd.c_str(), cmd.c_str() + cmd.size()).first); diff --git a/src/command_events.cc b/src/command_events.cc index 7e3d0388..8420cc5a 100644 --- a/src/command_events.cc +++ b/src/command_events.cc @@ -258,11 +258,12 @@ torrent::Object d_multicall_filtered(const torrent::Object::list_type& args) { if (args.size() < 2) throw torrent::input_error("d.multicall.filtered requires at least 2 arguments."); - torrent::Object::list_const_iterator arg = args.begin(); + + auto arg = args.begin(); // Find the given view - core::ViewManager* viewManager = control->view_manager(); - core::ViewManager::iterator view_itr = viewManager->find(arg->as_string().empty() ? "default" : arg->as_string()); + auto* viewManager = control->view_manager(); + auto view_itr = viewManager->find(arg->as_string().empty() ? "default" : arg->as_string()); if (view_itr == viewManager->end()) throw torrent::input_error("Could not find view '" + arg->as_string() + "'."); @@ -272,8 +273,9 @@ d_multicall_filtered(const torrent::Object::list_type& args) { (*view_itr)->filter_by(*++arg, dlist); // Generate result by iterating over all items - torrent::Object resultRaw = torrent::Object::create_list(); - torrent::Object::list_type& result = resultRaw.as_list(); + auto resultRaw = torrent::Object::create_list(); + auto& result = resultRaw.as_list(); + ++arg; // skip to first command for (const auto& item : dlist) { @@ -360,7 +362,6 @@ initialize_command_events() { // TODO: Deprecate d.multicall2. (6/2026) CMD2_ANY_LIST ("d.multicall", [](auto, auto& args) { return d_multicall(args); }); - CMD2_ANY_LIST ("d.multicall2", [](auto, auto& args) { return d_multicall(args); }); CMD2_ANY_LIST ("d.multicall.filtered", [](auto, auto& args) { return d_multicall_filtered(args); }); CMD2_ANY_LIST ("directory.watch.added", [](auto, auto& args) { return directory_watch_added(args); }); @@ -375,6 +376,5 @@ initialize_command_events() { rpc::rpc.mark_safe("close_low_diskspace.normal"); rpc::rpc.mark_safe("download_list"); rpc::rpc.mark_safe("d.multicall"); - rpc::rpc.mark_safe("d.multicall2"); rpc::rpc.mark_safe("d.multicall.filtered"); } diff --git a/src/command_network.cc b/src/command_network.cc index a5100168..af32461f 100644 --- a/src/command_network.cc +++ b/src/command_network.cc @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -220,98 +221,99 @@ initialize_command_network() { auto nw_config = torrent::runtime::network_config(); // Isn't port_open used? - CMD2_VAR_BOOL ("network.port_open", true); - CMD2_VAR_BOOL ("network.port_random", true); - CMD2_VAR_STRING ("network.port_range", "6881-6999"); + CMD_VAR_BOOL ("network.port_open", true); + CMD_VAR_BOOL ("network.port_random", true); + CMD_VAR_STRING ("network.port_range", "6881-6999"); - CMD2_ANY ("network.listen.port", [](auto, auto) { return torrent::runtime::listen_port(); }); - CMD2_ANY ("network.listen.backlog", [nw_config](auto, auto) { return nw_config->listen_backlog(); }); - CMD2_ANY_VALUE_V ("network.listen.backlog.set", [nw_config](auto, auto& value) { return nw_config->set_listen_backlog(value); }); + CMD_ANY ("network.listen.port", [](auto, auto) { return torrent::runtime::listen_port(); }); + CMD_ANY ("network.listen.backlog", [nw_config](auto, auto) { return nw_config->listen_backlog(); }); + CMD_ANY_VALUE_V ("network.listen.backlog.set", [nw_config](auto, auto& value) { return nw_config->set_listen_backlog(value); }); - CMD2_VAR_BOOL ("protocol.pex", true); - CMD2_ANY_LIST ("protocol.encryption.set", [](auto, auto& args) { return apply_encryption(args); }); + CMD_VAR_BOOL ("protocol.pex", true); + CMD_ANY_LIST ("protocol.encryption.set", [](auto, auto& args) { return apply_encryption(args); }); - CMD2_VAR_STRING ("protocol.connection.leech", "leech"); - CMD2_VAR_STRING ("protocol.connection.seed", "seed"); + CMD_VAR_STRING ("protocol.connection.leech", "leech"); + CMD_VAR_STRING ("protocol.connection.seed", "seed"); - CMD2_VAR_STRING ("protocol.choke_heuristics.up.leech", "upload_leech"); - CMD2_VAR_STRING ("protocol.choke_heuristics.up.seed", "upload_leech"); - CMD2_VAR_STRING ("protocol.choke_heuristics.down.leech", "download_leech"); - CMD2_VAR_STRING ("protocol.choke_heuristics.down.seed", "download_leech"); + CMD_VAR_STRING ("protocol.choke_heuristics.up.leech", "upload_leech"); + CMD_VAR_STRING ("protocol.choke_heuristics.up.seed", "upload_leech"); + CMD_VAR_STRING ("protocol.choke_heuristics.down.leech", "download_leech"); + CMD_VAR_STRING ("protocol.choke_heuristics.down.seed", "download_leech"); - CMD2_ANY ("network.http.cacert", [http_stack](auto, auto) { return http_stack->http_cacert(); }); - CMD2_ANY_STRING_V("network.http.cacert.set", [http_stack](auto, auto& str) { return http_stack->set_http_cacert(str); }); - CMD2_ANY ("network.http.capath", [http_stack](auto, auto) { return http_stack->http_capath(); }); - CMD2_ANY_STRING_V("network.http.capath.set", [http_stack](auto, auto& str) { return http_stack->set_http_capath(str); }); - CMD2_ANY ("network.http.dns_cache_timeout", [http_stack](auto, auto) { return http_stack->dns_timeout(); }); - CMD2_ANY_VALUE_V ("network.http.dns_cache_timeout.set", [http_stack](auto, auto& value) { return http_stack->set_dns_timeout(value); }); - CMD2_ANY ("network.http.current_open", [http_stack](auto, auto) { return http_stack->size(); }); - CMD2_ANY ("network.http.max_cache_connections", [http_stack](auto, auto) { return http_stack->max_cache_connections(); }); - CMD2_ANY_VALUE_V ("network.http.max_cache_connections.set", [http_stack](auto, auto& value) { return http_stack->set_max_cache_connections(value); }); - CMD2_ANY ("network.http.max_host_connections", [http_stack](auto, auto) { return http_stack->max_host_connections(); }); - CMD2_ANY_VALUE_V ("network.http.max_host_connections.set", [http_stack](auto, auto& value) { return http_stack->set_max_host_connections(value); }); - CMD2_ANY ("network.http.max_total_connections", [http_stack](auto, auto) { return http_stack->max_total_connections(); }); - CMD2_ANY ("network.http.proxy_address", [http_stack](auto, auto) { return http_stack->http_proxy(); }); - CMD2_ANY_STRING_V("network.http.proxy_address.set", [http_stack](auto, auto& str) { return http_stack->set_http_proxy(str); }); - CMD2_ANY ("network.http.ssl_verify_host", [http_stack](auto, auto) { return http_stack->ssl_verify_host(); }); - CMD2_ANY_VALUE_V ("network.http.ssl_verify_host.set", [http_stack](auto, auto& value) { return http_stack->set_ssl_verify_host(value); }); - CMD2_ANY ("network.http.ssl_verify_peer", [http_stack](auto, auto) { return http_stack->ssl_verify_peer(); }); - CMD2_ANY_VALUE_V ("network.http.ssl_verify_peer.set", [http_stack](auto, auto& value) { return http_stack->set_ssl_verify_peer(value); }); + CMD_ANY ("network.http.cacert", [http_stack](auto, auto) { return http_stack->http_cacert(); }); + CMD_ANY_STRING_V("network.http.cacert.set", [http_stack](auto, auto& str) { return http_stack->set_http_cacert(str); }); + CMD_ANY ("network.http.capath", [http_stack](auto, auto) { return http_stack->http_capath(); }); + CMD_ANY_STRING_V("network.http.capath.set", [http_stack](auto, auto& str) { return http_stack->set_http_capath(str); }); + CMD_ANY ("network.http.dns_cache_timeout", [http_stack](auto, auto) { return http_stack->dns_timeout(); }); + CMD_ANY_VALUE_V ("network.http.dns_cache_timeout.set", [http_stack](auto, auto& value) { return http_stack->set_dns_timeout(value); }); + CMD_ANY ("network.http.current_open", [http_stack](auto, auto) { return http_stack->size(); }); + CMD_ANY ("network.http.max_cache_connections", [http_stack](auto, auto) { return http_stack->max_cache_connections(); }); + CMD_ANY_VALUE_V ("network.http.max_cache_connections.set", [http_stack](auto, auto& value) { return http_stack->set_max_cache_connections(value); }); + CMD_ANY ("network.http.max_host_connections", [http_stack](auto, auto) { return http_stack->max_host_connections(); }); + CMD_ANY_VALUE_V ("network.http.max_host_connections.set", [http_stack](auto, auto& value) { return http_stack->set_max_host_connections(value); }); + CMD_ANY ("network.http.max_total_connections", [http_stack](auto, auto) { return http_stack->max_total_connections(); }); - CMD2_ANY ("network.send_buffer.size", [nw_config](auto, auto) { return nw_config->send_buffer_size(); }); - CMD2_ANY_VALUE_V ("network.send_buffer.size.set", [nw_config](auto, auto& value) { return nw_config->set_send_buffer_size(value); }); - CMD2_ANY ("network.receive_buffer.size", [nw_config](auto, auto) { return nw_config->receive_buffer_size(); }); - CMD2_ANY_VALUE_V ("network.receive_buffer.size.set", [nw_config](auto, auto& value) { return nw_config->set_receive_buffer_size(value); }); - CMD2_ANY_STRING ("network.tos.set", [](auto, auto& str) { return apply_tos(str); }); + CMD_ANY ("network.http.ssl_verify_host", [http_stack](auto, auto) { return http_stack->ssl_verify_host(); }); + CMD_ANY_VALUE_V ("network.http.ssl_verify_host.set", [http_stack](auto, auto& value) { return http_stack->set_ssl_verify_host(value); }); + CMD_ANY ("network.http.ssl_verify_peer", [http_stack](auto, auto) { return http_stack->ssl_verify_peer(); }); + CMD_ANY_VALUE_V ("network.http.ssl_verify_peer.set", [http_stack](auto, auto& value) { return http_stack->set_ssl_verify_peer(value); }); - CMD2_ANY ("network.bind_address", [nw_config](auto, auto) { return nw_config->bind_address_best_match_str(); }); - CMD2_ANY_STRING_V("network.bind_address.set", [nw_config](auto, auto& str) { return nw_config->set_bind_address_str(str); }); - CMD2_ANY ("network.bind_address.ipv4", [nw_config](auto, auto) { return nw_config->bind_inet_address_str(); }); - CMD2_ANY_STRING_V("network.bind_address.ipv4.set", [nw_config](auto, auto& str) { return nw_config->set_bind_inet_address_str(str); }); - CMD2_ANY ("network.bind_address.ipv6", [nw_config](auto, auto) { return nw_config->bind_inet6_address_str(); }); - CMD2_ANY_STRING_V("network.bind_address.ipv6.set", [nw_config](auto, auto& str) { return nw_config->set_bind_inet6_address_str(str); }); + CMD_ANY ("network.send_buffer.size", [nw_config](auto, auto) { return nw_config->send_buffer_size(); }); + CMD_ANY_VALUE_V ("network.send_buffer.size.set", [nw_config](auto, auto& value) { return nw_config->set_send_buffer_size(value); }); + CMD_ANY ("network.receive_buffer.size", [nw_config](auto, auto) { return nw_config->receive_buffer_size(); }); + CMD_ANY_VALUE_V ("network.receive_buffer.size.set", [nw_config](auto, auto& value) { return nw_config->set_receive_buffer_size(value); }); + CMD_ANY_STRING ("network.tos.set", [](auto, auto& str) { return apply_tos(str); }); - CMD2_ANY ("network.local_address", [nw_config](auto, auto) { return nw_config->local_address_best_match_str(); }); - CMD2_ANY_STRING_V("network.local_address.set", [nw_config](auto, auto& str) { return nw_config->set_local_address_str(str); }); - CMD2_ANY ("network.local_address.ipv4", [nw_config](auto, auto) { return nw_config->local_inet_address_str(); }); - CMD2_ANY_STRING_V("network.local_address.ipv4.set", [nw_config](auto, auto& str) { return nw_config->set_local_inet_address_str(str); }); - CMD2_ANY ("network.local_address.ipv6", [nw_config](auto, auto) { return nw_config->local_inet6_address_str(); }); - CMD2_ANY_STRING_V("network.local_address.ipv6.set", [nw_config](auto, auto& str) { return nw_config->set_local_inet6_address_str(str); }); + CMD_ANY ("network.bind_address", [nw_config](auto, auto) { return nw_config->bind_address_best_match_str(); }); + CMD_ANY_STRING_V("network.bind_address.set", [nw_config](auto, auto& str) { return nw_config->set_bind_address_str(str); }); + CMD_ANY ("network.bind_address.ipv4", [nw_config](auto, auto) { return nw_config->bind_inet_address_str(); }); + CMD_ANY_STRING_V("network.bind_address.ipv4.set", [nw_config](auto, auto& str) { return nw_config->set_bind_inet_address_str(str); }); + CMD_ANY ("network.bind_address.ipv6", [nw_config](auto, auto) { return nw_config->bind_inet6_address_str(); }); + CMD_ANY_STRING_V("network.bind_address.ipv6.set", [nw_config](auto, auto& str) { return nw_config->set_bind_inet6_address_str(str); }); - CMD2_ANY ("network.proxy_address", [nw_config](auto, auto) { return nw_config->proxy_address_str(); }); - CMD2_ANY_STRING_V("network.proxy_address.set", [](auto, auto& str) { return control->core()->set_proxy_address(str); }); + CMD_ANY ("network.local_address", [nw_config](auto, auto) { return nw_config->local_address_best_match_str(); }); + CMD_ANY_STRING_V("network.local_address.set", [nw_config](auto, auto& str) { return nw_config->set_local_address_str(str); }); + CMD_ANY ("network.local_address.ipv4", [nw_config](auto, auto) { return nw_config->local_inet_address_str(); }); + CMD_ANY_STRING_V("network.local_address.ipv4.set", [nw_config](auto, auto& str) { return nw_config->set_local_inet_address_str(str); }); + CMD_ANY ("network.local_address.ipv6", [nw_config](auto, auto) { return nw_config->local_inet6_address_str(); }); + CMD_ANY_STRING_V("network.local_address.ipv6.set", [nw_config](auto, auto& str) { return nw_config->set_local_inet6_address_str(str); }); - CMD2_ANY ("network.open_files", [file_manager](auto, auto) { return file_manager->open_files(); }); - CMD2_ANY ("network.max_open_files", [file_manager](auto, auto) { return file_manager->max_open_files(); }); - CMD2_ANY ("network.total_handshakes", [](auto, auto) { return torrent::runtime::total_handshakes(); }); + CMD_ANY ("network.proxy.global", [](auto, auto) { return torrent::runtime::proxy_manager()->proxy_url(); }); + CMD_ANY_STRING_V("network.proxy.global.set", [](auto, auto& str) { return torrent::runtime::proxy_manager()->set_proxy_url(str); }); + CMD_ANY ("network.proxy.http", [](auto, auto) { return torrent::runtime::proxy_manager()->http_proxy_url(); }); + CMD_ANY_STRING_V("network.proxy.http.set", [](auto, auto& str) { return torrent::runtime::proxy_manager()->set_http_proxy_url(str); }); - CMD2_ANY_STRING ("network.scgi.open_port", std::bind(&apply_scgi, std::placeholders::_2, 1)); - CMD2_ANY_STRING ("network.scgi.open_local", std::bind(&apply_scgi, std::placeholders::_2, 2)); - CMD2_VAR_BOOL ("network.scgi.dont_route", false); - CMD2_ANY ("network.scgi.open_systemd", [](auto, auto) { return apply_scgi_systemd(); }); + CMD_ANY ("network.open_files", [file_manager](auto, auto) { return file_manager->open_files(); }); + CMD_ANY ("network.max_open_files", [file_manager](auto, auto) { return file_manager->max_open_files(); }); + CMD_ANY ("network.total_handshakes", [](auto, auto) { return torrent::runtime::total_handshakes(); }); - CMD2_ANY ("network.scgi.use_gzip", [](const auto&, const auto&) { return rpc::rpc.scgi_allow_compression(); }); - CMD2_ANY_VALUE_V ("network.scgi.use_gzip.set", [](const auto&, const auto& arg) { return rpc::rpc.set_scgi_allow_compression(arg); }); - CMD2_ANY ("network.scgi.gzip.min_size", [](const auto&, const auto&) { return rpc::rpc.scgi_min_compress_size(); }); - CMD2_ANY_VALUE_V ("network.scgi.gzip.min_size.set", [](const auto&, const auto& arg) { return rpc::rpc.set_scgi_min_compress_size(arg); }); + CMD_ANY_STRING ("network.scgi.open_port", [](auto, auto& arg) { return apply_scgi(arg, 1); }); + CMD_ANY_STRING ("network.scgi.open_local", [](auto, auto& arg) { return apply_scgi(arg, 2); }); + CMD_VAR_BOOL ("network.scgi.dont_route", false); + CMD_ANY ("network.scgi.open_systemd", [](auto, auto) { return apply_scgi_systemd(); }); - CMD2_ANY_STRING ("network.xmlrpc.dialect.set", [](const auto&, const auto& arg) { return apply_xmlrpc_dialect(arg); }) - CMD2_ANY ("network.xmlrpc.size_limit", [](const auto&, const auto&) { return rpc::rpc.size_limit(); }); - CMD2_ANY_VALUE_V ("network.xmlrpc.size_limit.set", [](const auto&, const auto& arg) { return rpc::rpc.set_size_limit(arg); }); + CMD_ANY ("network.scgi.use_gzip", [](auto, auto) { return rpc::rpc.scgi_allow_compression(); }); + CMD_ANY_VALUE_V ("network.scgi.use_gzip.set", [](auto, auto& arg) { return rpc::rpc.set_scgi_allow_compression(arg); }); + CMD_ANY ("network.scgi.gzip.min_size", [](auto, auto) { return rpc::rpc.scgi_min_compress_size(); }); + CMD_ANY_VALUE_V ("network.scgi.gzip.min_size.set", [](auto, auto& arg) { return rpc::rpc.set_scgi_min_compress_size(arg); }); - CMD2_VAR_BOOL ("network.rpc.use_xmlrpc", true); - CMD2_VAR_BOOL ("network.rpc.use_jsonrpc", true); + CMD_ANY_STRING ("network.xmlrpc.dialect.set", [](auto, auto& arg) { return apply_xmlrpc_dialect(arg); }) + 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); }); - CMD2_ANY ("network.block.ipv4", [nw_config](auto, auto) { return nw_config->is_block_ipv4(); }); - CMD2_ANY_VALUE_V ("network.block.ipv4.set", [nw_config](auto, auto& value) { return nw_config->set_block_ipv4(value); }); - CMD2_ANY ("network.block.ipv6", [nw_config](auto, auto) { return nw_config->is_block_ipv6(); }); - CMD2_ANY_VALUE_V ("network.block.ipv6.set", [nw_config](auto, auto& value) { return nw_config->set_block_ipv6(value); }); - CMD2_ANY ("network.block.ipv4in6", [nw_config](auto, auto) { return nw_config->is_block_ipv4in6(); }); - CMD2_ANY_VALUE_V ("network.block.ipv4in6.set", [nw_config](auto, auto& value) { return nw_config->set_block_ipv4in6(value); }); - CMD2_ANY ("network.block.outgoing", [nw_config](auto, auto) { return nw_config->is_block_outgoing(); }); - CMD2_ANY_VALUE_V ("network.block.outgoing.set", [nw_config](auto, auto& value) { return nw_config->set_block_outgoing(value); }); - CMD2_ANY ("network.prefer.ipv6", [nw_config](auto, auto) { return nw_config->is_prefer_ipv6(); }); - CMD2_ANY_VALUE_V ("network.prefer.ipv6.set", [nw_config](auto, auto& value) { return nw_config->set_prefer_ipv6(value); }); + CMD_VAR_BOOL ("network.rpc.use_xmlrpc", true); + CMD_VAR_BOOL ("network.rpc.use_jsonrpc", true); + + 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 ("network.block.ipv6", [nw_config](auto, auto) { return nw_config->is_block_ipv6(); }); + CMD_ANY_VALUE_V ("network.block.ipv6.set", [nw_config](auto, auto& value) { return nw_config->set_block_ipv6(value); }); + CMD_ANY ("network.block.ipv4in6", [nw_config](auto, auto) { return nw_config->is_block_ipv4in6(); }); + CMD_ANY_VALUE_V ("network.block.ipv4in6.set", [nw_config](auto, auto& value) { return nw_config->set_block_ipv4in6(value); }); + CMD_ANY ("network.block.outgoing", [nw_config](auto, auto) { return nw_config->is_block_outgoing(); }); + CMD_ANY_VALUE_V ("network.block.outgoing.set", [nw_config](auto, auto& value) { return nw_config->set_block_outgoing(value); }); + CMD_ANY ("network.prefer.ipv6", [nw_config](auto, auto) { return nw_config->is_prefer_ipv6(); }); + CMD_ANY_VALUE_V ("network.prefer.ipv6.set", [nw_config](auto, auto& value) { return nw_config->set_prefer_ipv6(value); }); rpc::rpc.mark_safe("network.port_open"); rpc::rpc.mark_safe("network.port_random"); @@ -334,11 +336,13 @@ initialize_command_network() { rpc::rpc.mark_safe("network.local_address"); rpc::rpc.mark_safe("network.xmlrpc.size_limit"); rpc::rpc.mark_safe("network.open_sockets"); + rpc::rpc.mark_safe("network.http.cacert"); rpc::rpc.mark_safe("network.http.capath"); - rpc::rpc.mark_safe("network.http.proxy_address"); - rpc::rpc.mark_safe("network.proxy_address"); + rpc::rpc.mark_safe("network.proxy.global"); + rpc::rpc.mark_safe("network.proxy.http"); rpc::rpc.mark_safe("network.scgi.dont_route"); + rpc::rpc.mark_safe("protocol.pex"); rpc::rpc.mark_safe("network.rpc.use_xmlrpc"); diff --git a/src/core/manager.cc b/src/core/manager.cc index f756093c..8325f8be 100644 --- a/src/core/manager.cc +++ b/src/core/manager.cc @@ -194,37 +194,6 @@ Manager::listen_open() { throw torrent::input_error("Could not open/bind port for listening: " + std::string(std::strerror(errno))); } -void -Manager::set_proxy_address(const std::string& addr) { - int port; - torrent::sa_unique_ptr sa; - - std::string buf(addr.length() + 1, '\0'); - - int err = std::sscanf(addr.c_str(), "%[^:]:%i", buf.data(), &port); - - if (err <= 0) - throw torrent::input_error("Could not parse proxy address."); - - if (err == 1) - port = 80; - - try { - sa = torrent::sa_copy(torrent::sa_lookup_address(buf, AF_INET).get()); - - } catch (torrent::input_error& e) { - throw torrent::input_error("Could not resolve proxy address: " + std::string(e.what())); - } - - try { - torrent::sa_set_port(sa.get(), port); - torrent::runtime::network_config()->set_proxy_address(sa.get()); - - } catch (torrent::input_error& e) { - throw e; - } -} - void Manager::receive_http_failed(std::string msg) { push_log_std("Http download error: \"" + msg + "\""); diff --git a/src/core/manager.h b/src/core/manager.h index 5b08ebdc..85a8a43d 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -57,8 +57,6 @@ public: void listen_open(); - void set_proxy_address(const std::string& addr); - const std::string& magnet_path(); void set_magnet_path(const std::string& path); diff --git a/src/main.cc b/src/main.cc index 18f976c8..8c0aab14 100644 --- a/src/main.cc +++ b/src/main.cc @@ -358,11 +358,16 @@ main(int argc, char** argv) { // TODO: Deprecate these at some point a while after 1.1 release. - CMD_REDIRECT("network.open_sockets", "system.sockets.size"); - CMD_REDIRECT("network.max_open_sockets", "system.sockets.max_size"); - CMD_REDIRECT("network.max_open_sockets.set", "system.sockets.max_size.set"); + CMD_REDIRECT("d.multicall2", "d.multicall"); + CMD_REDIRECT("network.open_sockets", "system.sockets.size"); + CMD_REDIRECT("network.max_open_sockets", "system.sockets.max_size"); + CMD_REDIRECT("network.max_open_sockets.set", "system.sockets.max_size.set"); + CMD_REDIRECT("network.http.proxy_address", "network.proxy.http"); + CMD_REDIRECT("network.http.proxy_address.set", "network.proxy.http.set"); + rpc::rpc.mark_safe("d.multicall2"); rpc::rpc.mark_safe("network.max_open_sockets"); + rpc::rpc.mark_safe("network.http.proxy_address"); CMD2_ANY_VALUE_V("network.http.max_total_connections.set", [](auto, auto) { lt_log_print(torrent::LOG_WARN, "network.http.max_total_connections.set is deprecated, use system.sockets.http.min_alloc.set instead."); @@ -407,11 +412,6 @@ main(int argc, char** argv) { // Users should check their setups to see if they need to modify their use of these options. CMD_REDIRECT("max_memory_usage", "pieces.memory.max.set"); - CMD_REDIRECT("encoding_list", "encoding.add"); - - CMD_ANY_STRING_V("encoding.add", [](auto, auto) { - lt_log_print(torrent::LOG_WARN, "The 'encoding.add' command is deprecated and does nothing."); - }); CMD_ANY_LIST("throttle.ip", []( auto, auto) { lt_log_print(torrent::LOG_WARN, "The 'throttle.ip' command is deprecated and does nothing."); diff --git a/src/rpc/command.cc b/src/rpc/command.cc index b7ad8eb0..0bd7da79 100644 --- a/src/rpc/command.cc +++ b/src/rpc/command.cc @@ -6,31 +6,31 @@ #include "command.h" #define COMMAND_BASE_TEMPLATE_DEFINE(func_name) \ -template const torrent::Object func_name(command_base* rawCommand, target_type target, const torrent::Object& args); \ -template const torrent::Object func_name(command_base* rawCommand, target_type target, const torrent::Object& args); \ -template const torrent::Object func_name(command_base* rawCommand, target_type target, const torrent::Object& args); \ -template const torrent::Object func_name(command_base* rawCommand, target_type target, const torrent::Object& args); \ -template const torrent::Object func_name(command_base* rawCommand, target_type target, const torrent::Object& args); \ -template const torrent::Object func_name(command_base* rawCommand, target_type target, const torrent::Object& args); +template const torrent::Object func_name(command_base* command_raw, target_type target, const torrent::Object& args); \ +template const torrent::Object func_name(command_base* command_raw, target_type target, const torrent::Object& args); \ +template const torrent::Object func_name(command_base* command_raw, target_type target, const torrent::Object& args); \ +template const torrent::Object func_name(command_base* command_raw, target_type target, const torrent::Object& args); \ +template const torrent::Object func_name(command_base* command_raw, target_type target, const torrent::Object& args); \ +template const torrent::Object func_name(command_base* command_raw, target_type target, const torrent::Object& args); namespace rpc { template const torrent::Object -command_base_call(command_base* rawCommand, target_type target, const torrent::Object& args) { +command_base_call(command_base* command_raw, target_type target, const torrent::Object& args) { if (!is_target_compatible(target)) - throw torrent::input_error("Target of wrong type to command."); + throw torrent::input_error("Target of wrong type to generic command."); - return command_base::_call::type, T>(rawCommand, target, args); + return command_base::_call::type, T>(command_raw, target, args); } COMMAND_BASE_TEMPLATE_DEFINE(command_base_call); template const torrent::Object -command_base_call_value_base(command_base* rawCommand, target_type target, const torrent::Object& rawArgs, int base, int unit) { +command_base_call_value_base(command_base* command_raw, target_type target, const torrent::Object& args_raw, int base, int unit) { if (!is_target_compatible(target)) - throw torrent::input_error("Target of wrong type to command."); + throw torrent::input_error("Target of wrong type to value command."); - const torrent::Object& arg = convert_to_single_argument(rawArgs); + auto& arg = convert_to_single_argument(args_raw); if (arg.type() == torrent::Object::TYPE_STRING) { torrent::Object::value_type val; @@ -38,55 +38,55 @@ command_base_call_value_base(command_base* rawCommand, target_type target, const if (!parse_whole_value_nothrow(arg.as_string().c_str(), &val, base, unit)) throw torrent::input_error("Not a value."); - return command_base::_call::type, T>(rawCommand, target, val); + return command_base::_call::type, T>(command_raw, target, val); } - return command_base::_call::type, T>(rawCommand, target, unit * arg.as_value()); + return command_base::_call::type, T>(command_raw, target, unit * arg.as_value()); } template const torrent::Object -command_base_call_value(command_base* rawCommand, target_type target, const torrent::Object& rawArgs) { - return command_base_call_value_base(rawCommand, target, rawArgs, 0, 1); +command_base_call_value(command_base* command_raw, target_type target, const torrent::Object& args_raw) { + return command_base_call_value_base(command_raw, target, args_raw, 0, 1); } template const torrent::Object -command_base_call_value_kb(command_base* rawCommand, target_type target, const torrent::Object& rawArgs) { - return command_base_call_value_base(rawCommand, target, rawArgs, 0, 1024); +command_base_call_value_kb(command_base* command_raw, target_type target, const torrent::Object& args_raw) { + return command_base_call_value_base(command_raw, target, args_raw, 0, 1024); } COMMAND_BASE_TEMPLATE_DEFINE(command_base_call_value); COMMAND_BASE_TEMPLATE_DEFINE(command_base_call_value_kb); template const torrent::Object -command_base_call_string(command_base* rawCommand, target_type target, const torrent::Object& rawArgs) { +command_base_call_string(command_base* command_raw, target_type target, const torrent::Object& args_raw) { if (!is_target_compatible(target)) - throw torrent::input_error("Target of wrong type to command."); + throw torrent::input_error("Target of wrong type to string command."); - const torrent::Object& arg = convert_to_single_argument(rawArgs); + auto& arg = convert_to_single_argument(args_raw); if (arg.type() == torrent::Object::TYPE_RAW_STRING) - return command_base::_call::type, T>(rawCommand, target, arg.as_raw_string().as_string()); + return command_base::_call::type, T>(command_raw, target, arg.as_raw_string().as_string()); - return command_base::_call::type, T>(rawCommand, target, arg.as_string()); + return command_base::_call::type, T>(command_raw, target, arg.as_string()); } COMMAND_BASE_TEMPLATE_DEFINE(command_base_call_string); template const torrent::Object -command_base_call_list(command_base* rawCommand, target_type target, const torrent::Object& rawArgs) { +command_base_call_list(command_base* command_raw, target_type target, const torrent::Object& args_raw) { if (!is_target_compatible(target)) - throw torrent::input_error("Target of wrong type to command."); + throw torrent::input_error("Target of wrong type to list command."); - if (rawArgs.type() != torrent::Object::TYPE_LIST) { + if (args_raw.type() != torrent::Object::TYPE_LIST) { torrent::Object::list_type arg; - - if (!rawArgs.is_empty()) - arg.push_back(rawArgs); - return command_base::_call::type, T>(rawCommand, target, arg); + if (!args_raw.is_empty()) + arg.push_back(args_raw); + + return command_base::_call::type, T>(command_raw, target, arg); } - return command_base::_call::type, T>(rawCommand, target, rawArgs.as_list()); + return command_base::_call::type, T>(command_raw, target, args_raw.as_list()); } COMMAND_BASE_TEMPLATE_DEFINE(command_base_call_list);