Jari Sundell
f6b3ad0efd
Minor cleanup of pex and other commands.
2026-07-15 19:40:13 +09:00
Jari Sundell
5d350f0bcc
Use new encryption modes.
2026-07-14 17:34:14 +09:00
Jari Sundell
86fa0d195f
Changing listen/dht port changes the listening/dht ports.
2026-07-12 17:19:33 +09:00
Jari Sundell
23921cc97c
Added new ProxyManager and support for socks5 for peer connections.
2026-06-30 19:55:45 +09:00
Jari Sundell
59fe93515e
Only enable SIGCHLD on main thread.
2026-06-21 23:05:16 +09:00
Jari Sundell
dbe7997131
Use posix_spawn for execute commands.
2026-06-18 01:01:52 +09:00
Jari Sundell
d08d7de20d
Added "system.sockets.<category>.{size,max_size}" commands.
2026-06-15 18:38:54 +09:00
Jari Sundell
fd69baa2c1
Removed encoding name/path attribute handling.
2026-06-13 18:37:19 +09:00
Trim21
3d7e6cb077
Added per-category allocation limits to SocketManager by @trim21
2026-05-27 18:16:02 +09:00
Jari Sundell
797a194abc
Cleaned up torrent header files.
2026-05-14 19:24:38 +09:00
Jari Sundell
71ac256cb5
Moved socket counter to runtime::SocketManager.
2026-05-10 02:11:35 +09:00
Jari Sundell
f05b48e228
Moved NetworkConfig to runtime.
2026-05-05 16:17:24 +09:00
Jari Sundell
b7a21b1e9d
Added support for gzip accepted_encoding in scgi headers.
2026-04-12 22:19:49 +09:00
Jari Sundell
5a4ba8bc32
Removed deprecated rak header files.
2026-04-10 22:04:02 +09:00
Xirvik
08a907b547
Whitelist additional read-only getters for untrusted connections
...
ruTorrent queries these commands for its settings and status pages.
They are all read-only getters with no side effects, safe to expose
for untrusted SCGI connections.
Tested against ruTorrent with both httprpc and multirpc plugins on
servers with active torrents — all modes (list, settings, totals,
open connections) work with zero blocked commands.
2026-03-30 11:55:24 +02:00
zqmfb
a0b8702895
Address additional review feedback
2026-03-27 17:48:13 +01:00
zqmfb
ad3c31862e
Further clarify systemd socket selection
2026-03-27 17:48:13 +01:00
zqmfb
8d50aee96f
Add network.scgi.open_systemd command unconditionally
2026-03-27 17:48:13 +01:00
zqmfb
71bb51c3fd
Clarify systemd socket selection logic
2026-03-27 17:48:13 +01:00
zqmfb
63ea08bde6
Add support for SCGI systemd socket activation
...
Add a new command, `network.scgi.open_systemd`, that binds to a file
descriptor passed in via systemd socket activation.
2026-03-27 17:48:13 +01:00
Xirvik
d935e0ffe9
Address review feedback: explicit mark_safe whitelist and rpc trust flow
2026-03-23 15:11:07 +01:00
Xirvik
ba239bc8c5
Address code review: fix setter exposure and narrow catch blocks
...
1. network.rpc.use_xmlrpc and network.rpc.use_jsonrpc: change from
CMD2_VAR_BOOL_U (getter+setter both safe) to CMD2_VAR_BOOL_U_GET
(getter safe, setter trusted-only). Untrusted callers could
previously disable RPC transports entirely.
2. Remove broad catch(std::exception&) and catch(...) from xmlrpc_c.cc
that masked real defects and altered fault semantics.
3. Revert SCGI callback catch-all to re-throw instead of swallowing
exceptions with a generic error response.
2026-03-23 15:11:07 +01:00
Xirvik
ea16276773
Fix crash on untrusted XMLRPC connections
...
Root cause: network.rpc.use_xmlrpc and network.rpc.use_jsonrpc were not
marked as untrusted-safe, but RpcManager::process() calls them before
dispatching to the protocol handler. When an untrusted request arrived,
call_command() threw untrusted_error for these gatekeepers, which escaped
the callback_interrupt_pollling callback and crashed rtorrent.
Fix: Mark network.rpc.use_xmlrpc/jsonrpc as safe (CMD2_VAR_BOOL_U).
Also harden exception safety:
- SCGI callback catch-all now sends a generic error response instead of
re-throwing, since the callback infrastructure may not support
exception propagation.
- xmlrpc_c.cc now has catch(std::exception&) and catch(...) safety nets
after the specific exception handlers.
2026-03-23 15:11:07 +01:00
Xirvik
f767053297
Mark safe commands with flag_untrusted_safe for whitelist enforcement
...
Annotate all commands that web UIs (ruTorrent) need for normal torrent
management with _U macro variants, which set flag_untrusted_safe.
Commands not marked are blocked by default for untrusted connections.
Safe commands include:
- d.* download getters, state, priorities, custom fields, start/stop
- f.* file getters, priority control
- p.* peer getters, disconnect, ban/snub
- t.* tracker getters, enable/disable
- throttle.* rate getters/setters, peer limits
- network.* read-only queries (getters safe, setters blocked)
- view.list, view.size, view.filter_all, ui.current_view
- load.*, download_list, d.multicall2, d.multicall.filtered
- convert.*, branch/if/and/or/not/cat/value/print
- system.* version/time/status queries (read-only)
- choke_group.* read-only queries
- method.has_key, method.const, method.list_keys, method.get, strings.*
- group.*.view, group.*.ratio.min/max/upload (dynamic, via flag propagation)
Blocked by default (not marked):
- execute*, method.insert/set/redirect, schedule*, import
- log.*, file.append, network.scgi.open_*, view.filter/sort/event_*
- system.shutdown, system.env, group.insert, choke_group.insert
- All user-defined commands (via method.insert)
2026-03-23 15:11:07 +01:00
Jari Sundell
9489793dcb
Created torrent/runtime include directory.
2026-01-27 08:21:05 +09:00
Jari Sundell
b233e24465
Deprecated rak::path_expand.
2026-01-08 23:27:53 +09:00
Jari Sundell
5dbb0020dc
Replace ThreadWorker with scgi::ThreadScgi.
2025-12-18 07:43:43 +09:00
Jari Sundell
8f644e65dd
Use separate thread for saving session data.
2025-12-18 06:42:44 +09:00
Jari Sundell
84bfc491ba
Added dual listening ports when both IPv4 and IPv6 are bound.
2025-11-01 07:24:31 +09:00
Jari Sundell
891a6ba69d
Added local address commands for inet/inet6.
2025-10-13 19:09:20 +09:00
Jari Sundell
2be730e4b3
Reuse HTTP connections and added totale/cached connection limits.
2025-10-09 21:15:24 +09:00
Jari Sundell
bf53700f97
Added 'network.bind_address.ipv{4,6}.set' commands.
2025-10-04 20:24:08 +09:00
Jari Sundell
ea2347734b
Added network.block.outgoing.
2025-09-23 17:56:51 +09:00
Jari Sundell
5206e6cb88
Moved various socket options to NetworkConfig.
2025-09-22 06:01:18 +09:00
Jari Sundell
e7a80c7b18
Remove deprecated rak::socket_address.
2025-09-17 21:44:54 +09:00
Jari Sundell
677f8f45c8
Improved listen/dht port handling and added 'dht.override_port.set' command.
2025-09-13 17:51:04 +09:00
Jari Sundell
ba1ba3096a
Added NetworkConfig.
2025-09-12 06:09:24 +09:00
Jari Sundell
d35a8d68e6
Fixed uninitialized rpc slots when SCGI is not used.
2025-08-25 15:56:15 +09:00
Jari Sundell
f1a4c13c41
Added network.block.ipv4in6.set command.
2025-07-05 22:31:52 +09:00
Rosen Penev
0948b5f86a
clang-tidy: convert loops to range based
...
Signed-off-by: Rosen Penev <rosenp@gmail.com >
2025-06-19 09:57:21 +02:00
Jari Sundell
6c25e64c26
Moved curl to libtorrent.
2025-06-05 20:29:43 +09:00
Jari Sundell
de6c48ca3f
Moved TrackerList and TrackerController out of the public API.
2025-05-28 17:11:29 +09:00
Jari Sundell
4c63cee7a2
Cleaned up Poll code and included missing rtorrent.lua in installer.
2025-05-03 21:07:16 +09:00
Jari Sundell
3a227c190f
Added system.files.advise_random.set command.
2025-03-28 19:21:25 +09:00
Jari Sundell
0adfc17335
Compatibility fixes with thread-safe list tracker changes.
2025-03-11 20:38:04 +09:00
rakshasa
37a5b7bccb
Moved torrent::Tracker to torrent::tracker::Tracker.
2025-02-27 19:24:35 +01:00
kannibalox
9f48226663
Add JSON-RPC capability
...
Inline nlohmann/json for the JSON parsing itself, and handle requests
with the same SCGI interface as XML-RPC.
Based off the work in https://github.com/jesec/rtorrent
2025-01-20 12:31:04 +01:00
kannibalox
87c6422052
Allow using vendored tinyxml2 for XMLRPC
...
By default, builds will still not have XMLRPC enabled at all and the
configure flag `--with-xmlrpc-tinyxml2` must be specified. If both
xmlrpc-c and tinyxml2 are specified, xmlrpc-c takes precedence.
Basic benchmarks indicate tinyxml2 is 2x faster for small
requests/responses, and that only increases as response sizes get
larger.
2024-11-25 18:44:28 +09:00
kannibalox
34de2b4ac9
Convert CommandMap to use std::string instead of char*
...
This allows it to own its keys and clean them up automatically on
destruction.
2024-11-13 19:22:34 +09:00
rakshasa
d15d93be88
Added ipv6 options.
2021-06-21 21:14:48 +09:00