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);
        }
Exemple #2
0
        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);
     }
 }
Exemple #4
0
 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);
 }
Exemple #8
0
 public void Report(string serverID, ReporterClient client, ReportingMessage reportMessage)
 {
     networkServer.QueueToAll(new NetworkMessage((int)MessageType.REPORT, GetReportMessageBytes(serverID, client, reportMessage)));
 }