1
Fork 0
mirror of https://github.com/redstrate/Astra.git synced 2025-06-30 07:37:45 +00:00

Fix login after 7.25h2

They're doing something now which rejects invalid machine IDs, which
Astra was giving (sorry!) I just copied XIVQuickLauncher's behavior
which works.
This commit is contained in:
Joshua Goins 2025-06-24 15:36:47 -04:00
parent 24d31d05fd
commit 99aa997322
2 changed files with 16 additions and 2 deletions

View file

@ -345,8 +345,18 @@ void LauncherCore::buildRequest(const Profile &settings, QNetworkRequest &reques
if (settings.account()->config()->license() == Account::GameLicense::macOS) {
request.setHeader(QNetworkRequest::UserAgentHeader, QByteArrayLiteral("macSQEXAuthor/2.0.0(MacOSX; ja-jp)"));
} else {
request.setHeader(QNetworkRequest::UserAgentHeader,
QStringLiteral("SQEXAuthor/2.0.0(Windows 6.2; ja-jp; %1)").arg(QString::fromUtf8(QSysInfo::bootUniqueId())));
const auto hashString = QSysInfo::bootUniqueId();
QCryptographicHash hash(QCryptographicHash::Sha1);
hash.addData(hashString);
QByteArray bytes = hash.result();
bytes.resize(4);
auto checkSum = (uint8_t)-(bytes[0] + bytes[1] + bytes[2] + bytes[3]);
bytes.prepend(checkSum);
request.setHeader(QNetworkRequest::UserAgentHeader, QStringLiteral("SQEXAuthor/2.0.0(Windows 6.2; ja-jp; %1)").arg(QString::fromUtf8(bytes.toHex())));
}
request.setRawHeader(QByteArrayLiteral("Accept"),
@ -354,6 +364,8 @@ void LauncherCore::buildRequest(const Profile &settings, QNetworkRequest &reques
"application/x-ms-xbap, */*"));
request.setRawHeader(QByteArrayLiteral("Accept-Encoding"), QByteArrayLiteral("gzip, deflate"));
request.setRawHeader(QByteArrayLiteral("Accept-Language"), QByteArrayLiteral("en-us"));
request.setRawHeader(QByteArrayLiteral("Connection"), QByteArrayLiteral("Keep-Alive"));
request.setRawHeader(QByteArrayLiteral("Cookie"), QByteArrayLiteral("_rsid=\"\""));
}
void LauncherCore::setupIgnoreSSL(QNetworkReply *reply)

View file

@ -265,6 +265,8 @@ QCoro::Task<std::optional<SquareEnixLogin::StoredInfo>> SquareEnixLogin::getStor
auto request = QNetworkRequest(url);
m_launcher.buildRequest(*m_info->profile, request);
request.setRawHeader(QByteArrayLiteral("Referer"), m_info->profile->frontierUrl().toUtf8());
Utility::printRequest(QStringLiteral("GET"), request);
const auto reply = m_launcher.mgr()->get(request);