Skip to content

Commit c6bcb57

Browse files
Don't ignore SSL errors
1 parent a869e41 commit c6bcb57

File tree

7 files changed

+53
-6
lines changed

7 files changed

+53
-6
lines changed

src/base/net/downloadmanager.cpp

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

129-
// Ignore all SSL errors
130-
reply->ignoreSslErrors();
128+
QString errorMsg;
129+
if (!Preferences::instance()->isIgnoreSSLErrors())
130+
{
131+
errorMsg = tr("SSL error, URL: \"%1\", errors: \"%2\"");
132+
}
133+
else
134+
{
135+
errorMsg = tr("Ignoring SSL error, URL: \"%1\", errors: \"%2\"");
136+
// Ignore all SSL errors
137+
reply->ignoreSslErrors();
138+
}
139+
140+
LogMsg(errorMsg.arg(reply->url().toString(), errorList.join(u". ")), Log::WARNING);
131141
});
132142

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

src/base/preferences.cpp

+13
Original file line numberDiff line numberDiff line change
@@ -1331,6 +1331,19 @@ void Preferences::setTrackerPortForwardingEnabled(const bool enabled)
13311331
setValue(u"Preferences/Advanced/trackerPortForwarding"_s, enabled);
13321332
}
13331333

1334+
bool Preferences::isIgnoreSSLErrors() const
1335+
{
1336+
return value(u"Preferences/Advanced/IgnoreSSLErrors"_s, false);
1337+
}
1338+
1339+
void Preferences::setIgnoreSSLErrors(const bool enabled)
1340+
{
1341+
if (enabled == isIgnoreSSLErrors())
1342+
return;
1343+
1344+
setValue(u"Preferences/Advanced/IgnoreSSLErrors"_s, enabled);
1345+
}
1346+
13341347
#if defined(Q_OS_WIN) || defined(Q_OS_MACOS)
13351348
bool Preferences::isUpdateCheckEnabled() const
13361349
{

src/base/preferences.h

+2
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,8 @@ class Preferences final : public QObject
296296
void setTrackerPort(int port);
297297
bool isTrackerPortForwardingEnabled() const;
298298
void setTrackerPortForwardingEnabled(bool enabled);
299+
bool isIgnoreSSLErrors() const;
300+
void setIgnoreSSLErrors(bool enabled);
299301
#if defined(Q_OS_WIN) || defined(Q_OS_MACOS)
300302
bool isUpdateCheckEnabled() const;
301303
void setUpdateCheckEnabled(bool enabled);

src/gui/advancedsettings.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ namespace
100100
TRACKER_STATUS,
101101
TRACKER_PORT,
102102
TRACKER_PORT_FORWARDING,
103+
IGNORE_SSL_ERRORS,
103104
// libtorrent section
104105
LIBTORRENT_HEADER,
105106
BDECODE_DEPTH_LIMIT,
@@ -319,6 +320,8 @@ void AdvancedSettings::saveAdvancedSettings() const
319320
pref->setTrackerPortForwardingEnabled(m_checkBoxTrackerPortForwarding.isChecked());
320321
session->setTrackerEnabled(m_checkBoxTrackerStatus.isChecked());
321322

323+
// Ignore SSL errors
324+
pref->setIgnoreSSLErrors(m_checkBoxIgnoreSSLErrors.isChecked());
322325
// Choking algorithm
323326
session->setChokingAlgorithm(m_comboBoxChokingAlgorithm.currentData().value<BitTorrent::ChokingAlgorithm>());
324327
// Seed choking algorithm
@@ -813,6 +816,10 @@ void AdvancedSettings::loadAdvancedSettings()
813816
// Tracker port forwarding
814817
m_checkBoxTrackerPortForwarding.setChecked(pref->isTrackerPortForwardingEnabled());
815818
addRow(TRACKER_PORT_FORWARDING, tr("Enable port forwarding for embedded tracker"), &m_checkBoxTrackerPortForwarding);
819+
// Ignore SSL errors
820+
m_checkBoxIgnoreSSLErrors.setChecked(pref->isIgnoreSSLErrors());
821+
m_checkBoxIgnoreSSLErrors.setToolTip(tr("Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc)"));
822+
addRow(IGNORE_SSL_ERRORS, tr("Ignore SSL errors"), &m_checkBoxIgnoreSSLErrors);
816823
// Choking algorithm
817824
m_comboBoxChokingAlgorithm.addItem(tr("Fixed slots"), QVariant::fromValue(BitTorrent::ChokingAlgorithm::FixedSlots));
818825
m_comboBoxChokingAlgorithm.addItem(tr("Upload rate based"), QVariant::fromValue(BitTorrent::ChokingAlgorithm::RateBased));

src/gui/advancedsettings.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ 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;
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;
8383
QComboBox m_comboBoxInterface, m_comboBoxInterfaceAddress, m_comboBoxDiskIOReadMode, m_comboBoxDiskIOWriteMode, m_comboBoxUtpMixedMode, m_comboBoxChokingAlgorithm,
8484
m_comboBoxSeedChokingAlgorithm, m_comboBoxResumeDataStorage;
8585
QLineEdit m_lineEditAnnounceIP;

src/webui/api/appcontroller.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,8 @@ void AppController::preferencesAction()
348348
data[u"resolve_peer_countries"_s] = pref->resolvePeerCountries();
349349
// Reannounce to all trackers when ip/port changed
350350
data[u"reannounce_when_address_changed"_s] = session->isReannounceWhenAddressChangedEnabled();
351+
// Ignore SSL errors
352+
data[u"ignore_ssl_errors"_s] = pref->isIgnoreSSLErrors();
351353

352354
// libtorrent preferences
353355
// Bdecode depth limit
@@ -915,6 +917,9 @@ void AppController::setPreferencesAction()
915917
// Reannounce to all trackers when ip/port changed
916918
if (hasKey(u"reannounce_when_address_changed"_s))
917919
session->setReannounceWhenAddressChangedEnabled(it.value().toBool());
920+
// Ignore SLL errors
921+
if (hasKey(u"ignore_ssl_errors"_s))
922+
pref->setIgnoreSSLErrors(it.value().toBool());
918923

919924
// libtorrent preferences
920925
// Bdecode depth limit

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

+10
Original file line numberDiff line numberDiff line change
@@ -1077,6 +1077,14 @@
10771077
<input type="checkbox" id="embeddedTrackerPortForwarding" />
10781078
</td>
10791079
</tr>
1080+
<tr>
1081+
<td>
1082+
<label for="ignoreSSLErrors">QBT_TR(Ignore SSL errors:)QBT_TR[CONTEXT=OptionsDialog]</label>
1083+
</td>
1084+
<td>
1085+
<input type="checkbox" id="ignoreSSLErrors">
1086+
</td>
1087+
</tr>
10801088
</table>
10811089
</fieldset>
10821090
<fieldset class="settings">
@@ -2268,6 +2276,7 @@
22682276
$('refreshInterval').setProperty('value', pref.refresh_interval);
22692277
$('resolvePeerCountries').setProperty('checked', pref.resolve_peer_countries);
22702278
$('reannounceWhenAddressChanged').setProperty('checked', pref.reannounce_when_address_changed);
2279+
$("ignoreSSLErrors").checked = pref.ignore_ssl_errors;
22712280
// libtorrent section
22722281
$('bdecodeDepthLimit').setProperty('value', pref.bdecode_depth_limit);
22732282
$('bdecodeTokenLimit').setProperty('value', pref.bdecode_token_limit);
@@ -2709,6 +2718,7 @@
27092718
settings.set('refresh_interval', $('refreshInterval').getProperty('value'));
27102719
settings.set('resolve_peer_countries', $('resolvePeerCountries').getProperty('checked'));
27112720
settings.set('reannounce_when_address_changed', $('reannounceWhenAddressChanged').getProperty('checked'));
2721+
settings["ignore_ssl_errors"] = $("ignoreSSLErrors").checked;
27122722

27132723
// libtorrent section
27142724
settings.set('bdecode_depth_limit', $('bdecodeDepthLimit').getProperty('value'));

0 commit comments

Comments
 (0)