using System; using System.IO; using System.Data; using System.Text; using System.Collections.Generic; using SHN; using System.Globalization; namespace Filter.Utilities { internal enum ServerType { Odin = 1, HunterKingdom = 2 } internal enum MessageType { Whisper = 1, WorldMessage = 2 } internal enum SaveType { Account = 1, Character = 2 } internal class Zone { public Byte ZoneID { get; set; } public Int32 BindPort { get; set; } public Int32 ConnectPort { get; set; } public Boolean NormalProtect { get; set; } public Boolean NormalLog { get; set; } public Boolean ShoutProtect { get; set; } public Boolean ShoutLog { get; set; } } internal class ConfigLoader { public String SName; public ServerType SType; public String SQLDataSource; public String SQLUsername; public String SQLPassword; public String SQLAccount; public String SQLCharacter; public String SQLChatLogs; public String SQLCustomCurrency; public String SQLLottery; public Boolean OTEnabled; public Int32 OTInterval; public MessageType OTType; public String OTMessage; public Boolean MoneyEnabled; public Int32 MoneyInterval; public Int64 MoneyGive; public MessageType MoneyType; public String MoneyMessage; public Boolean LotteryEnabled; public Int32 LInterval; public SaveType LType; public Byte LMaxTickets; public Int64 LTicketPirce; public Int32 LoginBind; public Int32 LoginConnect; public Int32 LoginYear; public Int32 LoginVersion; public String LoginHash; public Int32 ManagerBind; public Int32 ManagerConnect; public Byte ZoneCount; public List Zones = new List(); public MessageType BinType; public String BinMessage; public String BotName; public Boolean RemoteEnabled; public Int32 RemoteBindPort; public String CryptoFile; public List CryptoTable = new List(); public ServerType LoginSystem; public Int32 LoginTokenLength; public Boolean GuildProtect; public Boolean GuildLog; public Boolean AcdProtect; public Boolean AcdLog; public Boolean WhisperProtect; public Boolean WhisperLog; public Boolean PartyProtect; public Boolean PartyLog; public Boolean RoarProtect; public Boolean RoarLog; public Boolean CCEnabled; public Boolean AllowCloseVendor; public Boolean AllowEditButton; public Int32 RemoteAdminCount; public List RemoteAdmins = new List(); public ConfigLoader() { SHNFile ConfigFile = new SHNFile(String.Format("{0}\\Config.shn", AppDomain.CurrentDomain.BaseDirectory)); if (ConfigFile.Type == SHNType.TextData) { ConfigFile.SHNEncoding = Encoding.ASCII; } else { ConfigFile.SHNEncoding = Encoding.GetEncoding("ISO-8859-1"); } ConfigFile.Read(); Dictionary ConfigValues = new Dictionary(); foreach (DataRow Row in ConfigFile.Table.Rows) { ConfigValues.Add(Convert.ToString(Row[0]), Convert.ToString(Row[1])); } SName = ConfigValues["ServerName"]; SType = (ServerType)Enum.Parse(typeof(ServerType), ConfigValues["ServerType"]); SQLDataSource = ConfigValues["SQLDataSource"]; SQLUsername = ConfigValues["SQLUsername"]; SQLPassword = ConfigValues["SQLPassword"]; SQLAccount = ConfigValues["SQLAccount"]; SQLCharacter = ConfigValues["SQLCharacter"]; SQLChatLogs = ConfigValues["SQLChatLogs"]; SQLCustomCurrency = ConfigValues["SQLCustomCurrency"]; SQLLottery = ConfigValues["SQLLottery"]; OTEnabled = Convert.ToBoolean(ConfigValues["OTEnabled"]); OTInterval = Convert.ToInt32(ConfigValues["OTInterval"]); OTType = (MessageType)Enum.Parse(typeof(MessageType), ConfigValues["OTType"]); OTMessage = ConfigValues["OTMessage"]; MoneyEnabled = Convert.ToBoolean(ConfigValues["MoneyEnabled"]); MoneyInterval = Convert.ToInt32(ConfigValues["MoneyInterval"]); MoneyGive = Convert.ToInt64(ConfigValues["MoneyGive"]); MoneyType = (MessageType)Enum.Parse(typeof(MessageType), ConfigValues["MoneyType"]); ; MoneyMessage = ConfigValues["MoneyMessage"]; LotteryEnabled = Convert.ToBoolean(ConfigValues["LotteryEnabled"]); LInterval = Convert.ToInt32(ConfigValues["LInterval"]); LType = (SaveType)Enum.Parse(typeof(ServerType), ConfigValues["LType"]); LMaxTickets = Convert.ToByte(ConfigValues["LMaxTickets"]); LTicketPirce = Convert.ToInt64(ConfigValues["LTicketPrice"]); LoginBind = Convert.ToInt32(ConfigValues["LoginBind"]); LoginConnect = Convert.ToInt32(ConfigValues["LoginConnect"]); LoginYear = Convert.ToInt32(ConfigValues["LoginYear"]); LoginVersion = Convert.ToInt32(ConfigValues["LoginVersion"]); LoginHash = ConfigValues["LoginHash"]; ManagerBind = Convert.ToInt32(ConfigValues["ManagerBind"]); ManagerConnect = Convert.ToInt32(ConfigValues["ManagerConnect"]); ZoneCount = Convert.ToByte(ConfigValues["ZoneCount"]); for (Int32 Counter = 1; Counter < ZoneCount + 1; Counter++) { Zone NewZone = new Zone() { ZoneID = Convert.ToByte(ConfigValues[String.Format("Zone{0}_ID", Counter)]), BindPort = Convert.ToInt32(ConfigValues[String.Format("Zone{0}_BindPort", Counter)]), ConnectPort = Convert.ToInt32(ConfigValues[String.Format("Zone{0}_ConnectPort", Counter)]), NormalProtect = Convert.ToBoolean(ConfigValues[String.Format("Zone{0}_NormalProtect", Counter)]), NormalLog = Convert.ToBoolean(ConfigValues[String.Format("Zone{0}_NormalLog", Counter)]), ShoutProtect = Convert.ToBoolean(ConfigValues[String.Format("Zone{0}_ShoutProtect", Counter)]), ShoutLog = Convert.ToBoolean(ConfigValues[String.Format("Zone{0}_ShoutLog", Counter)]), }; Zones.Add(NewZone); } BinType = (MessageType)Enum.Parse(typeof(MessageType), ConfigValues["BinType"]); BinMessage = ConfigValues["BinMessage"]; BotName = Convert.ToString(ConfigValues["BotName"]); RemoteEnabled = Convert.ToBoolean(ConfigValues["RemoteEnabled"]); RemoteBindPort = Convert.ToInt32(ConfigValues["RemoteBindPort"]); CryptoFile = ConfigValues["CryptoFile"]; foreach (var CryptoValue in File.ReadAllLines(String.Format("{0}\\{1}", AppDomain.CurrentDomain.BaseDirectory, CryptoFile))[0].Split(new String[] { ", " }, StringSplitOptions.None)) { CryptoTable.Add(Byte.Parse(CryptoValue, NumberStyles.HexNumber)); } LoginSystem = (ServerType)Enum.Parse(typeof(ServerType), ConfigValues["LoginSystem"]); LoginTokenLength = Convert.ToInt32(ConfigValues["LoginTokenLength"]); GuildProtect = Convert.ToBoolean(ConfigValues["GuildProtect"]); GuildLog = Convert.ToBoolean(ConfigValues["GuildLog"]); AcdProtect = Convert.ToBoolean(ConfigValues["AcdProtect"]); AcdLog = Convert.ToBoolean(ConfigValues["AcdLog"]); WhisperProtect = Convert.ToBoolean(ConfigValues["WhisperProtect"]); WhisperLog = Convert.ToBoolean(ConfigValues["WhisperLog"]); PartyProtect = Convert.ToBoolean(ConfigValues["PartyProtect"]); PartyLog = Convert.ToBoolean(ConfigValues["PartyLog"]); RoarProtect = Convert.ToBoolean(ConfigValues["RoarProtect"]); RoarLog = Convert.ToBoolean(ConfigValues["RoarLog"]); CCEnabled = Convert.ToBoolean(ConfigValues["CCEnabled"]); AllowCloseVendor = Convert.ToBoolean(ConfigValues["AllowCloseVendor"]); AllowEditButton = Convert.ToBoolean(ConfigValues["AllowEditButton"]); RemoteAdminCount = Convert.ToInt32(ConfigValues["RemoteAdminCount"]); for (Int32 Counter = 1; Counter < RemoteAdminCount + 1; Counter++) { RemoteAdmins.Add(ConfigValues[String.Format("RemoteAdmin_{0}", Counter)]); } } } }