aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/base/auth_database.sql684
-rw-r--r--sql/updates/auth/3.3.5/2024_08_28_01_auth.sql6
-rw-r--r--sql/updates/auth/3.3.5/2024_08_30_00_auth.sql39
-rw-r--r--src/server/authserver/Authentication/AuthCodes.cpp8
-rw-r--r--src/server/authserver/Server/AuthSession.cpp18
-rw-r--r--src/server/game/Server/WorldSocket.cpp3
-rw-r--r--src/server/shared/Realm/ClientBuildInfo.cpp139
-rw-r--r--src/server/shared/Realm/ClientBuildInfo.h79
-rw-r--r--src/server/shared/Realm/RealmList.cpp43
-rw-r--r--src/server/shared/Realm/RealmList.h19
10 files changed, 872 insertions, 166 deletions
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql
index be6e5a881ea..dc4eca2c47e 100644
--- a/sql/base/auth_database.sql
+++ b/sql/base/auth_database.sql
@@ -166,6 +166,313 @@ LOCK TABLES `autobroadcast` WRITE;
UNLOCK TABLES;
--
+-- Table structure for table `build_auth_key`
+--
+
+DROP TABLE IF EXISTS `build_auth_key`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!50503 SET character_set_client = utf8mb4 */;
+CREATE TABLE `build_auth_key` (
+ `build` int NOT NULL,
+ `platform` char(4) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
+ `arch` char(4) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
+ `type` char(4) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
+ `key` binary(16) NOT NULL,
+ PRIMARY KEY (`build`,`platform`,`arch`,`type`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `build_auth_key`
+--
+
+LOCK TABLES `build_auth_key` WRITE;
+/*!40000 ALTER TABLE `build_auth_key` DISABLE KEYS */;
+INSERT INTO `build_auth_key` VALUES
+(25549,'Mac','x64','WoW',0x66FC5E09B8706126795F140308C8C1D8),
+(25549,'Win','x64','WoW',0x1252624ED8CBD6FAC7D33F5D67A535F3),
+(25549,'Win','x86','WoW',0xFE594FC35E7F9AFF86D99D8A364AB297),
+(25996,'Mac','x64','WoW',0x210B970149D6F56CAC9BADF2AAC91E8E),
+(25996,'Win','x64','WoW',0xC7FF932D6A2174A3D538CA7212136D2B),
+(25996,'Win','x86','WoW',0x23C59C5963CBEF5B728D13A50878DFCB),
+(26124,'Mac','x64','WoW',0xC9CA997AB8EDE1C65465CB2920869C4E),
+(26124,'Win','x64','WoW',0x46DF06D0147BA67BA49AF553435E093F),
+(26124,'Win','x86','WoW',0xF8C05AE372DECA1D6C81DA7A8D1C5C39),
+(26365,'Mac','x64','WoW',0xDBE7F860276D6B400AAA86B35D51A417),
+(26365,'Win','x64','WoW',0x59A53F307288454B419B13E694DF503C),
+(26365,'Win','x86','WoW',0x2AAC82C80E829E2CA902D70CFA1A833A),
+(26654,'Mac','x64','WoW',0x9234C1BD5E9687ADBD19F764F2E0E811),
+(26654,'Win','x64','WoW',0xA752640E8B99FE5B57C1320BC492895A),
+(26654,'Win','x86','WoW',0xFAC2D693E702B9EC9F750F17245696D8),
+(26822,'Mac','x64','WoW',0x91003668C245D14ECD8DF094E065E06B),
+(26822,'Win','x64','WoW',0x2B05F6D746C0C6CC7EF79450B309E595),
+(26822,'Win','x86','WoW',0x283E8D77ECF7060BE6347BE4EB99C7C7),
+(26899,'Mac','x64','WoW',0x8368EFC2021329110A16339D298200D4),
+(26899,'Win','x64','WoW',0x3551EF0028B51E92170559BD25644B03),
+(26899,'Win','x86','WoW',0xF462CD2FE4EA3EADF875308FDBB18C99),
+(26972,'Mac','x64','WoW',0x341CFEFE3D72ACA9A4407DC535DED66A),
+(26972,'Win','x64','WoW',0x6E212DEF6A0124A3D9AD07F5E322F7AE),
+(26972,'Win','x86','WoW',0x797ECC19662DCBD5090A4481173F1D26),
+(28153,'Win','x64','WoW',0xDD626517CC6D31932B479934CCDC0ABF),
+(30706,'Win','x64','WoW',0xBB6D9866FE4A19A568015198783003FC),
+(30993,'Win','x64','WoW',0x2BAD61655ABC2FC3D04893B536403A91),
+(31229,'Win','x64','WoW',0x8A46F23670309F2AAE85C9A47276382B),
+(31429,'Win','x64','WoW',0x7795A507AF9DC3525EFF724FEE17E70C),
+(31478,'Win','x64','WoW',0x7973A8D54BDB8B798D9297B096E771EF),
+(32305,'Win','x64','WoW',0x21F5A6FC7AD89FBF411FDA8B8738186A),
+(32494,'Win','x64','WoW',0x58984ACE04919401835C61309A848F8A),
+(32580,'Win','x64','WoW',0x87C2FAA0D7931BF016299025C0DDCA14),
+(32638,'Win','x64','WoW',0x5D07ECE7D4A867DDDE615DAD22B76D4E),
+(32722,'Win','x64','WoW',0x1A09BE1D38A122586B4931BECCEAD4AA),
+(32750,'Mac','x64','WoW',0xEF1F4E4D099EA2A81FD4C0DEBC1E7086),
+(32750,'Win','x64','WoW',0xC5CB669F5A5B237D1355430877173207),
+(32978,'Mac','x64','WoW',0x1852C1F847E795D6EB45278CD433F339),
+(32978,'Win','x64','WoW',0x76AE2EA03E525D97F5688843F5489000),
+(33369,'Mac','x64','WoW',0xF5A849C70A1054F07EA3AB833EBF6671),
+(33369,'Win','x64','WoW',0x5986AC18B04D3C403F56A0CF8C4F0A14),
+(33528,'Win','x64','WoW',0x0ECE033CA9B11D92F7D2792C785B47DF),
+(33724,'Win','x64','WoW',0x38F7BBCF284939DD20E8C64CDBF9FE77),
+(33775,'Mac','x64','WoW',0x354D2DE619D124EE1398F76B0436FCFC),
+(33775,'Win','x64','WoW',0xB826300A8449ED0F6EF16EA747FA2D2E),
+(33941,'Win','x64','WoW',0x88AF1A36D2770D0A6CA086497096A889),
+(34220,'Win','x64','WoW',0xB5E35B976C6BAF82505700E7D9666A2C),
+(34601,'Win','x64','WoW',0x0D7DF38F725FABA4F009257799A10563),
+(34769,'Win','x64','WoW',0x93F9B9AF6397E3E4EED94D36D16907D2),
+(34963,'Mac','x64','WoW',0xC5658A17E702163447BAAAE46D130A1B),
+(34963,'Win','x64','WoW',0x7BA50C879C5D04221423B02AC3603A11),
+(35249,'Win','x64','WoW',0xC7B11F9AE9FF1409F5582902B3D10D1C),
+(35284,'Mac','x64','WoW',0xA6201B0AC5A73D13AB2FDCC79BB252AF),
+(35284,'Win','x64','WoW',0xEA3818E7DCFD2009DBFC83EE3C1E4F1B),
+(35435,'Mac','x64','WoW',0x8FE657C14A46BCDB2CE6DA37E430450E),
+(35435,'Win','x64','WoW',0xBB397A92FE23740EA52FC2B5BA2EC8E0),
+(35662,'Mac','x64','WoW',0x5966016C368ED9F7AAB603EE6703081C),
+(35662,'Win','x64','WoW',0x578BC94870C278CB6962F30E6DC203BB),
+(36753,'Win','x64','WoW',0x386FDE8559B5EAD67B791B490B200B88),
+(36839,'Win','x64','WoW',0x356EB4412B8EFCF72E3AF50D5181D529),
+(36949,'Win','x64','WoW',0x51C074CD8A09A75384B9B44188C56981),
+(37142,'Win','x64','WoW',0x5D9CFB3139F0D1B6C2B304261F9EABC9),
+(37176,'Win','x64','WoW',0x3C725EA504EC3DAED143EB6FF3B48CDA),
+(37474,'Mac','x64','WoW',0x024C9BE7E44237B7E81C6D42E678D433),
+(37474,'Win','x64','WoW',0x0DE685BBB0551086E7FBDC0B4BB06A5B),
+(38134,'Win','x64','WoW',0x32275ED0F13B357C28BDB0E611EF9E31),
+(38556,'Win','x64','WoW',0xEC7D5AF64364AC3E7181F3FBA1B3A882),
+(39653,'Win','x64','WoW',0x10D015AB1EEB91310428D9C57EE24632),
+(39804,'Win','x64','WoW',0xE42D2BBA12ED260A76F9B1E477E19EA5),
+(40000,'Win','x64','WoW',0x4CB1433AB637F09F03FBBD1B221B04B0),
+(40120,'Mac','x64','WoW',0x853F0F2985CEAED46DF422583CD07A7C),
+(40120,'Win','x64','WoW',0x04F47EAEFD8BDEFE14AA0350EA336678),
+(40443,'Win','x64','WoW',0x8597BB43E8AB38C85504E8BFB72ABBF5),
+(40593,'Win','x64','WoW',0xBA14570F2D62D5F61953394164A8DAE2),
+(40725,'Win','x64','WoW',0xC1EBDBEB9BB2956EBCCEF7C9D27A1B3B),
+(40906,'Win','x64','WoW',0xF5FC259C8635488AFE0D0CD023F361D4),
+(40944,'Win','x64','WoW',0x368FC7FABAF487A8A049C11970657074),
+(40966,'Win','x64','WoW',0xD90F47AF21F381D2D8F3763B994BAC88),
+(41031,'Win','x64','WoW',0x019A0FACD6B0D6374B7BA69A5B677449),
+(41079,'Win','x64','WoW',0xF8853CF823BC0BBE8A9677A762DFAEE1),
+(41288,'Win','x64','WoW',0x871C0C9691DBC536EB24B68EC73FAD5B),
+(41323,'Win','x64','WoW',0xE53D0DF1FAC1A59A1C8071B295A04A1D),
+(41359,'Win','x64','WoW',0x5F8D7F2A690A4375A1B52A28D6D681FA),
+(41488,'Win','x64','WoW',0x1BC91EC368705815F3F532B553DAD981),
+(41793,'Win','x64','WoW',0xB3B47DA3B7615570742A55B96614EE1C),
+(42010,'Win','x64','WoW',0x302970161D16417B5BE553CC530E011A),
+(42423,'Win','x64','WoW',0x0B03614A7E94DD57548596BE420E9DC2),
+(42488,'Win','x64','WoW',0xA78755E6928D83A271C5D1EE3CDB6F15),
+(42521,'Win','x64','WoW',0x5FE6C12FC407C6B15B4A5D3B5B4A5D3B),
+(42538,'Win','x64','WoW',0x71A7504BD53F8DE518F24265D37310AE),
+(42560,'Win','x64','WoW',0x115FE8C38A8D67CA4664BB192E0F0DFE),
+(42614,'Win','x64','WoW',0x772BE726FEEF42124255D2EA7973CA18),
+(42698,'Win','x64','WoW',0xB4497B1CD11FC974C5FB09548AC27269),
+(42825,'Win','x64','WoW',0xA14DA228C6A6AFF1DDBA51218939E557),
+(42852,'Win','x64','WoW',0xDE9F9F0C3CC8FD54D3AFF99CEFFCE129),
+(42937,'Win','x64','WoW',0xF5FC75E70874752C92846B3333920E63),
+(42979,'Win','x64','WoW',0xE1DD38AE6450FC4D2AE4609233C59E54),
+(43114,'Win','x64','WoW',0xF75C9380CCB24A48A24EEE52C1594A7E),
+(43206,'Win','x64','WoW',0xDDE806532C7704FFB75F256DC5F1F3D9),
+(43340,'Win','x64','WoW',0x70E46D2D888E84DF9316EA849B068CF4),
+(43345,'Win','x64','WoW',0xD911ABFCDA030DEE8CAF4EE3F60DEE13),
+(43971,'Win','x64','WoW',0x681CF99E61FB0005A5C7D31D0AAD1ED9),
+(44015,'Win','x64','WoW',0xFCF0BDA7C98BFEF92AE6D8C39A217ABD),
+(44061,'Win','x64','WoW',0xFD2B5C0B3293FE0E9CAA6EB0B7788119),
+(44127,'Win','x64','WoW',0x787887CEC9FCC9B516481F60E4FC34A8),
+(44232,'Win','x64','WoW',0x81F0A71DF7E9873BB3750022D64D33CF),
+(44325,'Win','x64','WoW',0x138A7D524D268A7F9934C3D148E8F01B),
+(44730,'Win','x64','WoW',0xFC0B18C47BB4C79F4300CA0FF3E5CAC7),
+(44908,'Win','x64','WoW',0xBFFAEC40C9BCD591C7C959A9D5A8BA8C),
+(45114,'Win','x64','WoW',0xD7AFE240BD00F06C30D0C2D16E54A8BE),
+(45161,'Win','x64','WoW',0x74BD2E787A98B145B063BDA9A98F6CBD),
+(45338,'Win','x64','WoW',0x5CE2094A41B61EDA9DF56378BC3B1DE0),
+(45745,'Win','x64','WoW',0x0F6DC90161694D765A595A3AF603166B),
+(46479,'Win','x64','WoW',0xCB9AF4D89B60A3ABA288D395D315D932),
+(46658,'Win','x64','WoW',0x3F8EFB085428D75360E9EFE25CD8639A),
+(46689,'Win','x64','WoW',0xD9A11D188D6AD60906F5467510EFD3AA),
+(46702,'Win','x64','WoW',0x01B4D1688FF97DC9AAFCCD0A0B842C0B),
+(46741,'Win','x64','WoW',0x4C0F4A7EC2098AF1FBA745848EC79A78),
+(46801,'Win','x64','WoW',0xE6AC18D1EA5D36ABFFAE5EDED80630DF),
+(46879,'Win','x64','WoW',0xEFEC43936051DD1A210633AF1F6B63DB),
+(46924,'Win','x64','WoW',0xE6CE0B1A8119F069ECF1E7DBAA7BB2F8),
+(47067,'Win','x64','WoW',0x63862CFCDEA6BD2BD7F740EB36B65657),
+(47187,'Win','x64','WoW',0x711F8455C5000C237292E1E6E90631E1),
+(47213,'Win','x64','WoW',0x23C50D88CEAC0A8696ADDE8DD244D4A2),
+(47631,'Win','x64','WoW',0xF986AB91D0AEB20822EFB72F4256713C),
+(47777,'Win','x64','WoW',0xA88C04915AB9E035A104E55C4DCF5F9F),
+(47799,'Win','x64','WoW',0x7364EB093C23DB2CDC9513D5A7B4933E),
+(47825,'Win','x64','WoW',0x82A3B94E5E727AF3A208B471FF2054C0),
+(47849,'Win','x64','WoW',0xDD8BBE2087A28C0AF4984CBE23A1C707),
+(47871,'Win','x64','WoW',0x8E4F7D30EE4982B02B3B3F8837C2C4F2),
+(47884,'Win','x64','WoW',0x2B7A002BC359F2C31104BC2DE04302BF),
+(47936,'Win','x64','WoW',0x833D30D8FBC43B3FAE99CD3898D70849),
+(47967,'Win','x64','WoW',0xCFE225D0089E224D9E7541D3B5C26478),
+(48001,'Win','x64','WoW',0x4B0260A37BD95B615E71048469E6D5BB),
+(48069,'Win','x64','WoW',0x558CDF958FA082E95849779C7C6945E5),
+(48317,'Win','x64','WoW',0xC096E37B45B43244E9C79916604DD4AF),
+(48397,'Win','x64','WoW',0x64BA8779EAA97E6C57982B6B1A5B32E7),
+(48526,'Win','x64','WoW',0xD5B7D3303A2A741E6913EE1AEB0BCB65),
+(48676,'Win','x64','WoW',0xE059FB74DFF6438CC20C7F28900F64CA),
+(48749,'Win','x64','WoW',0x92DBCCA0E33DFB8A17A2B6A39246B288),
+(48838,'Win','x64','WoW',0x9E6F4E1E46EF228D2DE90F7BC48AAA96),
+(48865,'Win','x64','WoW',0x4B774ABE7B34D6702571B4279A4B6A13),
+(48892,'Win','x64','WoW',0xAA31BF27458321B03A1A346964DD7B9D),
+(48966,'Win','x64','WoW',0x823142CA131FBB715FF55D4343E55C6D),
+(48999,'Win','x64','WoW',0x79BA6FF0F9672EEF875F64155C8B62D4),
+(49267,'Win','x64','WoW',0xEEE77EA5A216E0731ADBB41AEFB1DF31),
+(49318,'Win','x64','WoW',0xAF439AEE62EE48B36C1725111E3D9BBF),
+(49343,'Win','x64','WoW',0x301A0B4C0942B9B6F605B903AD6C1F60),
+(49407,'Win','x64','WoW',0x6413820DC9885BB0693B37090CBB2F30),
+(49426,'Win','x64','WoW',0xD85EDFBFE9A94A55E2B4510BE41C19B2),
+(49444,'Win','x64','WoW',0x363B2B05285BDD8857419D2866316D3C),
+(49474,'Win','x64','WoW',0x44A7D2B352EE3D098A3CB4C2F1065E37),
+(49570,'Win','x64','WoW',0xB024DE67ACAEB9E8EE6DB38DC53E8281),
+(49679,'Win','x64','WoW',0x9CE59B68D8797EBF00581F41138F4316),
+(49741,'Win','x64','WoW',0x0EF181E2BB0E946CF3B7422ADEB6CD1A),
+(49801,'Win','x64','WoW',0x0832179567B66CA85DBD5678B604C683),
+(49890,'Win','x64','WoW',0x22A5B8A1EB797A64995F705B3DBCB14C),
+(50000,'Win','x64','WoW',0x02F06FFA2296FD66384295DBFD5A4C91),
+(50401,'Win','x64','WoW',0x3EEF52D902CCE81D16D0E255F0AA4938),
+(50438,'Win','x64','WoW',0x0B5F68F06B129CB4C57702F6D30F260B),
+(50467,'Win','x64','WoW',0x5E996B1CDCEE68432D6340138E68D1EB),
+(50469,'Win','x64','WoW',0x1768CCB6589E16AB3BEFA9D608A393A2),
+(50504,'Win','x64','WoW',0x7D5FD20C0B32C9AF5DD65433B391D49C),
+(50585,'Win','x64','WoW',0xC4F7CC38A3B84935A485F7EDAD3E764B),
+(50622,'Win','x64','WoW',0xD23A26FD75FD9A6073EB7060AA28E6A7),
+(50747,'Win','x64','WoW',0x2D3C386A9C45C27304ED3A3C6EB3F7C8),
+(50791,'Win','x64','WoW',0x0BE7D0BB07EF37C25CBC682409091EA0),
+(51130,'Win','x64','WoW',0x44CD2C91E4F0655DA387483726CE4035),
+(51187,'Win','x64','WoW',0x74E2055D3965269447B5CB1B31FC71C6),
+(51237,'Win','x64','WoW',0xC8660A21B766646FBD67F481CFCF55C3),
+(51261,'Win','x64','WoW',0x1BEBB57AE450331E9F8C301AA7876FAB),
+(51313,'Win','x64','WoW',0x35419ED0AB16735CF720858F45DC300C),
+(51421,'Win','x64','WoW',0x45E24D6F3335269787DF2B2063939002),
+(51485,'Win','x64','WoW',0xEC549E1D0A5DD85C03E7A9D93B7DC6D1),
+(51536,'Win','x64','WoW',0x570EEA10A8EC169C3FF9621D1B635BB4),
+(51754,'Win','x64','WoW',0xBED5A861C071AB41FEF6087E0C37BB1A),
+(51886,'Win','x64','WoW',0x09CF8919FD2EABDEAEBC0C810F53B511),
+(51972,'Win','x64','WoW',0x444DC7EF3544B6670C18884DADA00428),
+(52038,'Win','x64','WoW',0xA8EF004ADED8A3AFF5A67D2BB8D95795),
+(52068,'Win','x64','WoW',0xA44F842BACCC7EE8E2975FAF01F12474),
+(52095,'Win','x64','WoW',0xBA36382887D16D274EA9149695F0C9C8),
+(52106,'Win','x64','WoW',0x95F43869B7D881212CBC1690B8F393ED),
+(52129,'Win','x64','WoW',0x02DD842F2A7162EEB8FD5B9D325606F8),
+(52148,'Win','x64','WoW',0x8A969717C8CDC6E7FF4C54D5CB00C224),
+(52188,'Win','x64','WoW',0x977DF9993E94855DED5E328BA7A2F21F),
+(52301,'Win','x64','WoW',0x821AA3BB237B400B82F44970250539AA),
+(52393,'Win','x64','WoW',0xB013ED23B7EF51B29A45594D9BBB0D03),
+(52485,'Win','x64','WoW',0x5805CEB4650730AE489258DD30E34441),
+(52545,'Win','x64','WoW',0xFB52179A8355A46EDBFBDC8E8E5CDAFD),
+(52607,'Win','x64','WoW',0x8F002E4AADCAEABB08ABC2880B31AD60),
+(52649,'Win','x64','WoW',0xD0B779FBECEBC1ED5A85D83F03C8A75B),
+(52808,'Win','x64','WoW',0x6276712B6C8AEA21CD5D94D52FEE70EE),
+(52902,'Win','x64','WoW',0xD4F0A24CDF165628538C1C387A326AF3),
+(52968,'Win','x64','WoW',0x2D247FD440C44D4F1BF80B075B8720F2),
+(52983,'Win','x64','WoW',0xB1E5ADA5FDD06C9AB5E5D8A6983324AC),
+(53007,'Win','x64','WoW',0xA21AFB4D381C56AF471D994258C0EEF5),
+(53040,'Win','x64','WoW',0x2F1283BF7B7F307B70DBBD75CC42D7C3),
+(53104,'Win','x64','WoW',0xDBD79EC8DF044B53C78931B985CAB406),
+(53162,'Win','x64','WoW',0x8A67511FBF8984EEE2B630F7CB23376A),
+(53212,'Win','x64','WoW',0x08761EFF2F9B639364B9A9FBFFFFB949),
+(53262,'Win','x64','WoW',0x614A72D53126348A4927EC0F53FD2B7A),
+(53441,'Win','x64','WoW',0xBFDD7D0FE87D5F75E6DEB4F5C99D7C99),
+(53584,'Win','x64','WoW',0xCDD7A93659A03460B5A6CE1C4ACE5554),
+(53840,'Win','x64','WoW',0xAC97D745C60DD3DC5F973E55C0E3649E),
+(53877,'Win','x64','WoW',0x16320F95B63846A2276E1D2612C34AD4),
+(53913,'Win','x64','WoW',0x475680680B2192EBCF6744D14F755199),
+(53989,'Win','x64','WoW',0x3AEB90ACB9E18B88BA1021F52D51B857),
+(54070,'Win','x64','WoW',0xFDA08264B7587250CF78F9B960218169),
+(54205,'Win','x64','WoW',0x589D59EB3F0D6D77C2175D9302F78FDD),
+(54358,'Win','x64','WoW',0x89C733D366E845FB9264404CD48CCA89),
+(54499,'Win','x64','WoW',0x6AC1F6180FC4C390F782DB933BD83326),
+(54577,'Win','x64','WoW',0xCBBBBBFFB2C652F0F4A7848D86E1B063),
+(54601,'Win','x64','WoW',0xF8B866CF7DB9A12273F35B3929627375),
+(54604,'Win','x64','WoW',0xA5FF4CE535F69D4D7F638CB2C11F2243),
+(54630,'Win','x64','WoW',0xF37935510BA6B559363C160E1DF18230),
+(54673,'Win','x64','WoW',0xAF8B9C8A9C6128498E85228B965A004D),
+(54717,'Win','x64','WoW',0x862BBA15158DFF6B56BCF71C1B34D41A),
+(54736,'Win','x64','WoW',0xFE58F039D91E1C248886A2828127CA2F),
+(54762,'Win','x64','WoW',0x5F7FDA560030255445B713456A286CFA),
+(54847,'Win','x64','WoW',0x32FDA0353160EC51EB36195CFACEF2B7),
+(54904,'Win','x64','WoW',0x09CBEC3C0DEA28BCA79F1FD9B879B0E3),
+(54988,'Win','x64','WoW',0x8F2791553226871977B4F9D7F1137311),
+(55142,'Win','x64','WoW',0x298B99B5AD67EA3D2AB4B3E07A415305),
+(55165,'Win','x64','WoW',0x26D4D1C01434A8A6723DCABC944B6FD0),
+(55261,'Win','x64','WoW',0x84E153A3DD1F8249274B91047AAC7AED),
+(55461,'Win','x64','WoW',0xC4522674F854EFECC76C898EC9545099),
+(55664,'Win','x64','WoW',0xDBCA58486FAAA0FE54EA287A3047E923),
+(55666,'Win','x64','WoW',0xF7E5A88E4D3615B652C8B9D76E7F617C),
+(55792,'Win','x64','WoW',0xC4DECDAA44BC548FF09EF3BB837D2147),
+(55793,'Win','x64','WoW',0xF9CF3232AD1C38C2028668D5BB64198F),
+(55818,'Win','x64','WoW',0x903A9B546248F71B16D9D9B06A072C24),
+(55824,'Win','x64','WoW',0x8A6F13269A2896067A1E88789FB41BA7),
+(55846,'Win','x64','WoW',0xBB5E1BED705872C226834B95A9E9F8A9),
+(55933,'Win','x64','WoW',0xC34D42CB351C400D1319D221197CF18D),
+(55939,'Win','x64','WoW',0x91529F4CE41DE4E54E132660ACDCADC5),
+(55959,'Win','x64','WoW',0xED57E0538FD1CE99B171BE34823148A9),
+(55960,'Win','x64','WoW',0x078C056CFC7B371BDE1BAF308E6C19AF),
+(56008,'Win','x64','WoW',0x00FCD6BFFCCCBA7A8E71E307EA6EBD0C),
+(56110,'Win','x64','WoW',0x800BCA228E2FAE37ED160F3C09E21F3A),
+(56162,'Win','x64','WoW',0x6F5C93BA436665A94DB67CE5361D4EA8),
+(56196,'Mac','A64','WoW',0x778F6A5DF79A4EF1B86F651F3B303CE7),
+(56196,'Win','x64','WoW',0x81FC14274BFF0347FFF9C8B1AA6BED9B),
+(56263,'Win','x64','WoW',0xEA8472C99236CC617BF518A924014D56),
+(56288,'Mac','A64','WoW',0x41710C793EF021721F14B06EC1896D3F),
+(56288,'Win','x64','WoW',0x03544E35D0480938E5C1238B3A26BDDD),
+(56311,'Mac','A64','WoW',0x412D3200715AAFDC0522DF031A941F0E),
+(56311,'Win','x64','WoW',0xAC6415575AEE4D32735FFAD0C57226B2),
+(56313,'Mac','A64','WoW',0xA83ED19EE659BC95CC322D1E49BDEDBB),
+(56313,'Win','x64','WoW',0xEAF769009A9AD3B1AA0414E1C344074B);
+/*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `build_executable_hash`
+--
+
+DROP TABLE IF EXISTS `build_executable_hash`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!50503 SET character_set_client = utf8mb4 */;
+CREATE TABLE `build_executable_hash` (
+ `build` int NOT NULL,
+ `platform` char(4) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
+ `executableHash` binary(20) NOT NULL,
+ PRIMARY KEY (`build`,`platform`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `build_executable_hash`
+--
+
+LOCK TABLES `build_executable_hash` WRITE;
+/*!40000 ALTER TABLE `build_executable_hash` DISABLE KEYS */;
+INSERT INTO `build_executable_hash` VALUES
+(5875,'OSX',0x8D173CC381961EEBABF336F5E6675B101BB513E5),
+(5875,'Win',0x95EDB27C7823B363CBDDAB56A392E7CB73FCCA20),
+(8606,'OSX',0xD8B0ECFE534BC1131E19BAD1D4C0E813EEE4994F),
+(8606,'Win',0x319AFAA3F2559682F9FF658BE01456255F456FB1),
+(12340,'OSX',0xB706D13FF2F4018839729461E3F8A0E2B5FDC034),
+(12340,'Win',0xCDCBBD5188315E6B4D19449D492DBCFAF156A347);
+/*!40000 ALTER TABLE `build_executable_hash` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
-- Table structure for table `build_info`
--
@@ -178,11 +485,6 @@ CREATE TABLE `build_info` (
`minorVersion` int DEFAULT NULL,
`bugfixVersion` int DEFAULT NULL,
`hotfixVersion` char(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `winAuthSeed` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `win64AuthSeed` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `mac64AuthSeed` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `winChecksumSeed` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `macChecksumSeed` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`build`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -194,90 +496,290 @@ CREATE TABLE `build_info` (
LOCK TABLES `build_info` WRITE;
/*!40000 ALTER TABLE `build_info` DISABLE KEYS */;
INSERT INTO `build_info` VALUES
-(5875,1,12,1,NULL,NULL,NULL,NULL,'95EDB27C7823B363CBDDAB56A392E7CB73FCCA20','8D173CC381961EEBABF336F5E6675B101BB513E5'),
-(6005,1,12,2,NULL,NULL,NULL,NULL,NULL,NULL),
-(6141,1,12,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(8606,2,4,3,NULL,NULL,NULL,NULL,'319AFAA3F2559682F9FF658BE01456255F456FB1','D8B0ECFE534BC1131E19BAD1D4C0E813EEE4994F'),
-(9947,3,1,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(10505,3,2,2,'a',NULL,NULL,NULL,NULL,NULL),
-(11159,3,3,0,'a',NULL,NULL,NULL,NULL,NULL),
-(11403,3,3,2,NULL,NULL,NULL,NULL,NULL,NULL),
-(11723,3,3,3,'a',NULL,NULL,NULL,NULL,NULL),
-(12340,3,3,5,'a',NULL,NULL,NULL,'CDCBBD5188315E6B4D19449D492DBCFAF156A347','B706D13FF2F4018839729461E3F8A0E2B5FDC034'),
-(13623,4,0,6,'a',NULL,NULL,NULL,NULL,NULL),
-(13930,3,3,5,'a',NULL,NULL,NULL,NULL,NULL),
-(14545,4,2,2,NULL,NULL,NULL,NULL,NULL,NULL),
-(15595,4,3,4,NULL,NULL,NULL,NULL,NULL,NULL),
-(19116,6,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(19243,6,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(19342,6,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(19702,6,1,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(19802,6,1,2,NULL,NULL,NULL,NULL,NULL,NULL),
-(19831,6,1,2,NULL,NULL,NULL,NULL,NULL,NULL),
-(19865,6,1,2,NULL,NULL,NULL,NULL,NULL,NULL),
-(20182,6,2,0,'a',NULL,NULL,NULL,NULL,NULL),
-(20201,6,2,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(20216,6,2,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(20253,6,2,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(20338,6,2,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(20444,6,2,2,NULL,NULL,NULL,NULL,NULL,NULL),
-(20490,6,2,2,'a',NULL,NULL,NULL,NULL,NULL),
-(20574,6,2,2,'a',NULL,NULL,NULL,NULL,NULL),
-(20726,6,2,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(20779,6,2,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(20886,6,2,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(21355,6,2,4,NULL,NULL,NULL,NULL,NULL,NULL),
-(21463,6,2,4,NULL,NULL,NULL,NULL,NULL,NULL),
-(21742,6,2,4,NULL,NULL,NULL,NULL,NULL,NULL),
-(22248,7,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(22293,7,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(22345,7,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(22410,7,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(22423,7,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(22498,7,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(22522,7,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(22566,7,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(22594,7,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(22624,7,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(22747,7,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(22810,7,0,3,NULL,NULL,NULL,NULL,NULL,NULL),
-(22900,7,1,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(22908,7,1,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(22950,7,1,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(22995,7,1,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(22996,7,1,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(23171,7,1,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(23222,7,1,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(23360,7,1,5,NULL,NULL,NULL,NULL,NULL,NULL),
-(23420,7,1,5,NULL,NULL,NULL,NULL,NULL,NULL),
-(23911,7,2,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(23937,7,2,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(24015,7,2,0,NULL,NULL,NULL,NULL,NULL,NULL),
-(24330,7,2,5,NULL,NULL,NULL,NULL,NULL,NULL),
-(24367,7,2,5,NULL,NULL,NULL,NULL,NULL,NULL),
-(24415,7,2,5,NULL,NULL,NULL,NULL,NULL,NULL),
-(24430,7,2,5,NULL,NULL,NULL,NULL,NULL,NULL),
-(24461,7,2,5,NULL,NULL,NULL,NULL,NULL,NULL),
-(24742,7,2,5,NULL,NULL,NULL,NULL,NULL,NULL),
-(25549,7,3,2,NULL,'FE594FC35E7F9AFF86D99D8A364AB297','1252624ED8CBD6FAC7D33F5D67A535F3','66FC5E09B8706126795F140308C8C1D8',NULL,NULL),
-(25996,7,3,5,NULL,'23C59C5963CBEF5B728D13A50878DFCB','C7FF932D6A2174A3D538CA7212136D2B','210B970149D6F56CAC9BADF2AAC91E8E',NULL,NULL),
-(26124,7,3,5,NULL,'F8C05AE372DECA1D6C81DA7A8D1C5C39','46DF06D0147BA67BA49AF553435E093F','C9CA997AB8EDE1C65465CB2920869C4E',NULL,NULL),
-(26365,7,3,5,NULL,'2AAC82C80E829E2CA902D70CFA1A833A','59A53F307288454B419B13E694DF503C','DBE7F860276D6B400AAA86B35D51A417',NULL,NULL),
-(26654,7,3,5,NULL,'FAC2D693E702B9EC9F750F17245696D8','A752640E8B99FE5B57C1320BC492895A','9234C1BD5E9687ADBD19F764F2E0E811',NULL,NULL),
-(26822,7,3,5,NULL,'283E8D77ECF7060BE6347BE4EB99C7C7','2B05F6D746C0C6CC7EF79450B309E595','91003668C245D14ECD8DF094E065E06B',NULL,NULL),
-(26899,7,3,5,NULL,'F462CD2FE4EA3EADF875308FDBB18C99','3551EF0028B51E92170559BD25644B03','8368EFC2021329110A16339D298200D4',NULL,NULL),
-(26972,7,3,5,NULL,'797ECC19662DCBD5090A4481173F1D26','6E212DEF6A0124A3D9AD07F5E322F7AE','341CFEFE3D72ACA9A4407DC535DED66A',NULL,NULL),
-(28153,8,0,1,NULL,NULL,'DD626517CC6D31932B479934CCDC0ABF',NULL,NULL,NULL),
-(30706,8,1,5,NULL,NULL,'BB6D9866FE4A19A568015198783003FC',NULL,NULL,NULL),
-(30993,8,2,0,NULL,NULL,'2BAD61655ABC2FC3D04893B536403A91',NULL,NULL,NULL),
-(31229,8,2,0,NULL,NULL,'8A46F23670309F2AAE85C9A47276382B',NULL,NULL,NULL),
-(31429,8,2,0,NULL,NULL,'7795A507AF9DC3525EFF724FEE17E70C',NULL,NULL,NULL),
-(31478,8,2,0,NULL,NULL,'7973A8D54BDB8B798D9297B096E771EF',NULL,NULL,NULL),
-(32305,8,2,5,NULL,NULL,'21F5A6FC7AD89FBF411FDA8B8738186A',NULL,NULL,NULL),
-(32494,8,2,5,NULL,NULL,'58984ACE04919401835C61309A848F8A',NULL,NULL,NULL),
-(32580,8,2,5,NULL,NULL,'87C2FAA0D7931BF016299025C0DDCA14',NULL,NULL,NULL),
-(32638,8,2,5,NULL,NULL,'5D07ECE7D4A867DDDE615DAD22B76D4E',NULL,NULL,NULL),
-(32722,8,2,5,NULL,NULL,'1A09BE1D38A122586B4931BECCEAD4AA',NULL,NULL,NULL);
+(5875,1,12,1,NULL),
+(6005,1,12,2,NULL),
+(6141,1,12,3,NULL),
+(8606,2,4,3,NULL),
+(9947,3,1,3,NULL),
+(10505,3,2,2,'a'),
+(11159,3,3,0,'a'),
+(11403,3,3,2,NULL),
+(11723,3,3,3,'a'),
+(12340,3,3,5,'a'),
+(13623,4,0,6,'a'),
+(13930,3,3,5,'a'),
+(14545,4,2,2,NULL),
+(15595,4,3,4,NULL),
+(19116,6,0,3,NULL),
+(19243,6,0,3,NULL),
+(19342,6,0,3,NULL),
+(19702,6,1,0,NULL),
+(19802,6,1,2,NULL),
+(19831,6,1,2,NULL),
+(19865,6,1,2,NULL),
+(20182,6,2,0,'a'),
+(20201,6,2,0,NULL),
+(20216,6,2,0,NULL),
+(20253,6,2,0,NULL),
+(20338,6,2,0,NULL),
+(20444,6,2,2,NULL),
+(20490,6,2,2,'a'),
+(20574,6,2,2,'a'),
+(20726,6,2,3,NULL),
+(20779,6,2,3,NULL),
+(20886,6,2,3,NULL),
+(21355,6,2,4,NULL),
+(21463,6,2,4,NULL),
+(21742,6,2,4,NULL),
+(22248,7,0,3,NULL),
+(22293,7,0,3,NULL),
+(22345,7,0,3,NULL),
+(22410,7,0,3,NULL),
+(22423,7,0,3,NULL),
+(22498,7,0,3,NULL),
+(22522,7,0,3,NULL),
+(22566,7,0,3,NULL),
+(22594,7,0,3,NULL),
+(22624,7,0,3,NULL),
+(22747,7,0,3,NULL),
+(22810,7,0,3,NULL),
+(22900,7,1,0,NULL),
+(22908,7,1,0,NULL),
+(22950,7,1,0,NULL),
+(22995,7,1,0,NULL),
+(22996,7,1,0,NULL),
+(23171,7,1,0,NULL),
+(23222,7,1,0,NULL),
+(23360,7,1,5,NULL),
+(23420,7,1,5,NULL),
+(23911,7,2,0,NULL),
+(23937,7,2,0,NULL),
+(24015,7,2,0,NULL),
+(24330,7,2,5,NULL),
+(24367,7,2,5,NULL),
+(24415,7,2,5,NULL),
+(24430,7,2,5,NULL),
+(24461,7,2,5,NULL),
+(24742,7,2,5,NULL),
+(25549,7,3,2,NULL),
+(25996,7,3,5,NULL),
+(26124,7,3,5,NULL),
+(26365,7,3,5,NULL),
+(26654,7,3,5,NULL),
+(26822,7,3,5,NULL),
+(26899,7,3,5,NULL),
+(26972,7,3,5,NULL),
+(28153,8,0,1,NULL),
+(30706,8,1,5,NULL),
+(30993,8,2,0,NULL),
+(31229,8,2,0,NULL),
+(31429,8,2,0,NULL),
+(31478,8,2,0,NULL),
+(32305,8,2,5,NULL),
+(32494,8,2,5,NULL),
+(32580,8,2,5,NULL),
+(32638,8,2,5,NULL),
+(32722,8,2,5,NULL),
+(32750,8,2,5,NULL),
+(32978,8,2,5,NULL),
+(33369,8,3,0,NULL),
+(33528,8,3,0,NULL),
+(33724,8,3,0,NULL),
+(33775,8,3,0,NULL),
+(33941,8,3,0,NULL),
+(34220,8,3,0,NULL),
+(34601,8,3,0,NULL),
+(34769,8,3,0,NULL),
+(34963,8,3,0,NULL),
+(35249,8,3,7,NULL),
+(35284,8,3,7,NULL),
+(35435,8,3,7,NULL),
+(35662,8,3,7,NULL),
+(36753,9,0,2,NULL),
+(36839,9,0,2,NULL),
+(36949,9,0,2,NULL),
+(37142,9,0,2,NULL),
+(37176,9,0,2,NULL),
+(37474,9,0,2,NULL),
+(38134,9,0,5,NULL),
+(38556,9,0,5,NULL),
+(39653,9,1,0,NULL),
+(39804,9,1,0,NULL),
+(40000,9,1,0,NULL),
+(40120,9,1,0,NULL),
+(40443,9,1,0,NULL),
+(40593,9,1,0,NULL),
+(40725,9,1,0,NULL),
+(40906,9,1,5,NULL),
+(40944,9,1,5,NULL),
+(40966,9,1,5,NULL),
+(41031,9,1,5,NULL),
+(41079,9,1,5,NULL),
+(41288,9,1,5,NULL),
+(41323,9,1,5,NULL),
+(41359,9,1,5,NULL),
+(41488,9,1,5,NULL),
+(41793,9,1,5,NULL),
+(42010,9,1,5,NULL),
+(42423,9,2,0,NULL),
+(42488,9,2,0,NULL),
+(42521,9,2,0,NULL),
+(42538,9,2,0,NULL),
+(42560,9,2,0,NULL),
+(42614,9,2,0,NULL),
+(42698,9,2,0,NULL),
+(42825,9,2,0,NULL),
+(42852,9,2,0,NULL),
+(42937,9,2,0,NULL),
+(42979,9,2,0,NULL),
+(43114,9,2,0,NULL),
+(43206,9,2,0,NULL),
+(43340,9,2,0,NULL),
+(43345,9,2,0,NULL),
+(43971,9,2,5,NULL),
+(44015,9,2,5,NULL),
+(44061,9,2,5,NULL),
+(44127,9,2,5,NULL),
+(44232,9,2,5,NULL),
+(44325,9,2,5,NULL),
+(44730,9,2,5,NULL),
+(44908,9,2,5,NULL),
+(45114,9,2,7,NULL),
+(45161,9,2,7,NULL),
+(45338,9,2,7,NULL),
+(45745,9,2,7,NULL),
+(46479,10,0,2,NULL),
+(46658,10,0,2,NULL),
+(46689,10,0,2,NULL),
+(46702,10,0,2,NULL),
+(46741,10,0,2,NULL),
+(46801,10,0,2,NULL),
+(46879,10,0,2,NULL),
+(46924,10,0,2,NULL),
+(47067,10,0,2,NULL),
+(47187,10,0,2,NULL),
+(47213,10,0,2,NULL),
+(47631,10,0,2,NULL),
+(47777,10,0,5,NULL),
+(47799,10,0,5,NULL),
+(47825,10,0,5,NULL),
+(47849,10,0,5,NULL),
+(47871,10,0,5,NULL),
+(47884,10,0,5,NULL),
+(47936,10,0,5,NULL),
+(47967,10,0,5,NULL),
+(48001,10,0,5,NULL),
+(48069,10,0,5,NULL),
+(48317,10,0,5,NULL),
+(48397,10,0,5,NULL),
+(48526,10,0,5,NULL),
+(48676,10,0,7,NULL),
+(48749,10,0,7,NULL),
+(48838,10,0,7,NULL),
+(48865,10,0,7,NULL),
+(48892,10,0,7,NULL),
+(48966,10,0,7,NULL),
+(48999,10,0,7,NULL),
+(49267,10,0,7,NULL),
+(49318,10,1,0,NULL),
+(49343,10,0,7,NULL),
+(49407,10,1,0,NULL),
+(49426,10,1,0,NULL),
+(49444,10,1,0,NULL),
+(49474,10,1,0,NULL),
+(49570,10,1,0,NULL),
+(49679,10,1,0,NULL),
+(49741,10,1,0,NULL),
+(49801,10,1,0,NULL),
+(49890,10,1,0,NULL),
+(50000,10,1,0,NULL),
+(50401,10,1,5,NULL),
+(50438,10,1,5,NULL),
+(50467,10,1,5,NULL),
+(50469,10,1,5,NULL),
+(50504,10,1,5,NULL),
+(50585,10,1,5,NULL),
+(50622,10,1,5,NULL),
+(50747,10,1,5,NULL),
+(50791,10,1,5,NULL),
+(51130,10,1,5,NULL),
+(51187,10,1,7,NULL),
+(51237,10,1,7,NULL),
+(51261,10,1,7,NULL),
+(51313,10,1,7,NULL),
+(51421,10,1,7,NULL),
+(51485,10,1,7,NULL),
+(51536,10,1,7,NULL),
+(51754,10,1,7,NULL),
+(51886,10,1,7,NULL),
+(51972,10,1,7,NULL),
+(52038,10,2,0,NULL),
+(52068,10,2,0,NULL),
+(52095,10,2,0,NULL),
+(52106,10,2,0,NULL),
+(52129,10,2,0,NULL),
+(52148,10,2,0,NULL),
+(52188,10,2,0,NULL),
+(52301,10,2,0,NULL),
+(52393,10,2,0,NULL),
+(52485,10,2,0,NULL),
+(52545,10,2,0,NULL),
+(52607,10,2,0,NULL),
+(52649,10,2,0,NULL),
+(52808,10,2,0,NULL),
+(52902,10,2,5,NULL),
+(52968,10,2,5,NULL),
+(52983,10,2,5,NULL),
+(53007,10,2,5,NULL),
+(53040,10,2,5,NULL),
+(53104,10,2,5,NULL),
+(53162,10,2,5,NULL),
+(53212,10,2,5,NULL),
+(53262,10,2,5,NULL),
+(53441,10,2,5,NULL),
+(53584,10,2,5,NULL),
+(53840,10,2,6,NULL),
+(53877,10,2,6,NULL),
+(53913,10,2,6,NULL),
+(53989,10,2,6,NULL),
+(54070,10,2,6,NULL),
+(54205,10,2,6,NULL),
+(54358,10,2,6,NULL),
+(54499,10,2,6,NULL),
+(54577,10,2,7,NULL),
+(54601,10,2,7,NULL),
+(54604,10,2,7,NULL),
+(54630,10,2,7,NULL),
+(54673,10,2,7,NULL),
+(54717,10,2,7,NULL),
+(54736,10,2,7,NULL),
+(54762,10,2,7,NULL),
+(54847,10,2,7,NULL),
+(54904,10,2,7,NULL),
+(54988,10,2,7,NULL),
+(55142,10,2,7,NULL),
+(55165,10,2,7,NULL),
+(55261,10,2,7,NULL),
+(55461,10,2,7,NULL),
+(55664,10,2,7,NULL),
+(55666,11,0,0,NULL),
+(55792,11,0,0,NULL),
+(55793,11,0,0,NULL),
+(55818,11,0,0,NULL),
+(55824,11,0,0,NULL),
+(55846,11,0,0,NULL),
+(55933,11,0,0,NULL),
+(55939,11,0,0,NULL),
+(55959,11,0,2,NULL),
+(55960,11,0,0,NULL),
+(56008,11,0,0,NULL),
+(56110,11,0,2,NULL),
+(56162,11,0,2,NULL),
+(56196,11,0,2,NULL),
+(56263,11,0,2,NULL),
+(56288,11,0,2,NULL),
+(56311,11,0,2,NULL),
+(56313,11,0,2,NULL);
/*!40000 ALTER TABLE `build_info` ENABLE KEYS */;
UNLOCK TABLES;
@@ -2025,7 +2527,9 @@ INSERT INTO `updates` VALUES
('2024_01_06_03_auth.sql','693BFD4326314659BAD9A2C70D9526FF4625B393','ARCHIVED','2024-01-06 12:55:07',0),
('2024_01_21_00_auth.sql','B45B95D7B608D6ACF1BCBA656718C7DEED8CFF00','ARCHIVED','2024-01-21 11:38:22',0),
('2024_04_10_00_auth.sql','CE8BD4D6DF6DE85DBF892507B1B18B746FE4A71D','ARCHIVED','2024-04-10 16:07:02',0),
-('2024_08_17_00_auth.sql','B6D7D00D5573958EE84321B029D869C52793F924','ARCHIVED','2024-08-17 22:26:12',0);
+('2024_08_17_00_auth.sql','B6D7D00D5573958EE84321B029D869C52793F924','ARCHIVED','2024-08-17 22:26:12',0),
+('2024_08_28_01_auth.sql','BC5D74553AF2D92606F55C1C462D2700FE73BD34','RELEASED','2024-08-28 14:55:05',0),
+('2024_08_30_00_auth.sql','BD76942F1C29AAA2450E051E7CA552672B5E331B','RELEASED','2024-08-30 19:24:30',0);
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/sql/updates/auth/3.3.5/2024_08_28_01_auth.sql b/sql/updates/auth/3.3.5/2024_08_28_01_auth.sql
new file mode 100644
index 00000000000..7e547d9cc4a
--- /dev/null
+++ b/sql/updates/auth/3.3.5/2024_08_28_01_auth.sql
@@ -0,0 +1,6 @@
+ALTER TABLE `build_info` ADD `macArmAuthSeed` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL AFTER `mac64AuthSeed`;
+
+UPDATE `build_info` SET `macArmAuthSeed`='778F6A5DF79A4EF1B86F651F3B303CE7' WHERE `build`=56196;
+UPDATE `build_info` SET `macArmAuthSeed`='41710C793EF021721F14B06EC1896D3F' WHERE `build`=56288;
+UPDATE `build_info` SET `macArmAuthSeed`='412D3200715AAFDC0522DF031A941F0E' WHERE `build`=56311;
+UPDATE `build_info` SET `macArmAuthSeed`='A83ED19EE659BC95CC322D1E49BDEDBB' WHERE `build`=56313;
diff --git a/sql/updates/auth/3.3.5/2024_08_30_00_auth.sql b/sql/updates/auth/3.3.5/2024_08_30_00_auth.sql
new file mode 100644
index 00000000000..2b36c28a3cf
--- /dev/null
+++ b/sql/updates/auth/3.3.5/2024_08_30_00_auth.sql
@@ -0,0 +1,39 @@
+--
+-- Table structure for table `build_auth_key`
+--
+DROP TABLE IF EXISTS `build_auth_key`;
+CREATE TABLE `build_auth_key` (
+ `build` int NOT NULL,
+ `platform` char(4) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
+ `arch` char(4) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
+ `type` char(4) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
+ `key` binary(16) NOT NULL,
+ PRIMARY KEY (`build`,`platform`,`arch`,`type`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+--
+-- Table structure for table `build_executable_hash`
+--
+DROP TABLE IF EXISTS `build_executable_hash`;
+CREATE TABLE `build_executable_hash` (
+ `build` int NOT NULL,
+ `platform` char(4) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
+ `executableHash` binary(20) NOT NULL,
+ PRIMARY KEY (`build`,`platform`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+INSERT INTO `build_auth_key` SELECT `build`,'Win','x86','WoW',UNHEX(`winAuthSeed`) FROM `build_info` WHERE LENGTH(`winAuthSeed`)=32;
+INSERT INTO `build_auth_key` SELECT `build`,'Win','x64','WoW',UNHEX(`win64AuthSeed`) FROM `build_info` WHERE LENGTH(`win64AuthSeed`)=32;
+INSERT INTO `build_auth_key` SELECT `build`,'Mac','x64','WoW',UNHEX(`mac64AuthSeed`) FROM `build_info` WHERE LENGTH(`mac64AuthSeed`)=32;
+INSERT INTO `build_auth_key` SELECT `build`,'Mac','A64','WoW',UNHEX(`macArmAuthSeed`) FROM `build_info` WHERE LENGTH(`macArmAuthSeed`)=32;
+
+INSERT INTO `build_executable_hash` SELECT `build`,'Win',UNHEX(`winChecksumSeed`) FROM `build_info` WHERE LENGTH(`winChecksumSeed`)=40;
+INSERT INTO `build_executable_hash` SELECT `build`,'OSX',UNHEX(`macChecksumSeed`) FROM `build_info` WHERE LENGTH(`macChecksumSeed`)=40;
+
+ALTER TABLE `build_info`
+ DROP `winAuthSeed`,
+ DROP `win64AuthSeed`,
+ DROP `mac64AuthSeed`,
+ DROP `macArmAuthSeed`,
+ DROP `winChecksumSeed`,
+ DROP `macChecksumSeed`;
diff --git a/src/server/authserver/Authentication/AuthCodes.cpp b/src/server/authserver/Authentication/AuthCodes.cpp
index 5af0f15482d..9f10e18f82c 100644
--- a/src/server/authserver/Authentication/AuthCodes.cpp
+++ b/src/server/authserver/Authentication/AuthCodes.cpp
@@ -16,7 +16,7 @@
*/
#include "AuthCodes.h"
-#include "RealmList.h"
+#include "ClientBuildInfo.h"
namespace AuthHelper
{
@@ -24,16 +24,16 @@ namespace AuthHelper
bool IsPreBCAcceptedClientBuild(uint32 build)
{
- return build <= MAX_PRE_BC_CLIENT_BUILD && sRealmList->GetBuildInfo(build);
+ return build <= MAX_PRE_BC_CLIENT_BUILD && ClientBuild::GetBuildInfo(build);
}
bool IsPostBCAcceptedClientBuild(uint32 build)
{
- return build > MAX_PRE_BC_CLIENT_BUILD && sRealmList->GetBuildInfo(build);
+ return build > MAX_PRE_BC_CLIENT_BUILD && ClientBuild::GetBuildInfo(build);
}
bool IsAcceptedClientBuild(uint32 build)
{
- return sRealmList->GetBuildInfo(build) != nullptr;
+ return ClientBuild::GetBuildInfo(build) != nullptr;
}
}
diff --git a/src/server/authserver/Server/AuthSession.cpp b/src/server/authserver/Server/AuthSession.cpp
index ba2ef766ac7..81e8b6c48f6 100644
--- a/src/server/authserver/Server/AuthSession.cpp
+++ b/src/server/authserver/Server/AuthSession.cpp
@@ -19,6 +19,7 @@
#include "AES.h"
#include "AuthCodes.h"
#include "ByteBuffer.h"
+#include "ClientBuildInfo.h"
#include "Config.h"
#include "CryptoGenerics.h"
#include "CryptoHash.h"
@@ -756,7 +757,7 @@ void AuthSession::RealmListCallback(PreparedQueryResult result)
// No SQL injection. id of realm is controlled by the database.
uint32 flag = realm.Flags;
- RealmBuildInfo const* buildInfo = sRealmList->GetBuildInfo(realm.Build);
+ ClientBuild::Info const* buildInfo = ClientBuild::GetBuildInfo(realm.Build);
if (!okBuild)
{
if (!buildInfo)
@@ -841,20 +842,15 @@ bool AuthSession::VerifyVersion(uint8 const* a, int32 aLength, Trinity::Crypto::
Trinity::Crypto::SHA1::Digest const* versionHash = nullptr;
if (!isReconnect)
{
- RealmBuildInfo const* buildInfo = sRealmList->GetBuildInfo(_build);
+ ClientBuild::Info const* buildInfo = ClientBuild::GetBuildInfo(_build);
if (!buildInfo)
return false;
- if (_os == "Win")
- versionHash = &buildInfo->WindowsHash;
- else if (_os == "OSX")
- versionHash = &buildInfo->MacHash;
-
- if (!versionHash)
- return false;
-
- if (zeros == *versionHash)
+ auto platformItr = std::ranges::find(buildInfo->ExecutableHashes, ClientBuild::ToFourCC(_os), &ClientBuild::ExecutableHash::Platform);
+ if (platformItr == buildInfo->ExecutableHashes.end())
return true; // not filled serverside
+
+ versionHash = &platformItr->Hash;
}
else
versionHash = &zeros;
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index 02fa39e2a07..64307b823f3 100644
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -17,6 +17,7 @@
#include "WorldSocket.h"
#include "BigNumber.h"
+#include "ClientBuildInfo.h"
#include "DatabaseEnv.h"
#include "GameTime.h"
#include "CryptoHash.h"
@@ -506,7 +507,7 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptr<AuthSession> authSes
// Must be done before WorldSession is created
bool wardenActive = sWorld->getBoolConfig(CONFIG_WARDEN_ENABLED);
- if (wardenActive && account.OS != "Win" && account.OS != "OSX")
+ if (wardenActive && !ClientBuild::Platform::IsValid(account.OS))
{
SendAuthResponseError(AUTH_REJECT);
TC_LOG_ERROR("network", "WorldSocket::HandleAuthSession: Client {} attempted to log in using invalid client OS ({}).", address, account.OS);
diff --git a/src/server/shared/Realm/ClientBuildInfo.cpp b/src/server/shared/Realm/ClientBuildInfo.cpp
new file mode 100644
index 00000000000..b2ccf07b99a
--- /dev/null
+++ b/src/server/shared/Realm/ClientBuildInfo.cpp
@@ -0,0 +1,139 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ClientBuildInfo.h"
+#include "DatabaseEnv.h"
+#include "Log.h"
+#include "Util.h"
+#include <algorithm>
+#include <cctype>
+
+namespace
+{
+std::vector<ClientBuild::Info> Builds;
+}
+
+namespace ClientBuild
+{
+std::array<char, 5> ToCharArray(uint32 value)
+{
+ auto normalize = [](uint8 c) -> char
+ {
+ if (!c || std::isprint(c))
+ return char(c);
+ return ' ';
+ };
+
+ std::array<char, 5> chars = { char((value >> 24) & 0xFF), char((value >> 16) & 0xFF), char((value >> 8) & 0xFF), char(value & 0xFF), '\0' };
+
+ auto firstNonZero = std::ranges::find_if(chars, [](char c) { return c != '\0'; });
+ if (firstNonZero != chars.end())
+ {
+ // move leading zeros to end
+ std::rotate(chars.begin(), firstNonZero, chars.end());
+
+ // ensure we only have printable characters remaining
+ std::ranges::transform(chars, chars.begin(), normalize);
+ }
+
+ return chars;
+}
+
+bool Platform::IsValid(std::string_view platform)
+{
+ if (platform.length() > sizeof(uint32))
+ return false;
+
+ switch (ToFourCC(platform))
+ {
+ case Win_x86:
+ case Mac_x86:
+ return true;
+ default:
+ break;
+ }
+
+ return false;
+}
+
+void LoadBuildInfo()
+{
+ Builds.clear();
+
+ // 0 1 2 3 4
+ if (QueryResult result = LoginDatabase.Query("SELECT majorVersion, minorVersion, bugfixVersion, hotfixVersion, build FROM build_info ORDER BY build ASC"))
+ {
+ do
+ {
+ Field* fields = result->Fetch();
+ Info& build = Builds.emplace_back();
+ build.MajorVersion = fields[0].GetUInt32();
+ build.MinorVersion = fields[1].GetUInt32();
+ build.BugfixVersion = fields[2].GetUInt32();
+ std::string hotfixVersion = fields[3].GetString();
+ if (hotfixVersion.length() < build.HotfixVersion.size())
+ std::ranges::copy(hotfixVersion, build.HotfixVersion.begin());
+ else
+ build.HotfixVersion = { };
+
+ build.Build = fields[4].GetUInt32();
+
+ } while (result->NextRow());
+ }
+
+ // 0 1 2
+ if (QueryResult result = LoginDatabase.Query("SELECT `build`, `platform`, `executableHash` FROM `build_executable_hash`"))
+ {
+ do
+ {
+ Field* fields = result->Fetch();
+
+ uint32 build = fields[0].GetInt32();
+ auto buildInfo = std::ranges::find(Builds, build, &Info::Build);
+ if (buildInfo == Builds.end())
+ {
+ TC_LOG_ERROR("sql.sql", "ClientBuild::LoadBuildInfo: Unknown `build` {} in `build_executable_hash` - missing from `build_info`, skipped.", build);
+ continue;
+ }
+
+ std::string_view platform = fields[1].GetStringView();
+ if (!Platform::IsValid(platform))
+ {
+ TC_LOG_ERROR("sql.sql", "ClientBuild::LoadBuildInfo: Invalid platform {} for `build` {} in `build_executable_hash`, skipped.", platform, build);
+ continue;
+ }
+
+ ExecutableHash& buildKey = buildInfo->ExecutableHashes.emplace_back();
+ buildKey.Platform = ToFourCC(platform);
+ buildKey.Hash = fields[2].GetBinary<ExecutableHash::Size>();
+
+ } while (result->NextRow());
+ }
+}
+
+Info const* GetBuildInfo(uint32 build)
+{
+ auto buildInfo = std::ranges::find(Builds, build, &Info::Build);
+ return buildInfo != Builds.end() ? &*buildInfo : nullptr;
+}
+
+uint32 GetMinorMajorBugfixVersionForBuild(uint32 build)
+{
+ auto buildInfo = std::ranges::lower_bound(Builds, build, {}, &Info::Build);
+ return buildInfo != Builds.end() ? (buildInfo->MajorVersion * 10000 + buildInfo->MinorVersion * 100 + buildInfo->BugfixVersion) : 0;
+}
+}
diff --git a/src/server/shared/Realm/ClientBuildInfo.h b/src/server/shared/Realm/ClientBuildInfo.h
new file mode 100644
index 00000000000..2889470b9c2
--- /dev/null
+++ b/src/server/shared/Realm/ClientBuildInfo.h
@@ -0,0 +1,79 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef TRINITYCORE_CLIENT_BUILD_INFO_H
+#define TRINITYCORE_CLIENT_BUILD_INFO_H
+
+#include "Define.h"
+#include <array>
+#include <string_view>
+#include <vector>
+
+namespace ClientBuild
+{
+inline constexpr uint32 ToFourCC(std::string_view text)
+{
+ uint32 uintValue = 0;
+ for (uint8 c : text)
+ {
+ uintValue <<= 8;
+ uintValue |= c;
+ }
+ return uintValue;
+}
+
+consteval uint32 operator""_fourcc(char const* chars, std::size_t length)
+{
+ if (length > sizeof(uint32))
+ throw "Text can only be max 4 characters long";
+
+ return ToFourCC({ chars, length });
+}
+
+TC_SHARED_API std::array<char, 5> ToCharArray(uint32 value);
+
+namespace Platform
+{
+ inline constexpr uint32 Win_x86 = "Win"_fourcc;
+ inline constexpr uint32 Mac_x86 = "OSX"_fourcc;
+
+ TC_SHARED_API bool IsValid(std::string_view platform);
+}
+
+struct ExecutableHash
+{
+ static constexpr std::size_t Size = 20;
+
+ uint32 Platform;
+ std::array<uint8, Size> Hash;
+};
+
+struct Info
+{
+ uint32 Build;
+ uint32 MajorVersion;
+ uint32 MinorVersion;
+ uint32 BugfixVersion;
+ std::array<char, 4> HotfixVersion;
+ std::vector<ExecutableHash> ExecutableHashes;
+};
+
+TC_SHARED_API void LoadBuildInfo();
+TC_SHARED_API Info const* GetBuildInfo(uint32 build);
+}
+
+#endif // TRINITYCORE_CLIENT_BUILD_INFO_H
diff --git a/src/server/shared/Realm/RealmList.cpp b/src/server/shared/Realm/RealmList.cpp
index 4e353fa7711..f68623c5a5d 100644
--- a/src/server/shared/Realm/RealmList.cpp
+++ b/src/server/shared/Realm/RealmList.cpp
@@ -16,6 +16,7 @@
*/
#include "RealmList.h"
+#include "ClientBuildInfo.h"
#include "DatabaseEnv.h"
#include "DeadlineTimer.h"
#include "IoContext.h"
@@ -43,7 +44,7 @@ void RealmList::Initialize(Trinity::Asio::IoContext& ioContext, uint32 updateInt
_updateTimer = std::make_unique<Trinity::Asio::DeadlineTimer>(ioContext);
_resolver = std::make_unique<Trinity::Asio::Resolver>(ioContext);
- LoadBuildInfo();
+ ClientBuild::LoadBuildInfo();
// Get the content of the realmlist table in the database
UpdateRealms(boost::system::error_code());
}
@@ -53,37 +54,6 @@ void RealmList::Close()
_updateTimer->cancel();
}
-void RealmList::LoadBuildInfo()
-{
- // 0 1 2 3 4 5 6
- if (QueryResult result = LoginDatabase.Query("SELECT majorVersion, minorVersion, bugfixVersion, hotfixVersion, build, winChecksumSeed, macChecksumSeed FROM build_info ORDER BY build ASC"))
- {
- do
- {
- Field* fields = result->Fetch();
- RealmBuildInfo& build = _builds.emplace_back();
- build.MajorVersion = fields[0].GetUInt32();
- build.MinorVersion = fields[1].GetUInt32();
- build.BugfixVersion = fields[2].GetUInt32();
- std::string hotfixVersion = fields[3].GetString();
- if (hotfixVersion.length() < build.HotfixVersion.size())
- std::copy(hotfixVersion.begin(), hotfixVersion.end(), build.HotfixVersion.begin());
- else
- std::fill(hotfixVersion.begin(), hotfixVersion.end(), '\0');
-
- build.Build = fields[4].GetUInt32();
- std::string windowsHash = fields[5].GetString();
- if (windowsHash.length() == build.WindowsHash.size() * 2)
- HexStrToByteArray(windowsHash, build.WindowsHash);
-
- std::string macHash = fields[6].GetString();
- if (macHash.length() == build.MacHash.size() * 2)
- HexStrToByteArray(macHash, build.MacHash);
-
- } while (result->NextRow());
- }
-}
-
void RealmList::UpdateRealm(RealmHandle const& id, uint32 build, std::string const& name,
boost::asio::ip::address&& address, boost::asio::ip::address&& localAddr, boost::asio::ip::address&& localSubmask,
uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float population)
@@ -210,12 +180,3 @@ Realm const* RealmList::GetRealm(RealmHandle const& id) const
return nullptr;
}
-
-RealmBuildInfo const* RealmList::GetBuildInfo(uint32 build) const
-{
- for (RealmBuildInfo const& clientBuild : _builds)
- if (clientBuild.Build == build)
- return &clientBuild;
-
- return nullptr;
-}
diff --git a/src/server/shared/Realm/RealmList.h b/src/server/shared/Realm/RealmList.h
index 056472533e2..45f0a9b6ffe 100644
--- a/src/server/shared/Realm/RealmList.h
+++ b/src/server/shared/Realm/RealmList.h
@@ -19,23 +19,8 @@
#define _REALMLIST_H
#include "Define.h"
-#include "Duration.h"
#include "Realm.h"
-#include <array>
#include <map>
-#include <vector>
-#include <unordered_set>
-
-struct RealmBuildInfo
-{
- uint32 Build;
- uint32 MajorVersion;
- uint32 MinorVersion;
- uint32 BugfixVersion;
- std::array<char, 4> HotfixVersion;
- std::array<uint8, 20> WindowsHash;
- std::array<uint8, 20> MacHash;
-};
namespace boost
{
@@ -61,18 +46,14 @@ public:
RealmMap const& GetRealms() const { return _realms; }
Realm const* GetRealm(RealmHandle const& id) const;
- RealmBuildInfo const* GetBuildInfo(uint32 build) const;
-
private:
RealmList();
- void LoadBuildInfo();
void UpdateRealms(boost::system::error_code const& error);
void UpdateRealm(RealmHandle const& id, uint32 build, std::string const& name,
boost::asio::ip::address&& address, boost::asio::ip::address&& localAddr, boost::asio::ip::address&& localSubmask,
uint16 port, uint8 icon, RealmFlags flag, uint8 timezone, AccountTypes allowedSecurityLevel, float population);
- std::vector<RealmBuildInfo> _builds;
RealmMap _realms;
uint32 _updateInterval;
std::unique_ptr<Trinity::Asio::DeadlineTimer> _updateTimer;