fix: add workaround for bloodpoint error
Build / build (push) Failing after 2m26s

This commit is contained in:
2026-03-21 23:50:53 -03:00
parent a325ee5fb5
commit 492677d5bb
2 changed files with 60 additions and 4 deletions
+57 -4
View File
@@ -33,6 +33,11 @@ void Spoofer::registerListeners(Proxy* proxy)
proxy->OnServerResponse.addListener([this](const std::string& url, std::string& body, std::string& respHeaders) { proxy->OnServerResponse.addListener([this](const std::string& url, std::string& body, std::string& respHeaders) {
this->serverResponseHandler(url, body, respHeaders); this->serverResponseHandler(url, body, respHeaders);
}); });
proxy->OnClientRequest.addListener(
[this](const std::string& url, const std::string& body, std::string& reqHeaders) {
this->clientRequestHandler(url, body, reqHeaders);
});
} }
void Spoofer::loadData() void Spoofer::loadData()
@@ -259,7 +264,7 @@ void Spoofer::modifyCharacterData(json& js)
} }
} }
void Spoofer::serverResponseHandler(const std::string& url, std::string& body, std::string& /*respHeaders*/) void Spoofer::serverResponseHandler(const std::string& url, std::string& body, std::string& respHeaders)
{ {
if (url.find("bhvrdbd.com") != std::string::npos) Log::verbose("BHVR api res @ {}", url); if (url.find("bhvrdbd.com") != std::string::npos) Log::verbose("BHVR api res @ {}", url);
@@ -400,8 +405,36 @@ void Spoofer::serverResponseHandler(const std::string& url, std::string& body, s
try try
{ {
json doc = json::parse(body); json doc = json::parse(body);
modifyCharacterData(doc);
body = doc.dump(); if (body.find("NotAllowedException") != std::string::npos && body.find("not owned") != std::string::npos)
{
Log::info("Spoofing bloodweb error error for unowned character");
json mock;
mock["bloodWebLevelChanged"] = false;
mock["updatedWallets"] = json::array();
mock["bloodWebLevel"] = 15;
mock["prestigeLevel"] = 0;
mock["bloodWebData"] = {{"ringData", json::array()}, {"paths", json::array()}};
mock["characterItems"] = json::array();
mock["characterName"] = this->_lastBloodWebChar;
modifyCharacterData(mock);
size_t firstSpace = respHeaders.find(' ');
if (firstSpace != std::string::npos)
{
respHeaders.replace(firstSpace + 1, 3, "200");
}
body = mock.dump();
return;
}
else
{
modifyCharacterData(doc);
body = doc.dump();
}
return;
} }
catch (const json::parse_error& e) catch (const json::parse_error& e)
{ {
@@ -409,4 +442,24 @@ void Spoofer::serverResponseHandler(const std::string& url, std::string& body, s
} }
return; return;
} }
} }
void Spoofer::clientRequestHandler(const std::string& url, const std::string& body, std::string& /*reqHeaders*/)
{
if (url.find("api/v1/dbd-character-data/bloodweb") != std::string::npos ||
url.find("api/v1/dbd-character-data/bulk-spending-bloodweb") != std::string::npos)
{
try
{
json req = json::parse(body);
if (req.contains("characterName"))
{
this->_lastBloodWebChar = req["characterName"];
Log::info("Detected bloodweb request for character: {}", this->_lastBloodWebChar);
}
}
catch (...)
{
}
}
}
+3
View File
@@ -22,6 +22,7 @@ class Spoofer
void modifyCharacterData(nlohmann::json& js); void modifyCharacterData(nlohmann::json& js);
void serverResponseHandler(const std::string& url, std::string& body, std::string& respHeaders); void serverResponseHandler(const std::string& url, std::string& body, std::string& respHeaders);
void clientRequestHandler(const std::string& url, const std::string& body, std::string& reqHeaders);
std::unordered_set<std::string> _camperItemIds; std::unordered_set<std::string> _camperItemIds;
std::unordered_set<std::string> _slasherPowerIds; std::unordered_set<std::string> _slasherPowerIds;
@@ -37,4 +38,6 @@ class Spoofer
std::unordered_set<std::string> _catalogOutfitIds; std::unordered_set<std::string> _catalogOutfitIds;
std::unordered_set<std::string> _catalogItemIds; std::unordered_set<std::string> _catalogItemIds;
std::string _lastBloodWebChar = "Ace";
}; };