fix: use URL base path (#8077)

Xref: feat: Remote session RPC url path change option qt client (#7561)
This commit is contained in:
Charles Kerr
2026-01-07 15:46:47 -06:00
committed by GitHub
parent 0b55b39189
commit 0b6d02c186
8 changed files with 20 additions and 10 deletions

View File

@@ -474,7 +474,7 @@ auto constexpr MyStatic = std::array<std::string_view, TR_N_KEYS>{
"remote_session_password"sv, // qt app
"remote_session_port"sv, // qt app
"remote_session_requires_authentication"sv, // qt app
"remote_session_rpc_url_path"sv, // qt app
"remote_session_url_base_path"sv, // qt app
"remote_session_username"sv, // qt app
"removed"sv, // rpc
"rename-partial-files"sv, // rpc, tr_session::Settings

View File

@@ -487,7 +487,7 @@ enum // NOLINT(performance-enum-size)
TR_KEY_remote_session_password,
TR_KEY_remote_session_port,
TR_KEY_remote_session_requires_authentication,
TR_KEY_remote_session_rpc_url_path,
TR_KEY_remote_session_url_base_path,
TR_KEY_remote_session_username,
TR_KEY_removed,
TR_KEY_rename_partial_files_kebab_APICOMPAT,

View File

@@ -145,6 +145,10 @@ inline auto constexpr TrDefaultPeerLimitGlobal = 200U;
#define TR_DEFAULT_PEER_LIMIT_TORRENT_STR "50"
inline auto constexpr TrDefaultPeerLimitTorrent = 50U;
inline auto constexpr TrHttpServerDefaultBasePath = std::string_view{ TR_DEFAULT_RPC_URL_STR };
inline auto constexpr TrHttpServerRpcRelativePath = std::string_view{ "rpc" };
inline auto constexpr TrHttpServerWebRelativePath = std::string_view{ "web/" };
std::unique_lock<std::recursive_mutex> tr_sessionLock(tr_session const* session);
/**

View File

@@ -103,7 +103,7 @@ std::array<Prefs::PrefItem, Prefs::PREFS_COUNT> const Prefs::Items{
{ SESSION_REMOTE_PORT, TR_KEY_remote_session_port, QMetaType::Int },
{ SESSION_REMOTE_AUTH, TR_KEY_remote_session_requires_authentication, QMetaType::Bool },
{ SESSION_REMOTE_USERNAME, TR_KEY_remote_session_username, QMetaType::QString },
{ SESSION_REMOTE_RPC_URL_PATH, TR_KEY_remote_session_rpc_url_path, QMetaType::QString },
{ SESSION_REMOTE_URL_BASE_PATH, TR_KEY_remote_session_url_base_path, QMetaType::QString },
{ COMPLETE_SOUND_COMMAND, TR_KEY_torrent_complete_sound_command, QMetaType::QStringList },
{ COMPLETE_SOUND_ENABLED, TR_KEY_torrent_complete_sound_enabled, QMetaType::Bool },
{ READ_CLIPBOARD, TR_KEY_read_clipboard, QMetaType::Bool },
@@ -383,7 +383,7 @@ tr_variant Prefs::get_default_app_settings()
settings.try_emplace(TR_KEY_remote_session_password, tr_variant::unmanaged_string(""sv));
settings.try_emplace(TR_KEY_remote_session_port, TrDefaultRpcPort);
settings.try_emplace(TR_KEY_remote_session_requires_authentication, false);
settings.try_emplace(TR_KEY_remote_session_rpc_url_path, tr_variant::unmanaged_string(TR_DEFAULT_RPC_URL_STR "rpc"));
settings.try_emplace(TR_KEY_remote_session_url_base_path, tr_variant::unmanaged_string(TrHttpServerDefaultBasePath));
settings.try_emplace(TR_KEY_remote_session_username, tr_variant::unmanaged_string(""sv));
settings.try_emplace(TR_KEY_show_backup_trackers, false);
settings.try_emplace(TR_KEY_show_filterbar, true);

View File

@@ -66,7 +66,7 @@ public:
SESSION_REMOTE_PORT,
SESSION_REMOTE_AUTH,
SESSION_REMOTE_USERNAME,
SESSION_REMOTE_RPC_URL_PATH,
SESSION_REMOTE_URL_BASE_PATH,
COMPLETE_SOUND_COMMAND,
COMPLETE_SOUND_ENABLED,
READ_CLIPBOARD,

View File

@@ -347,7 +347,10 @@ void Session::start()
}
url.setHost(prefs_.get<QString>(Prefs::SESSION_REMOTE_HOST));
url.setPort(prefs_.get<int>(Prefs::SESSION_REMOTE_PORT));
url.setPath(prefs_.get<QString>(Prefs::SESSION_REMOTE_RPC_URL_PATH));
auto const root_path = prefs_.get<QString>(Prefs::SESSION_REMOTE_URL_BASE_PATH);
auto const relative_path = TrHttpServerRpcRelativePath;
url.setPath(root_path + QString::fromUtf8(relative_path.data(), relative_path.size()));
if (prefs_.get<bool>(Prefs::SESSION_REMOTE_AUTH))
{
@@ -1162,7 +1165,10 @@ void Session::launchWebInterface() const
if (session_ == nullptr) // remote session
{
url = rpc_.url();
url.setPath(QStringLiteral("/transmission/web/"));
auto const root_path = prefs_.get<QString>(Prefs::SESSION_REMOTE_URL_BASE_PATH);
auto const relative_path = TrHttpServerWebRelativePath;
url.setPath(root_path + QString::fromUtf8(relative_path.data(), relative_path.size()));
}
else // local session
{

View File

@@ -19,7 +19,7 @@ void SessionDialog::accept()
prefs_.set(Prefs::SESSION_REMOTE_AUTH, ui_.authCheck->isChecked());
prefs_.set(Prefs::SESSION_REMOTE_USERNAME, ui_.usernameEdit->text());
prefs_.set(Prefs::SESSION_REMOTE_PASSWORD, ui_.passwordEdit->text());
prefs_.set(Prefs::SESSION_REMOTE_RPC_URL_PATH, ui_.rpcEdit->text());
prefs_.set(Prefs::SESSION_REMOTE_URL_BASE_PATH, ui_.rpcEdit->text());
session_.restart();
BaseDialog::accept();
}
@@ -73,7 +73,7 @@ SessionDialog::SessionDialog(Session& session, Prefs& prefs, QWidget* parent)
ui_.passwordEdit->setText(prefs.get<QString>(Prefs::SESSION_REMOTE_PASSWORD));
auth_widgets_ << ui_.passwordLabel << ui_.passwordEdit;
ui_.rpcEdit->setText(prefs.get<QString>(Prefs::SESSION_REMOTE_RPC_URL_PATH));
ui_.rpcEdit->setText(prefs.get<QString>(Prefs::SESSION_REMOTE_URL_BASE_PATH));
remote_widgets_ << ui_.rpcLabel << ui_.rpcEdit;
resensitize();

View File

@@ -110,7 +110,7 @@
<item row="7" column="0">
<widget class="QLabel" name="rpcLabel">
<property name="text">
<string>RPC URL pa&amp;th:</string>
<string>Remote root pa&amp;th:</string>
</property>
<property name="buddy">
<cstring>rpcEdit</cstring>