private void HandleReportV1(NetworkClient <ReporterClient> client, byte[] data) { ReportingMessage reportingMessage = new ReportingMessage(); using (MessageStream.MessageReader mr = new MessageStream.MessageReader(data, false)) { reportingMessage.serverHash = mr.Read <string>(); reportingMessage.serverName = mr.Read <string>(); reportingMessage.description = mr.Read <string>(); reportingMessage.gamePort = mr.Read <int>(); reportingMessage.gameAddress = IPUtils.GetSafeGameAddress(mr.Read <string>(), client.stateObject); reportingMessage.protocolVersion = mr.Read <int>(); reportingMessage.programVersion = mr.Read <string>(); reportingMessage.maxPlayers = mr.Read <int>(); reportingMessage.modControl = mr.Read <int>(); reportingMessage.modControlSha = mr.Read <string>(); reportingMessage.gameMode = mr.Read <int>(); reportingMessage.cheats = mr.Read <bool>(); reportingMessage.warpMode = mr.Read <int>(); reportingMessage.universeSize = mr.Read <long>(); reportingMessage.banner = mr.Read <string>(); reportingMessage.homepage = mr.Read <string>(); reportingMessage.httpPort = mr.Read <int>(); reportingMessage.admin = mr.Read <string>(); reportingMessage.team = mr.Read <string>(); reportingMessage.location = mr.Read <string>(); reportingMessage.fixedIP = mr.Read <bool>(); reportingMessage.players = mr.Read <string[]>(); } HandleReport(client.stateObject, reportingMessage); }
public static ReportingMessage FromBytesBE(byte[] inputBytes) { ReportingMessage returnMessage = new ReportingMessage(); using (MessageStream2.MessageReader mr = new MessageStream2.MessageReader(inputBytes)) { returnMessage.serverHash = mr.Read <string>(); returnMessage.serverName = mr.Read <string>(); returnMessage.description = mr.Read <string>(); returnMessage.gamePort = mr.Read <int>(); returnMessage.gameAddress = mr.Read <string>(); returnMessage.protocolVersion = mr.Read <int>(); returnMessage.programVersion = mr.Read <string>(); returnMessage.maxPlayers = mr.Read <int>(); returnMessage.modControl = mr.Read <int>(); returnMessage.modControlSha = mr.Read <string>(); returnMessage.gameMode = mr.Read <int>(); returnMessage.cheats = mr.Read <bool>(); returnMessage.warpMode = mr.Read <int>(); returnMessage.universeSize = mr.Read <long>(); returnMessage.banner = mr.Read <string>(); returnMessage.homepage = mr.Read <string>(); returnMessage.httpPort = mr.Read <int>(); returnMessage.admin = mr.Read <string>(); returnMessage.team = mr.Read <string>(); returnMessage.location = mr.Read <string>(); returnMessage.fixedIP = mr.Read <bool>(); returnMessage.players = mr.Read <string[]>(); } return(returnMessage); }
public void LocalReport(ReporterClient client, ReportingMessage reportMessage) { lock (localClients) { networkServer.QueueToAll(new NetworkMessage((int)MessageType.REMOTE_REPORT, GetRemoteReportBytes(new string[] { settings.reporterHash }, client, reportMessage))); dbServer.Report(settings.reporterHash, client, reportMessage); } }
private byte[] GetReportMessageBytes(string serverID, ReporterClient client, ReportingMessage reportMessage) { byte[] retBytes; using (MessageWriter mw = new MessageWriter()) { mw.Write <string>(serverID); mw.Write <int>(client.clientID); mw.Write <byte[]>(reportMessage.GetBytes()); retBytes = mw.GetMessageBytes(); } return(retBytes); }
private void HandleRemoteReport(NetworkClient <RelayClient> client, byte[] data) { lock (remoteRelays) { using (MessageReader mr = new MessageReader(data)) { string[] parents = mr.Read <string[]>(); int serverID = mr.Read <int>(); byte[] reportBytes = mr.Read <byte[]>(); RelayClient relayClient = GetRelayClient(parents); ReporterClient reporterClient = relayClient.remoteClients[serverID]; ReportingMessage reportMessage = ReportingMessage.FromBytesBE(reportBytes); reporterClient.lastMessage = reportMessage; //Add to DB Console.WriteLine("RELAY: Remote receiver report from " + relayClient.relayHash + ", client: " + reporterClient.clientID + ", players: " + reportMessage.players.Length); dbServer.Report(relayClient.relayHash, reporterClient, reportMessage); //Relay string[] newParents = new string[parents.Length + 1]; newParents[0] = settings.reporterHash; parents.CopyTo(newParents, 1); networkServer.QueueToOthers(client, new NetworkMessage((int)MessageType.REMOTE_REPORT, GetRemoteReportBytes(newParents, reporterClient, reportMessage))); } } }
private byte[] GetRemoteReportBytes(string[] parents, ReporterClient reporterClient, ReportingMessage reporterMessage) { byte[] retVal; using (MessageWriter mw = new MessageWriter()) { mw.Write <string[]>(parents); mw.Write <int>(reporterClient.clientID); mw.Write <byte[]>(reporterMessage.GetBytes()); retVal = mw.GetMessageBytes(); } return(retVal); }
private void HandleReport(ReporterClient client, ReportingMessage message) { client.lastMessage = message; Console.WriteLine("RECEIVER: Report from " + client.clientID + ", players: " + message.players.Length); relayServer.LocalReport(client, message); }
public void Report(string serverID, ReporterClient client, ReportingMessage reportMessage) { networkServer.QueueToAll(new NetworkMessage((int)MessageType.REPORT, GetReportMessageBytes(serverID, client, reportMessage))); }