From 75151d9f1217257a682c904da976d82ff1ae8163 Mon Sep 17 00:00:00 2001 From: Leonardo Emanuele Date: Mon, 7 Nov 2022 12:01:11 +0100 Subject: [PATCH 1/3] Added experimental MsgPack support (no more generator needed) --- FxEvents/FiveMMsgPack/MsgPack.dll | Bin 0 -> 393728 bytes .../EventSystem/ClientGateway.cs | 2 +- .../FxEvents.Client/FxEvents.Client.csproj | 10 +- .../EventSystem/ServerGateway.cs | 2 +- .../FxEvents.Server/FxEvents.Server.csproj | 9 +- FxEvents/Shared/BinaryHelper.cs | 7 +- .../EventSubsystem/Message/EventParameter.cs | 1 + .../Message/EventResponseMessage.cs | 1 + .../Implementations/MsgPackSerialization.cs | 270 ++++++++++++++++++ FxEvents/Shared/Snowflake/Snowflake.cs | 4 +- FxEvents/Shared/TypeExtensions/TypeCache.cs | 32 +++ 11 files changed, 323 insertions(+), 15 deletions(-) create mode 100644 FxEvents/FiveMMsgPack/MsgPack.dll create mode 100644 FxEvents/Shared/EventSubsystem/Serialization/Implementations/MsgPackSerialization.cs create mode 100644 FxEvents/Shared/TypeExtensions/TypeCache.cs diff --git a/FxEvents/FiveMMsgPack/MsgPack.dll b/FxEvents/FiveMMsgPack/MsgPack.dll new file mode 100644 index 0000000000000000000000000000000000000000..2cbc628eed0479409cf7df7c9bfea129c4a13bc1 GIT binary patch literal 393728 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ÖI@kP5g<6vV&zNW#;LB&)SPu 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⋙IcTp4dy_hWX>lKdxKdji$I*?i~ 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 literal 0 HcmV?d00001 diff --git a/FxEvents/FxEvents.Client/EventSystem/ClientGateway.cs b/FxEvents/FxEvents.Client/EventSystem/ClientGateway.cs index 44f68b6..7854f7d 100644 --- a/FxEvents/FxEvents.Client/EventSystem/ClientGateway.cs +++ b/FxEvents/FxEvents.Client/EventSystem/ClientGateway.cs @@ -21,7 +21,7 @@ public class ClientGateway : BaseGateway public ClientGateway() { SnowflakeGenerator.Create((short)new Random().Next(1, 199)); - Serialization = new BinarySerialization(); + Serialization = new MsgPackSerialization(); DelayDelegate = async delay => await BaseScript.Delay(delay); PrepareDelegate = PrepareAsync; PushDelegate = Push; diff --git a/FxEvents/FxEvents.Client/FxEvents.Client.csproj b/FxEvents/FxEvents.Client/FxEvents.Client.csproj index 7db017a..0dcbb86 100644 --- a/FxEvents/FxEvents.Client/FxEvents.Client.csproj +++ b/FxEvents/FxEvents.Client/FxEvents.Client.csproj @@ -31,6 +31,9 @@ 4 + + ..\FiveMMsgPack\MsgPack.dll + @@ -40,16 +43,11 @@ $(PkgNewtonsoft_Json)\lib\portable-net40+sl5+win8+wp8+wpa81\Newtonsoft.Json.dll - - - - - - + diff --git a/FxEvents/FxEvents.Server/EventSystem/ServerGateway.cs b/FxEvents/FxEvents.Server/EventSystem/ServerGateway.cs index 9e3f561..ff8da68 100644 --- a/FxEvents/FxEvents.Server/EventSystem/ServerGateway.cs +++ b/FxEvents/FxEvents.Server/EventSystem/ServerGateway.cs @@ -23,7 +23,7 @@ public class ServerGateway : BaseGateway public ServerGateway() { SnowflakeGenerator.Create((short)new Random().Next(200, 399)); - Serialization = new BinarySerialization(); + Serialization = new MsgPackSerialization(); DelayDelegate = async delay => await BaseScript.Delay(delay); PushDelegate = Push; _signatures = new(); diff --git a/FxEvents/FxEvents.Server/FxEvents.Server.csproj b/FxEvents/FxEvents.Server/FxEvents.Server.csproj index 4881f7c..a47e4ee 100644 --- a/FxEvents/FxEvents.Server/FxEvents.Server.csproj +++ b/FxEvents/FxEvents.Server/FxEvents.Server.csproj @@ -9,12 +9,12 @@ x64 SERVER - embedded + portable SERVER - embedded + portable @@ -22,9 +22,12 @@ - + + + ..\FiveMMsgPack\MsgPack.dll + $(PkgNewtonsoft_Json)\lib\portable-net40+sl5+win8+wp8+wpa81\Newtonsoft.Json.dll diff --git a/FxEvents/Shared/BinaryHelper.cs b/FxEvents/Shared/BinaryHelper.cs index 085e8d8..1848af1 100644 --- a/FxEvents/Shared/BinaryHelper.cs +++ b/FxEvents/Shared/BinaryHelper.cs @@ -9,11 +9,12 @@ namespace FxEvents.Shared { public static class BinaryHelper { - private static BinarySerialization _serialization = new(); + private static BinarySerialization binarySerialization = new(); + private static MsgPackSerialization msgpackSerialization = new(); public static byte[] ToBytes(this T obj) { - using SerializationContext context = new("BinaryHelper", "ToBytes", _serialization); + using SerializationContext context = new("BinaryHelper", "ToBytes", msgpackSerialization); context.Serialize(typeof(T), obj); return context.GetData(); } @@ -39,7 +40,7 @@ public static string BytesToString(this byte[] ba, bool separator = false, bool public static T FromBytes(this byte[] data) { - using SerializationContext context = new(data.ToString(), "FromBytes", _serialization, data); + using SerializationContext context = new(data.ToString(), "FromBytes", msgpackSerialization, data); return context.Deserialize(); } } diff --git a/FxEvents/Shared/EventSubsystem/Message/EventParameter.cs b/FxEvents/Shared/EventSubsystem/Message/EventParameter.cs index 747a2bd..7582e7c 100644 --- a/FxEvents/Shared/EventSubsystem/Message/EventParameter.cs +++ b/FxEvents/Shared/EventSubsystem/Message/EventParameter.cs @@ -7,6 +7,7 @@ public class EventParameter { public byte[] Data { get; set; } + public EventParameter() { } public EventParameter(byte[] data) { Data = data; diff --git a/FxEvents/Shared/EventSubsystem/Message/EventResponseMessage.cs b/FxEvents/Shared/EventSubsystem/Message/EventResponseMessage.cs index 9709ab5..30c98f9 100644 --- a/FxEvents/Shared/EventSubsystem/Message/EventResponseMessage.cs +++ b/FxEvents/Shared/EventSubsystem/Message/EventResponseMessage.cs @@ -12,6 +12,7 @@ public class EventResponseMessage : IMessage public string? Signature { get; set; } public byte[]? Data { get; set; } + public EventResponseMessage() { } public EventResponseMessage(Snowflake id, string endpoint, string? signature, byte[]? data) { Id = id; diff --git a/FxEvents/Shared/EventSubsystem/Serialization/Implementations/MsgPackSerialization.cs b/FxEvents/Shared/EventSubsystem/Serialization/Implementations/MsgPackSerialization.cs new file mode 100644 index 0000000..0f85a99 --- /dev/null +++ b/FxEvents/Shared/EventSubsystem/Serialization/Implementations/MsgPackSerialization.cs @@ -0,0 +1,270 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using FxEvents.Shared.Diagnostics; +using FxEvents.Shared.Exceptions; +using FxEvents.Shared.TypeExtensions; +using Logger; +using MsgPack.Serialization; + +namespace FxEvents.Shared.Serialization.Implementations +{ + public class MsgPackSerialization : ISerialization + { + private delegate T ObjectActivator(); + private delegate void VoidMethod(); + private Log logger = new(); + private MsgPack.Serialization.SerializationContext _context = new(MsgPack.PackerCompatibilityOptions.None) { SerializationMethod = SerializationMethod.Map }; + public MsgPackSerialization() + { + } + + private bool CanCreateInstanceUsingDefaultConstructor(Type t) => t.IsValueType || !t.IsAbstract && t.GetConstructor(Type.EmptyTypes) != null; + public void Serialize(Type type, object value, SerializationContext context) + { + var typeIdentifier = GetTypeIdentifier(type); + if (typeIdentifier == "System.Collections.Generic.KeyValuePair`2") + { + var generics = type.GetGenericArguments(); + var method = GetType().GetMethod("Serialize", + new[] { typeof(Type), typeof(object), typeof(SerializationContext) }); + var instanceParam = Expression.Parameter(typeof(MsgPackSerialization), "instance"); + var typeParam = Expression.Parameter(typeof(Type), "type"); + var contextParam = Expression.Parameter(typeof(SerializationContext), "context"); + var pairParam = Expression.Parameter(type, "pair"); + var valueParam = Expression.Parameter(typeof(object), "value"); + var call = Expression.Call(instanceParam, method!, typeParam, valueParam, contextParam); + + void CallSerialization(Type genericType, string property) + { + var action = (Action)Expression.Lambda(typeof(Action), Expression.Block(new[] + { + instanceParam, + typeParam, + contextParam, + pairParam, + valueParam + }, + Expression.Assign(instanceParam, Expression.Constant(this, typeof(MsgPackSerialization))), + Expression.Assign(contextParam, Expression.Constant(context, typeof(SerializationContext))), + Expression.Assign(typeParam, Expression.Constant(genericType, typeof(Type))), + Expression.Assign(pairParam, Expression.Constant(value, type)), + Expression.Assign(valueParam, + Expression.Convert(Expression.Property(pairParam, property), typeof(object))), + call + )).Compile(); + + action.Invoke(); + } + + CallSerialization(generics[0], "Key"); + CallSerialization(generics[1], "Value"); + } + else if (typeIdentifier.StartsWith("System.Tuple`")) + { + var generics = type.GetGenericArguments(); + var method = GetType().GetMethod("Serialize", + new[] { typeof(Type), typeof(object), typeof(SerializationContext) }); + var instanceParam = Expression.Parameter(typeof(MsgPackSerialization), "instance"); + var typeParam = Expression.Parameter(typeof(Type), "type"); + var valueParam = Expression.Parameter(type, "value"); + var contextParam = Expression.Parameter(typeof(SerializationContext), "context"); + + for (var idx = 0; idx < generics.Length; idx++) + { + var generic = generics[idx]; + var call = Expression.Call(instanceParam, method!, typeParam, + Expression.Convert(Expression.Property(valueParam, $"Item{idx + 1}"), typeof(object)), + contextParam); + var action = (Action)Expression.Lambda(typeof(Action), Expression.Block(new[] + { + instanceParam, + typeParam, + contextParam, + valueParam + }, + Expression.Assign(instanceParam, Expression.Constant(this, typeof(MsgPackSerialization))), + Expression.Assign(contextParam, Expression.Constant(context, typeof(SerializationContext))), + Expression.Assign(typeParam, Expression.Constant(generic, typeof(Type))), + Expression.Assign(valueParam, Expression.Constant(value, type)), + call + )).Compile(); + + action.Invoke(); + } + } + else + { + var ser = MessagePackSerializer.Get(type, _context); + ser.Pack(context.Writer.BaseStream, value); + } + } + + public void Serialize(T value, SerializationContext context) + { + Serialize(typeof(T), value, context); + } + + public object Deserialize(Type type, SerializationContext context) + { + var ser = MessagePackSerializer.Get(type, _context); + return ser.Unpack(context.Reader.BaseStream); + } + + public T Deserialize(SerializationContext context) => Deserialize(typeof(T), context); + + public T Deserialize(Type type, SerializationContext context) + { + var canInstance = CanCreateInstanceUsingDefaultConstructor(type); + var typeIdentifier = GetTypeIdentifier(type); + + if (TypeCache.IsSimpleType) + { + var primitive = Deserialize(type, context); + if (primitive != null) return (T)primitive; + } + if (typeIdentifier == "System.Collections.Generic.KeyValuePair`2") + { + var generics = type.GetGenericArguments(); + var constructor = type.GetConstructor(generics) ?? + throw new SerializationException(context, type, + $"Could not find suitable constructor for type: {type.Name}"); + + var key = DeserializeAnonymously(generics[0], context); + var value = DeserializeAnonymously(generics[1], context); + var keyParam = Expression.Parameter(generics[0], "key"); + var valueParam = Expression.Parameter(generics[1], "value"); + var block = Expression.Block( + new[] { keyParam, valueParam }, + Expression.Assign(keyParam, Expression.Constant(key, generics[0])), + Expression.Assign(valueParam, Expression.Constant(value, generics[1])), + Expression.New(constructor, keyParam, valueParam) + ); + + if (typeof(T) == typeof(object)) + { + var generic = typeof(ObjectActivator<>).MakeGenericType(type); + var activator = Expression.Lambda(generic, block).Compile(); + + return (T)activator.DynamicInvoke(); + } + else + { + var activator = + (ObjectActivator)Expression.Lambda(typeof(ObjectActivator), block).Compile(); + + return activator.Invoke(); + } + } + else if (typeIdentifier.StartsWith("System.Tuple`")) + { + var generics = type.GetGenericArguments(); + var constructor = type.GetConstructor(generics) ?? + throw new SerializationException(context, type, + $"Could not find suitable constructor for type: {type.Name}"); + var parameters = new List(); + + foreach (var generic in generics) + { + var entry = Deserialize(generic, context); + + parameters.Add(Expression.Constant(entry, generic)); + } + + var expression = Expression.New(constructor, parameters); + + if (typeof(T) == typeof(object)) + { + var generic = typeof(ObjectActivator<>).MakeGenericType(type); + var activator = Expression.Lambda(generic, expression).Compile(); + + return (T)activator.DynamicInvoke(); + } + else + { + var activator = + (ObjectActivator)Expression.Lambda(typeof(ObjectActivator), expression).Compile(); + + return activator.Invoke(); + } + } + else + { + if (!canInstance) + { + throw new SerializationException(context, type, $"Type {type.Name} is missing its emtpy constructor"); + } + var ser = MessagePackSerializer.Get(_context); + return ser.Unpack(context.Reader.BaseStream); + } + } + + public object DeserializeAnonymously(Type type, SerializationContext context) => + Deserialize(type, context); + + private static string GetTypeIdentifier(Type type) + { + var builder = new StringBuilder(); + var declaring = type; + + builder.Append(type.Namespace); + builder.Append("."); + + var idx = builder.Length; + + while ((declaring = declaring.DeclaringType) != null) + { + builder.Insert(idx, declaring.Name + "."); + } + + builder.Append(type.Name); + + return builder.ToString(); + } + public object? DeserializePrimitive(Type type, SerializationContext context) + { + try + { + if (context.Reader == null) throw new Exception("SerializationContext.Reader is null."); + switch (Type.GetTypeCode(type)) + { + case TypeCode.Boolean: + return context.Reader.ReadBoolean(); + case TypeCode.Byte: + return context.Reader.ReadByte(); + case TypeCode.Char: + return context.Reader.ReadChar(); + case TypeCode.Double: + return context.Reader.ReadDouble(); + case TypeCode.Int16: + return context.Reader.ReadInt16(); + case TypeCode.Int32: + return context.Reader.ReadInt32(); + case TypeCode.Int64: + return context.Reader.ReadInt64(); + case TypeCode.Single: + return context.Reader.ReadSingle(); + case TypeCode.String: + return context.Reader.ReadString(); + case TypeCode.SByte: + return context.Reader.ReadSByte(); + case TypeCode.UInt16: + return context.Reader.ReadUInt16(); + case TypeCode.UInt32: + return context.Reader.ReadUInt32(); + case TypeCode.UInt64: + return context.Reader.ReadUInt64(); + } + + return default; + } + catch (Exception ex) + { + throw new SerializationException(context, type, $"Could not deserialize primitive: {type}", ex); + } + } + } +} \ No newline at end of file diff --git a/FxEvents/Shared/Snowflake/Snowflake.cs b/FxEvents/Shared/Snowflake/Snowflake.cs index 0e7661f..878decf 100644 --- a/FxEvents/Shared/Snowflake/Snowflake.cs +++ b/FxEvents/Shared/Snowflake/Snowflake.cs @@ -8,8 +8,10 @@ public struct Snowflake : IEquatable { public static readonly Snowflake Empty = new Snowflake(0); - private readonly ulong _value; + private ulong _value; + public ulong Value { get => _value; set => _value = value; } + public Snowflake() { _value = 0; } public static Snowflake Next() { return SnowflakeGenerator.Instance.Next(); diff --git a/FxEvents/Shared/TypeExtensions/TypeCache.cs b/FxEvents/Shared/TypeExtensions/TypeCache.cs new file mode 100644 index 0000000..c8545dc --- /dev/null +++ b/FxEvents/Shared/TypeExtensions/TypeCache.cs @@ -0,0 +1,32 @@ +using System; +/// +/// A simple type cache to alleviate the reflection lookups. Checking for simple types is done once per type +/// encountered. Rather than every time. (Saves many CPU cycles. Reflection is slow) +/// +/// + +namespace FxEvents.Shared.TypeExtensions +{ + public static class TypeCache + { + static TypeCache() + { + Type = typeof(T); + IsSimpleType = true; + switch (Type.GetTypeCode(Type)) + { + case TypeCode.Object: + case TypeCode.DBNull: + case TypeCode.Empty: + case TypeCode.DateTime: + IsSimpleType = false; + break; + } + } + + // ReSharper disable StaticMemberInGenericType + public static bool IsSimpleType { get; } + public static Type Type { get; } + // ReSharper restore StaticMemberInGenericType + } +} \ No newline at end of file From f0784e8ced0a74bf6f29fb8f46ff430795b0be19 Mon Sep 17 00:00:00 2001 From: Leonardo Emanuele Date: Wed, 9 Nov 2022 10:37:32 +0100 Subject: [PATCH 2/3] Updated ReadMe for MsgPack --- README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e30b334..880f011 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ # FxEvents an advanced event subsystem for FiveM With FxEvents you can send and get values between client and server using an advanced event handling process. -Signatures are encrypted per each client and using the proviced binary serialization you can hide contents from malicious clients! -To work you'll have to implement the Serialization Generator to be found in https://github.com/manups4e/fx-events/tree/main/src/generator into your project. +Signatures are encrypted per each client and using the proviced MsgPack binary serialization you can hide contents from malicious clients! +To work you only need to add `FXEvents.Client.dll` or `FXEvents.Server.dll` and `Newtonsoft.Json.dll` (In case of json serialization) to your resource. +No need of any external library for MsgPack, the event system uses the internal MsgPack dll provided with fivem itself!! Usage examples: @@ -53,13 +54,16 @@ Callbacks can be called serverside too because it might happen that the server n The library comes with some goodies to help with customization and debugging serialization printing. -## ToJson() +## ToJson() ![image](https://user-images.githubusercontent.com/4005518/188593550-48891947-fb41-4ec1-894c-b429ca890361.png) + +⚠️ You need Newtonsoft.Json to make this work!! ```c# string text = param.ToJson(); ``` ## FromJson() +⚠️ You need Newtonsoft.Json to make this work!! ```c# type value = jsonText.FromJson(); ``` From 08cfe39e236c2e31ff30ca4c17612717d4f8d24b Mon Sep 17 00:00:00 2001 From: Leonardo Emanuele Date: Wed, 9 Nov 2022 10:39:16 +0100 Subject: [PATCH 3/3] BinarySerialization implementation is now obsolete --- .../Serialization/Implementations/BinarySerialization.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/FxEvents/Shared/EventSubsystem/Serialization/Implementations/BinarySerialization.cs b/FxEvents/Shared/EventSubsystem/Serialization/Implementations/BinarySerialization.cs index 1ee6bd0..3a329ee 100644 --- a/FxEvents/Shared/EventSubsystem/Serialization/Implementations/BinarySerialization.cs +++ b/FxEvents/Shared/EventSubsystem/Serialization/Implementations/BinarySerialization.cs @@ -15,6 +15,7 @@ namespace FxEvents.Shared.Serialization.Implementations public delegate T DeserializationObjectActivator(BinaryReader reader); + [Obsolete("This implementations is obsolete now that MsgPack is available")] public class BinarySerialization : ISerialization { public const string PackMethod = "PackSerializedBytes";