public Configuration( string configuration_path ) { serviceController = new System.ServiceProcess.ServiceController("SMTPSVC"); XmlTextReader reader = new XmlTextReader( configuration_path ); XmlDocument doc = new XmlDocument(); doc.Load( reader ); // -- XmlNode settings_node = doc.SelectSingleNode( "/configuration/settings" ); Settings = new Settings( settings_node ); // -- XmlNodeList server_nodes = doc.SelectNodes( "/configuration/servers/server" ); ArrayList servers = new ArrayList( server_nodes.Count ); foreach( XmlNode server_node in server_nodes ) { Server server = new Server( this, server_node ); servers.Add( server ); ServerNames.Add(server.Address); ServerTable.Add(server.Address,server); } Servers = (Server[])servers.ToArray( typeof(Server) ); // -- doc = null; reader = null; }
static void RedirectServer(KcpUser linker, DataBuffer data) { try { byte[] dat = data.fakeStruct.GetData <byte[]>(Req.Args); var rs = KcpPack.UnPackMsg <RServer>(dat); if (rs != null) { if (rs.key == key) { ServerTable.AddServer(linker.ip, linker.port, rs.name); } } } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } }
static void Main(string[] args) { Console.Title = "Konquer - World"; Base.Attributes.Load(); // Database Console.WriteLine("Loading servers table."); ServerTable.LoadInfo();// From the auth DB foreach (var svr in ServerTable.ServersTable.Values) { CreateServer(svr); } Console.WriteLine($"Total {GameServersPool.Count} GameServers are online!"); Console.WriteLine(); while (true) { HandleCommands(); } }
static void GetAllServerIp(KcpUser linker, DataBuffer data) { int index = data.fakeStruct[Req.Args]; var info = ServerTable.GetAllServer(); int c = info.Count; if (c > 0) { DataBuffer db = new DataBuffer(); FakeStruct fake = new FakeStruct(db, Req.Length); fake[Req.Cmd] = ProCmd.AllServer; fake[Req.Type] = MessageType.Pro; FakeStructArray array = new FakeStructArray(db, 3, c); for (int i = 0; i < c; i++) { array[i, 0] = info[i].ip; array[i, 1] = info[i].port; array.SetData(i, 2, info[i].name); } fake.SetData(Req.Args, array); db.fakeStruct = fake; linker.Send(AES.Instance.Encrypt(db.ToBytes()), EnvelopeType.AesDataBuffer); } }
static void GetServerIp(KcpUser linker, DataBuffer data) { linker.SendObject <ServerInfo>(ProCmd.ServerIp, MessageType.Pro, ServerTable.GetServer(0)); }
static void Main(string[] args) { var correctLogin = false; string token = null; var db = new ServerTable(); while (correctLogin == false) //checks login and token { Console.WriteLine("Input Username"); string username = Console.ReadLine(); Console.WriteLine("Input Password"); string password = Console.ReadLine(); using (var Connection = new Connection <TokenRequest, TokenResponse>(new TokenRequest(username, password), BaseAddress)) { var response = Connection.Execute(); if (response != null) { token = response.token; } else { Console.WriteLine("Incorrect Credidentials"); Console.ReadLine(); continue; } } List <Server> result = null; using (var Connection = new Connection <ServerRequest, List <Server> >(new ServerRequest(token), BaseAddress)) { result = Connection.Execute(); //TODO } if (result != null) { db.WriteServers(result); correctLogin = true; } else { Console.WriteLine("Received incorrect token"); Console.ReadLine(); continue; } } Console.Clear(); var servers = db.ReadServers().OrderByDescending(x => x.distance); //Write out servers Console.WriteLine("Name: Distance:"); foreach (var server in servers) { var space = " "; if (space.Length > server.name.Length) { space = space.Remove(0, server.name.Length); } else { space = " "; } Console.WriteLine(server.name + space + server.distance); } Console.ReadLine(); }