diff --git a/include/launchercore.h b/include/launchercore.h index 57b50b6..1bfb8ba 100755 --- a/include/launchercore.h +++ b/include/launchercore.h @@ -116,7 +116,7 @@ public: */ void launchExecutable(const ProfileSettings& settings, QProcess* process, QStringList args); - void buildRequest(QNetworkRequest& request); + void buildRequest(const ProfileSettings& settings, QNetworkRequest& request); void setSSL(QNetworkRequest& request); QString readVersion(QString path); void readInitialInformation(); diff --git a/src/headline.cpp b/src/headline.cpp index 93de3a9..59c5bc7 100644 --- a/src/headline.cpp +++ b/src/headline.cpp @@ -23,7 +23,8 @@ void getHeadline(LauncherCore& core, std::function return_func) auto request = QNetworkRequest(QString("%1&%2").arg(url.toString(), QString::number(QDateTime::currentMSecsSinceEpoch()))); - core.buildRequest(request); + // TODO: really? + core.buildRequest(core.getProfile(core.defaultProfileIndex), request); qInfo() << request.url(); request.setRawHeader("Accept", "application/json, text/plain, */*"); diff --git a/src/launchercore.cpp b/src/launchercore.cpp index 12670c6..b2ae293 100755 --- a/src/launchercore.cpp +++ b/src/launchercore.cpp @@ -48,17 +48,22 @@ void LauncherCore::setSSL(QNetworkRequest& request) { request.setSslConfiguration(config); } -void LauncherCore::buildRequest(QNetworkRequest& request) { +void LauncherCore::buildRequest(const ProfileSettings& settings, QNetworkRequest& request) { setSSL(request); - request.setHeader(QNetworkRequest::UserAgentHeader, - QString("SQEXAuthor/2.0.0(Windows 6.2; ja-jp; %1)").arg(QString(QSysInfo::bootUniqueId()))); + + if(settings.license == GameLicense::macOS) { + request.setHeader(QNetworkRequest::UserAgentHeader, "macSQEXAuthor/2.0.0(MacOSX; ja-jp)"); + } else { + request.setHeader(QNetworkRequest::UserAgentHeader, + QString("SQEXAuthor/2.0.0(Windows 6.2; ja-jp; %1)").arg(QString(QSysInfo::bootUniqueId()))); + } + request.setRawHeader("Accept", "image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, */*"); request.setRawHeader("Accept-Encoding", "gzip, deflate"); request.setRawHeader("Accept-Language", "en-us"); } - void LauncherCore::launchGame(const ProfileSettings& profile, const LoginAuth auth) { QList arguments; diff --git a/src/launcherwindow.cpp b/src/launcherwindow.cpp index 9f161ad..f6725ef 100644 --- a/src/launcherwindow.cpp +++ b/src/launcherwindow.cpp @@ -212,7 +212,7 @@ LauncherWindow::LauncherWindow(LauncherCore& core, QWidget* parent) : QMainWindo if(!headline.banner.empty()) { auto request = QNetworkRequest(headline.banner[0].bannerImage); - core.buildRequest(request); + core.buildRequest(currentProfile(), request); auto reply = core.mgr->get(request); connect(reply, &QNetworkReply::finished, [=] { diff --git a/src/squareboot.cpp b/src/squareboot.cpp index f9a041f..551d669 100644 --- a/src/squareboot.cpp +++ b/src/squareboot.cpp @@ -22,7 +22,12 @@ void SquareBoot::bootCheck(LoginInformation& info) { url.setQuery(query); auto request = QNetworkRequest(url); - request.setRawHeader("User-Agent", "FFXIV PATCH CLIENT"); + if(info.settings->license == GameLicense::macOS) { + request.setRawHeader("User-Agent", "FFXIV-MAC PATCH CLIENT"); + } else { + request.setRawHeader("User-Agent", "FFXIV PATCH CLIENT"); + } + request.setRawHeader("Host", "patch-bootver.ffxiv.com"); auto reply = window.mgr->get(request); diff --git a/src/squarelauncher.cpp b/src/squarelauncher.cpp index 5ec3951..f5a9e2d 100644 --- a/src/squarelauncher.cpp +++ b/src/squarelauncher.cpp @@ -54,7 +54,7 @@ void SquareLauncher::getStored(const LoginInformation& info) { url.setQuery(query); auto request = QNetworkRequest(url); - window.buildRequest(request); + window.buildRequest(*info.settings, request); QNetworkReply* reply = window.mgr->get(request); @@ -96,7 +96,7 @@ void SquareLauncher::login(const LoginInformation& info, const QUrl referer) { postData.addQueryItem("otppw", info.oneTimePassword); QNetworkRequest request(QUrl("https://ffxiv-login.square-enix.com/oauth/ffxivarr/login/login.send")); - window.buildRequest(request); + window.buildRequest(*info.settings, request); request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded"); request.setRawHeader("Referer", referer.toEncoded()); request.setRawHeader("Cache-Control", "no-cache"); @@ -229,7 +229,9 @@ void SquareLauncher::gateOpen() { QNetworkRequest request; request.setUrl(url); - window.buildRequest(request); + + // TODO: really? + window.buildRequest(window.getProfile(window.defaultProfileIndex), request); auto reply = window.mgr->get(request); connect(reply, &QNetworkReply::finished, [this, reply] {