diff --git a/sql/realmd.sql b/sql/realmd.sql index 267b882db..15baf7fc5 100644 --- a/sql/realmd.sql +++ b/sql/realmd.sql @@ -21,7 +21,7 @@ DROP TABLE IF EXISTS `realmd_db_version`; CREATE TABLE `realmd_db_version` ( - `required_9010_01_realmd_realmlist` bit(1) default NULL + `required_9746_01_realmd_realmlist` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Last applied sql update to DB'; -- @@ -157,7 +157,7 @@ CREATE TABLE `realmlist` ( `address` varchar(32) NOT NULL default '127.0.0.1', `port` int(11) NOT NULL default '8085', `icon` tinyint(3) unsigned NOT NULL default '0', - `color` tinyint(3) unsigned NOT NULL default '2', + `realmflags` tinyint(3) unsigned NOT NULL default '0' COMMENT 'Supported masks: 0x1 (invalid, not show in realm list), 0x4 (show version and build), 0x20 (new players), 0x40 (recommended)', `timezone` tinyint(3) unsigned NOT NULL default '0', `allowedSecurityLevel` tinyint(3) unsigned NOT NULL default '0', `population` float unsigned NOT NULL default '0', diff --git a/sql/updates/9746_01_realmd_realmlist.sql b/sql/updates/9746_01_realmd_realmlist.sql new file mode 100644 index 000000000..44f2fdd62 --- /dev/null +++ b/sql/updates/9746_01_realmd_realmlist.sql @@ -0,0 +1,9 @@ +ALTER TABLE realmd_db_version CHANGE COLUMN required_9010_01_realmd_realmlist required_9746_01_realmd_realmlist bit; + +ALTER TABLE realmlist + CHANGE COLUMN color realmflags tinyint(3) unsigned NOT NULL default '0' + COMMENT 'Supported masks: 0x1 (invalid, not show in realm list), 0x4 (show version and build), 0x20 (new players), 0x40 (recommended)'; + + +UPDATE realmlist + SET realmflags = realmflags & ~(0x01 | 0x04 | 0x20 | 0x40) ; diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index 56e51d5ad..c35412bfb 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -118,6 +118,7 @@ pkgdata_DATA = \ 9728_01_mangos_gossip_menu_option.sql \ 9735_01_mangos_spell_proc_event.sql \ 9735_02_mangos_spell_chain.sql \ + 9746_01_realmd_realmlist.sql \ README ## Additional files to include when running 'make dist' @@ -216,4 +217,5 @@ EXTRA_DIST = \ 9728_01_mangos_gossip_menu_option.sql \ 9735_01_mangos_spell_proc_event.sql \ 9735_02_mangos_spell_chain.sql \ + 9746_01_realmd_realmlist.sql \ README diff --git a/src/realmd/AuthCodes.h b/src/realmd/AuthCodes.h index 6dabc573c..274123e7b 100644 --- a/src/realmd/AuthCodes.h +++ b/src/realmd/AuthCodes.h @@ -46,24 +46,4 @@ enum AuthResult WOW_FAIL_USE_BATTLENET = 0x12, ///< WOW_FAIL_OTHER This account is now attached to a Battle.net account. Please login with your Battle.net account email address and password. }; -// will only support WoW 1.12.1/1.12.2 , WoW:TBC 2.4.3 and official release for WoW:WotLK and later, client builds 10505, 8606, 6005, 5875 -// if you need more from old build then add it in cases in realmd sources code -// list sorted from high to low build and first build used as low bound for accepted by default range (any > it will accepted by realmd at least) - -#define EXPECTED_REALMD_CLIENT_BUILD \ -{ \ - 11723, /* 3.3.3a and higher */ \ - 11403, /* 3.3.2 */ \ - 11159, /* 3.3.0a */ \ - 10505, /* 3.2.2a */ \ - 8606, /* 2.4.3 */ \ - 6005, /* 1.12.2 */ \ - 5875, /* 1.12.1 */ \ - 0 \ -} - -// At update excepted builds please update if need define DEFAULT_MAX_LEVEL -// in DBCEnum.h to default max player level expected by build -// and also in mangosd.conf.in - #endif diff --git a/src/realmd/AuthSocket.cpp b/src/realmd/AuthSocket.cpp index b4730d793..64ae0ba9f 100644 --- a/src/realmd/AuthSocket.cpp +++ b/src/realmd/AuthSocket.cpp @@ -234,6 +234,8 @@ AuthSocket::AuthSocket(ISocketHandler &h) : TcpSocket(h) pPatch = NULL; _accountSecurityLevel = SEC_PLAYER; + + _build = 0; } /// Close patch file descriptor before leaving @@ -579,22 +581,7 @@ bool AuthSocket::_HandleLogonProof() ibuf.Read((char *)&lp, sizeof(sAuthLogonProof_C)); ///- Check if the client has one of the expected version numbers - bool valid_version = false; - int accepted_versions[] = EXPECTED_REALMD_CLIENT_BUILD; - if (_build >= accepted_versions[0]) // first build is low bound of always accepted range - valid_version = true; - else - { - // continue from 1 with explict equal check - for(int i = 1; accepted_versions[i]; ++i) - { - if(_build == accepted_versions[i]) - { - valid_version = true; - break; - } - } - } + bool valid_version = FindBuildInfo(_build) != NULL; ///