GH-3234 Add support for custom meta URLs at build time

This is not particularly interesting for non-developers.
Also includes some internal restructuring of URL constants in general.
This commit is contained in:
Petr Mrázek 2020-07-18 16:18:02 +02:00
parent 3158082b16
commit e7f373496e
27 changed files with 75 additions and 99 deletions

View File

@ -69,6 +69,9 @@ set(MultiMC_CHANLIST_URL "" CACHE STRING "URL for the channel list.")
# Notification URL # Notification URL
set(MultiMC_NOTIFICATION_URL "" CACHE STRING "URL for checking for notifications.") set(MultiMC_NOTIFICATION_URL "" CACHE STRING "URL for checking for notifications.")
# The metadata server
set(MultiMC_META_URL "https://meta.multimc.org/v1/" CACHE STRING "URL to fetch MultiMC's meta files from.")
# paste.ee API key # paste.ee API key
set(MultiMC_PASTE_EE_API_KEY "utLvciUouSURFzfjPxLBf5W4ISsUX4pwBDF7N1AfZ" CACHE STRING "API key you can get from paste.ee when you register an account") set(MultiMC_PASTE_EE_API_KEY "utLvciUouSURFzfjPxLBf5W4ISsUX4pwBDF7N1AfZ" CACHE STRING "API key you can get from paste.ee when you register an account")
@ -264,6 +267,7 @@ add_subdirectory(libraries/classparser) # google analytics library
############################### Built Artifacts ############################### ############################### Built Artifacts ###############################
add_subdirectory(buildconfig)
add_subdirectory(api/logic) add_subdirectory(api/logic)
add_subdirectory(api/gui) add_subdirectory(api/gui)

View File

@ -119,8 +119,6 @@ set(NET_SOURCES
net/PasteUpload.cpp net/PasteUpload.cpp
net/PasteUpload.h net/PasteUpload.h
net/Sink.h net/Sink.h
net/URLConstants.cpp
net/URLConstants.h
net/Validator.h net/Validator.h
) )
@ -491,7 +489,7 @@ set_target_properties(MultiMC_logic PROPERTIES CXX_VISIBILITY_PRESET hidden VISI
generate_export_header(MultiMC_logic) generate_export_header(MultiMC_logic)
# Link # Link
target_link_libraries(MultiMC_logic systeminfo MultiMC_quazip MultiMC_classparser ${NBT_NAME} ${ZLIB_LIBRARIES}) target_link_libraries(MultiMC_logic systeminfo MultiMC_quazip MultiMC_classparser ${NBT_NAME} ${ZLIB_LIBRARIES} BuildConfig)
target_link_libraries(MultiMC_logic Qt5::Core Qt5::Xml Qt5::Network Qt5::Concurrent) target_link_libraries(MultiMC_logic Qt5::Core Qt5::Xml Qt5::Network Qt5::Concurrent)
# Mark and export headers # Mark and export headers

View File

@ -24,6 +24,8 @@
#include "Env.h" #include "Env.h"
#include "Json.h" #include "Json.h"
#include "BuildConfig.h"
class ParsingValidator : public Net::Validator class ParsingValidator : public Net::Validator
{ {
public: /* con/des */ public: /* con/des */
@ -76,7 +78,7 @@ Meta::BaseEntity::~BaseEntity()
QUrl Meta::BaseEntity::url() const QUrl Meta::BaseEntity::url() const
{ {
return QUrl("https://meta.multimc.org/v1/").resolved(localFilename()); return QUrl(BuildConfig.META_URL).resolved(localFilename());
} }
bool Meta::BaseEntity::loadLocalFile() bool Meta::BaseEntity::loadLocalFile()

View File

@ -27,7 +27,7 @@
#include "FileSystem.h" #include "FileSystem.h"
#include "net/Download.h" #include "net/Download.h"
#include "net/ChecksumValidator.h" #include "net/ChecksumValidator.h"
#include "net/URLConstants.h" #include "BuildConfig.h"
namespace { namespace {
QSet<QString> collectPathsFromDir(QString dirPath) QSet<QString> collectPathsFromDir(QString dirPath)
@ -308,7 +308,7 @@ QString AssetObject::getLocalPath()
QUrl AssetObject::getUrl() QUrl AssetObject::getUrl()
{ {
return URLConstants::RESOURCE_BASE + getRelPath(); return BuildConfig.RESOURCE_BASE + getRelPath();
} }
QString AssetObject::getRelPath() QString AssetObject::getRelPath()

View File

@ -5,6 +5,7 @@
#include <net/ChecksumValidator.h> #include <net/ChecksumValidator.h>
#include <Env.h> #include <Env.h>
#include <FileSystem.h> #include <FileSystem.h>
#include <BuildConfig.h>
void Library::getApplicableFiles(OpSys system, QStringList& jar, QStringList& native, QStringList& native32, void Library::getApplicableFiles(OpSys system, QStringList& jar, QStringList& native, QStringList& native32,
@ -171,7 +172,7 @@ QList< std::shared_ptr< NetAction > > Library::getDownloads(
if (m_repositoryURL.isEmpty()) if (m_repositoryURL.isEmpty())
{ {
return URLConstants::LIBRARY_BASE + raw_storage; return BuildConfig.LIBRARY_BASE + raw_storage;
} }
if(m_repositoryURL.endsWith('/')) if(m_repositoryURL.endsWith('/'))

View File

@ -12,7 +12,6 @@
#include "Rule.h" #include "Rule.h"
#include "minecraft/OpSys.h" #include "minecraft/OpSys.h"
#include "GradleSpecifier.h" #include "GradleSpecifier.h"
#include "net/URLConstants.h"
#include "MojangDownloadInfo.h" #include "MojangDownloadInfo.h"
#include "multimc_logic_export.h" #include "multimc_logic_export.h"

View File

@ -25,7 +25,6 @@
#include "BaseInstance.h" #include "BaseInstance.h"
#include "minecraft/PackProfile.h" #include "minecraft/PackProfile.h"
#include "minecraft/Library.h" #include "minecraft/Library.h"
#include "net/URLConstants.h"
#include <FileSystem.h> #include <FileSystem.h>
#include "update/FoldersTask.h" #include "update/FoldersTask.h"

View File

@ -198,7 +198,10 @@ VersionFilePtr OneSixVersionFormat::versionFileFromJson(const QJsonDocument &doc
// FIXME: this will eventually break... // FIXME: this will eventually break...
else else
{ {
lib->setAbsoluteUrl(URLConstants::getLegacyJarUrl(out->minecraftVersion)); out->addProblem(
ProblemSeverity::Error,
QObject::tr("URL for the main jar could not be determined - Mojang removed the server that we used as fallback.")
);
} }
out->mainJar = lib; out->mainJar = lib;
} }

View File

@ -25,7 +25,7 @@
#include <Env.h> #include <Env.h>
#include <net/URLConstants.h> #include <BuildConfig.h>
#include <QDebug> #include <QDebug>
@ -42,7 +42,7 @@ void YggdrasilTask::executeTask()
// Get the content of the request we're going to send to the server. // Get the content of the request we're going to send to the server.
QJsonDocument doc(getRequestContent()); QJsonDocument doc(getRequestContent());
QUrl reqUrl(URLConstants::AUTH_BASE + getEndpoint()); QUrl reqUrl(BuildConfig.AUTH_BASE + getEndpoint());
QNetworkRequest netRequest(reqUrl); QNetworkRequest netRequest(reqUrl);
netRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); netRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");

View File

@ -4,6 +4,7 @@
#include "FMLLibrariesTask.h" #include "FMLLibrariesTask.h"
#include "minecraft/MinecraftInstance.h" #include "minecraft/MinecraftInstance.h"
#include "minecraft/PackProfile.h" #include "minecraft/PackProfile.h"
#include "BuildConfig.h"
FMLLibrariesTask::FMLLibrariesTask(MinecraftInstance * inst) FMLLibrariesTask::FMLLibrariesTask(MinecraftInstance * inst)
{ {
@ -63,7 +64,7 @@ void FMLLibrariesTask::executeTask()
for (auto &lib : fmlLibsToProcess) for (auto &lib : fmlLibsToProcess)
{ {
auto entry = metacache->resolveEntry("fmllibs", lib.filename); auto entry = metacache->resolveEntry("fmllibs", lib.filename);
QString urlString = (lib.ours ? URLConstants::FMLLIBS_OUR_BASE_URL : URLConstants::FMLLIBS_FORGE_BASE_URL) + lib.filename; QString urlString = (lib.ours ? BuildConfig.FMLLIBS_OUR_BASE_URL : BuildConfig.FMLLIBS_FORGE_BASE_URL) + lib.filename;
dljob->addNetAction(Net::Download::makeCached(QUrl(urlString), entry)); dljob->addNetAction(Net::Download::makeCached(QUrl(urlString), entry));
} }

View File

@ -2,7 +2,7 @@
#include "PrivatePackManager.h" #include "PrivatePackManager.h"
#include <QDomDocument> #include <QDomDocument>
#include "net/URLConstants.h" #include <BuildConfig.h>
namespace LegacyFTB { namespace LegacyFTB {
@ -13,11 +13,11 @@ void PackFetchTask::fetch()
NetJob *netJob = new NetJob("LegacyFTB::ModpackFetch"); NetJob *netJob = new NetJob("LegacyFTB::ModpackFetch");
QUrl publicPacksUrl = QUrl(URLConstants::LEGACY_FTB_CDN_BASE_URL + "static/modpacks.xml"); QUrl publicPacksUrl = QUrl(BuildConfig.LEGACY_FTB_CDN_BASE_URL + "static/modpacks.xml");
qDebug() << "Downloading public version info from" << publicPacksUrl.toString(); qDebug() << "Downloading public version info from" << publicPacksUrl.toString();
netJob->addNetAction(Net::Download::makeByteArray(publicPacksUrl, &publicModpacksXmlFileData)); netJob->addNetAction(Net::Download::makeByteArray(publicPacksUrl, &publicModpacksXmlFileData));
QUrl thirdPartyUrl = QUrl(URLConstants::LEGACY_FTB_CDN_BASE_URL + "static/thirdparty.xml"); QUrl thirdPartyUrl = QUrl(BuildConfig.LEGACY_FTB_CDN_BASE_URL + "static/thirdparty.xml");
qDebug() << "Downloading thirdparty version info from" << thirdPartyUrl.toString(); qDebug() << "Downloading thirdparty version info from" << thirdPartyUrl.toString();
netJob->addNetAction(Net::Download::makeByteArray(thirdPartyUrl, &thirdPartyModpacksXmlFileData)); netJob->addNetAction(Net::Download::makeByteArray(thirdPartyUrl, &thirdPartyModpacksXmlFileData));
@ -30,7 +30,7 @@ void PackFetchTask::fetch()
void PackFetchTask::fetchPrivate(const QStringList & toFetch) void PackFetchTask::fetchPrivate(const QStringList & toFetch)
{ {
QString privatePackBaseUrl = URLConstants::LEGACY_FTB_CDN_BASE_URL + "static/%1.xml"; QString privatePackBaseUrl = BuildConfig.LEGACY_FTB_CDN_BASE_URL + "static/%1.xml";
for (auto &packCode: toFetch) for (auto &packCode: toFetch)
{ {

View File

@ -9,7 +9,7 @@
#include "minecraft/MinecraftInstance.h" #include "minecraft/MinecraftInstance.h"
#include "minecraft/PackProfile.h" #include "minecraft/PackProfile.h"
#include "minecraft/GradleSpecifier.h" #include "minecraft/GradleSpecifier.h"
#include "net/URLConstants.h" #include "BuildConfig.h"
#include <QtConcurrent> #include <QtConcurrent>
@ -38,11 +38,11 @@ void PackInstallTask::downloadPack()
QString url; QString url;
if(m_pack.type == PackType::Private) if(m_pack.type == PackType::Private)
{ {
url = QString(URLConstants::LEGACY_FTB_CDN_BASE_URL + "privatepacks/%1").arg(packoffset); url = QString(BuildConfig.LEGACY_FTB_CDN_BASE_URL + "privatepacks/%1").arg(packoffset);
} }
else else
{ {
url = QString(URLConstants::LEGACY_FTB_CDN_BASE_URL + "modpacks/%1").arg(packoffset); url = QString(BuildConfig.LEGACY_FTB_CDN_BASE_URL + "modpacks/%1").arg(packoffset);
} }
job->addNetAction(Net::Download::makeCached(url, entry)); job->addNetAction(Net::Download::makeCached(url, entry));
archivePath = entry->getFullPath(); archivePath = entry->getFullPath();

View File

@ -1,16 +0,0 @@
#include "URLConstants.h"
namespace URLConstants {
QString getLegacyJarUrl(QString version)
{
return AWS_DOWNLOAD_VERSIONS + getJarPath(version);
}
QString getJarPath(QString version)
{
return version + "/" + version + ".jar";
}
}

View File

@ -1,37 +0,0 @@
/* Copyright 2013-2019 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <QString>
namespace URLConstants
{
const QString AWS_DOWNLOAD_VERSIONS("https://s3.amazonaws.com/Minecraft.Download/versions/");
const QString RESOURCE_BASE("https://resources.download.minecraft.net/");
const QString LIBRARY_BASE("https://libraries.minecraft.net/");
const QString SKINS_BASE("https://crafatar.com/skins/");
const QString AUTH_BASE("https://authserver.mojang.com/");
const QString MOJANG_STATUS_URL("https://status.mojang.com/check");
const QString IMGUR_BASE_URL("https://api.imgur.com/3/");
const QString FMLLIBS_OUR_BASE_URL("https://files.multimc.org/fmllibs/");
const QString FMLLIBS_FORGE_BASE_URL("https://files.minecraftforge.net/fmllibs/");
const QString TRANSLATIONS_BASE_URL("https://files.multimc.org/translations/");
const QString LEGACY_FTB_CDN_BASE_URL("https://dist.creeper.host/FTB2/");
QString getJarPath(QString version);
QString getLegacyJarUrl(QString version);
}

View File

@ -6,13 +6,13 @@
#include <QUrl> #include <QUrl>
#include <QStringList> #include <QStringList>
#include "net/URLConstants.h" #include "BuildConfig.h"
#include "Env.h" #include "Env.h"
#include <QDebug> #include <QDebug>
ImgurAlbumCreation::ImgurAlbumCreation(QList<ScreenshotPtr> screenshots) : NetAction(), m_screenshots(screenshots) ImgurAlbumCreation::ImgurAlbumCreation(QList<ScreenshotPtr> screenshots) : NetAction(), m_screenshots(screenshots)
{ {
m_url = URLConstants::IMGUR_BASE_URL + "album.json"; m_url = BuildConfig.IMGUR_BASE_URL + "album.json";
m_status = Job_NotStarted; m_status = Job_NotStarted;
} }

View File

@ -8,13 +8,13 @@
#include <QFile> #include <QFile>
#include <QUrl> #include <QUrl>
#include "net/URLConstants.h" #include "BuildConfig.h"
#include "Env.h" #include "Env.h"
#include <QDebug> #include <QDebug>
ImgurUpload::ImgurUpload(ScreenshotPtr shot) : NetAction(), m_shot(shot) ImgurUpload::ImgurUpload(ScreenshotPtr shot) : NetAction(), m_shot(shot)
{ {
m_url = URLConstants::IMGUR_BASE_URL + "upload.json"; m_url = BuildConfig.IMGUR_BASE_URL + "upload.json";
m_status = Job_NotStarted; m_status = Job_NotStarted;
} }

View File

@ -15,12 +15,12 @@
#include "StatusChecker.h" #include "StatusChecker.h"
#include <net/URLConstants.h>
#include <QByteArray> #include <QByteArray>
#include <QDebug> #include <QDebug>
#include <BuildConfig.h>
StatusChecker::StatusChecker() StatusChecker::StatusChecker()
{ {
@ -43,7 +43,7 @@ void StatusChecker::reloadStatus()
// qDebug() << "Reloading status."; // qDebug() << "Reloading status.";
NetJob* job = new NetJob("Status JSON"); NetJob* job = new NetJob("Status JSON");
job->addNetAction(Net::Download::makeByteArray(URLConstants::MOJANG_STATUS_URL, &dataSink)); job->addNetAction(Net::Download::makeByteArray(BuildConfig.MOJANG_STATUS_URL, &dataSink));
QObject::connect(job, &NetJob::succeeded, this, &StatusChecker::statusDownloadFinished); QObject::connect(job, &NetJob::succeeded, this, &StatusChecker::statusDownloadFinished);
QObject::connect(job, &NetJob::failed, this, &StatusChecker::statusDownloadFailed); QObject::connect(job, &NetJob::failed, this, &StatusChecker::statusDownloadFailed);
m_statusNetJob.reset(job); m_statusNetJob.reset(job);

View File

@ -10,7 +10,7 @@
#include <net/NetJob.h> #include <net/NetJob.h>
#include <net/ChecksumValidator.h> #include <net/ChecksumValidator.h>
#include <Env.h> #include <Env.h>
#include <net/URLConstants.h> #include <BuildConfig.h>
#include "Json.h" #include "Json.h"
#include "POTranslator.h" #include "POTranslator.h"
@ -606,7 +606,7 @@ void TranslationsModel::downloadTranslation(QString key)
MetaEntryPtr entry = ENV.metacache()->resolveEntry("translations", "mmc_" + key + ".qm"); MetaEntryPtr entry = ENV.metacache()->resolveEntry("translations", "mmc_" + key + ".qm");
entry->setStale(true); entry->setStale(true);
auto dl = Net::Download::makeCached(QUrl(URLConstants::TRANSLATIONS_BASE_URL + lang->file_name), entry); auto dl = Net::Download::makeCached(QUrl(BuildConfig.TRANSLATIONS_BASE_URL + lang->file_name), entry);
auto rawHash = QByteArray::fromHex(lang->file_sha1.toLatin1()); auto rawHash = QByteArray::fromHex(lang->file_sha1.toLatin1());
dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, rawHash)); dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, rawHash));
dl->m_total_progress = lang->file_size; dl->m_total_progress = lang->file_size;

View File

@ -1,8 +1,5 @@
project(application) project(application)
######## Configure the file with build properties ########
configure_file("${PROJECT_SOURCE_DIR}/BuildConfig.cpp.in" "${PROJECT_BINARY_DIR}/BuildConfig.cpp")
################################ FILES ################################ ################################ FILES ################################
######## Sources and headers ######## ######## Sources and headers ########
@ -11,8 +8,6 @@ SET(MULTIMC_SOURCES
main.cpp main.cpp
MultiMC.h MultiMC.h
MultiMC.cpp MultiMC.cpp
BuildConfig.h
${PROJECT_BINARY_DIR}/BuildConfig.cpp
UpdateController.cpp UpdateController.cpp
UpdateController.h UpdateController.h

View File

@ -56,7 +56,7 @@
#include <launch/LaunchTask.h> #include <launch/LaunchTask.h>
#include <minecraft/auth/MojangAccountList.h> #include <minecraft/auth/MojangAccountList.h>
#include <SkinUtils.h> #include <SkinUtils.h>
#include <net/URLConstants.h> #include <BuildConfig.h>
#include <net/NetJob.h> #include <net/NetJob.h>
#include <net/Download.h> #include <net/Download.h>
#include <news/NewsChecker.h> #include <news/NewsChecker.h>
@ -772,7 +772,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new MainWindow
for (auto profile : account->profiles()) for (auto profile : account->profiles())
{ {
auto meta = Env::getInstance().metacache()->resolveEntry("skins", profile.id + ".png"); auto meta = Env::getInstance().metacache()->resolveEntry("skins", profile.id + ".png");
auto action = Net::Download::makeCached(QUrl(URLConstants::SKINS_BASE + profile.id + ".png"), meta); auto action = Net::Download::makeCached(QUrl(BuildConfig.SKINS_BASE + profile.id + ".png"), meta);
skin_dls.append(action); skin_dls.append(action);
meta->setStale(true); meta->setStale(true);
} }

View File

@ -45,7 +45,6 @@
#include <minecraft/auth/MojangAccountList.h> #include <minecraft/auth/MojangAccountList.h>
#include "icons/IconList.h" #include "icons/IconList.h"
#include "net/HttpMetaCache.h" #include "net/HttpMetaCache.h"
#include "net/URLConstants.h"
#include "Env.h" #include "Env.h"
#include "java/JavaUtils.h" #include "java/JavaUtils.h"

View File

@ -22,7 +22,6 @@
#include <QDebug> #include <QDebug>
#include "net/NetJob.h" #include "net/NetJob.h"
#include "net/URLConstants.h"
#include "Env.h" #include "Env.h"
#include "dialogs/ProgressDialog.h" #include "dialogs/ProgressDialog.h"
@ -34,6 +33,8 @@
#include "MultiMC.h" #include "MultiMC.h"
#include "BuildConfig.h"
AccountListPage::AccountListPage(QWidget *parent) AccountListPage::AccountListPage(QWidget *parent)
: QMainWindow(parent), ui(new Ui::AccountListPage) : QMainWindow(parent), ui(new Ui::AccountListPage)
{ {
@ -170,7 +171,7 @@ void AccountListPage::addAccount(const QString &errMsg)
for (AccountProfile profile : account->profiles()) for (AccountProfile profile : account->profiles())
{ {
auto meta = Env::getInstance().metacache()->resolveEntry("skins", profile.id + ".png"); auto meta = Env::getInstance().metacache()->resolveEntry("skins", profile.id + ".png");
auto action = Net::Download::makeCached(QUrl(URLConstants::SKINS_BASE + profile.id + ".png"), meta); auto action = Net::Download::makeCached(QUrl(BuildConfig.SKINS_BASE + profile.id + ".png"), meta);
job->addNetAction(action); job->addNetAction(action);
meta->setStale(true); meta->setStale(true);
} }

View File

@ -10,7 +10,7 @@
#include <RWStorage.h> #include <RWStorage.h>
#include <Env.h> #include <Env.h>
#include "net/URLConstants.h" #include <BuildConfig.h>
namespace LegacyFTB { namespace LegacyFTB {
@ -218,7 +218,7 @@ void ListModel::requestLogo(QString file)
MetaEntryPtr entry = ENV.metacache()->resolveEntry("FTBPacks", QString("logos/%1").arg(file.section(".", 0, 0))); MetaEntryPtr entry = ENV.metacache()->resolveEntry("FTBPacks", QString("logos/%1").arg(file.section(".", 0, 0)));
NetJob *job = new NetJob(QString("FTB Icon Download for %1").arg(file)); NetJob *job = new NetJob(QString("FTB Icon Download for %1").arg(file));
job->addNetAction(Net::Download::makeCached(QUrl(QString(URLConstants::LEGACY_FTB_CDN_BASE_URL + "static/%1").arg(file)), entry)); job->addNetAction(Net::Download::makeCached(QUrl(QString(BuildConfig.LEGACY_FTB_CDN_BASE_URL + "static/%1").arg(file)), entry));
auto fullPath = entry->getFullPath(); auto fullPath = entry->getFullPath();
QObject::connect(job, &NetJob::finished, this, [this, file, fullPath] QObject::connect(job, &NetJob::finished, this, [this, file, fullPath]

View File

@ -10,8 +10,6 @@
#include <RWStorage.h> #include <RWStorage.h>
#include <Env.h> #include <Env.h>
#include "net/URLConstants.h"
namespace Twitch { namespace Twitch {
ListModel::ListModel(QObject *parent) : QAbstractListModel(parent) ListModel::ListModel(QObject *parent) : QAbstractListModel(parent)

View File

@ -1,7 +1,7 @@
#include "BuildConfig.h" #include "BuildConfig.h"
#include <QObject> #include <QObject>
Config BuildConfig; const Config BuildConfig;
Config::Config() Config::Config()
{ {
@ -33,6 +33,7 @@ Config::Config()
VERSION_STR = "@MultiMC_VERSION_STRING@"; VERSION_STR = "@MultiMC_VERSION_STRING@";
NEWS_RSS_URL = "@MultiMC_NEWS_RSS_URL@"; NEWS_RSS_URL = "@MultiMC_NEWS_RSS_URL@";
PASTE_EE_KEY = "@MultiMC_PASTE_EE_API_KEY@"; PASTE_EE_KEY = "@MultiMC_PASTE_EE_API_KEY@";
META_URL = "@MultiMC_META_URL@";
} }
QString Config::printableVersionString() const QString Config::printableVersionString() const

View File

@ -60,6 +60,23 @@ public:
*/ */
QString PASTE_EE_KEY; QString PASTE_EE_KEY;
/**
* MultiMC Metadata repository URL prefix
*/
QString META_URL;
QString RESOURCE_BASE = "https://resources.download.minecraft.net/";
QString LIBRARY_BASE = "https://libraries.minecraft.net/";
QString SKINS_BASE = "https://crafatar.com/skins/";
QString AUTH_BASE = "https://authserver.mojang.com/";
QString MOJANG_STATUS_URL = "https://status.mojang.com/check";
QString IMGUR_BASE_URL = "https://api.imgur.com/3/";
QString FMLLIBS_OUR_BASE_URL = "https://files.multimc.org/fmllibs/";
QString FMLLIBS_FORGE_BASE_URL = "https://files.minecraftforge.net/fmllibs/";
QString TRANSLATIONS_BASE_URL = "https://files.multimc.org/translations/";
QString LEGACY_FTB_CDN_BASE_URL = "https://dist.creeper.host/FTB2/";
/** /**
* \brief Converts the Version to a string. * \brief Converts the Version to a string.
* \return The version number in string format (major.minor.revision.build). * \return The version number in string format (major.minor.revision.build).
@ -67,4 +84,4 @@ public:
QString printableVersionString() const; QString printableVersionString() const;
}; };
extern Config BuildConfig; extern const Config BuildConfig;

View File

@ -0,0 +1,11 @@
######## Configure the file with build properties ########
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/BuildConfig.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/BuildConfig.cpp")
add_library(BuildConfig STATIC
BuildConfig.h
${CMAKE_CURRENT_BINARY_DIR}/BuildConfig.cpp
)
target_link_libraries(BuildConfig Qt5::Core)
target_include_directories(BuildConfig PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")