summarylogtreecommitdiffstats
path: root/transmission-qt-ssl.patch
blob: 95df768cf459f2e9e441be4b2271c7038c7b5302 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
diff --git a/libtransmission/quark.c b/libtransmission/quark.c
index a1cfd9b5c..c74756859 100644
--- a/libtransmission/quark.c
+++ b/libtransmission/quark.c
@@ -291,6 +291,7 @@ static struct tr_key_struct const my_static[] =
     Q("remote-session-password"),
     Q("remote-session-port"),
     Q("remote-session-requres-authentication"),
+    Q("remote-session-use-ssl"),
     Q("remote-session-username"),
     Q("removed"),
     Q("rename-partial-files"),
diff --git a/libtransmission/quark.h b/libtransmission/quark.h
index 823543f90..d8c0d8165 100644
--- a/libtransmission/quark.h
+++ b/libtransmission/quark.h
@@ -290,6 +290,7 @@ enum
     TR_KEY_remote_session_password,
     TR_KEY_remote_session_port,
     TR_KEY_remote_session_requres_authentication,
+    TR_KEY_remote_session_use_ssl,
     TR_KEY_remote_session_username,
     TR_KEY_removed,
     TR_KEY_rename_partial_files,
diff --git a/qt/Prefs.cc b/qt/Prefs.cc
index b364b19da..28c117e59 100644
--- a/qt/Prefs.cc
+++ b/qt/Prefs.cc
@@ -66,6 +66,7 @@ std::array<Prefs::PrefItem, Prefs::PREFS_COUNT> const Prefs::Items
     { SESSION_REMOTE_HOST, TR_KEY_remote_session_host, QVariant::String },
     { SESSION_REMOTE_PORT, TR_KEY_remote_session_port, QVariant::Int },
     { SESSION_REMOTE_AUTH, TR_KEY_remote_session_requres_authentication, QVariant::Bool },
+    { SESSION_REMOTE_USE_SSL, TR_KEY_remote_session_use_ssl, QVariant::Bool },
     { SESSION_REMOTE_USERNAME, TR_KEY_remote_session_username, QVariant::String },
     { SESSION_REMOTE_PASSWORD, TR_KEY_remote_session_password, QVariant::String },
     { COMPLETE_SOUND_COMMAND, TR_KEY_torrent_complete_sound_command, QVariant::String },
@@ -385,13 +386,14 @@ void Prefs::initDefaults(tr_variant* d) const
 
     auto const download_dir = std::string_view { tr_getDefaultDownloadDir() };
 
-    tr_variantDictReserve(d, 38);
+    tr_variantDictReserve(d, 39);
     dictAdd(d, TR_KEY_blocklist_updates_enabled, true);
     dictAdd(d, TR_KEY_compact_view, false);
     dictAdd(d, TR_KEY_inhibit_desktop_hibernation, false);
     dictAdd(d, TR_KEY_prompt_before_exit, true);
     dictAdd(d, TR_KEY_remote_session_enabled, false);
     dictAdd(d, TR_KEY_remote_session_requres_authentication, false);
+    dictAdd(d, TR_KEY_remote_session_use_ssl, false);
     dictAdd(d, TR_KEY_show_backup_trackers, false);
     dictAdd(d, TR_KEY_show_extra_peer_details, false);
     dictAdd(d, TR_KEY_show_filterbar, true);
diff --git a/qt/Prefs.h b/qt/Prefs.h
index 090d91f65..b326bda6a 100644
--- a/qt/Prefs.h
+++ b/qt/Prefs.h
@@ -69,6 +69,7 @@ public:
         SESSION_REMOTE_HOST,
         SESSION_REMOTE_PORT,
         SESSION_REMOTE_AUTH,
+        SESSION_REMOTE_USE_SSL,
         SESSION_REMOTE_USERNAME,
         SESSION_REMOTE_PASSWORD,
         COMPLETE_SOUND_COMMAND,
diff --git a/qt/Session.cc b/qt/Session.cc
index 4151b8aea..c0ab7f1a9 100644
--- a/qt/Session.cc
+++ b/qt/Session.cc
@@ -342,7 +342,7 @@ void Session::start()
     if (prefs_.get<bool>(Prefs::SESSION_IS_REMOTE))
     {
         QUrl url;
-        url.setScheme(QStringLiteral("http"));
+        url.setScheme(prefs_.get<bool>(Prefs::SESSION_REMOTE_USE_SSL) ? QStringLiteral("https") : QStringLiteral("http"));
         url.setHost(prefs_.get<QString>(Prefs::SESSION_REMOTE_HOST));
         url.setPort(prefs_.get<int>(Prefs::SESSION_REMOTE_PORT));
         url.setPath(QStringLiteral("/transmission/rpc"));
diff --git a/qt/SessionDialog.cc b/qt/SessionDialog.cc
index 4b0931359..44b336b3c 100644
--- a/qt/SessionDialog.cc
+++ b/qt/SessionDialog.cc
@@ -20,6 +20,7 @@ void SessionDialog::accept()
     prefs_.set(Prefs::SESSION_REMOTE_HOST, ui_.hostEdit->text());
     prefs_.set(Prefs::SESSION_REMOTE_PORT, ui_.portSpin->value());
     prefs_.set(Prefs::SESSION_REMOTE_AUTH, ui_.authCheck->isChecked());
+    prefs_.set(Prefs::SESSION_REMOTE_USE_SSL, ui_.sslCheck->isChecked());
     prefs_.set(Prefs::SESSION_REMOTE_USERNAME, ui_.usernameEdit->text());
     prefs_.set(Prefs::SESSION_REMOTE_PASSWORD, ui_.passwordEdit->text());
     session_.restart();
@@ -69,6 +70,10 @@ SessionDialog::SessionDialog(Session& session, Prefs& prefs, QWidget* parent) :
     connect(ui_.authCheck, &QAbstractButton::toggled, this, &SessionDialog::resensitize);
     remote_widgets_ << ui_.authCheck;
 
+    ui_.sslCheck->setChecked(prefs.get<bool>(Prefs::SESSION_REMOTE_USE_SSL));
+    connect(ui_.sslCheck, &QAbstractButton::toggled, this, &SessionDialog::resensitize);
+    remote_widgets_ << ui_.sslCheck;
+
     ui_.usernameEdit->setText(prefs.get<QString>(Prefs::SESSION_REMOTE_USERNAME));
     auth_widgets_ << ui_.usernameLabel << ui_.usernameEdit;
 
diff --git a/qt/SessionDialog.ui b/qt/SessionDialog.ui
index fc8949d9e..7e1fe4862 100644
--- a/qt/SessionDialog.ui
+++ b/qt/SessionDialog.ui
@@ -116,6 +116,13 @@
        </property>
       </widget>
      </item>
+     <item row="7" column="0" colspan="2">
+      <widget class="QCheckBox" name="sslCheck">
+       <property name="text">
+        <string>Use &amp;SSL</string>
+       </property>
+      </widget>
+     </item>
     </layout>
    </item>
    <item>