117 {
119 std::string dbPortOutput;
120
121 {
124 dbPort = (*res)[0].Get<
uint16>();
125
126 if (dbPort)
128 else
130 }
131
133
134 handler->
PSendSysMessage(
"Using SSL version: {} (library: {})", OPENSSL_VERSION_TEXT, OpenSSL_version(OPENSSL_VERSION));
135 handler->
PSendSysMessage(
"Using Boost version: {}.{}.{}", BOOST_VERSION / 100000, BOOST_VERSION / 100 % 1000, BOOST_VERSION % 100);
137
140
142
143 handler->
PSendSysMessage(
"Worldserver listening connections on port {}", worldPort);
145
149
151
152 std::string dataDir =
sWorld->GetDataPath();
153 std::vector<std::string> subDirs;
154 subDirs.emplace_back("maps");
155 if (vmapIndoorCheck || vmapLOSCheck || vmapHeightCheck)
156 {
157 handler->
PSendSysMessage(
"VMAPs status: Enabled. LineOfSight: {}, getHeight: {}, indoorCheck: {}", vmapLOSCheck, vmapHeightCheck, vmapIndoorCheck);
158 subDirs.emplace_back("vmaps");
159 }
160 else
162
163 if (mmapEnabled)
164 {
166 subDirs.emplace_back("mmaps");
167 }
168 else
170
171 for (std::string const& subDir : subDirs)
172 {
173 std::filesystem::path mapPath(dataDir);
174 mapPath /= subDir;
175
176 if (!std::filesystem::exists(mapPath))
177 {
178 handler->
PSendSysMessage(
"{} directory doesn't exist!. Using path: {}", subDir, mapPath.generic_string());
179 continue;
180 }
181
182 auto end = std::filesystem::directory_iterator();
183 std::size_t folderSize = std::accumulate(std::filesystem::directory_iterator(mapPath), end, std::size_t(0), [](std::size_t val, std::filesystem::path const& mapFile)
184 {
185 if (std::filesystem::is_regular_file(mapFile))
186 val += std::filesystem::file_size(mapFile);
187 return val;
188 });
189
190 handler->
PSendSysMessage(
"{} directory located in {}. Total size: {} bytes", subDir, mapPath.generic_string(), folderSize);
191 }
192
194 uint32 availableLocalesMask = (1 << defaultLocale);
195
197 {
199 if (locale == defaultLocale)
200 continue;
201
202 if (
sWorld->GetAvailableDbcLocale(locale) != defaultLocale)
203 availableLocalesMask |= (1 << locale);
204 }
205
206 std::string availableLocales;
208 {
209 if (!(availableLocalesMask & (1 << i)))
210 continue;
211
214 availableLocales += " ";
215 }
216
217 handler->
PSendSysMessage(
"Default DBC locale: {}.\nAll available DBC locales: {}",
localeNames[defaultLocale], availableLocales);
218
220
221 std::map<std::string, std::string> moduleDBRevisions;
222 sScriptMgr->OnDatabaseGetDBRevision(moduleDBRevisions);
223 for (auto const& [moduleName, revision] : moduleDBRevisions)
224 handler->PSendSysMessage("Using {} DB Revision: {}", moduleName, revision);
225
226 std::string lldb = "No updates found!";
228 {
229 Field* fields = resL->Fetch();
230 lldb = fields[0].
Get<std::string>();
231 }
232 std::string lcdb = "No updates found!";
234 {
235 Field* fields = resC->Fetch();
236 lcdb = fields[0].
Get<std::string>();
237 }
238 std::string lwdb = "No updates found!";
240 {
241 Field* fields = resW->Fetch();
242 lwdb = fields[0].
Get<std::string>();
243 }
244
248
252
255 else
257
259 {
261 }
262
263 return true;
264 }
char const * localeNames[TOTAL_LOCALES]
Definition Common.cpp:20
LocaleConstant
Definition Common.h:125
@ TOTAL_LOCALES
Definition Common.h:136
std::shared_ptr< ResultSet > QueryResult
Definition DatabaseEnvFwd.h:27
DatabaseWorkerPool< LoginDatabaseConnection > LoginDatabase
Accessor to the realm/login database.
Definition DatabaseEnv.cpp:22
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition DatabaseEnv.cpp:21
DatabaseWorkerPool< WorldDatabaseConnection > WorldDatabase
Accessor to the world database.
Definition DatabaseEnv.cpp:20
std::uint8_t uint8
Definition Define.h:109
std::uint32_t uint32
Definition Define.h:107
std::uint16_t uint16
Definition Define.h:108
#define sScriptMgr
Definition ScriptMgr.h:766
struct Module_79C0768D657977D697E10BAD956CCED1 Module
@ CONFIG_ENABLE_MMAPS
Definition WorldConfig.h:103
@ CONFIG_VMAP_INDOOR_CHECK
Definition WorldConfig.h:81
@ CONFIG_PORT_WORLD
Definition WorldConfig.h:174
void PSendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:219
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:168
Class used to access individual fields of database query result.
Definition Field.h:99
std::enable_if_t< std::is_arithmetic_v< T >, T > Get() const
Definition Field.h:113
bool isHeightCalcEnabled() const
Definition IVMapMgr.h:112
bool isLineOfSightCalcEnabled() const
Definition IVMapMgr.h:111
static VMapMgr2 * createOrGetVMapMgr()
Definition VMapFactory.cpp:27
#define sWorld
Definition World.h:318
Realm realm
Definition World.cpp:115
AC_COMMON_API std::vector< std::string_view > GetEnableModulesList()
Definition ModuleMgr.cpp:31
Definition AsioHacksFwd.h:47
std::string StringFormat(FormatStringView fmt, Args &&... args)
Default AC string format function.
Definition StringFormat.h:44
AC_COMMON_API char const * GetMySQLExecutable()
Definition GitRevision.cpp:61
AC_COMMON_API char const * GetCMakeVersion()
Definition GitRevision.cpp:41
AC_COMMON_API char const * GetHostOSVersion()
Definition GitRevision.cpp:46
AC_DATABASE_API uint32 GetLibraryVersion()
Definition MySQLThreading.cpp:31
uint32 Realm
Definition Realm.h:43
RealmHandle Id
Definition Realm.h:69