diff options
-rw-r--r-- | sql/base/auth_database.sql | 684 | ||||
-rw-r--r-- | sql/updates/auth/3.3.5/2024_08_28_01_auth.sql | 6 | ||||
-rw-r--r-- | sql/updates/auth/3.3.5/2024_08_30_00_auth.sql | 39 | ||||
-rw-r--r-- | src/server/authserver/Authentication/AuthCodes.cpp | 8 | ||||
-rw-r--r-- | src/server/authserver/Server/AuthSession.cpp | 18 | ||||
-rw-r--r-- | src/server/game/Server/WorldSocket.cpp | 3 | ||||
-rw-r--r-- | src/server/shared/Realm/ClientBuildInfo.cpp | 139 | ||||
-rw-r--r-- | src/server/shared/Realm/ClientBuildInfo.h | 79 | ||||
-rw-r--r-- | src/server/shared/Realm/RealmList.cpp | 43 | ||||
-rw-r--r-- | src/server/shared/Realm/RealmList.h | 19 |
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; |