diff --git a/libtransmission/quark.cc b/libtransmission/quark.cc index ba9d11bc6..92dd0c20f 100644 --- a/libtransmission/quark.cc +++ b/libtransmission/quark.cc @@ -280,6 +280,7 @@ auto constexpr MyStatic = std::array{ "remote-session-port"sv, "remote-session-requres-authentication"sv, "remote-session-username"sv, + "remote_session_rpc_url_path"sv, "removed"sv, "rename-partial-files"sv, "reqq"sv, diff --git a/libtransmission/quark.h b/libtransmission/quark.h index df1ea207f..726d096f2 100644 --- a/libtransmission/quark.h +++ b/libtransmission/quark.h @@ -282,6 +282,7 @@ enum // NOLINT(performance-enum-size) TR_KEY_remote_session_port, TR_KEY_remote_session_requres_authentication, TR_KEY_remote_session_username, + TR_KEY_remote_session_rpc_url_path, TR_KEY_removed, TR_KEY_rename_partial_files, TR_KEY_reqq, diff --git a/qt/Prefs.cc b/qt/Prefs.cc index 485733898..20a29cc8e 100644 --- a/qt/Prefs.cc +++ b/qt/Prefs.cc @@ -96,6 +96,7 @@ std::array const Prefs::Items{ { SESSION_REMOTE_PORT, TR_KEY_remote_session_port, QMetaType::Int }, { SESSION_REMOTE_AUTH, TR_KEY_remote_session_requres_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 }, { COMPLETE_SOUND_COMMAND, TR_KEY_torrent_complete_sound_command, QMetaType::QStringList }, { COMPLETE_SOUND_ENABLED, TR_KEY_torrent_complete_sound_enabled, QMetaType::Bool }, { USER_HAS_GIVEN_INFORMED_CONSENT, TR_KEY_user_has_given_informed_consent, QMetaType::Bool }, @@ -477,6 +478,7 @@ tr_variant Prefs::get_default_app_settings() settings.try_emplace(TR_KEY_statusbar_stats, StatsMode); settings.try_emplace(TR_KEY_watch_dir, download_dir); settings.try_emplace(TR_KEY_read_clipboard, false); + settings.try_emplace(TR_KEY_remote_session_rpc_url_path, TR_DEFAULT_RPC_URL_STR "rpc"); return tr_variant{ std::move(settings) }; } diff --git a/qt/Prefs.h b/qt/Prefs.h index d873b0e50..63f411ee8 100644 --- a/qt/Prefs.h +++ b/qt/Prefs.h @@ -64,6 +64,7 @@ public: SESSION_REMOTE_PORT, SESSION_REMOTE_AUTH, SESSION_REMOTE_USERNAME, + SESSION_REMOTE_RPC_URL_PATH, COMPLETE_SOUND_COMMAND, COMPLETE_SOUND_ENABLED, USER_HAS_GIVEN_INFORMED_CONSENT, diff --git a/qt/Session.cc b/qt/Session.cc index 16940e772..e799e6dd3 100644 --- a/qt/Session.cc +++ b/qt/Session.cc @@ -360,7 +360,7 @@ void Session::start() } url.setHost(prefs_.get(Prefs::SESSION_REMOTE_HOST)); url.setPort(prefs_.get(Prefs::SESSION_REMOTE_PORT)); - url.setPath(QStringLiteral("/transmission/rpc")); + url.setPath(prefs_.get(Prefs::SESSION_REMOTE_RPC_URL_PATH)); if (prefs_.get(Prefs::SESSION_REMOTE_AUTH)) { diff --git a/qt/SessionDialog.cc b/qt/SessionDialog.cc index 73a58d70e..6224cd414 100644 --- a/qt/SessionDialog.cc +++ b/qt/SessionDialog.cc @@ -19,6 +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()); session_.restart(); BaseDialog::accept(); } @@ -72,5 +73,8 @@ SessionDialog::SessionDialog(Session& session, Prefs& prefs, QWidget* parent) ui_.passwordEdit->setText(prefs.get(Prefs::SESSION_REMOTE_PASSWORD)); auth_widgets_ << ui_.passwordLabel << ui_.passwordEdit; + ui_.rpcEdit->setText(prefs.get(Prefs::SESSION_REMOTE_RPC_URL_PATH)); + remote_widgets_ << ui_.rpcLabel << ui_.rpcEdit; + resensitize(); } diff --git a/qt/SessionDialog.ui b/qt/SessionDialog.ui index 0130be7cf..9aa714921 100644 --- a/qt/SessionDialog.ui +++ b/qt/SessionDialog.ui @@ -7,7 +7,7 @@ 0 0 248 - 297 + 324 @@ -107,6 +107,19 @@ + + + + RPC URL pa&th: + + + rpcEdit + + + + + +