/// <summary> /// Create a new world record and save it /// directly in database. /// </summary> public WorldServer CreateWorld(WorldServerData worldServerData) { var record = new WorldServer { Id = worldServerData.Id, Name = worldServerData.Name, RequireSubscription = worldServerData.RequireSubscription, RequiredRole = worldServerData.RequiredRole, CharCapacity = worldServerData.Capacity, ServerSelectable = true, Address = worldServerData.Address, Port = worldServerData.Port, }; if (!m_realmlist.TryAdd(record.Id, record)) { throw new Exception("Server already registered"); } Database.Insert(record); logger.Info(string.Format("World {0} created", worldServerData.Name)); return(record); }
public WorldServer RequestConnection(IPCClient client, WorldServerData world) { //check ip if (!IsIPAllowed(client.Address)) { logger.Error("Server <Id : {0}> ({1}) Try to connect self on the authenfication server but its ip is not allowed (see WorldServerManager.AllowedServerIps)", world.Id, client.Address); throw new Exception(string.Format("Ip {0} not allow by auth. server", client.Address)); } WorldServer server; if (!m_realmlist.ContainsKey(world.Id)) { server = CreateWorld(world); } else { server = m_realmlist[world.Id]; UpdateWorld(server, world, false); } server.SetOnline(client); Database.Update(server); logger.Info("Registered World : \"{0}\" <Id : {1}> <{2}>", world.Name, world.Id, world.Address); OnServerAdded(server); return(server); }
public void RemoveWorld(WorldServerData world) { WorldServer serverById = this.GetServerById(world.Id); if (serverById != null && serverById.Connected) { serverById.SetOffline(); base.Database.Update(serverById); this.OnServerRemoved(this.m_realmlist[world.Id]); WorldServerManager.logger.Info <string, int, string>("Unregistered \"{0}\" <Id : {1}> <{2}>", world.Name, world.Id, world.Address); } }
/// <summary> /// Remove a given world from our list /// and set it offline. /// </summary> /// <param name = "world"></param> public void RemoveWorld(WorldServerData world) { var server = GetServerById(world.Id); if (server != null && server.Connected) { server.SetOffline(); Database.Update(server); OnServerRemoved(m_realmlist[world.Id]); logger.Info("Unregistered \"{0}\" <Id : {1}> <{2}>", world.Name, world.Id, world.Address); } }
public void UpdateWorld(WorldServer record, WorldServerData worldServerData, bool save = true) { if (record.Id != worldServerData.Id) { throw new Exception("Ids don't match"); } record.Name = worldServerData.Name; record.Address = worldServerData.Address; record.Port = worldServerData.Port; record.CharCapacity = worldServerData.Capacity; record.RequiredRole = worldServerData.RequiredRole; record.RequireSubscription = worldServerData.RequireSubscription; if (save) { base.Database.Update(record); } }
public WorldServer CreateWorld(WorldServerData worldServerData) { WorldServer worldServer = new WorldServer { Id = worldServerData.Id, Name = worldServerData.Name, RequireSubscription = worldServerData.RequireSubscription, RequiredRole = worldServerData.RequiredRole, CharCapacity = worldServerData.Capacity, ServerSelectable = true, Address = worldServerData.Address, Port = worldServerData.Port }; if (!this.m_realmlist.TryAdd(worldServer.Id, worldServer)) { throw new Exception("Server already registered"); } base.Database.Insert(worldServer); WorldServerManager.logger.Info(string.Format("World {0} created", worldServerData.Name)); return(worldServer); }
public WorldServer RequestConnection(IPCClient client, WorldServerData world) { if (!this.IsIPAllowed(client.Address)) { WorldServerManager.logger.Error <int, IPAddress>("Server <Id : {0}> ({1}) Try to connect self on the authenfication server but its ip is not allowed (see WorldServerManager.AllowedServerIps)", world.Id, client.Address); throw new Exception(string.Format("Ip {0} not allow by auth. server", client.Address)); } WorldServer worldServer; if (!this.m_realmlist.ContainsKey(world.Id)) { worldServer = this.CreateWorld(world); } else { worldServer = this.m_realmlist[world.Id]; this.UpdateWorld(worldServer, world, false); } worldServer.SetOnline(client); base.Database.Update(worldServer); WorldServerManager.logger.Info <string, int, string>("Registered World : \"{0}\" <Id : {1}> <{2}>", world.Name, world.Id, world.Address); this.OnServerAdded(worldServer); return(worldServer); }
public HandshakeMessage(WorldServerData world) { World = world; }