diff --git a/source/LoginServer/EQ2 Login.sln b/source/LoginServer/EQ2 Login.sln
deleted file mode 100644
index 48169c7..0000000
--- a/source/LoginServer/EQ2 Login.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EQ2 Login", "Login.vcxproj", "{BE2C1914-FCCC-4F65-A7DD-105142B36104}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- EQ2Login|Win32 = EQ2Login|Win32
- MiniLogin Release|Win32 = MiniLogin Release|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {BE2C1914-FCCC-4F65-A7DD-105142B36104}.Debug|Win32.ActiveCfg = EQ2Login|Win32
- {BE2C1914-FCCC-4F65-A7DD-105142B36104}.Debug|Win32.Build.0 = EQ2Login|Win32
- {BE2C1914-FCCC-4F65-A7DD-105142B36104}.EQ2Login|Win32.ActiveCfg = EQ2Login|Win32
- {BE2C1914-FCCC-4F65-A7DD-105142B36104}.EQ2Login|Win32.Build.0 = EQ2Login|Win32
- {BE2C1914-FCCC-4F65-A7DD-105142B36104}.MiniLogin Release|Win32.ActiveCfg = EQ2Login|Win32
- {BE2C1914-FCCC-4F65-A7DD-105142B36104}.MiniLogin Release|Win32.Build.0 = EQ2Login|Win32
- {BE2C1914-FCCC-4F65-A7DD-105142B36104}.Release|Win32.ActiveCfg = EQ2Login|Win32
- {BE2C1914-FCCC-4F65-A7DD-105142B36104}.Release|Win32.Build.0 = EQ2Login|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/source/LoginServer/EQ2 Login.suo b/source/LoginServer/EQ2 Login.suo
deleted file mode 100644
index d090a9e..0000000
Binary files a/source/LoginServer/EQ2 Login.suo and /dev/null differ
diff --git a/source/LoginServer/Login.dsp b/source/LoginServer/Login.dsp
deleted file mode 100644
index cf66e51..0000000
--- a/source/LoginServer/Login.dsp
+++ /dev/null
@@ -1,447 +0,0 @@
-# Microsoft Developer Studio Project File - Name="Login" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=Login - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "Login.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "Login.mak" CFG="Login - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "Login - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "Login - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "Login - Win32 MiniLogin" (based on "Win32 (x86) Console Application")
-!MESSAGE "Login - Win32 PublicLogin" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "Login - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "../Build"
-# PROP Intermediate_Dir "../Build/Login"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /w /W0 /GX /Zi /O2 /Ob2 /D "LOGINCRYPTO" /D "INVERSEXY" /D _WIN32_WINNT=0x0400 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo /o"../Build/Login/Login.bsc"
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib zlib.lib mysqlclient.lib /nologo /subsystem:console /map:"../Build/Login.map" /debug /machine:I386
-# SUBTRACT LINK32 /pdb:none
-
-!ELSEIF "$(CFG)" == "Login - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Login___Win32_Debug"
-# PROP BASE Intermediate_Dir "Login___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "../build/login/Debug"
-# PROP Intermediate_Dir "../build/login/debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /Gm /GX /ZI /Od /D "LOGINCRYPTO" /D "INVERSEXY" /D _WIN32_WINNT=0x0400 /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib zlib.lib mysqlclient.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"LIBCMT" /out:"../build/login/Debug/LoginDebug.exe" /pdbtype:sept
-# SUBTRACT LINK32 /pdb:none
-
-!ELSEIF "$(CFG)" == "Login - Win32 MiniLogin"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Login___Win32_MiniLogin"
-# PROP BASE Intermediate_Dir "Login___Win32_MiniLogin"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "../Build"
-# PROP Intermediate_Dir "../Build/MiniLogin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /w /W0 /GX /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "BUILD_FOR_WINDOWS" /FR /YX /FD /c
-# ADD CPP /nologo /MT /w /W0 /GX /O2 /Ob2 /D _WIN32_WINNT=0x0400 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "MINILOGIN" /FR /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo /o"../Build/Login/Login.bsc"
-# ADD BSC32 /nologo /o"../Build/MiniLogin/Login.bsc"
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib zlib.lib mysqlclient.lib /nologo /subsystem:console /machine:I386
-# SUBTRACT BASE LINK32 /pdb:none
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib zlib.lib mysqlclient.lib /nologo /subsystem:console /machine:I386 /out:"../Build/MiniLogin.exe"
-# SUBTRACT LINK32 /pdb:none
-
-!ELSEIF "$(CFG)" == "Login - Win32 PublicLogin"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Login___Win32_PublicLogin"
-# PROP BASE Intermediate_Dir "Login___Win32_PublicLogin"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "../Build"
-# PROP Intermediate_Dir "../Build/PublicLogin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /w /W0 /GX /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "BUILD_FOR_WINDOWS" /FR /YX /FD /c
-# ADD CPP /nologo /MT /w /W0 /GX /O2 /Ob2 /D _WIN32_WINNT=0x0400 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "PUBLICLOGIN" /FR /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo /o"../Build/Login/Login.bsc"
-# ADD BSC32 /nologo /o"../Build/Login/Login.bsc"
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib zlib.lib mysqlclient.lib /nologo /subsystem:console /machine:I386
-# SUBTRACT BASE LINK32 /pdb:none
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib zlib.lib mysqlclient.lib /nologo /subsystem:console /machine:I386 /out:"../Build/PublicLogin.exe"
-# SUBTRACT LINK32 /pdb:none
-
-!ENDIF
-
-# Begin Target
-
-# Name "Login - Win32 Release"
-# Name "Login - Win32 Debug"
-# Name "Login - Win32 MiniLogin"
-# Name "Login - Win32 PublicLogin"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\client.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\EQCrypto.cpp
-
-!IF "$(CFG)" == "Login - Win32 Release"
-
-!ELSEIF "$(CFG)" == "Login - Win32 Debug"
-
-!ELSEIF "$(CFG)" == "Login - Win32 MiniLogin"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF "$(CFG)" == "Login - Win32 PublicLogin"
-
-# PROP Exclude_From_Build 1
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=.\logindatabase.cpp
-
-!IF "$(CFG)" == "Login - Win32 Release"
-
-!ELSEIF "$(CFG)" == "Login - Win32 Debug"
-
-!ELSEIF "$(CFG)" == "Login - Win32 MiniLogin"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF "$(CFG)" == "Login - Win32 PublicLogin"
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=.\LWorld.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\net.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\client.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\EQCrypto.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\login_opcodes.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\login_structs.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\LWorld.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\net.h
-# End Source File
-# End Group
-# Begin Group "Common Source Files"
-
-# PROP Default_Filter ".cpp"
-# Begin Source File
-
-SOURCE=..\common\crc32.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\database.cpp
-
-!IF "$(CFG)" == "Login - Win32 Release"
-
-!ELSEIF "$(CFG)" == "Login - Win32 Debug"
-
-!ELSEIF "$(CFG)" == "Login - Win32 MiniLogin"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF "$(CFG)" == "Login - Win32 PublicLogin"
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\dbcore.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\DBMemLeak.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\debug.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\EQNetwork.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\md5.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\MiscFunctions.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\Mutex.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\packet_dump.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\packet_functions.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\TCPConnection.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\timer.cpp
-# End Source File
-# End Group
-# Begin Group "Common Header Files"
-
-# PROP Default_Filter ".h"
-# Begin Source File
-
-SOURCE=..\common\classes.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\crc32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\database.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\DBMemLeak.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\debug.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\deity.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\eq_opcodes.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\eq_packet_structs.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\EQCheckTable.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\EQFragment.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\EQNetwork.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\EQOpcodes.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\EQPacket.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\EQPacketManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\errmsg.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\Guilds.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\linked_list.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\md5.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\MiscFunctions.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\moremath.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\Mutex.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\packet_dump.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\packet_dump_file.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\packet_functions.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\queue.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\queues.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\races.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\Seperator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\servertalk.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\TCPConnection.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\timer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\common\version.h
-# End Source File
-# End Group
-# Begin Group "Text Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\Protocol.txt
-# End Source File
-# Begin Source File
-
-SOURCE=.\Tables.txt
-# End Source File
-# Begin Source File
-
-SOURCE=.\ThanksTo.txt
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/source/LoginServer/Login.dsw b/source/LoginServer/Login.dsw
deleted file mode 100644
index 4ed0adf..0000000
--- a/source/LoginServer/Login.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "Login"=.\Login.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/source/LoginServer/Login.vcproj b/source/LoginServer/Login.vcproj
deleted file mode 100644
index 7c1f7a6..0000000
--- a/source/LoginServer/Login.vcproj
+++ /dev/null
@@ -1,542 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/source/LoginServer/Login.vcxproj b/source/LoginServer/Login.vcxproj
deleted file mode 100644
index 5622e75..0000000
--- a/source/LoginServer/Login.vcxproj
+++ /dev/null
@@ -1,154 +0,0 @@
-
-
-
-
- EQ2Login
- x64
-
-
-
- EQ2Login
- {BE2C1914-FCCC-4F65-A7DD-105142B36104}
- EQ2 Login
- 10.0
-
-
-
- v142
-
-
-
-
-
-
- <_ProjectFileVersion>10.0.30319.1
-
-
- $(SolutionDir)..\source\depends\mariadb-10.1.19\include;$(SolutionDir)..\source\depends\zlib\include;$(SolutionDir)..\source\depends\recastnavigation\Detour\Include;$(SolutionDir)..\source\depends\boost_1_72_0\;$(SolutionDir)..\source\depends\glm\;$(VC_IncludePath);$(WindowsSDK_IncludePath);
- $(SolutionDir)..\source\depends\recastnavigation\RecastDemo\Build\vs2019\lib\Debug;$(SolutionDir)..\source\depends\mariadb-10.1.19\lib\64-debug;$(SolutionDir)..\source\depends\zlib\lib;$(SolutionDir)..\source\depends\boost_1_72_0\lib64-msvc-14.2;$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(NETFXKitsDir)Lib\um\x64
- false
- $(SolutionDir)loginserver\
- .\$(ProjectName)__Debug64\
- $(ProjectName)__Debug64
-
-
-
- Disabled
- AnySuitable
- _WIN32_WINNT=0x0400;WIN32;NDEBUG;_CONSOLE;LOGIN; EQ2; EQN_DEBUG;_CRT_SECURE_NO_DEPRECATE;_HAS_STD_BYTE=0
-;%(PreprocessorDefinitions)
- EnableFastChecks
- MultiThreadedDebug
- false
- false
-
-
- $(IntDir)
-
-
- 4996;%(DisableSpecificWarnings)
- stdcpp17
-
-
- odbc32.lib;odbccp32.lib;ws2_32.lib;zlib.lib;mysqlclient.lib;DebugUtils.lib;Detour.lib;DetourCrowd.lib;DetourTileCache.lib;Recast.lib;%(AdditionalDependencies)
- LIBCMT;LIBC;%(IgnoreSpecificDefaultLibraries)
- true
- $(IntDir)$(TargetName).pdb
- true
- true
- Default
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/source/LoginServer/Login.vcxproj.filters b/source/LoginServer/Login.vcxproj.filters
deleted file mode 100644
index fae3865..0000000
--- a/source/LoginServer/Login.vcxproj.filters
+++ /dev/null
@@ -1,277 +0,0 @@
-
-
-
-
- {bfe8d6b0-594f-4b55-9f95-101bbcf4069c}
- cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
-
-
- {d65b2760-468c-4206-a19a-48323a50ba5a}
- h;hpp;hxx;hm;inl
-
-
- {27b769a5-0972-4e9e-b78c-09ad3341579c}
- .cpp
-
-
- {11757e5a-691c-49c9-a627-df027ad58326}
- .h
-
-
- {99e7f9f9-abcd-4abf-8200-a4b5a467788c}
-
-
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
- Common Source Files
-
-
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- World Files
-
-
- World Files
-
-
- World Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
- Common Header Files
-
-
-
\ No newline at end of file
diff --git a/source/LoginServer/Login.vcxproj.user b/source/LoginServer/Login.vcxproj.user
deleted file mode 100644
index ace9a86..0000000
--- a/source/LoginServer/Login.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/source/LoginServer/Web/LoginWeb.o b/source/LoginServer/Web/LoginWeb.o
deleted file mode 100644
index 29c26ff..0000000
Binary files a/source/LoginServer/Web/LoginWeb.o and /dev/null differ
diff --git a/source/LoginServer/client.cpp b/source/LoginServer/client.cpp
index d41728f..be46b8d 100644
--- a/source/LoginServer/client.cpp
+++ b/source/LoginServer/client.cpp
@@ -41,9 +41,11 @@ extern mapEQOpcodeManager;
extern ConfigReader configReader;
using namespace std;
Client::Client(EQStream* ieqnc) {
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Entering Client::Client() constructor - client.cpp:43");
eqnc = ieqnc;
ip = eqnc->GetrIP();
port = ntohs(eqnc->GetrPort());
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Client created for IP: %s, Port: %d", inet_ntoa(*(struct in_addr*)&ip), port);
account_id = 0;
lsadmin = 0;
worldadmin = 0;
@@ -54,6 +56,7 @@ Client::Client(EQStream* ieqnc) {
memset(bannedreason, 0, sizeof(bannedreason));
//worldresponse_timer = new Timer(10000);
//worldresponse_timer->Disable();
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Initializing client crypto key buffer (10 bytes)");
memset(key,0,10);
LoginMode = None;
num_updates = 0;
@@ -163,24 +166,34 @@ bool Client::Process() {
while(app = eqnc->PopPacket())
{
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Processing packet with opcode: %d - Client::Process() -> client.cpp:166", app->GetOpcode());
switch(app->GetOpcode())
{
case OP_LoginRequestMsg:{
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Entering OP_LoginRequestMsg handler - Client::Process() -> client.cpp:168");
+ LogWrite(LOGIN__INFO, 0, "Login", "=== LOGIN PROTOCOL HANDSHAKE START ===");
+ LogWrite(LOGIN__INFO, 0, "Login", "Received OP_LoginRequestMsg from %s:%d", inet_ntoa(*(struct in_addr*)&ip), port);
DumpPacket(app);
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Getting packet struct 'LS_LoginRequest' version 1 - OP_LoginRequestMsg -> client.cpp:177");
PacketStruct* packet = configReader.getStruct("LS_LoginRequest", 1);
if(packet && packet->LoadPacketData(app->pBuffer,app->size)){
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Successfully loaded LS_LoginRequest packet data, size: %d bytes", app->size);
version = packet->getType_int16_ByName("version");
LogWrite(LOGIN__DEBUG, 0, "Login", "Classic Client Version Provided: %i", version);
if (version == 0 || EQOpcodeManager.count(GetOpcodeVersion(version)) == 0)
{
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Version %d not found, trying LS_LoginRequest version 1208", version);
safe_delete(packet);
packet = configReader.getStruct("LS_LoginRequest", 1208);
if (packet && packet->LoadPacketData(app->pBuffer, app->size)) {
version = packet->getType_int16_ByName("version");
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Successfully loaded LS_LoginRequest v1208 packet data");
}
- else
+ else {
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Failed to load LS_LoginRequest v1208 packet data, breaking");
break;
+ }
}
//[7:19 PM] Kirmmin: Well, I very quickly learned that unknown3 in LS_LoginRequest packet is the same value as cl_eqversion in the eq2_defaults.ini file.
@@ -193,9 +206,15 @@ bool Client::Process() {
}
if(EQOpcodeManager.count(GetOpcodeVersion(version)) > 0 && getConnection()){
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Setting client version %d on EQStream connection", GetVersion());
getConnection()->SetClientVersion(GetVersion());
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Extracting username from packet field 'username'");
EQ2_16BitString username = packet->getType_EQ2_16BitString_ByName("username");
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Extracting password from packet field 'password'");
EQ2_16BitString password = packet->getType_EQ2_16BitString_ByName("password");
+ LogWrite(LOGIN__INFO, 0, "Login", "Login attempt for username: %s", username.data.c_str());
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Password hash length: %d", (int)password.data.length());
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Calling database.LoadAccount() - OP_LoginRequestMsg -> client.cpp:203");
LoginAccount* acct = database.LoadAccount(username.data.c_str(),password.data.c_str(), net.IsAllowingAccountCreation());
if(acct){
Client* otherclient = client_list.FindByLSID(acct->getLoginAccountID());
@@ -216,11 +235,14 @@ bool Client::Process() {
LogWrite(LOGIN__ERROR, 0, "Login", "[UNKNOWN USER] login failed!");
}
- if(!acct)
+ if(!acct) {
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Calling SendLoginDenied() - OP_LoginRequestMsg -> client.cpp:224");
SendLoginDenied();
+ }
else{
needs_world_list = true;
- SetLoginAccount(acct);
+ SetLoginAccount(acct);
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Calling SendLoginAccepted() - OP_LoginRequestMsg -> client.cpp:228");
SendLoginAccepted();
}
}
@@ -241,7 +263,10 @@ bool Client::Process() {
//dunno what this is for
break;
}
- case OP_AllWSDescRequestMsg:{
+ case OP_AllWSDescRequestMsg:{
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Entering OP_AllWSDescRequestMsg handler - Client::Process() -> client.cpp:248");
+ LogWrite(LOGIN__INFO, 0, "Login", "Received OP_AllWSDescRequestMsg - sending world list and character list");
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Calling SendWorldList() - OP_AllWSDescRequestMsg -> client.cpp:250");
SendWorldList();
needs_world_list = false;
if(!sent_character_list) {
@@ -272,9 +297,11 @@ bool Client::Process() {
break;
}
case OP_AllCharactersDescRequestMsg:{
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Entering OP_AllCharactersDescRequestMsg handler - Client::Process() -> client.cpp:290");
break;
}
case OP_CreateCharacterRequestMsg:{
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Entering OP_CreateCharacterRequestMsg handler - Client::Process() -> client.cpp:294");
PacketStruct* packet = configReader.getStruct("CreateCharacter", GetVersion());
DumpPacket(app);
@@ -323,17 +350,25 @@ bool Client::Process() {
break;
}
case OP_PlayCharacterRequestMsg:{
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Entering OP_PlayCharacterRequestMsg handler - Client::Process() -> client.cpp:343");
int32 char_id = 0;
int32 server_id = 0;
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Getting packet struct 'LS_PlayRequest' for version %d", GetVersion());
PacketStruct* request = configReader.getStruct("LS_PlayRequest",GetVersion());
if(request && request->LoadPacketData(app->pBuffer,app->size)){
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Successfully loaded LS_PlayRequest packet data, size: %d bytes", app->size);
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Extracting char_id from packet field 'char_id'");
char_id = request->getType_int32_ByName("char_id");
- if (GetVersion() <= 283) {
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Character ID: %d", char_id);
+ if (GetVersion() <= 283) {
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Version <= 283, getting server from database");
server_id = database.GetServer(GetAccountID(), char_id, request->getType_EQ2_16BitString_ByName("name").data);
}
- else {
+ else {
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Version > 283, extracting server_id from packet field 'server_id'");
server_id = request->getType_int32_ByName("server_id");
}
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Server ID: %d", server_id);
LWorld* world = world_list.FindByID(server_id);
string name = database.GetCharacterName(char_id,server_id,GetAccountID());
if(world && name.length() > 0){
@@ -544,6 +579,7 @@ void Client::CharacterRejected(int8 reason_number)
}
void Client::SendCharList(){
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Entering Client::SendCharList() method - client.cpp:551");
/*PacketStruct* packet = configReader.getStruct("LS_CreateCharacterReply");
packet->setDataByName("account_id", GetAccountID());
packet->setDataByName("response", reason_number);
@@ -552,14 +588,20 @@ void Client::SendCharList(){
QueuePacket(outapp);
safe_delete(packet);*/
LogWrite(LOGIN__INFO, 0, "Login", "[%s] sending character list.", GetAccountName());
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Creating LS_CharSelectList for account ID: %d", GetAccountID());
LS_CharSelectList list;
- list.loadData(GetAccountID(), GetLoginAccount()->charlist, GetVersion());
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Loading character data for version: %d", GetVersion());
+ list.loadData(GetAccountID(), GetLoginAccount()->charlist, GetVersion());
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Serializing character list packet");
EQ2Packet* outapp = list.serialize(GetVersion());
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Character list packet serialized, size: %d bytes", outapp->size);
DumpPacket(outapp->pBuffer, outapp->size);
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Queueing character list packet");
QueuePacket(outapp);
}
void Client::SendLoginDeniedBadVersion(){
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Entering Client::SendLoginDeniedBadVersion() method - client.cpp:582");
EQ2Packet* app = new EQ2Packet(OP_LoginReplyMsg, 0, sizeof(LS_LoginResponse));
LS_LoginResponse* ls_response = (LS_LoginResponse*)app->pBuffer;
ls_response->reply_code = 6;
@@ -569,6 +611,7 @@ void Client::SendLoginDeniedBadVersion(){
StartDisconnectTimer();
}
void Client::SendLoginDenied(){
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Entering Client::SendLoginDenied() method - client.cpp:592");
EQ2Packet* app = new EQ2Packet(OP_LoginReplyMsg, 0, sizeof(LS_LoginResponse));
LS_LoginResponse* ls_response = (LS_LoginResponse*)app->pBuffer;
ls_response->reply_code = 1;
@@ -591,24 +634,36 @@ void Client::SendLoginDenied(){
}
void Client::SendLoginAccepted(int32 account_id, int8 login_response) {
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Entering Client::SendLoginAccepted() method - client.cpp:615");
+ LogWrite(LOGIN__INFO, 0, "Login", "=== SENDING LOGIN ACCEPTED RESPONSE ===");
+ LogWrite(LOGIN__INFO, 0, "Login", "Account ID: %d, Login Response: %d", account_id, login_response);
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Getting packet struct 'LS_LoginReplyMsg' for version %d", GetVersion());
PacketStruct* packet = configReader.getStruct("LS_LoginReplyMsg", GetVersion());
int i = 0;
if (packet)
{
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Setting packet field 'account_id' = %d", account_id);
packet->setDataByName("account_id", account_id);
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Setting packet field 'login_response' = %d", login_response);
packet->setDataByName("login_response", login_response);
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Setting packet field 'do_not_force_soga' = 1");
packet->setDataByName("do_not_force_soga", 1);
// sub_level 0xFFFFFFFF = blacks out all portraits for class alignments, considered non membership
// sub_level > 0 = class alignments still required, but portraits are viewable and race selectable
// sub_level = 2 membership, you can 'create characters on time locked servers' vs standard
// sub_level = 0 forces popup on close to web browser
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Setting packet field 'sub_level' = %u", net.GetDefaultSubscriptionLevel());
packet->setDataByName("sub_level", net.GetDefaultSubscriptionLevel());
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Setting packet field 'race_flag' = 0x1FFFFF");
packet->setDataByName("race_flag", 0x1FFFFF);
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Setting packet field 'class_flag' = 0x7FFFFFE");
packet->setDataByName("class_flag", 0x7FFFFFE);
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Setting packet field 'username' = '%s'", GetAccountName());
packet->setMediumStringByName("username", GetAccountName());
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Setting packet field 'password' = '%s'", GetAccountName());
packet->setMediumStringByName("password", GetAccountName());
// unknown5
@@ -640,16 +695,25 @@ void Client::SendLoginAccepted(int32 account_id, int8 login_response) {
128 = outpost overlord
*/
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Serializing LS_LoginReplyMsg packet");
EQ2Packet* outapp = packet->serialize();
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] LoginAccepted packet serialized, size: %d bytes", outapp->size);
+ DumpPacket(outapp->pBuffer, outapp->size);
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Queueing LoginAccepted packet for transmission");
QueuePacket(outapp);
safe_delete(packet);
}
}
void Client::SendWorldList(){
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Entering Client::SendWorldList() method - client.cpp:673");
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Calling world_list.MakeServerListPacket() - Client::SendWorldList() -> client.cpp:674");
EQ2Packet* pack = world_list.MakeServerListPacket(lsadmin, version);
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Created server list packet, size: %d bytes", pack->size);
EQ2Packet* dupe = pack->Copy();
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Copied server list packet for transmission");
DumpPacket(dupe->pBuffer,dupe->size);
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Queueing server list packet");
QueuePacket(dupe);
SendLoginAccepted(0, 10); // triggers a different code path in the client to set certain flags
@@ -657,6 +721,7 @@ void Client::SendWorldList(){
}
void Client::QueuePacket(EQ2Packet* app){
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Client::QueuePacket() - Sending %d byte packet to EQStream (opcode: %d)", app->size, app->GetRawOpcode());
eqnc->EQ2QueuePacket(app);
}
diff --git a/source/LoginServer/makefile b/source/LoginServer/makefile
index 5071072..6af1ca9 100644
--- a/source/LoginServer/makefile
+++ b/source/LoginServer/makefile
@@ -14,7 +14,7 @@ CC=g++
LINKER=gcc
DFLAGS=-DEQ2 -DLOGIN
WFLAGS=-Wall -Wuninitialized -Wwrite-strings -Wcast-qual -Wcomment -Wcast-align -Wno-deprecated
-COPTS=$(WFLAGS) -ggdb -march=native -pthread -pipe -DFX -D_GNU_SOURCE -DINVERSEXY $(DFLAGS) -I/usr/include/mariadb -I/usr/local/include/boost -I/usr/include/lua5.4 -std=c++17
+COPTS=$(WFLAGS) -ggdb -march=native -pthread -pipe -DFX -D_GNU_SOURCE -DINVERSEXY $(DFLAGS) -I/usr/include/mysql -I/usr/local/include/boost -I/usr/include/lua5.4 -std=c++17
LINKOPTS=-rdynamic -L. -lstdc++ -lm -lz -L/usr/lib/x86_64-linux-gnu -lmariadb -lboost_system -lboost_thread -lboost_filesystem -lssl -lcrypto -lpthread -ldl
all: $(APP)
diff --git a/source/LoginServer/net.cpp b/source/LoginServer/net.cpp
index fe6b8cd..e2f4840 100644
--- a/source/LoginServer/net.cpp
+++ b/source/LoginServer/net.cpp
@@ -73,6 +73,8 @@ int main(int argc, char** argv){
#ifdef _DEBUG
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
#endif
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Entering main() method - net.cpp:72");
+
if (signal(SIGINT, CatchSignal) == SIG_ERR) {
cerr << "Could not set signal handler" << endl;
}
@@ -84,6 +86,7 @@ int main(int argc, char** argv){
srand(time(NULL));
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Calling ReadLoginConfig() - net.cpp:87");
if(!net.ReadLoginConfig())
return 1;
@@ -134,6 +137,7 @@ int main(int argc, char** argv){
in.s_addr = eqs->GetRemoteIP();
LogWrite(LOGIN__INFO, 0, "Login", "New client from IP: %s on port %i", inet_ntoa(in), ntohs(eqs->GetRemotePort()));
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Creating new Client() - main() -> net.cpp:137");
Client* client = new Client(eqs);
eqs->SetClientVersion(0);
client_list.Add(client);
@@ -207,6 +211,7 @@ void CatchSignal(int sig_num) {
}
bool NetConnection::ReadLoginConfig() {
+ LogWrite(LOGIN__DEBUG, 0, "Login", "[DEBUG] Entering NetConnection::ReadLoginConfig() method - net.cpp:209");
JsonParser parser(MAIN_CONFIG_FILE);
if(!parser.IsLoaded()) {
LogWrite(INIT__ERROR, 0, "Init", "Failed to find %s in server directory..", MAIN_CONFIG_FILE);
diff --git a/source/WorldServer/Appearances.h b/source/WorldServer/Appearances.h
index 11f1de6..a1eb061 100644
--- a/source/WorldServer/Appearances.h
+++ b/source/WorldServer/Appearances.h
@@ -1,22 +1,5 @@
-/*
- EQ2Emulator: Everquest II Server Emulator
- Copyright (C) 2007 EQ2EMulator Development Team (http://www.eq2emulator.net)
-
- This file is part of EQ2Emulator.
-
- EQ2Emulator 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 3 of the License, or
- (at your option) any later version.
-
- EQ2Emulator 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 EQ2Emulator. If not, see .
-*/
+// Copyright (C) 2007-2025 EQ2EMulator
+// Licensed under GPL v3
#include