aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSefa Eyeoglu <contact@scrumplex.net>2022-05-22 22:47:00 +0200
committerGitHub <noreply@github.com>2022-05-22 22:47:00 +0200
commitf24cdd6564c0abf39b10b31d3896b939b4dbd7d3 (patch)
tree7ad71def60513c3e0601dce24e9d34c2eb1ccaa7
parent7d91db607f4dff3c398af85b999344db8338e729 (diff)
parentf2e205313485e458e2f5186f743d527d28609c5e (diff)
downloadPrismLauncher-f24cdd6564c0abf39b10b31d3896b939b4dbd7d3.tar.gz
PrismLauncher-f24cdd6564c0abf39b10b31d3896b939b4dbd7d3.tar.bz2
PrismLauncher-f24cdd6564c0abf39b10b31d3896b939b4dbd7d3.zip
Merge pull request #425 from dada513/dynamic_meta
-rw-r--r--launcher/Application.cpp2
-rw-r--r--launcher/meta/BaseEntity.cpp11
-rw-r--r--launcher/ui/pages/global/APIPage.cpp17
-rw-r--r--launcher/ui/pages/global/APIPage.ui73
4 files changed, 91 insertions, 12 deletions
diff --git a/launcher/Application.cpp b/launcher/Application.cpp
index 91f5ef9d..ba4096b6 100644
--- a/launcher/Application.cpp
+++ b/launcher/Application.cpp
@@ -699,6 +699,8 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
m_settings->reset("PastebinCustomAPIBase");
}
}
+ // meta URL
+ m_settings->registerSetting("MetaURLOverride", "");
m_settings->registerSetting("CloseAfterLaunch", false);
m_settings->registerSetting("QuitAfterGameStop", false);
diff --git a/launcher/meta/BaseEntity.cpp b/launcher/meta/BaseEntity.cpp
index 84155922..de4e1012 100644
--- a/launcher/meta/BaseEntity.cpp
+++ b/launcher/meta/BaseEntity.cpp
@@ -75,7 +75,16 @@ Meta::BaseEntity::~BaseEntity()
QUrl Meta::BaseEntity::url() const
{
- return QUrl(BuildConfig.META_URL).resolved(localFilename());
+ auto s = APPLICATION->settings();
+ QString metaOverride = s->get("MetaURLOverride").toString();
+ if(metaOverride.isEmpty())
+ {
+ return QUrl(BuildConfig.META_URL).resolved(localFilename());
+ }
+ else
+ {
+ return QUrl(metaOverride).resolved(localFilename());
+ }
}
bool Meta::BaseEntity::loadLocalFile()
diff --git a/launcher/ui/pages/global/APIPage.cpp b/launcher/ui/pages/global/APIPage.cpp
index 2841544f..6ad243dd 100644
--- a/launcher/ui/pages/global/APIPage.cpp
+++ b/launcher/ui/pages/global/APIPage.cpp
@@ -132,6 +132,8 @@ void APIPage::loadSettings()
QString msaClientID = s->get("MSAClientIDOverride").toString();
ui->msaClientID->setText(msaClientID);
+ QString metaURL = s->get("MetaURLOverride").toString();
+ ui->metaURL->setText(metaURL);
QString curseKey = s->get("CFKeyOverride").toString();
ui->curseKey->setText(curseKey);
}
@@ -145,6 +147,21 @@ void APIPage::applySettings()
QString msaClientID = ui->msaClientID->text();
s->set("MSAClientIDOverride", msaClientID);
+ QUrl metaURL = ui->metaURL->text();
+ // Add required trailing slash
+ if (!metaURL.isEmpty() && !metaURL.path().endsWith('/'))
+ {
+ QString path = metaURL.path();
+ path.append('/');
+ metaURL.setPath(path);
+ }
+ // Don't allow HTTP, since meta is basically RCE with all the jar files.
+ if(!metaURL.isEmpty() && metaURL.scheme() == "http")
+ {
+ metaURL.setScheme("https");
+ }
+
+ s->set("MetaURLOverride", metaURL);
QString curseKey = ui->curseKey->text();
s->set("CFKeyOverride", curseKey);
}
diff --git a/launcher/ui/pages/global/APIPage.ui b/launcher/ui/pages/global/APIPage.ui
index b6af1958..24189c5c 100644
--- a/launcher/ui/pages/global/APIPage.ui
+++ b/launcher/ui/pages/global/APIPage.ui
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>512</width>
- <height>538</height>
+ <width>800</width>
+ <height>600</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
@@ -125,24 +125,62 @@
</widget>
</item>
<item>
- <widget class="QGroupBox" name="groupBox_curse">
- <property name="enabled">
- <bool>true</bool>
- </property>
+ <widget class="QGroupBox" name="groupBox_meta">
<property name="title">
- <string>&amp;CurseForge Core API</string>
+ <string>Meta&amp;data Server</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
- <widget class="Line" name="line_3">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>You can set this to a third-party metadata server to use patched libraries or other hacks.</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::RichText</enum>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="metaURL">
+ <property name="placeholderText">
+ <string>(Default)</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_6">
<property name="text">
+ <string>Enter a custom URL for meta here.</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::RichText</enum>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ <property name="openExternalLinks">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_curse">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="title">
+ <string>&amp;CurseForge Core API</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_6">
+ <item>
+ <widget class="QLabel" name="label_8">
+ <property name="text">
<string>Note: you probably don't need to set this if CurseForge already works.</string>
</property>
</widget>
@@ -158,7 +196,7 @@
</widget>
</item>
<item>
- <widget class="QLabel" name="label_5">
+ <widget class="QLabel" name="label_7">
<property name="text">
<string>Enter a custom API Key for CurseForge here. </string>
</property>
@@ -176,6 +214,19 @@
</layout>
</widget>
</item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
</layout>
</widget>
</widget>