diff options
author | Alexander Harkness <me@bearbin.net> | 2015-12-19 15:30:32 +0100 |
---|---|---|
committer | Alexander Harkness <me@bearbin.net> | 2015-12-19 15:30:32 +0100 |
commit | 8b851d504875906afe3b40dd87f642fd7d5a93f1 (patch) | |
tree | bdc9006f78ba8ae91e26213130d07e67124b044f /src/Protocol/MojangAPI.cpp | |
parent | Merge pull request #2774 from cuberite/worktycho-patch-1 (diff) | |
download | cuberite-8b851d504875906afe3b40dd87f642fd7d5a93f1.tar cuberite-8b851d504875906afe3b40dd87f642fd7d5a93f1.tar.gz cuberite-8b851d504875906afe3b40dd87f642fd7d5a93f1.tar.bz2 cuberite-8b851d504875906afe3b40dd87f642fd7d5a93f1.tar.lz cuberite-8b851d504875906afe3b40dd87f642fd7d5a93f1.tar.xz cuberite-8b851d504875906afe3b40dd87f642fd7d5a93f1.tar.zst cuberite-8b851d504875906afe3b40dd87f642fd7d5a93f1.zip |
Diffstat (limited to 'src/Protocol/MojangAPI.cpp')
-rw-r--r-- | src/Protocol/MojangAPI.cpp | 50 |
1 files changed, 23 insertions, 27 deletions
diff --git a/src/Protocol/MojangAPI.cpp b/src/Protocol/MojangAPI.cpp index 9eb8122d3..4747ace72 100644 --- a/src/Protocol/MojangAPI.cpp +++ b/src/Protocol/MojangAPI.cpp @@ -67,7 +67,7 @@ static const AString & GetCACerts(void) // Starfield G2 cert // This is the data of the root certs for Starfield Technologies, the CA that used to sign sessionserver.mojang.com's cert - // Downloaded from http://certs.starfieldtech.com/repository/ + // Downloaded from https://certs.starfieldtech.com/repository/ "-----BEGIN CERTIFICATE-----\n" "MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx\n" "EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT\n" @@ -118,7 +118,7 @@ static const AString & GetCACerts(void) "WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q=\n" "-----END CERTIFICATE-----\n" ); - + return Cert; } @@ -152,7 +152,7 @@ cMojangAPI::sProfile::sProfile( } ] */ - + // Parse the Textures and TexturesSignature from the Profile: if (!a_Properties.isArray()) { @@ -272,7 +272,7 @@ AString cMojangAPI::GetUUIDFromPlayerName(const AString & a_PlayerName, bool a_U { // Convert the playername to lowercase: AString lcPlayerName = StrToLower(a_PlayerName); - + // Request the cache to query the name if not yet cached: if (!a_UseOnlyCached) { @@ -280,7 +280,7 @@ AString cMojangAPI::GetUUIDFromPlayerName(const AString & a_PlayerName, bool a_U PlayerNames.push_back(lcPlayerName); CacheNamesToUUIDs(PlayerNames); } - + // Retrieve from cache: cCSLock Lock(m_CSNameToUUID); cProfileMap::const_iterator itr = m_NameToUUID.find(lcPlayerName); @@ -300,7 +300,7 @@ AString cMojangAPI::GetPlayerNameFromUUID(const AString & a_UUID, bool a_UseOnly { // Normalize the UUID to lowercase short format that is used as the map key: AString UUID = MakeUUIDShort(a_UUID); - + // Retrieve from caches: { cCSLock Lock(m_CSUUIDToProfile); @@ -325,7 +325,7 @@ AString cMojangAPI::GetPlayerNameFromUUID(const AString & a_UUID, bool a_UseOnly CacheUUIDToProfile(UUID); return GetPlayerNameFromUUID(a_UUID, true); } - + // No value found, none queried. Return an error: return ""; } @@ -342,13 +342,13 @@ AStringVector cMojangAPI::GetUUIDsFromPlayerNames(const AStringVector & a_Player { PlayerNames.push_back(StrToLower(*itr)); } // for itr - a_PlayerNames[] - + // Request the cache to populate any names not yet contained: if (!a_UseOnlyCached) { CacheNamesToUUIDs(PlayerNames); } - + // Retrieve from cache: size_t idx = 0; AStringVector res; @@ -367,7 +367,7 @@ AStringVector cMojangAPI::GetUUIDsFromPlayerNames(const AStringVector & a_Player - + void cMojangAPI::AddPlayerNameToUUIDMapping(const AString & a_PlayerName, const AString & a_UUID) { @@ -475,7 +475,7 @@ AString cMojangAPI::MakeUUIDShort(const AString & a_UUID) // Already is a short UUID, only lowercase return StrToLower(a_UUID); } - + case 36: { // Remove the dashes from the string by appending together the parts between them: @@ -507,7 +507,7 @@ AString cMojangAPI::MakeUUIDDashed(const AString & a_UUID) // Already is a dashed UUID, only lowercase return StrToLower(a_UUID); } - + case 32: { // Insert dashes at the proper positions: @@ -541,7 +541,7 @@ void cMojangAPI::LoadCachesFromDisk(void) SQLite::Database db("MojangAPI.sqlite", SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE); db.exec("CREATE TABLE IF NOT EXISTS PlayerNameToUUID (PlayerName, UUID, DateTime)"); db.exec("CREATE TABLE IF NOT EXISTS UUIDToProfile (UUID, PlayerName, Textures, TexturesSignature, DateTime)"); - + // Retrieve all entries: { SQLite::Statement stmt(db, "SELECT PlayerName, UUID, DateTime FROM PlayerNameToUUID"); @@ -587,11 +587,11 @@ void cMojangAPI::SaveCachesToDisk(void) SQLite::Database db("MojangAPI.sqlite", SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE); db.exec("CREATE TABLE IF NOT EXISTS PlayerNameToUUID (PlayerName, UUID, DateTime)"); db.exec("CREATE TABLE IF NOT EXISTS UUIDToProfile (UUID, PlayerName, Textures, TexturesSignature, DateTime)"); - + // Remove all entries: db.exec("DELETE FROM PlayerNameToUUID"); db.exec("DELETE FROM UUIDToProfile"); - + // Save all cache entries - m_PlayerNameToUUID: Int64 LimitDateTime = time(nullptr) - MAX_AGE; { @@ -658,7 +658,7 @@ void cMojangAPI::CacheNamesToUUIDs(const AStringVector & a_PlayerNames) } } // for itr - a_PlayerNames[] } // Lock(m_CSNameToUUID) - + QueryNamesToUUIDs(NamesToQuery); } @@ -720,7 +720,7 @@ void cMojangAPI::QueryNamesToUUIDs(AStringVector & a_NamesToQuery) continue; } Response.erase(0, idxHeadersEnd + 4); - + // Parse the returned string into Json: Json::Reader reader; if (!reader.parse(Response, root, false) || !root.isArray()) @@ -729,7 +729,7 @@ void cMojangAPI::QueryNamesToUUIDs(AStringVector & a_NamesToQuery) LOGD("Response body:\n%s", CreateHexDump(HexDump, Response.data(), Response.size(), 16).c_str()); continue; } - + // Store the returned results into cache: Json::Value::UInt JsonCount = root.size(); Int64 Now = time(nullptr); @@ -748,7 +748,7 @@ void cMojangAPI::QueryNamesToUUIDs(AStringVector & a_NamesToQuery) NotifyNameUUID(JsonName, JsonUUID); } // for idx - root[] } // cCSLock (m_CSNameToUUID) - + // Also cache the UUIDToName: { cCSLock Lock(m_CSUUIDToName); @@ -774,7 +774,7 @@ void cMojangAPI::QueryNamesToUUIDs(AStringVector & a_NamesToQuery) void cMojangAPI::CacheUUIDToProfile(const AString & a_UUID) { ASSERT(a_UUID.size() == 32); - + // Check if already present: { cCSLock Lock(m_CSUUIDToProfile); @@ -783,7 +783,7 @@ void cMojangAPI::CacheUUIDToProfile(const AString & a_UUID) return; } } - + QueryUUIDToProfile(a_UUID); } @@ -796,7 +796,7 @@ void cMojangAPI::QueryUUIDToProfile(const AString & a_UUID) // Create the request address: AString Address = m_UUIDToProfileAddress; ReplaceString(Address, "%UUID%", a_UUID); - + // Create the HTTP request: AString Request; Request += "GET " + Address + " HTTP/1.0\r\n"; // We need to use HTTP 1.0 because we don't handle Chunked transfer encoding @@ -832,7 +832,7 @@ void cMojangAPI::QueryUUIDToProfile(const AString & a_UUID) return; } Response.erase(0, idxHeadersEnd + 4); - + // Parse the returned string into Json: Json::Reader reader; Json::Value root; @@ -943,7 +943,3 @@ void cMojangAPI::Update(void) } } } - - - - |