Skip to content

Commit 3d9e971

Browse files
Merge pull request qbittorrent#21364 from sledgehammer999/dont_ignore_ssl_errors
Don't ignore SSL errors
2 parents 21b0367 + e309148 commit 3d9e971

File tree

7 files changed

+85
-37
lines changed

7 files changed

+85
-37
lines changed

src/base/net/downloadmanager.cpp

+13-3
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,20 @@ Net::DownloadManager::DownloadManager(QObject *parent)
148148
QStringList errorList;
149149
for (const QSslError &error : errors)
150150
errorList += error.errorString();
151-
LogMsg(tr("Ignoring SSL error, URL: \"%1\", errors: \"%2\"").arg(reply->url().toString(), errorList.join(u". ")), Log::WARNING);
152151

153-
// Ignore all SSL errors
154-
reply->ignoreSslErrors();
152+
QString errorMsg;
153+
if (!Preferences::instance()->isIgnoreSSLErrors())
154+
{
155+
errorMsg = tr("SSL error, URL: \"%1\", errors: \"%2\"");
156+
}
157+
else
158+
{
159+
errorMsg = tr("Ignoring SSL error, URL: \"%1\", errors: \"%2\"");
160+
// Ignore all SSL errors
161+
reply->ignoreSslErrors();
162+
}
163+
164+
LogMsg(errorMsg.arg(reply->url().toString(), errorList.join(u". ")), Log::WARNING);
155165
});
156166

157167
connect(ProxyConfigurationManager::instance(), &ProxyConfigurationManager::proxyConfigurationChanged

src/base/preferences.cpp

+13
Original file line numberDiff line numberDiff line change
@@ -1343,6 +1343,19 @@ void Preferences::setMarkOfTheWebEnabled(const bool enabled)
13431343
setValue(u"Preferences/Advanced/markOfTheWeb"_s, enabled);
13441344
}
13451345

1346+
bool Preferences::isIgnoreSSLErrors() const
1347+
{
1348+
return value(u"Preferences/Advanced/IgnoreSSLErrors"_s, false);
1349+
}
1350+
1351+
void Preferences::setIgnoreSSLErrors(const bool enabled)
1352+
{
1353+
if (enabled == isIgnoreSSLErrors())
1354+
return;
1355+
1356+
setValue(u"Preferences/Advanced/IgnoreSSLErrors"_s, enabled);
1357+
}
1358+
13461359
Path Preferences::getPythonExecutablePath() const
13471360
{
13481361
return value(u"Preferences/Search/pythonExecutablePath"_s, Path());

src/base/preferences.h

+2
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,8 @@ class Preferences final : public QObject
295295
void setTrackerPortForwardingEnabled(bool enabled);
296296
bool isMarkOfTheWebEnabled() const;
297297
void setMarkOfTheWebEnabled(bool enabled);
298+
bool isIgnoreSSLErrors() const;
299+
void setIgnoreSSLErrors(bool enabled);
298300
Path getPythonExecutablePath() const;
299301
void setPythonExecutablePath(const Path &path);
300302
#if defined(Q_OS_WIN) || defined(Q_OS_MACOS)

src/gui/advancedsettings.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ namespace
107107
#if defined(Q_OS_MACOS) || defined(Q_OS_WIN)
108108
ENABLE_MARK_OF_THE_WEB,
109109
#endif // Q_OS_MACOS || Q_OS_WIN
110+
IGNORE_SSL_ERRORS,
110111
PYTHON_EXECUTABLE_PATH,
111112
START_SESSION_PAUSED,
112113
SESSION_SHUTDOWN_TIMEOUT,
@@ -336,6 +337,8 @@ void AdvancedSettings::saveAdvancedSettings() const
336337
// Mark-of-the-Web
337338
pref->setMarkOfTheWebEnabled(m_checkBoxMarkOfTheWeb.isChecked());
338339
#endif // Q_OS_MACOS || Q_OS_WIN
340+
// Ignore SSL errors
341+
pref->setIgnoreSSLErrors(m_checkBoxIgnoreSSLErrors.isChecked());
339342
// Python executable path
340343
pref->setPythonExecutablePath(Path(m_pythonExecutablePath.text().trimmed()));
341344
// Start session paused
@@ -865,6 +868,10 @@ void AdvancedSettings::loadAdvancedSettings()
865868
m_checkBoxMarkOfTheWeb.setChecked(pref->isMarkOfTheWebEnabled());
866869
addRow(ENABLE_MARK_OF_THE_WEB, motwLabel, &m_checkBoxMarkOfTheWeb);
867870
#endif // Q_OS_MACOS || Q_OS_WIN
871+
// Ignore SSL errors
872+
m_checkBoxIgnoreSSLErrors.setChecked(pref->isIgnoreSSLErrors());
873+
m_checkBoxIgnoreSSLErrors.setToolTip(tr("Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc)"));
874+
addRow(IGNORE_SSL_ERRORS, tr("Ignore SSL errors"), &m_checkBoxIgnoreSSLErrors);
868875
// Python executable path
869876
m_pythonExecutablePath.setPlaceholderText(tr("(Auto detect if empty)"));
870877
m_pythonExecutablePath.setText(pref->getPythonExecutablePath().toString());

src/gui/advancedsettings.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,10 @@ private slots:
7777
m_spinBoxSavePathHistoryLength, m_spinBoxPeerTurnover, m_spinBoxPeerTurnoverCutoff, m_spinBoxPeerTurnoverInterval, m_spinBoxRequestQueueSize;
7878
QCheckBox m_checkBoxOsCache, m_checkBoxRecheckCompleted, m_checkBoxResolveCountries, m_checkBoxResolveHosts,
7979
m_checkBoxProgramNotifications, m_checkBoxTorrentAddedNotifications, m_checkBoxReannounceWhenAddressChanged, m_checkBoxTrackerFavicon, m_checkBoxTrackerStatus,
80-
m_checkBoxTrackerPortForwarding, m_checkBoxConfirmTorrentRecheck, m_checkBoxConfirmRemoveAllTags, m_checkBoxAnnounceAllTrackers, m_checkBoxAnnounceAllTiers,
81-
m_checkBoxMultiConnectionsPerIp, m_checkBoxValidateHTTPSTrackerCertificate, m_checkBoxSSRFMitigation, m_checkBoxBlockPeersOnPrivilegedPorts, m_checkBoxPieceExtentAffinity,
82-
m_checkBoxSuggestMode, m_checkBoxSpeedWidgetEnabled, m_checkBoxIDNSupport, m_checkBoxConfirmRemoveTrackerFromAllTorrents, m_checkBoxStartSessionPaused;
80+
m_checkBoxTrackerPortForwarding, m_checkBoxIgnoreSSLErrors, m_checkBoxConfirmTorrentRecheck, m_checkBoxConfirmRemoveAllTags, m_checkBoxAnnounceAllTrackers,
81+
m_checkBoxAnnounceAllTiers, m_checkBoxMultiConnectionsPerIp, m_checkBoxValidateHTTPSTrackerCertificate, m_checkBoxSSRFMitigation, m_checkBoxBlockPeersOnPrivilegedPorts,
82+
m_checkBoxPieceExtentAffinity, m_checkBoxSuggestMode, m_checkBoxSpeedWidgetEnabled, m_checkBoxIDNSupport, m_checkBoxConfirmRemoveTrackerFromAllTorrents,
83+
m_checkBoxStartSessionPaused;
8384
QComboBox m_comboBoxInterface, m_comboBoxInterfaceAddress, m_comboBoxDiskIOReadMode, m_comboBoxDiskIOWriteMode, m_comboBoxUtpMixedMode, m_comboBoxChokingAlgorithm,
8485
m_comboBoxSeedChokingAlgorithm, m_comboBoxResumeDataStorage, m_comboBoxTorrentContentRemoveOption;
8586
QLineEdit m_lineEditAppInstanceName, m_pythonExecutablePath, m_lineEditAnnounceIP, m_lineEditDHTBootstrapNodes;

src/webui/api/appcontroller.cpp

+26-21
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,16 @@ void AppController::preferencesAction()
389389
data[u"resolve_peer_countries"_s] = pref->resolvePeerCountries();
390390
// Reannounce to all trackers when ip/port changed
391391
data[u"reannounce_when_address_changed"_s] = session->isReannounceWhenAddressChangedEnabled();
392+
// Embedded tracker
393+
data[u"enable_embedded_tracker"_s] = session->isTrackerEnabled();
394+
data[u"embedded_tracker_port"_s] = pref->getTrackerPort();
395+
data[u"embedded_tracker_port_forwarding"_s] = pref->isTrackerPortForwardingEnabled();
396+
// Mark-of-the-Web
397+
data[u"mark_of_the_web"_s] = pref->isMarkOfTheWebEnabled();
398+
// Ignore SSL errors
399+
data[u"ignore_ssl_errors"_s] = pref->isIgnoreSSLErrors();
400+
// Python executable path
401+
data[u"python_executable_path"_s] = pref->getPythonExecutablePath().toString();
392402

393403
// libtorrent preferences
394404
// Bdecode depth limit
@@ -451,14 +461,6 @@ void AppController::preferencesAction()
451461
data[u"ssrf_mitigation"_s] = session->isSSRFMitigationEnabled();
452462
// Disallow connection to peers on privileged ports
453463
data[u"block_peers_on_privileged_ports"_s] = session->blockPeersOnPrivilegedPorts();
454-
// Embedded tracker
455-
data[u"enable_embedded_tracker"_s] = session->isTrackerEnabled();
456-
data[u"embedded_tracker_port"_s] = pref->getTrackerPort();
457-
data[u"embedded_tracker_port_forwarding"_s] = pref->isTrackerPortForwardingEnabled();
458-
// Mark-of-the-Web
459-
data[u"mark_of_the_web"_s] = pref->isMarkOfTheWebEnabled();
460-
// Python executable path
461-
data[u"python_executable_path"_s] = pref->getPythonExecutablePath().toString();
462464
// Choking algorithm
463465
data[u"upload_slots_behavior"_s] = static_cast<int>(session->chokingAlgorithm());
464466
// Seed choking algorithm
@@ -1006,6 +1008,22 @@ void AppController::setPreferencesAction()
10061008
// Reannounce to all trackers when ip/port changed
10071009
if (hasKey(u"reannounce_when_address_changed"_s))
10081010
session->setReannounceWhenAddressChangedEnabled(it.value().toBool());
1011+
// Embedded tracker
1012+
if (hasKey(u"embedded_tracker_port"_s))
1013+
pref->setTrackerPort(it.value().toInt());
1014+
if (hasKey(u"embedded_tracker_port_forwarding"_s))
1015+
pref->setTrackerPortForwardingEnabled(it.value().toBool());
1016+
if (hasKey(u"enable_embedded_tracker"_s))
1017+
session->setTrackerEnabled(it.value().toBool());
1018+
// Mark-of-the-Web
1019+
if (hasKey(u"mark_of_the_web"_s))
1020+
pref->setMarkOfTheWebEnabled(it.value().toBool());
1021+
// Ignore SLL errors
1022+
if (hasKey(u"ignore_ssl_errors"_s))
1023+
pref->setIgnoreSSLErrors(it.value().toBool());
1024+
// Python executable path
1025+
if (hasKey(u"python_executable_path"_s))
1026+
pref->setPythonExecutablePath(Path(it.value().toString()));
10091027

10101028
// libtorrent preferences
10111029
// Bdecode depth limit
@@ -1100,19 +1118,6 @@ void AppController::setPreferencesAction()
11001118
// Disallow connection to peers on privileged ports
11011119
if (hasKey(u"block_peers_on_privileged_ports"_s))
11021120
session->setBlockPeersOnPrivilegedPorts(it.value().toBool());
1103-
// Embedded tracker
1104-
if (hasKey(u"embedded_tracker_port"_s))
1105-
pref->setTrackerPort(it.value().toInt());
1106-
if (hasKey(u"embedded_tracker_port_forwarding"_s))
1107-
pref->setTrackerPortForwardingEnabled(it.value().toBool());
1108-
if (hasKey(u"enable_embedded_tracker"_s))
1109-
session->setTrackerEnabled(it.value().toBool());
1110-
// Mark-of-the-Web
1111-
if (hasKey(u"mark_of_the_web"_s))
1112-
pref->setMarkOfTheWebEnabled(it.value().toBool());
1113-
// Python executable path
1114-
if (hasKey(u"python_executable_path"_s))
1115-
pref->setPythonExecutablePath(Path(it.value().toString()));
11161121
// Choking algorithm
11171122
if (hasKey(u"upload_slots_behavior"_s))
11181123
session->setChokingAlgorithm(static_cast<BitTorrent::ChokingAlgorithm>(it.value().toInt()));

src/webui/www/private/views/preferences.html

+20-10
Original file line numberDiff line numberDiff line change
@@ -1248,6 +1248,14 @@
12481248
<input type="checkbox" id="markOfTheWeb">
12491249
</td>
12501250
</tr>
1251+
<tr>
1252+
<td>
1253+
<label for="ignoreSSLErrors">QBT_TR(Ignore SSL errors:)QBT_TR[CONTEXT=OptionsDialog]</label>
1254+
</td>
1255+
<td>
1256+
<input type="checkbox" id="ignoreSSLErrors">
1257+
</td>
1258+
</tr>
12511259
<tr>
12521260
<td>
12531261
<label for="pythonExecutablePath">QBT_TR(Python executable path (may require restart):)QBT_TR[CONTEXT=OptionsDialog]</label>
@@ -2479,6 +2487,12 @@
24792487
$("refreshInterval").value = pref.refresh_interval;
24802488
$("resolvePeerCountries").checked = pref.resolve_peer_countries;
24812489
$("reannounceWhenAddressChanged").checked = pref.reannounce_when_address_changed;
2490+
$("enableEmbeddedTracker").checked = pref.enable_embedded_tracker;
2491+
$("embeddedTrackerPort").value = pref.embedded_tracker_port;
2492+
$("embeddedTrackerPortForwarding").checked = pref.embedded_tracker_port_forwarding;
2493+
$("markOfTheWeb").checked = pref.mark_of_the_web;
2494+
$("ignoreSSLErrors").checked = pref.ignore_ssl_errors;
2495+
$("pythonExecutablePath").value = pref.python_executable_path;
24822496
// libtorrent section
24832497
$("bdecodeDepthLimit").value = pref.bdecode_depth_limit;
24842498
$("bdecodeTokenLimit").value = pref.bdecode_token_limit;
@@ -2512,11 +2526,6 @@
25122526
$("validateHTTPSTrackerCertificate").checked = pref.validate_https_tracker_certificate;
25132527
$("mitigateSSRF").checked = pref.ssrf_mitigation;
25142528
$("blockPeersOnPrivilegedPorts").checked = pref.block_peers_on_privileged_ports;
2515-
$("enableEmbeddedTracker").checked = pref.enable_embedded_tracker;
2516-
$("embeddedTrackerPort").value = pref.embedded_tracker_port;
2517-
$("embeddedTrackerPortForwarding").checked = pref.embedded_tracker_port_forwarding;
2518-
$("markOfTheWeb").checked = pref.mark_of_the_web;
2519-
$("pythonExecutablePath").value = pref.python_executable_path;
25202529
$("uploadSlotsBehavior").value = pref.upload_slots_behavior;
25212530
$("uploadChokingAlgorithm").value = pref.upload_choking_algorithm;
25222531
$("announceAllTrackers").checked = pref.announce_to_all_trackers;
@@ -2936,6 +2945,12 @@
29362945
settings["refresh_interval"] = Number($("refreshInterval").value);
29372946
settings["resolve_peer_countries"] = $("resolvePeerCountries").checked;
29382947
settings["reannounce_when_address_changed"] = $("reannounceWhenAddressChanged").checked;
2948+
settings["enable_embedded_tracker"] = $("enableEmbeddedTracker").checked;
2949+
settings["embedded_tracker_port"] = Number($("embeddedTrackerPort").value);
2950+
settings["embedded_tracker_port_forwarding"] = $("embeddedTrackerPortForwarding").checked;
2951+
settings["mark_of_the_web"] = $("markOfTheWeb").checked;
2952+
settings["ignore_ssl_errors"] = $("ignoreSSLErrors").checked;
2953+
settings["python_executable_path"] = $("pythonExecutablePath").value;
29392954

29402955
// libtorrent section
29412956
settings["bdecode_depth_limit"] = Number($("bdecodeDepthLimit").value);
@@ -2970,11 +2985,6 @@
29702985
settings["validate_https_tracker_certificate"] = $("validateHTTPSTrackerCertificate").checked;
29712986
settings["ssrf_mitigation"] = $("mitigateSSRF").checked;
29722987
settings["block_peers_on_privileged_ports"] = $("blockPeersOnPrivilegedPorts").checked;
2973-
settings["enable_embedded_tracker"] = $("enableEmbeddedTracker").checked;
2974-
settings["embedded_tracker_port"] = Number($("embeddedTrackerPort").value);
2975-
settings["embedded_tracker_port_forwarding"] = $("embeddedTrackerPortForwarding").checked;
2976-
settings["mark_of_the_web"] = $("markOfTheWeb").checked;
2977-
settings["python_executable_path"] = $("pythonExecutablePath").value;
29782988
settings["upload_slots_behavior"] = Number($("uploadSlotsBehavior").value);
29792989
settings["upload_choking_algorithm"] = Number($("uploadChokingAlgorithm").value);
29802990
settings["announce_to_all_trackers"] = $("announceAllTrackers").checked;

0 commit comments

Comments
 (0)