public void WeaponUpdateMessageRecieved(object sender, MessageReceivedEventArgs e) { using (Message message = e.GetMessage() as Message) { if (message.Tag == Tags.WeaponFireStartTag || message.Tag == Tags.WeaponFireEndTag || message.Tag == Tags.WeaponActionTag) { using (DarkRiftReader reader = message.GetReader()) { WeaponFireClientDTO data = reader.ReadSerializable <WeaponFireClientDTO>(); //Read the weapon fire dto off the stack using (DarkRiftWriter fireStartWriter = DarkRiftWriter.Create()) { WeaponFireServerDTO fireData = new WeaponFireServerDTO(); fireData.playerID = e.Client.ID; fireData.fireNum = data.fireNum; fireStartWriter.Write(fireData); int extrastart = reader.Position; int extralength = reader.Length - reader.Position; byte[] rawExtradata = reader.ReadRaw(extralength); fireStartWriter.WriteRaw(rawExtradata, 0, extralength); //Write the extra data from the message //TODO: Think about security implications of sending raw data from client to all clients using (Message fireStartMessage = Message.Create(message.Tag, fireStartWriter)) //Repeat the incoming tagname as all message bodies are the same { foreach (IClient client in worldManager.clients[e.Client].World.GetClients().Where(x => x != e.Client)) { client.SendMessage(fireStartMessage, SendMode.Reliable); } } } } } } }
public static DarkRiftWriter EncryptWriterRSA(this DarkRiftWriter writer, RSAParameters publicKey) { Message message = Message.Create(0, writer); DarkRiftReader reader = message.GetReader(); byte[] data = reader.ReadRaw(reader.Length); data = EncryptRSA(data, publicKey); writer = DarkRiftWriter.Create(); writer.WriteRaw(data, 0, data.Length); message.Dispose(); reader.Dispose(); return(writer); }
public static DarkRiftWriter EncryptWriterAES(this DarkRiftWriter writer, byte[] key) { Message message = Message.Create(0, writer); DarkRiftReader reader = message.GetReader(); byte[] data = reader.ReadRaw(reader.Length); data = Encrypt_Aes(data, key); DarkRiftWriter _writer = DarkRiftWriter.Create(); _writer.WriteRaw(data, 0, data.Length); message.Dispose(); reader.Dispose(); return(_writer); }
private void Client_MessageReceived(object sender, DarkRift.Client.MessageReceivedEventArgs e) { // Add receive message to list, will read it later by `ClientReceive` function using (Message message = e.GetMessage()) { using (DarkRiftReader reader = message.GetReader()) { clientEventQueue.Enqueue(new TransportEventData() { type = ENetworkEvent.DataEvent, reader = new NetDataReader(reader.ReadRaw(reader.Length)), }); } } }