mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-02-02 09:55:55 +00:00
commit
32a55551fe
@ -224,7 +224,6 @@ namespace
|
||||
|
||||
Application::Application(int &argc, char **argv)
|
||||
: BaseApplication(argc, argv)
|
||||
, m_shutdownAct(ShutdownDialogAction::Exit)
|
||||
, m_commandLineArgs(parseCommandLine(Application::arguments()))
|
||||
, m_storeFileLoggerEnabled(FILELOGGER_SETTINGS_KEY(u"Enabled"_qs))
|
||||
, m_storeFileLoggerBackup(FILELOGGER_SETTINGS_KEY(u"Backup"_qs))
|
||||
|
@ -173,7 +173,7 @@ private:
|
||||
ApplicationInstanceManager *m_instanceManager = nullptr;
|
||||
QAtomicInt m_isCleanupRun;
|
||||
bool m_isProcessingParamsAllowed = false;
|
||||
ShutdownDialogAction m_shutdownAct;
|
||||
ShutdownDialogAction m_shutdownAct = ShutdownDialogAction::Exit;
|
||||
QBtCommandLineParameters m_commandLineArgs;
|
||||
|
||||
// FileLog
|
||||
|
@ -198,13 +198,15 @@ namespace
|
||||
|
||||
int value(const QString &arg) const
|
||||
{
|
||||
QString val = StringOption::value(arg);
|
||||
const QString val = StringOption::value(arg);
|
||||
bool ok = false;
|
||||
int res = val.toInt(&ok);
|
||||
const int res = val.toInt(&ok);
|
||||
if (!ok)
|
||||
{
|
||||
throw CommandLineParameterError(QObject::tr("Parameter '%1' must follow syntax '%1=%2'",
|
||||
"e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>'")
|
||||
.arg(fullParameter(), u"<integer value>"_qs));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,6 @@ using namespace std::chrono_literals;
|
||||
|
||||
BandwidthScheduler::BandwidthScheduler(QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_lastAlternative(false)
|
||||
{
|
||||
connect(&m_timer, &QTimer::timeout, this, &BandwidthScheduler::onTimeout);
|
||||
}
|
||||
|
@ -49,5 +49,5 @@ private:
|
||||
void onTimeout();
|
||||
|
||||
QTimer m_timer;
|
||||
bool m_lastAlternative;
|
||||
bool m_lastAlternative = false;
|
||||
};
|
||||
|
@ -89,7 +89,7 @@ namespace
|
||||
}
|
||||
|
||||
private:
|
||||
lt::address_v4::bytes_type m_buf;
|
||||
lt::address_v4::bytes_type m_buf {};
|
||||
};
|
||||
|
||||
bool parseIPAddress(const char *data, lt::address &address)
|
||||
@ -111,7 +111,6 @@ namespace
|
||||
|
||||
FilterParserThread::FilterParserThread(QObject *parent)
|
||||
: QThread(parent)
|
||||
, m_abort(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,7 @@ private:
|
||||
int getlineInStream(QDataStream &stream, std::string &name, char delim);
|
||||
int parseP2BFilterFile();
|
||||
|
||||
bool m_abort;
|
||||
bool m_abort = false;
|
||||
Path m_filePath;
|
||||
lt::ip_filter m_filter;
|
||||
};
|
||||
|
@ -54,7 +54,7 @@ namespace BitTorrent
|
||||
bool firstLastPiecePriority = false;
|
||||
bool hasFinishedStatus = false;
|
||||
bool stopped = false;
|
||||
Torrent::StopCondition stopCondition;
|
||||
Torrent::StopCondition stopCondition = Torrent::StopCondition::None;
|
||||
|
||||
bool addToQueueTop = false; // only for new torrents
|
||||
|
||||
|
@ -75,8 +75,7 @@ using namespace BitTorrent;
|
||||
const int magnetUriId = qRegisterMetaType<MagnetUri>();
|
||||
|
||||
MagnetUri::MagnetUri(const QString &source)
|
||||
: m_valid(false)
|
||||
, m_url(source)
|
||||
: m_url(source)
|
||||
{
|
||||
if (source.isEmpty()) return;
|
||||
|
||||
|
@ -54,7 +54,7 @@ namespace BitTorrent
|
||||
lt::add_torrent_params addTorrentParams() const;
|
||||
|
||||
private:
|
||||
bool m_valid;
|
||||
bool m_valid = false;
|
||||
QString m_url;
|
||||
InfoHash m_infoHash;
|
||||
QString m_name;
|
||||
|
@ -485,15 +485,15 @@ namespace BitTorrent
|
||||
{
|
||||
lt::torrent_handle torrentHandle;
|
||||
Path path;
|
||||
MoveStorageMode mode;
|
||||
MoveStorageContext context;
|
||||
MoveStorageMode mode {};
|
||||
MoveStorageContext context {};
|
||||
};
|
||||
|
||||
struct RemovingTorrentData
|
||||
{
|
||||
QString name;
|
||||
Path pathToRemove;
|
||||
DeleteOption deleteOption;
|
||||
DeleteOption deleteOption {};
|
||||
};
|
||||
|
||||
explicit SessionImpl(QObject *parent = nullptr);
|
||||
|
@ -46,14 +46,14 @@ namespace BitTorrent
|
||||
|
||||
struct TorrentCreatorParams
|
||||
{
|
||||
bool isPrivate;
|
||||
bool isPrivate = false;
|
||||
#ifdef QBT_USES_LIBTORRENT2
|
||||
TorrentFormat torrentFormat;
|
||||
TorrentFormat torrentFormat = TorrentFormat::Hybrid;
|
||||
#else
|
||||
bool isAlignmentOptimized;
|
||||
int paddedFileSizeLimit;
|
||||
#endif
|
||||
int pieceSize;
|
||||
int pieceSize = 0;
|
||||
Path inputPath;
|
||||
Path savePath;
|
||||
QString comment;
|
||||
|
@ -84,7 +84,7 @@ namespace BitTorrent
|
||||
struct FileErrorInfo
|
||||
{
|
||||
lt::error_code error;
|
||||
lt::operation_t operation;
|
||||
lt::operation_t operation = lt::operation_t::unknown;
|
||||
};
|
||||
|
||||
class TorrentImpl final : public Torrent
|
||||
|
@ -47,9 +47,9 @@ namespace Http
|
||||
struct ParseResult
|
||||
{
|
||||
// when `status != ParseStatus::OK`, `request` & `frameSize` are undefined
|
||||
ParseStatus status;
|
||||
ParseStatus status = ParseStatus::BadRequest;
|
||||
Request request;
|
||||
long frameSize; // http request frame size (bytes)
|
||||
long frameSize = 0; // http request frame size (bytes)
|
||||
};
|
||||
|
||||
static ParseResult parse(const QByteArray &data);
|
||||
|
@ -79,10 +79,10 @@ namespace Http
|
||||
struct Environment
|
||||
{
|
||||
QHostAddress localAddress;
|
||||
quint16 localPort;
|
||||
quint16 localPort = 0;
|
||||
|
||||
QHostAddress clientAddress;
|
||||
quint16 clientPort;
|
||||
quint16 clientPort = 0;
|
||||
};
|
||||
|
||||
struct UploadedFile
|
||||
|
@ -51,17 +51,17 @@ namespace Log
|
||||
|
||||
struct Msg
|
||||
{
|
||||
int id;
|
||||
MsgType type;
|
||||
qint64 timestamp;
|
||||
int id = -1;
|
||||
MsgType type = ALL;
|
||||
qint64 timestamp = -1;
|
||||
QString message;
|
||||
};
|
||||
|
||||
struct Peer
|
||||
{
|
||||
int id;
|
||||
bool blocked;
|
||||
qint64 timestamp;
|
||||
int id = -1;
|
||||
bool blocked = false;
|
||||
qint64 timestamp = -1;
|
||||
QString ip;
|
||||
QString reason;
|
||||
};
|
||||
|
@ -44,8 +44,6 @@ const std::chrono::seconds IP_CHECK_INTERVAL = 30min;
|
||||
|
||||
DNSUpdater::DNSUpdater(QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_state(OK)
|
||||
, m_service(DNS::Service::None)
|
||||
{
|
||||
updateCredentials();
|
||||
|
||||
|
@ -74,9 +74,9 @@ namespace Net
|
||||
QHostAddress m_lastIP;
|
||||
QDateTime m_lastIPCheckTime;
|
||||
QTimer m_ipCheckTimer;
|
||||
int m_state;
|
||||
int m_state = OK;
|
||||
// Service creds
|
||||
DNS::Service m_service;
|
||||
DNS::Service m_service = DNS::Service::None;
|
||||
QString m_domain;
|
||||
QString m_username;
|
||||
QString m_password;
|
||||
|
@ -103,7 +103,7 @@ namespace Net
|
||||
struct DownloadResult
|
||||
{
|
||||
QString url;
|
||||
DownloadStatus status;
|
||||
DownloadStatus status = DownloadStatus::Failed;
|
||||
QString errorString;
|
||||
QByteArray data;
|
||||
Path filePath;
|
||||
|
@ -177,7 +177,7 @@ std::unique_ptr<QSettings> Private::CustomProfile::applicationSettings(const QSt
|
||||
const auto CONF_FILE_EXTENSION = u".conf"_qs;
|
||||
#endif
|
||||
const Path settingsFilePath = configLocation() / Path(name + CONF_FILE_EXTENSION);
|
||||
return std::unique_ptr<QSettings>(new QSettings(settingsFilePath.data(), QSettings::IniFormat));
|
||||
return std::make_unique<QSettings>(settingsFilePath.data(), QSettings::IniFormat);
|
||||
}
|
||||
|
||||
Path Private::NoConvertConverter::fromPortablePath(const Path &portablePath) const
|
||||
|
@ -723,13 +723,16 @@ void RSS::Private::Parser::parseAtomArticle(QXmlStreamReader &xml)
|
||||
: xml.attributes().value(u"href"_qs).toString());
|
||||
|
||||
if (link.startsWith(u"magnet:", Qt::CaseInsensitive))
|
||||
{
|
||||
article[Article::KeyTorrentURL] = link; // magnet link instead of a news URL
|
||||
}
|
||||
else
|
||||
{
|
||||
// Atom feeds can have relative links, work around this and
|
||||
// take the stress of figuring article full URI from UI
|
||||
// Assemble full URI
|
||||
article[Article::KeyLink] = (m_baseUrl.isEmpty() ? link : m_baseUrl + link);
|
||||
|
||||
}
|
||||
}
|
||||
else if ((name == u"summary") || (name == u"content"))
|
||||
{
|
||||
|
@ -42,9 +42,9 @@ struct SearchResult
|
||||
{
|
||||
QString fileName;
|
||||
QString fileUrl;
|
||||
qlonglong fileSize;
|
||||
qlonglong nbSeeders;
|
||||
qlonglong nbLeechers;
|
||||
qlonglong fileSize = 0;
|
||||
qlonglong nbSeeders = 0;
|
||||
qlonglong nbLeechers = 0;
|
||||
QString siteUrl;
|
||||
QString descrLink;
|
||||
};
|
||||
|
@ -366,7 +366,7 @@ QString SearchPluginManager::categoryFullName(const QString &categoryName)
|
||||
return categoryTable.value(categoryName);
|
||||
}
|
||||
|
||||
QString SearchPluginManager::pluginFullName(const QString &pluginName)
|
||||
QString SearchPluginManager::pluginFullName(const QString &pluginName) const
|
||||
{
|
||||
return pluginInfo(pluginName) ? pluginInfo(pluginName)->fullName : QString();
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ struct PluginInfo
|
||||
QString url;
|
||||
QStringList supportedCategories;
|
||||
Path iconPath;
|
||||
bool enabled;
|
||||
bool enabled = false;
|
||||
};
|
||||
|
||||
class SearchDownloadHandler;
|
||||
@ -88,7 +88,7 @@ public:
|
||||
|
||||
static PluginVersion getPluginVersion(const Path &filePath);
|
||||
static QString categoryFullName(const QString &categoryName);
|
||||
QString pluginFullName(const QString &pluginName);
|
||||
QString pluginFullName(const QString &pluginName) const;
|
||||
static Path pluginsLocation();
|
||||
static Path engineLocation();
|
||||
|
||||
|
@ -57,27 +57,21 @@ void PowerManagementInhibitor::requestIdle()
|
||||
if ((m_state == Error) || (m_state == Idle) || (m_state == RequestIdle) || (m_state == RequestBusy))
|
||||
return;
|
||||
|
||||
m_state = RequestIdle;
|
||||
qDebug("D-Bus: PowerManagementInhibitor: Requesting idle");
|
||||
|
||||
QDBusMessage call;
|
||||
if (!m_useGSM)
|
||||
call = QDBusMessage::createMethodCall(
|
||||
u"org.freedesktop.PowerManagement"_qs,
|
||||
u"/org/freedesktop/PowerManagement/Inhibit"_qs,
|
||||
u"org.freedesktop.PowerManagement.Inhibit"_qs,
|
||||
u"UnInhibit"_qs);
|
||||
else
|
||||
call = QDBusMessage::createMethodCall(
|
||||
u"org.gnome.SessionManager"_qs,
|
||||
u"/org/gnome/SessionManager"_qs,
|
||||
u"org.gnome.SessionManager"_qs,
|
||||
u"Uninhibit"_qs);
|
||||
|
||||
m_state = RequestIdle;
|
||||
|
||||
QList<QVariant> args;
|
||||
args << m_cookie;
|
||||
call.setArguments(args);
|
||||
QDBusMessage call = m_useGSM
|
||||
? QDBusMessage::createMethodCall(
|
||||
u"org.gnome.SessionManager"_qs,
|
||||
u"/org/gnome/SessionManager"_qs,
|
||||
u"org.gnome.SessionManager"_qs,
|
||||
u"Uninhibit"_qs)
|
||||
: QDBusMessage::createMethodCall(
|
||||
u"org.freedesktop.PowerManagement"_qs,
|
||||
u"/org/freedesktop/PowerManagement/Inhibit"_qs,
|
||||
u"org.freedesktop.PowerManagement.Inhibit"_qs,
|
||||
u"UnInhibit"_qs);
|
||||
call.setArguments({m_cookie});
|
||||
|
||||
QDBusPendingCall pcall = QDBusConnection::sessionBus().asyncCall(call, 1000);
|
||||
auto *watcher = new QDBusPendingCallWatcher(pcall, this);
|
||||
@ -91,28 +85,27 @@ void PowerManagementInhibitor::requestBusy()
|
||||
if ((m_state == Error) || (m_state == Busy) || (m_state == RequestBusy) || (m_state == RequestIdle))
|
||||
return;
|
||||
|
||||
m_state = RequestBusy;
|
||||
qDebug("D-Bus: PowerManagementInhibitor: Requesting busy");
|
||||
|
||||
QDBusMessage call;
|
||||
if (!m_useGSM)
|
||||
call = QDBusMessage::createMethodCall(
|
||||
QDBusMessage call = m_useGSM
|
||||
? QDBusMessage::createMethodCall(
|
||||
u"org.gnome.SessionManager"_qs,
|
||||
u"/org/gnome/SessionManager"_qs,
|
||||
u"org.gnome.SessionManager"_qs,
|
||||
u"Inhibit"_qs)
|
||||
: QDBusMessage::createMethodCall(
|
||||
u"org.freedesktop.PowerManagement"_qs,
|
||||
u"/org/freedesktop/PowerManagement/Inhibit"_qs,
|
||||
u"org.freedesktop.PowerManagement.Inhibit"_qs,
|
||||
u"Inhibit"_qs);
|
||||
else
|
||||
call = QDBusMessage::createMethodCall(
|
||||
u"org.gnome.SessionManager"_qs,
|
||||
u"/org/gnome/SessionManager"_qs,
|
||||
u"org.gnome.SessionManager"_qs,
|
||||
u"Inhibit"_qs);
|
||||
|
||||
m_state = RequestBusy;
|
||||
|
||||
QList<QVariant> args = {u"qBittorrent"_qs};
|
||||
if (m_useGSM) args << 0u;
|
||||
if (m_useGSM)
|
||||
args << 0u;
|
||||
args << u"Active torrents are presented"_qs;
|
||||
if (m_useGSM) args << 8u;
|
||||
if (m_useGSM)
|
||||
args << 8u;
|
||||
call.setArguments(args);
|
||||
|
||||
QDBusPendingCall pcall = QDBusConnection::sessionBus().asyncCall(call, 1000);
|
||||
|
@ -139,5 +139,5 @@ private:
|
||||
Averager *m_currentAverager {&m_averager5Min};
|
||||
|
||||
QMap<GraphID, GraphProperties> m_properties;
|
||||
milliseconds m_currentMaxDuration;
|
||||
milliseconds m_currentMaxDuration {0};
|
||||
};
|
||||
|
@ -243,15 +243,12 @@ void FeedListWidget::dragMoveEvent(QDragMoveEvent *event)
|
||||
QTreeWidget::dragMoveEvent(event);
|
||||
|
||||
QTreeWidgetItem *item = itemAt(event->pos());
|
||||
// Prohibit dropping onto global unread counter
|
||||
if (item == m_unreadStickyItem)
|
||||
event->ignore();
|
||||
// Prohibit dragging of global unread counter
|
||||
else if (selectedItems().contains(m_unreadStickyItem))
|
||||
event->ignore();
|
||||
// Prohibit dropping onto feeds
|
||||
else if (item && isFeed(item))
|
||||
if ((item == m_unreadStickyItem) // Prohibit dropping onto global unread counter
|
||||
|| selectedItems().contains(m_unreadStickyItem) // Prohibit dragging of global unread counter
|
||||
|| (item && isFeed(item))) // Prohibit dropping onto feeds
|
||||
{
|
||||
event->ignore();
|
||||
}
|
||||
}
|
||||
|
||||
void FeedListWidget::dropEvent(QDropEvent *event)
|
||||
|
@ -32,13 +32,6 @@
|
||||
|
||||
SearchSortModel::SearchSortModel(QObject *parent)
|
||||
: base(parent)
|
||||
, m_isNameFilterEnabled(false)
|
||||
, m_minSeeds(0)
|
||||
, m_maxSeeds(-1)
|
||||
, m_minLeeches(0)
|
||||
, m_maxLeeches(-1)
|
||||
, m_minSize(0)
|
||||
, m_maxSize(-1)
|
||||
{
|
||||
setSortRole(UnderlyingDataRole);
|
||||
setFilterRole(UnderlyingDataRole);
|
||||
|
@ -90,12 +90,12 @@ protected:
|
||||
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
|
||||
|
||||
private:
|
||||
bool m_isNameFilterEnabled;
|
||||
bool m_isNameFilterEnabled = false;
|
||||
QString m_searchTerm;
|
||||
QStringList m_searchTermWords;
|
||||
int m_minSeeds, m_maxSeeds;
|
||||
int m_minLeeches, m_maxLeeches;
|
||||
qint64 m_minSize, m_maxSize;
|
||||
int m_minSeeds = 0, m_maxSeeds = -1;
|
||||
int m_minLeeches = 0, m_maxLeeches = -1;
|
||||
qint64 m_minSize = 0, m_maxSize = -1;
|
||||
|
||||
Utils::Compare::NaturalLessThan<Qt::CaseInsensitive> m_naturalLessThan;
|
||||
};
|
||||
|
@ -75,7 +75,6 @@ namespace
|
||||
case SearchJobWidget::Status::Aborted:
|
||||
return u"task-reject"_qs;
|
||||
case SearchJobWidget::Status::Error:
|
||||
return u"dialog-warning"_qs;
|
||||
case SearchJobWidget::Status::NoResults:
|
||||
return u"dialog-warning"_qs;
|
||||
default:
|
||||
@ -330,15 +329,15 @@ void SearchWidget::on_searchButton_clicked()
|
||||
return;
|
||||
}
|
||||
|
||||
const QString plugin = selectedPlugin();
|
||||
|
||||
QStringList plugins;
|
||||
if (selectedPlugin() == u"all")
|
||||
if (plugin == u"all")
|
||||
plugins = SearchPluginManager::instance()->allPlugins();
|
||||
else if (selectedPlugin() == u"enabled")
|
||||
plugins = SearchPluginManager::instance()->enabledPlugins();
|
||||
else if (selectedPlugin() == u"multi")
|
||||
else if ((plugin == u"enabled") || (plugin == u"multi"))
|
||||
plugins = SearchPluginManager::instance()->enabledPlugins();
|
||||
else
|
||||
plugins << selectedPlugin();
|
||||
plugins << plugin;
|
||||
|
||||
qDebug("Search with category: %s", qUtf8Printable(selectedCategory()));
|
||||
|
||||
|
@ -52,6 +52,6 @@ public:
|
||||
private:
|
||||
void addNewTag();
|
||||
|
||||
Ui::TorrentTagsDialog *m_ui;
|
||||
Ui::TorrentTagsDialog *m_ui = nullptr;
|
||||
SettingValue<QSize> m_storeDialogSize;
|
||||
};
|
||||
|
@ -40,7 +40,7 @@ class CategoryModelItem
|
||||
public:
|
||||
CategoryModelItem() = default;
|
||||
|
||||
CategoryModelItem(CategoryModelItem *parent, QString categoryName, int torrentsCount = 0)
|
||||
CategoryModelItem(CategoryModelItem *parent, const QString &categoryName, const int torrentsCount = 0)
|
||||
: m_name(categoryName)
|
||||
, m_torrentsCount(torrentsCount)
|
||||
{
|
||||
|
@ -72,6 +72,6 @@ private:
|
||||
QModelIndex index(CategoryModelItem *item) const;
|
||||
CategoryModelItem *findItem(const QString &fullName) const;
|
||||
|
||||
bool m_isSubcategoriesEnabled;
|
||||
bool m_isSubcategoriesEnabled = false;
|
||||
CategoryModelItem *m_rootItem = nullptr;
|
||||
};
|
||||
|
@ -38,8 +38,6 @@
|
||||
|
||||
TriStateWidget::TriStateWidget(const QString &text, QWidget *parent)
|
||||
: QWidget {parent}
|
||||
, m_closeOnInteraction {true}
|
||||
, m_checkState {Qt::Unchecked}
|
||||
, m_text {text}
|
||||
{
|
||||
setMouseTracking(true); // for visual effects via mouse navigation
|
||||
|
@ -55,7 +55,7 @@ private:
|
||||
|
||||
void toggleCheckState();
|
||||
|
||||
bool m_closeOnInteraction;
|
||||
Qt::CheckState m_checkState;
|
||||
bool m_closeOnInteraction = true;
|
||||
Qt::CheckState m_checkState = Qt::Unchecked;
|
||||
const QString m_text;
|
||||
};
|
||||
|
@ -60,7 +60,7 @@ private:
|
||||
bool storeColors();
|
||||
bool storeIcons();
|
||||
|
||||
Ui::UIThemeDialog *m_ui;
|
||||
Ui::UIThemeDialog *m_ui = nullptr;
|
||||
SettingValue<QSize> m_storeDialogSize;
|
||||
|
||||
DefaultThemeSource m_defaultThemeSource;
|
||||
|
@ -331,17 +331,23 @@ namespace
|
||||
for (const QVariant &item : data)
|
||||
{
|
||||
if (!prevData.contains(item))
|
||||
{
|
||||
// new list item found - append it to syncData
|
||||
syncData.append(item);
|
||||
}
|
||||
else
|
||||
{
|
||||
// unchanged list item found - remove it from prevData
|
||||
prevData.removeOne(item);
|
||||
}
|
||||
}
|
||||
|
||||
if (!prevData.isEmpty())
|
||||
{
|
||||
// prevData contains only items that are missing now -
|
||||
// put them in removedItems
|
||||
removedItems = prevData;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -730,9 +730,11 @@ bool WebApplication::isCrossSiteRequest(const Http::Request &request) const
|
||||
{
|
||||
const bool isInvalid = !isSameOrigin(urlFromHostHeader(targetOrigin), originValue);
|
||||
if (isInvalid)
|
||||
{
|
||||
LogMsg(tr("WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3'")
|
||||
.arg(m_env.clientAddress.toString(), originValue, targetOrigin)
|
||||
, Log::WARNING);
|
||||
}
|
||||
return isInvalid;
|
||||
}
|
||||
|
||||
@ -740,9 +742,11 @@ bool WebApplication::isCrossSiteRequest(const Http::Request &request) const
|
||||
{
|
||||
const bool isInvalid = !isSameOrigin(urlFromHostHeader(targetOrigin), refererValue);
|
||||
if (isInvalid)
|
||||
{
|
||||
LogMsg(tr("WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3'")
|
||||
.arg(m_env.clientAddress.toString(), refererValue, targetOrigin)
|
||||
, Log::WARNING);
|
||||
}
|
||||
return isInvalid;
|
||||
}
|
||||
|
||||
|
@ -222,21 +222,21 @@ private:
|
||||
bool m_translationFileLoaded = false;
|
||||
|
||||
AuthController *m_authController = nullptr;
|
||||
bool m_isLocalAuthEnabled;
|
||||
bool m_isAuthSubnetWhitelistEnabled;
|
||||
bool m_isLocalAuthEnabled = false;
|
||||
bool m_isAuthSubnetWhitelistEnabled = false;
|
||||
QVector<Utils::Net::Subnet> m_authSubnetWhitelist;
|
||||
int m_sessionTimeout;
|
||||
int m_sessionTimeout = 0;
|
||||
QString m_sessionCookieName;
|
||||
|
||||
// security related
|
||||
QStringList m_domainList;
|
||||
bool m_isCSRFProtectionEnabled;
|
||||
bool m_isSecureCookieEnabled;
|
||||
bool m_isHostHeaderValidationEnabled;
|
||||
bool m_isHttpsEnabled;
|
||||
bool m_isCSRFProtectionEnabled = true;
|
||||
bool m_isSecureCookieEnabled = true;
|
||||
bool m_isHostHeaderValidationEnabled = true;
|
||||
bool m_isHttpsEnabled = false;
|
||||
|
||||
// Reverse proxy
|
||||
bool m_isReverseProxySupportEnabled;
|
||||
bool m_isReverseProxySupportEnabled = false;
|
||||
QVector<Utils::Net::Subnet> m_trustedReverseProxyList;
|
||||
QHostAddress m_clientAddress;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user