aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Cao <70191398+ryanccn@users.noreply.github.com>2022-06-04 15:33:17 +0800
committerRyan Cao <70191398+ryanccn@users.noreply.github.com>2022-06-04 15:33:17 +0800
commit25ab121e42f624352bb4f32faa29e9e455328f09 (patch)
treedc9e1ff5a800196f4072a8fa019cf615e721b3ab
parent04a3669fc470130a5d7f2dfd32f06a3f2aceb165 (diff)
downloadPrismLauncher-25ab121e42f624352bb4f32faa29e9e455328f09.tar.gz
PrismLauncher-25ab121e42f624352bb4f32faa29e9e455328f09.tar.bz2
PrismLauncher-25ab121e42f624352bb4f32faa29e9e455328f09.zip
feat: custom user-agent
-rw-r--r--launcher/Application.cpp21
-rw-r--r--launcher/Application.h2
-rw-r--r--launcher/net/Download.cpp2
-rw-r--r--launcher/net/PasteUpload.cpp4
-rw-r--r--launcher/net/Upload.cpp2
-rw-r--r--launcher/screenshots/ImgurAlbumCreation.cpp2
-rw-r--r--launcher/screenshots/ImgurUpload.cpp3
-rw-r--r--launcher/ui/pages/global/APIPage.cpp4
-rw-r--r--launcher/ui/pages/global/APIPage.ui27
9 files changed, 60 insertions, 7 deletions
diff --git a/launcher/Application.cpp b/launcher/Application.cpp
index ba4096b6..dd6f8ec6 100644
--- a/launcher/Application.cpp
+++ b/launcher/Application.cpp
@@ -708,6 +708,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
// Custom MSA credentials
m_settings->registerSetting("MSAClientIDOverride", "");
m_settings->registerSetting("CFKeyOverride", "");
+ m_settings->registerSetting("UserAgentOverride", "");
// Init page provider
{
@@ -1553,3 +1554,23 @@ QString Application::getCurseKey()
return BuildConfig.CURSEFORGE_API_KEY;
}
+
+QString Application::getUserAgent()
+{
+ QString keyOverride = m_settings->get("UserAgentOverride").toString();
+ if (!keyOverride.isEmpty()) {
+ return keyOverride;
+ }
+
+ return BuildConfig.USER_AGENT;
+}
+
+QString Application::getUserAgentUncached()
+{
+ QString keyOverride = m_settings->get("UserAgentOverride").toString();
+ if (!keyOverride.isEmpty()) {
+ return keyOverride;
+ }
+
+ return BuildConfig.USER_AGENT_UNCACHED;
+}
diff --git a/launcher/Application.h b/launcher/Application.h
index 3129b4fb..f440f433 100644
--- a/launcher/Application.h
+++ b/launcher/Application.h
@@ -156,6 +156,8 @@ public:
QString getMSAClientID();
QString getCurseKey();
+ QString getUserAgent();
+ QString getUserAgentUncached();
/// this is the root of the 'installation'. Used for automatic updates
const QString &root() {
diff --git a/launcher/net/Download.cpp b/launcher/net/Download.cpp
index 966d4126..d93eb088 100644
--- a/launcher/net/Download.cpp
+++ b/launcher/net/Download.cpp
@@ -116,7 +116,7 @@ void Download::executeTask()
return;
}
- request.setHeader(QNetworkRequest::UserAgentHeader, BuildConfig.USER_AGENT);
+ request.setHeader(QNetworkRequest::UserAgentHeader, APPLICATION->getUserAgent().toUtf8());
if (request.url().host().contains("api.curseforge.com")) {
request.setRawHeader("x-api-key", APPLICATION->getCurseKey().toUtf8());
};
diff --git a/launcher/net/PasteUpload.cpp b/launcher/net/PasteUpload.cpp
index 3855190a..ead5e170 100644
--- a/launcher/net/PasteUpload.cpp
+++ b/launcher/net/PasteUpload.cpp
@@ -71,7 +71,7 @@ void PasteUpload::executeTask()
QNetworkRequest request{QUrl(m_uploadUrl)};
QNetworkReply *rep{};
- request.setHeader(QNetworkRequest::UserAgentHeader, BuildConfig.USER_AGENT_UNCACHED);
+ request.setHeader(QNetworkRequest::UserAgentHeader, APPLICATION->getUserAgentUncached().toUtf8());
switch (m_pasteType) {
case NullPointer: {
@@ -91,7 +91,7 @@ void PasteUpload::executeTask()
break;
}
case Hastebin: {
- request.setHeader(QNetworkRequest::UserAgentHeader, BuildConfig.USER_AGENT_UNCACHED);
+ request.setHeader(QNetworkRequest::UserAgentHeader, APPLICATION->getUserAgentUncached().toUtf8());
rep = APPLICATION->network()->post(request, m_text);
break;
}
diff --git a/launcher/net/Upload.cpp b/launcher/net/Upload.cpp
index bbd27390..c9942a8d 100644
--- a/launcher/net/Upload.cpp
+++ b/launcher/net/Upload.cpp
@@ -173,7 +173,7 @@ namespace Net {
return;
}
- request.setHeader(QNetworkRequest::UserAgentHeader, BuildConfig.USER_AGENT);
+ request.setHeader(QNetworkRequest::UserAgentHeader, APPLICATION->getUserAgent().toUtf8());
if (request.url().host().contains("api.curseforge.com")) {
request.setRawHeader("x-api-key", APPLICATION->getCurseKey().toUtf8());
}
diff --git a/launcher/screenshots/ImgurAlbumCreation.cpp b/launcher/screenshots/ImgurAlbumCreation.cpp
index 7afdc5cc..04e26ea2 100644
--- a/launcher/screenshots/ImgurAlbumCreation.cpp
+++ b/launcher/screenshots/ImgurAlbumCreation.cpp
@@ -55,7 +55,7 @@ void ImgurAlbumCreation::executeTask()
{
m_state = State::Running;
QNetworkRequest request(m_url);
- request.setHeader(QNetworkRequest::UserAgentHeader, BuildConfig.USER_AGENT_UNCACHED);
+ request.setHeader(QNetworkRequest::UserAgentHeader, APPLICATION->getUserAgentUncached().toUtf8());
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
request.setRawHeader("Authorization", QString("Client-ID %1").arg(BuildConfig.IMGUR_CLIENT_ID).toStdString().c_str());
request.setRawHeader("Accept", "application/json");
diff --git a/launcher/screenshots/ImgurUpload.cpp b/launcher/screenshots/ImgurUpload.cpp
index fbcfb95f..9aeb6fb8 100644
--- a/launcher/screenshots/ImgurUpload.cpp
+++ b/launcher/screenshots/ImgurUpload.cpp
@@ -35,6 +35,7 @@
#include "ImgurUpload.h"
#include "BuildConfig.h"
+#include "Application.h"
#include <QNetworkRequest>
#include <QHttpMultiPart>
@@ -56,7 +57,7 @@ void ImgurUpload::executeTask()
finished = false;
m_state = Task::State::Running;
QNetworkRequest request(m_url);
- request.setHeader(QNetworkRequest::UserAgentHeader, BuildConfig.USER_AGENT_UNCACHED);
+ request.setHeader(QNetworkRequest::UserAgentHeader, APPLICATION->getUserAgentUncached().toUtf8());
request.setRawHeader("Authorization", QString("Client-ID %1").arg(BuildConfig.IMGUR_CLIENT_ID).toStdString().c_str());
request.setRawHeader("Accept", "application/json");
diff --git a/launcher/ui/pages/global/APIPage.cpp b/launcher/ui/pages/global/APIPage.cpp
index 5d812d07..0c1d7ca2 100644
--- a/launcher/ui/pages/global/APIPage.cpp
+++ b/launcher/ui/pages/global/APIPage.cpp
@@ -78,6 +78,7 @@ APIPage::APIPage(QWidget *parent) :
ui->tabWidget->tabBar()->hide();
ui->metaURL->setPlaceholderText(BuildConfig.META_URL);
+ ui->userAgentLineEdit->setPlaceholderText(BuildConfig.USER_AGENT);
loadSettings();
@@ -139,6 +140,8 @@ void APIPage::loadSettings()
ui->metaURL->setText(metaURL);
QString curseKey = s->get("CFKeyOverride").toString();
ui->curseKey->setText(curseKey);
+ QString customUserAgent = s->get("UserAgentOverride").toString();
+ ui->userAgentLineEdit->setText(customUserAgent);
}
void APIPage::applySettings()
@@ -167,6 +170,7 @@ void APIPage::applySettings()
s->set("MetaURLOverride", metaURL);
QString curseKey = ui->curseKey->text();
s->set("CFKeyOverride", curseKey);
+ s->set("UserAgentOverride", ui->userAgentLineEdit->text());
}
bool APIPage::apply()
diff --git a/launcher/ui/pages/global/APIPage.ui b/launcher/ui/pages/global/APIPage.ui
index 5c927391..0981c700 100644
--- a/launcher/ui/pages/global/APIPage.ui
+++ b/launcher/ui/pages/global/APIPage.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>800</width>
- <height>600</height>
+ <height>702</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
@@ -221,6 +221,31 @@
</widget>
</item>
<item>
+ <widget class="QGroupBox" name="groupBox_ua">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="title">
+ <string>User Agent</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_7">
+ <item>
+ <widget class="QLineEdit" name="userAgentLineEdit"/>
+ </item>
+ <item>
+ <widget class="QLabel" name="userAgentLabel">
+ <property name="text">
+ <string>Enter a custom User Agent here. The special string ${launcher_version} will be replaced with the version of the launcher.</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>