From 8b93abe86eeb0667fb3e382aa6f4e700852d5fb1 Mon Sep 17 00:00:00 2001 From: Tahir Akhlaq Date: Wed, 8 Jun 2016 22:29:04 +0100 Subject: [PATCH] servers now log (almost) everything to file - regex'd in mysqlexception logging - servers can now specify server_port, log_path, log_file - added scripts to import/export all tables (exporting will export a handful of garbage table names, open and check for structure before deleting) - fixed packet logging (thanks deviltti) --- FFXIVClassic Lobby Server/ClientConnection.cs | 6 -- FFXIVClassic Lobby Server/ConfigConstants.cs | 27 +++--- FFXIVClassic Lobby Server/Database.cs | 42 +++++++-- .../FFXIVClassic Lobby Server.csproj | 29 +++++- FFXIVClassic Lobby Server/PacketProcessor.cs | 5 - FFXIVClassic Lobby Server/Program.cs | 38 ++++---- .../Properties/AssemblyInfo.cs | 1 - FFXIVClassic Lobby Server/Server.cs | 12 +-- FFXIVClassic Lobby Server/common/Bitfield.cs | 4 - FFXIVClassic Lobby Server/common/Blowfish.cs | 4 - FFXIVClassic Lobby Server/common/Log.cs | 71 +++++++++------ FFXIVClassic Lobby Server/common/Utils.cs | 81 ++++++++++++----- .../dataobjects/Account.cs | 4 - .../dataobjects/Appearance.cs | 8 +- .../dataobjects/CharaInfo.cs | 6 +- .../dataobjects/Character.cs | 10 +- .../dataobjects/Retainer.cs | 9 +- .../dataobjects/World.cs | 8 +- .../packets/BasePacket.cs | 7 +- .../packets/HardCoded_Packets.cs | 8 +- .../packets/SubPacket.cs | 15 +-- .../packets/receive/CharacterModifyPacket.cs | 3 - .../receive/SecurityHandshakePacket.cs | 3 - .../packets/receive/SelectCharacterPacket.cs | 4 - .../packets/receive/SessionPacket.cs | 3 - .../packets/send/AccountListPacket.cs | 2 - .../packets/send/CharaCreatorPacket.cs | 3 - .../packets/send/CharacterListPacket.cs | 3 - .../packets/send/ErrorPacket.cs | 3 - .../packets/send/ImportListPacket.cs | 5 +- .../packets/send/RetainerListPacket.cs | 5 +- .../send/SelectCharacterConfirmPacket.cs | 2 - .../packets/send/WorldListPacket.cs | 2 - .../utils/CharacterCreatorUtils.cs | 6 +- FFXIVClassic Map Server/ClientConnection.cs | 13 +-- FFXIVClassic Map Server/CommandProcessor.cs | 15 +-- FFXIVClassic Map Server/ConfigConstants.cs | 25 ++--- FFXIVClassic Map Server/Database.cs | 91 +++++++++++++------ .../FFXIVClassic Map Server.csproj | 3 +- FFXIVClassic Map Server/PacketProcessor.cs | 21 +---- FFXIVClassic Map Server/Program.cs | 46 ++++------ .../Properties/AssemblyInfo.cs | 1 - FFXIVClassic Map Server/Server.cs | 20 +--- FFXIVClassic Map Server/WorldManager.cs | 31 ++++--- FFXIVClassic Map Server/actors/Actor.cs | 11 +-- FFXIVClassic Map Server/actors/EventList.cs | 6 +- .../actors/StaticActors.cs | 4 +- FFXIVClassic Map Server/actors/area/Area.cs | 8 +- .../actors/area/PrivateArea.cs | 6 +- FFXIVClassic Map Server/actors/area/Zone.cs | 6 +- .../actors/chara/AetheryteWork.cs | 8 +- .../actors/chara/BattleSave.cs | 8 +- .../actors/chara/BattleTemp.cs | 8 +- .../actors/chara/CharaWork.cs | 8 +- .../actors/chara/Character.cs | 7 +- .../actors/chara/EventSave.cs | 8 +- .../actors/chara/EventTemp.cs | 8 +- .../actors/chara/ParameterSave.cs | 8 +- .../actors/chara/ParameterTemp.cs | 8 +- FFXIVClassic Map Server/actors/chara/Work.cs | 8 +- .../actors/chara/npc/Npc.cs | 13 +-- .../actors/chara/npc/NpcWork.cs | 8 +- .../actors/chara/player/Equipment.cs | 7 +- .../actors/chara/player/Inventory.cs | 5 +- .../actors/chara/player/Player.cs | 12 +-- .../actors/chara/player/PlayerWork.cs | 8 +- .../actors/command/Command.cs | 8 +- FFXIVClassic Map Server/actors/debug/Debug.cs | 7 +- .../actors/director/Director.cs | 6 +- .../actors/director/OpeningDirector.cs | 5 +- .../actors/director/WeatherDirector.cs | 6 +- .../director/quest/QuestDirectorMan0g001.cs | 6 +- .../director/quest/QuestDirectorMan0l001.cs | 6 +- .../director/quest/QuestDirectorMan0u001.cs | 6 +- FFXIVClassic Map Server/actors/judge/Judge.cs | 9 +- FFXIVClassic Map Server/actors/quest/Quest.cs | 3 +- .../actors/world/WorldMaster.cs | 7 +- FFXIVClassic Map Server/common/Bitfield.cs | 6 +- FFXIVClassic Map Server/common/Blowfish.cs | 6 +- .../common/EfficientHashTables.cs | 4 - FFXIVClassic Map Server/common/Log.cs | 77 +++++++++------- FFXIVClassic Map Server/common/Utils.cs | 85 ++++++++++++----- .../dataobjects/ConnectedPlayer.cs | 9 +- .../dataobjects/DBWorld.cs | 8 +- .../dataobjects/InventoryItem.cs | 7 +- FFXIVClassic Map Server/dataobjects/Item.cs | 4 - .../dataobjects/RecruitmentDetails.cs | 8 +- .../dataobjects/SearchEntry.cs | 3 - FFXIVClassic Map Server/lua/LuaEngine.cs | 8 +- FFXIVClassic Map Server/lua/LuaEvent.cs | 8 +- FFXIVClassic Map Server/lua/LuaNpc.cs | 8 -- FFXIVClassic Map Server/lua/LuaParam.cs | 4 - FFXIVClassic Map Server/lua/LuaPlayer.cs | 6 -- FFXIVClassic Map Server/lua/LuaUtils.cs | 5 +- FFXIVClassic Map Server/packets/BasePacket.cs | 15 ++- FFXIVClassic Map Server/packets/SubPacket.cs | 19 ++-- .../packets/receive/ChatMessagePacket.cs | 3 - .../packets/receive/HandshakePacket.cs | 3 - .../packets/receive/LangaugeCodePacket.cs | 4 - .../packets/receive/LockTargetPacket.cs | 7 +- .../receive/ParameterDataRequestPacket.cs | 2 - .../packets/receive/PingPacket.cs | 7 +- .../packets/receive/SetTargetPacket.cs | 7 +- .../receive/UpdatePlayerPositionPacket.cs | 7 +- .../packets/receive/_0x02ReceivePacket.cs | 4 - .../packets/receive/_0x07Packet.cs | 4 - .../receive/events/EventStartPacket.cs | 5 +- .../receive/events/EventUpdatePacket.cs | 3 - .../RecruitmentDetailsRequestPacket.cs | 4 - .../RecruitmentSearchRequestPacket.cs | 3 - .../StartRecruitingRequestPacket.cs | 3 - .../receive/social/AddRemoveSocialPacket.cs | 3 - .../receive/social/FriendlistRequestPacket.cs | 4 - .../supportdesk/FaqBodyRequestPacket.cs | 4 - .../supportdesk/FaqListRequestPacket.cs | 4 - .../supportdesk/GMSupportTicketPacket.cs | 3 - .../GMTicketIssuesRequestPacket.cs | 4 - .../packets/send/Actor/ActorDoEmotePacket.cs | 7 +- .../send/Actor/ActorInstantiatePacket.cs | 5 +- .../send/Actor/ActorSpecialGraphicPacket.cs | 7 +- .../packets/send/Actor/AddActorPacket.cs | 9 +- .../packets/send/Actor/BattleAction1Packet.cs | 8 +- .../send/Actor/DeleteAllActorsPacket.cs | 9 +- .../send/Actor/MoveActorToPositionPacket.cs | 7 +- .../packets/send/Actor/RemoveActorPacket.cs | 7 +- .../send/Actor/SetActorAppearancePacket.cs | 8 +- .../packets/send/Actor/SetActorIconPacket.cs | 7 +- .../send/Actor/SetActorIdleAnimationPacket.cs | 7 +- .../send/Actor/SetActorIsZoningPacket.cs | 9 +- .../packets/send/Actor/SetActorNamePacket.cs | 6 +- .../send/Actor/SetActorPositionPacket.cs | 7 +- .../send/Actor/SetActorPropetyPacket.cs | 5 +- .../packets/send/Actor/SetActorSpeedPacket.cs | 7 +- .../packets/send/Actor/SetActorStatePacket.cs | 7 +- .../send/Actor/SetActorStatusAllPacket.cs | 7 +- .../send/Actor/SetActorStatusPacket.cs | 7 +- .../Actor/SetActorTargetAnimatedPacket.cs | 7 +- .../send/Actor/SetActorTargetPacket.cs | 7 +- .../packets/send/Actor/_0x132Packet.cs | 6 +- .../packets/send/Actor/_0xFPacket.cs | 8 +- .../packets/send/Actor/battle/BattleAction.cs | 8 +- .../Actor/battle/BattleActionX00Packet.cs | 7 +- .../Actor/battle/BattleActionX01Packet.cs | 7 +- .../Actor/battle/BattleActionX10Packet.cs | 8 +- .../Actor/battle/BattleActionX18Packet.cs | 8 +- .../Actor/events/SetEmoteEventCondition.cs | 6 +- .../send/Actor/events/SetEventStatus.cs | 6 +- .../Actor/events/SetNoticeEventCondition.cs | 6 +- .../events/SetPushEventConditionWithCircle.cs | 6 +- .../events/SetPushEventConditionWithFan.cs | 6 +- .../SetPushEventConditionWithTriggerBox.cs | 6 +- .../Actor/events/SetTalkEventCondition.cs | 6 +- .../Actor/inventory/EquipmentListX01Packet.cs | 7 +- .../Actor/inventory/EquipmentListX08Packet.cs | 6 +- .../Actor/inventory/EquipmentListX16Packet.cs | 6 +- .../Actor/inventory/EquipmentListX32Packet.cs | 6 +- .../Actor/inventory/EquipmentListX64Packet.cs | 6 +- .../inventory/InventoryBeginChangePacket.cs | 9 +- .../inventory/InventoryEndChangePacket.cs | 9 +- .../Actor/inventory/InventoryItemEndPacket.cs | 7 +- .../Actor/inventory/InventoryItemPacket.cs | 7 +- .../Actor/inventory/InventoryListX01Packet.cs | 8 +- .../Actor/inventory/InventoryListX08Packet.cs | 6 +- .../Actor/inventory/InventoryListX16Packet.cs | 7 +- .../Actor/inventory/InventoryListX32Packet.cs | 7 +- .../Actor/inventory/InventoryListX64Packet.cs | 7 +- .../inventory/InventoryRemoveX01Packet.cs | 7 +- .../inventory/InventoryRemoveX08Packet.cs | 6 +- .../inventory/InventoryRemoveX16Packet.cs | 6 +- .../inventory/InventoryRemoveX32Packet.cs | 6 +- .../inventory/InventoryRemoveX64Packet.cs | 6 +- .../inventory/InventorySetBeginPacket.cs | 7 +- .../Actor/inventory/InventorySetEndPacket.cs | 9 +- .../packets/send/GameMessagePacket.cs | 5 +- .../packets/send/LogoutPacket.cs | 9 +- .../packets/send/PongPacket.cs | 8 +- .../packets/send/QuitPacket.cs | 9 +- .../packets/send/SendMessagePacket.cs | 6 +- .../packets/send/SetMapPacket.cs | 8 +- .../packets/send/SetMusicPacket.cs | 7 +- .../packets/send/SetWeatherPacket.cs | 7 +- .../packets/send/_0x02Packet.cs | 7 +- .../packets/send/_0x10Packet.cs | 7 +- .../packets/send/_0xE2Packet.cs | 7 +- .../packets/send/events/EndEventPacket.cs | 6 +- .../packets/send/events/KickEventPacket.cs | 5 +- .../send/events/RunEventFunctionPacket.cs | 6 +- .../packets/send/list/ListBeginPacket.cs | 7 +- .../packets/send/list/ListEndPacket.cs | 7 +- .../packets/send/list/ListEntriesEndPacket.cs | 5 +- .../packets/send/list/ListEntry.cs | 8 +- .../packets/send/list/ListStartPacket.cs | 6 +- .../packets/send/list/ListUtils.cs | 7 +- .../send/list/SetListPropertyPacket.cs | 5 +- .../packets/send/login/0x2Packet.cs | 8 +- .../packets/send/login/0x7ResponsePacket.cs | 7 +- .../send/player/AchievementEarnedPacket.cs | 7 +- .../send/player/InfoRequestResponsePacket.cs | 8 +- .../send/player/SendAchievementRatePacket.cs | 7 +- .../send/player/SetAchievementPointsPacket.cs | 8 +- .../send/player/SetChocoboNamePacket.cs | 7 +- .../player/SetCompletedAchievementsPacket.cs | 8 +- .../send/player/SetCurrentJobPacket.cs | 7 +- .../player/SetCurrentMountChocoboPacket.cs | 9 +- .../player/SetCurrentMountGoobbuePacket.cs | 9 +- .../send/player/SetCutsceneBookPacket.cs | 6 +- .../send/player/SetGrandCompanyPacket.cs | 7 +- .../send/player/SetHasChocoboPacket.cs | 9 +- .../send/player/SetHasGoobbuePacket.cs | 9 +- .../player/SetLatestAchievementsPacket.cs | 7 +- .../send/player/SetPlayerDreamPacket.cs | 7 +- .../send/player/SetPlayerTitlePacket.cs | 7 +- .../packets/send/player/_0x196Packet.cs | 7 +- .../CurrentRecruitmentDetailsPacket.cs | 6 +- .../send/recruitment/EndRecruitmentPacket.cs | 9 +- .../send/recruitment/RecruiterStatePacket.cs | 7 +- .../recruitment/StartRecruitingResponse.cs | 9 +- .../send/social/BlacklistAddedPacket.cs | 7 +- .../send/social/BlacklistRemovedPacket.cs | 7 +- .../packets/send/social/FriendStatusPacket.cs | 7 +- .../send/social/FriendlistAddedPacket.cs | 6 +- .../send/social/FriendlistRemovedPacket.cs | 7 +- .../send/social/SendBlacklistPacket.cs | 6 +- .../send/social/SendFriendlistPacket.cs | 6 +- .../send/supportdesk/EndGMTicketPacket.cs | 9 +- .../send/supportdesk/FaqBodyResponsePacket.cs | 7 +- .../send/supportdesk/FaqListResponsePacket.cs | 7 +- .../send/supportdesk/GMTicketPacket.cs | 7 +- .../supportdesk/GMTicketSentResponsePacket.cs | 9 +- .../supportdesk/IssueListResponsePacket.cs | 7 +- .../send/supportdesk/StartGMTicketPacket.cs | 9 +- .../utils/ActorPropertyPacketUtil.cs | 7 +- .../utils/CharacterUtils.cs | 6 +- .../utils/SQLGeneration.cs | 31 ++++--- data/{config.ini => lobby_config.ini} | 2 +- data/map_config.ini | 11 +++ sql/export.sh | 10 ++ sql/import.sh | 17 ++++ 238 files changed, 684 insertions(+), 1532 deletions(-) rename data/{config.ini => lobby_config.ini} (91%) create mode 100644 data/map_config.ini create mode 100644 sql/export.sh create mode 100644 sql/import.sh diff --git a/FFXIVClassic Lobby Server/ClientConnection.cs b/FFXIVClassic Lobby Server/ClientConnection.cs index 76e77fd9..fb103a5b 100644 --- a/FFXIVClassic Lobby Server/ClientConnection.cs +++ b/FFXIVClassic Lobby Server/ClientConnection.cs @@ -1,14 +1,8 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Net.Sockets; using FFXIVClassic_Lobby_Server.packets; -using System.Diagnostics; using FFXIVClassic_Lobby_Server.common; using System.Collections.Concurrent; -using System.IO; using Cyotek.Collections.Generic; using System.Net; diff --git a/FFXIVClassic Lobby Server/ConfigConstants.cs b/FFXIVClassic Lobby Server/ConfigConstants.cs index 7968aa5e..75d96000 100644 --- a/FFXIVClassic Lobby Server/ConfigConstants.cs +++ b/FFXIVClassic Lobby Server/ConfigConstants.cs @@ -1,18 +1,16 @@ -using FFXIVClassic_Lobby_Server.common; -using STA.Settings; +using STA.Settings; using System; -using System.Collections.Generic; using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace FFXIVClassic_Lobby_Server { class ConfigConstants { public static String OPTIONS_BINDIP; - public static bool OPTIONS_TIMESTAMP = false; + public static String OPTIONS_PORT; + public static bool OPTIONS_TIMESTAMP = false; + public static String OPTIONS_LOGPATH; + public static String OPTIONS_LOGFILE; public static String DATABASE_HOST; public static String DATABASE_PORT; @@ -22,20 +20,23 @@ namespace FFXIVClassic_Lobby_Server public static bool load() { - Console.Write("Loading config.ini file... "); + Console.Write("Loading lobby_config.ini file... "); - if (!File.Exists("./config.ini")) + if (!File.Exists("./lobby_config.ini")) { Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine("[FILE NOT FOUND]"); + Console.WriteLine(String.Format("[FILE NOT FOUND]")); Console.ForegroundColor = ConsoleColor.Gray; return false; } - INIFile configIni = new INIFile("./config.ini"); + INIFile configIni = new INIFile("./lobby_config.ini"); ConfigConstants.OPTIONS_BINDIP = configIni.GetValue("General", "server_ip", "127.0.0.1"); - ConfigConstants.OPTIONS_TIMESTAMP = configIni.GetValue("General", "showtimestamp", "true").ToLower().Equals("true"); + ConfigConstants.OPTIONS_PORT = configIni.GetValue("General", "server_port", "54994"); + ConfigConstants.OPTIONS_TIMESTAMP = configIni.GetValue("General", "showtimestamp", "true").ToLower().Equals("true"); + ConfigConstants.OPTIONS_LOGPATH = configIni.GetValue("General", "log_path", "./logs/"); + ConfigConstants.OPTIONS_LOGFILE = configIni.GetValue("General", "log_file_name", String.Format("lobby_{0}_{1}.log", OPTIONS_BINDIP, OPTIONS_PORT)); ConfigConstants.DATABASE_HOST = configIni.GetValue("Database", "host", ""); ConfigConstants.DATABASE_PORT = configIni.GetValue("Database", "port", ""); @@ -44,7 +45,7 @@ namespace FFXIVClassic_Lobby_Server ConfigConstants.DATABASE_PASSWORD = configIni.GetValue("Database", "password", ""); Console.ForegroundColor = ConsoleColor.Green; - Console.WriteLine("[OK]"); + Console.WriteLine(String.Format("[OK]")); Console.ForegroundColor = ConsoleColor.Gray; return true; diff --git a/FFXIVClassic Lobby Server/Database.cs b/FFXIVClassic Lobby Server/Database.cs index 1f7ec710..fcf706d9 100644 --- a/FFXIVClassic Lobby Server/Database.cs +++ b/FFXIVClassic Lobby Server/Database.cs @@ -1,14 +1,11 @@ using FFXIVClassic_Lobby_Server.dataobjects; using MySql.Data.MySqlClient; using Dapper; -using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using FFXIVClassic_Lobby_Server.common; using FFXIVClassic_Lobby_Server.utils; +using FFXIVClassic_Lobby_Server.common; namespace FFXIVClassic_Lobby_Server { @@ -35,7 +32,10 @@ namespace FFXIVClassic_Lobby_Server } } catch (MySqlException e) - { Console.WriteLine(e); } + { + Log.error(e.ToString()); + + } finally { conn.Dispose(); @@ -88,6 +88,10 @@ namespace FFXIVClassic_Lobby_Server } catch (MySqlException e) { + Log.error(e.ToString()); + + Log.error(e.ToString()); + pid = 0; cid = 0; } @@ -179,6 +183,8 @@ namespace FFXIVClassic_Lobby_Server } catch (MySqlException e) { + Log.error(e.ToString()); + conn.Dispose(); return; } @@ -202,6 +208,8 @@ namespace FFXIVClassic_Lobby_Server } catch (MySqlException e) { + Log.error(e.ToString()); + conn.Dispose(); return; } @@ -222,6 +230,8 @@ namespace FFXIVClassic_Lobby_Server } catch (MySqlException e) { + Log.error(e.ToString()); + } finally @@ -267,6 +277,8 @@ namespace FFXIVClassic_Lobby_Server } catch (MySqlException e) { + Log.error(e.ToString()); + } finally @@ -298,6 +310,8 @@ namespace FFXIVClassic_Lobby_Server } catch (MySqlException e) { + Log.error(e.ToString()); + } finally @@ -320,7 +334,9 @@ namespace FFXIVClassic_Lobby_Server worldList = conn.Query("SELECT * FROM servers WHERE isActive=true").ToList(); } catch (MySqlException e) - { worldList = new List(); } + { + Log.error(e.ToString()); + worldList = new List(); } finally { conn.Dispose(); @@ -340,7 +356,9 @@ namespace FFXIVClassic_Lobby_Server world = conn.Query("SELECT * FROM servers WHERE id=@ServerId", new {ServerId = serverId}).SingleOrDefault(); } catch (MySqlException e) - { + { + Log.error(e.ToString()); + } finally { @@ -476,6 +494,8 @@ namespace FFXIVClassic_Lobby_Server } catch (MySqlException e) { + Log.error(e.ToString()); + } finally { @@ -497,7 +517,9 @@ namespace FFXIVClassic_Lobby_Server nameList = conn.Query("SELECT name FROM reserved_names WHERE userId=@UserId", new { UserId = userId }).ToList(); } catch (MySqlException e) - { nameList = new List(); } + { + Log.error(e.ToString()); + nameList = new List(); } finally { conn.Dispose(); @@ -517,7 +539,9 @@ namespace FFXIVClassic_Lobby_Server retainerList = conn.Query("SELECT * FROM retainers WHERE id=@UserId ORDER BY characterId, slot", new { UserId = userId }).ToList(); } catch (MySqlException e) - { retainerList = new List(); } + { + Log.error(e.ToString()); + retainerList = new List(); } finally { conn.Dispose(); diff --git a/FFXIVClassic Lobby Server/FFXIVClassic Lobby Server.csproj b/FFXIVClassic Lobby Server/FFXIVClassic Lobby Server.csproj index b3ade4da..00c7db3a 100644 --- a/FFXIVClassic Lobby Server/FFXIVClassic Lobby Server.csproj +++ b/FFXIVClassic Lobby Server/FFXIVClassic Lobby Server.csproj @@ -11,6 +11,21 @@ FFXIVClassic_Lobby_Server v4.5 512 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true AnyCPU @@ -94,9 +109,21 @@ + + + False + Microsoft .NET Framework 4.5 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 + false + + - copy "$(SolutionDir)data\config.ini" "$(SolutionDir)$(ProjectName)\$(OutDir)" + copy "$(SolutionDir)data\lobby_config.ini" "$(SolutionDir)$(ProjectName)\$(OutDir)"