private void RefreshData() { ClientRetriever clientsRetriever = new ClientRetriever(ClientsRetrievedCallback, Error); clientsRetriever.GetForPartner(LoggedUserContext.LoggedUser); }
public override void Execute(string commandArgs) { var splittedCommand = commandArgs.Trim().Split(' '); if (splittedCommand.Length == 2) { var playerName = splittedCommand[0]; var client = ClientRetriever.GetAuthenticatedClients().FirstOrDefault(p => p.PlayerName == playerName); if (client != null) { var newMessageData = new ChatPrivateMsgData { From = GeneralSettings.SettingsStore.ConsoleIdentifier, To = client.PlayerName, Text = commandArgs.Substring(client.PlayerName.Length + 1) }; MessageQueuer.SendToClient <ChatSrvMsg>(client, newMessageData); } else { LunaLog.Normal("Player not found!"); } } }
/// <summary> /// Disconnect all clients /// </summary> public static void SendConnectionEndToAll(string reason) { foreach (var client in ClientRetriever.GetAuthenticatedClients()) { SendConnectionEnd(client, reason); } }
public override void Execute(string commandArgs) { string playerName; string reason; CommandSystemHelperMethods.SplitCommand(commandArgs, out playerName, out reason); reason = string.IsNullOrEmpty(reason) ? "No reason specified" : reason; if (playerName != "") { var player = ClientRetriever.GetClientByName(playerName); if (player != null) { LunaLog.Normal($"Kicking {playerName} from the server"); MessageQueuer.SendConnectionEnd(player, $"Kicked from the server: {reason}"); } else { LunaLog.Normal($"Player: {playerName} not found"); } } else { LunaLog.Error("Syntax error. Usage: /kick playername [reason]"); } }
public static void SendAllSubspaces(ClientStructure client) { LunaLog.Debug($"Sending {client.PlayerName} {WarpContext.Subspaces.Count} possible subspaces"); var msgData = ServerContext.ServerMessageFactory.CreateNewMessageData <WarpSubspacesReplyMsgData>(); var subspaces = WarpContext.Subspaces.ToArray().Select(s => { var players = ClientRetriever.GetAuthenticatedClients() .Where(c => !Equals(c, client) && c.Subspace == s.Key) .Select(c => c.PlayerName) .ToArray(); return(new SubspaceInfo { PlayerCount = players.Length, Players = players, SubspaceKey = s.Key, SubspaceTime = s.Value.Time }); }).ToArray(); msgData.Subspaces = subspaces; msgData.SubspaceCount = subspaces.Length; MessageQueuer.SendToClient <WarpSrvMsg>(client, msgData); }
public override bool Execute(string commandArgs) { CommandSystemHelperMethods.SplitCommand(commandArgs, out var playerName, out var reason); reason = string.IsNullOrEmpty(reason) ? "No reason specified" : reason; if (!string.IsNullOrEmpty(playerName)) { var player = ClientRetriever.GetClientByName(playerName); if (player != null) { MessageQueuer.SendConnectionEnd(player, $"You were banned from the server: {reason}"); Add(player.UniqueIdentifier); LunaLog.Normal($"Player '{playerName}' was banned from the server: {reason}"); return(true); } else { LunaLog.Normal($"Player '{playerName}' not found"); } } else { LunaLog.Normal("Undefined function. Usage: /ban [username] [reason]"); } return(false); }
public override void Execute(string commandArgs) { string playerName; string reason; CommandSystemHelperMethods.SplitCommand(commandArgs, out playerName, out reason); reason = string.IsNullOrEmpty(reason) ? "No reason specified" : reason; if (!string.IsNullOrEmpty(playerName)) { var player = ClientRetriever.GetClientByName(playerName); if (player != null) { MessageQueuer.SendConnectionEnd(player, $"You were banned from the server: {reason}"); } Add(playerName); LunaLog.Normal($"Player '{playerName}' was banned from the server: {reason}"); } else { LunaLog.Normal($"Player: {playerName} not found"); } }
public override void Execute(string commandArgs) { string ip; string reason; CommandSystemHelperMethods.SplitCommand(commandArgs, out ip, out reason); reason = string.IsNullOrEmpty(reason) ? "No reason specified" : reason; IPAddress ipAddress; if (IPAddress.TryParse(ip, out ipAddress)) { var player = ClientRetriever.GetClientByIp(ipAddress); if (player != null) { MessageQueuer.SendConnectionEnd(player, $"You were banned from the server: {reason}"); } Add(ipAddress.ToString()); LunaLog.Normal($"IP Address '{ip}' was banned from the server: {reason}"); } else { LunaLog.Normal($"{ip} is not a valid IP address"); } }
private bool CheckServerFull(ClientStructure client) { if (ClientRetriever.GetActiveClientCount() >= GeneralSettings.SettingsStore.MaxPlayers) { Reason = "Server full"; HandshakeSystemSender.SendHandshakeReply(client, HandshakeReply.ServerFull, Reason); return(false); } return(true); }
private bool CheckPlayerIsAlreadyConnected(ClientStructure client, string playerName) { var existingClient = ClientRetriever.GetClientByName(playerName); if (existingClient != null) { Reason = "Username already taken"; HandshakeSystemSender.SendHandshakeReply(client, HandshakeReply.InvalidPlayername, Reason); return(false); } return(true); }
public static void SendAllSubspaces(ClientStructure client) { LunaLog.Debug($"Sending {client.PlayerName} {WarpContext.Subspaces.Count} possible subspaces"); MessageQueuer.SendToClient <WarpSrvMsg>(client, new WarpSubspacesReplyMsgData { SubspaceTime = WarpContext.Subspaces.Values.ToArray(), SubspaceKey = WarpContext.Subspaces.Keys.ToArray(), Players = ClientRetriever.GetAuthenticatedClients().Where(c => c != client) .Select(p => new KeyValuePair <int, string>(p.Subspace, p.PlayerName)).ToArray() }); }
public static void SendConsoleMessageToAdmins(string text) { var admins = AdminCommands.Admins; foreach (var client in ClientRetriever.GetAuthenticatedClients().Where(c => admins.Contains(c.PlayerName))) { var messageData = ServerContext.ServerMessageFactory.CreateNewMessageData <ChatConsoleMsgData>(); messageData.From = GeneralSettings.SettingsStore.ConsoleIdentifier; messageData.Message = text; MessageQueuer.SendToClient <ChatSrvMsg>(client, messageData); } }
private static void SendAllPlayerColors(ClientStructure client) { var msgData = ServerContext.ServerMessageFactory.CreateNewMessageData <PlayerColorReplyMsgData>(); msgData.PlayersColors = ClientRetriever.GetAuthenticatedClients().Where(c => !Equals(c, client)) .Select(c => new PlayerColor { PlayerName = c.PlayerName, Color = c.PlayerColor }).ToArray(); msgData.PlayerColorsCount = msgData.PlayersColors.Length; MessageQueuer.SendToClient <PlayerColorSrvMsg>(client, msgData); }
public override void Execute(string commandArgs) { CommandSystemHelperMethods.SplitCommand(commandArgs, out var publicKey, out var reason); reason = string.IsNullOrEmpty(reason) ? "No reason specified" : reason; var player = ClientRetriever.GetClientByPublicKey(publicKey); if (player != null) { MessageQueuer.SendConnectionEnd(player, $"You were banned from the server: {reason}"); } Add(publicKey); LunaLog.Normal($"Public key '{publicKey}' was banned from the server: {reason}"); }
public static void SendConsoleMessageToAdmins(string text) { var admins = AdminCommands.Retrieve(); foreach (var client in ClientRetriever.GetAuthenticatedClients().Where(c => admins.Contains(c.PlayerName))) { var messageData = new ChatConsoleMsgData { From = GeneralSettings.SettingsStore.ConsoleIdentifier, Message = text }; MessageQueuer.SendToClient <ChatSrvMsg>(client, messageData); } }
public override void Execute(string commandArgs) { //Do some shit here. long bytesSentTotal = 0; long bytesReceivedTotal = 0; LunaLog.Normal("Connection stats:"); foreach (var client in ClientRetriever.GetAuthenticatedClients()) { bytesSentTotal += client.BytesSent; bytesReceivedTotal += client.BytesReceived; LunaLog.Normal( $"Player '{client.PlayerName}', sent: {client.BytesSent}, received: {client.BytesReceived}"); } LunaLog.Normal($"Server sent: {bytesSentTotal}, received: {bytesReceivedTotal}"); }
private static void SendAllPlayerColors(ClientStructure client) { var sendColors = new Dictionary <string, string>(); foreach (var otherClient in ClientRetriever.GetAuthenticatedClients().Where(c => !Equals(c, client) && c.PlayerColor != null)) { sendColors[otherClient.PlayerName] = otherClient.PlayerColor; } var newMessageData = new PlayerColorReplyMsgData { Count = sendColors.Count, PlayersColors = sendColors.ToArray() }; MessageQueuer.SendToClient <PlayerColorSrvMsg>(client, newMessageData); }
public override bool Execute(string commandArgs) { //Do some shit here. long bytesSentTotal = 0; long bytesReceivedTotal = 0; LunaLog.Normal("Connection stats:"); LunaLog.Normal($"Nist Time Difference: {LunaNetworkTime.TimeDifference.TotalMilliseconds} ms"); foreach (var client in ClientRetriever.GetAuthenticatedClients()) { bytesSentTotal += client.BytesSent; bytesReceivedTotal += client.BytesReceived; LunaLog.Normal( $"Player '{client.PlayerName}', sent: {client.BytesSent}, received: {client.BytesReceived}"); } LunaLog.Normal($"Server sent: {bytesSentTotal}, received: {bytesReceivedTotal}"); return(true); }
public override bool Execute(string commandArgs) { //Do some shit here. ulong bytesSentTotal = 0; ulong bytesReceivedTotal = 0; LunaLog.Normal("Connection stats:"); LunaLog.Normal($"Nist Time Difference: {LunaNetworkTime.TimeDifference.TotalMilliseconds} ms"); foreach (var client in ClientRetriever.GetAuthenticatedClients()) { bytesSentTotal += client.BytesSent; bytesReceivedTotal += client.BytesReceived; LunaLog.Normal( $"Server sent: {(float)client.BytesSent/1024} KB, received: {(float)client.BytesReceived/1024} KB from '{client.PlayerName}'"); } LunaLog.Normal($"Server sent: {((float)bytesSentTotal/1024)/1024} MB, received: {((float)bytesReceivedTotal/1024)/1024} MB in total amongst above players."); return(true); }
public void HandlePrivateMessage(ClientStructure client, ChatPrivateMsgData message) { if (message.To != GeneralSettings.SettingsStore.ConsoleIdentifier) { var findClient = ClientRetriever.GetClientByName(message.To); if (findClient != null) { MessageQueuer.SendToClient <ChatSrvMsg>(client, message); //Send it to the sender MessageQueuer.SendToClient <ChatSrvMsg>(findClient, message); //Send it to destination LunaLog.ChatMessage($"{message.From} -> @{message.To}: {message.Text}"); } else { LunaLog.ChatMessage($"{message.From} -X-> @{message.To}: {message.Text}"); } } else { //Send it to the sender only as we as server already received it MessageQueuer.SendToClient <ChatSrvMsg>(client, message); LunaLog.ChatMessage($"{message.From} -> @{message.To}: {message.Text}"); } }
public void HandleHandshakeResponse(ClientStructure client, HandshakeResponseMsgData data) { var valid = CheckServerFull(client); valid &= valid && CheckUsernameLength(client, data.PlayerName); valid &= valid && CheckUsernameCharacters(client, data.PlayerName); valid &= valid && CheckWhitelist(client, data.PlayerName); valid &= valid && CheckPlayerIsAlreadyConnected(client, data.PlayerName); valid &= valid && CheckUsernameIsReserved(client, data.PlayerName); valid &= valid && CheckPlayerIsBanned(client, data.PlayerName, client.Endpoint.Address.ToString(), data.PublicKey); valid &= valid && CheckKey(client, data.PlayerName, data.PublicKey, data.ChallengeSignature); if (!valid) { LunaLog.Normal($"Client {data.PlayerName} failed to handshake: {Reason}. Disconnecting"); client.DisconnectClient = true; ClientConnectionHandler.DisconnectClient(client, Reason); } else { client.PlayerName = data.PlayerName; client.PublicKey = data.PublicKey; client.Authenticated = true; LmpPluginHandler.FireOnClientAuthenticated(client); LunaLog.Normal($"Client {data.PlayerName} handshook successfully, Version: {data.Version}"); CreatePlayerScenarioFiles(client, data.PlayerName); HandshakeSystemSender.SendHandshakeReply(client, HandshakeReply.HandshookSuccessfully, "success"); MessageQueuer.RelayMessage <PlayerConnectionSrvMsg>(client, new PlayerConnectionJoinMsgData { PlayerName = client.PlayerName }); LunaLog.Debug($"Online Players: {ServerContext.PlayerCount}, connected: {ClientRetriever.GetClients().Length}"); } }
public void HandleHandshakeRequest(ClientStructure client, HandshakeRequestMsgData data) { var valid = CheckServerFull(client); valid &= valid && CheckUsernameLength(client, data.PlayerName); valid &= valid && CheckUsernameCharacters(client, data.PlayerName); valid &= valid && CheckPlayerIsAlreadyConnected(client, data.PlayerName); valid &= valid && CheckUsernameIsReserved(client, data.PlayerName); valid &= valid && CheckPlayerIsBanned(client, data.UniqueIdentifier); if (!valid) { LunaLog.Normal($"Client {data.PlayerName} ({data.UniqueIdentifier}) failed to handshake: {Reason}. Disconnecting"); client.DisconnectClient = true; ClientConnectionHandler.DisconnectClient(client, Reason); } else { client.PlayerName = data.PlayerName; client.UniqueIdentifier = data.UniqueIdentifier; client.Authenticated = true; LmpPluginHandler.FireOnClientAuthenticated(client); LunaLog.Normal($"Client {data.PlayerName} ({data.UniqueIdentifier}) handshake successfully, Version: {data.MajorVersion}.{data.MinorVersion}.{data.BuildVersion}"); HandshakeSystemSender.SendHandshakeReply(client, HandshakeReply.HandshookSuccessfully, "success"); var msgData = ServerContext.ServerMessageFactory.CreateNewMessageData <PlayerConnectionJoinMsgData>(); msgData.PlayerName = client.PlayerName; MessageQueuer.RelayMessage <PlayerConnectionSrvMsg>(client, msgData); LunaLog.Debug($"Online Players: {ServerContext.PlayerCount}, connected: {ClientRetriever.GetClients().Length}"); } }
protected static ClientStructure[] GetClientsInChannel(string channel) { return(PlayerChatChannels.Where(p => p.Value.Contains(channel)) .Select(p => ClientRetriever.GetClientByName(p.Key)).Where(c => c != null).ToArray()); }