using System; using System.Collections.Generic; using System.Text.Json; using JacobTechEncryption; using JacobTechEncryption.Enums; using Luski.net.Enums; using Luski.net.JsonTypes.BaseTypes; using Luski.net.JsonTypes.WSS; using Luski.net.Structures; using Luski.net.Structures.Public; using Luski.Shared.PublicServers.V1.ServerToClient.HTTP; using WebSocketSharp; using File = System.IO.File; using DataType = Luski.Shared.PublicServers.V1.Enums.DataType; namespace Luski.net; public partial class PublicServer { private void DataFromServer(object? sender, MessageEventArgs e) { if (e.IsPing) return; if (PrintServerMessages) { Console.WriteLine(e.Data); } try { BetterIncomingWSS? data = JsonSerializer.Deserialize(e.Data, BetterIncomingWSSContext.Default.BetterIncomingWSS); switch (data?.Type) { case DataType.Token: WSSLogin n = JsonSerializer.Deserialize(e.Data, WSSLoginContext.Default.WSSLogin)!; File.WriteAllText(Storage.GetStorageDirectory(StorageDirectory.StorageInfo) + "token", n.SessionToken); Token = n.Token; break; case DataType.MessageCreate: MessageSTC smsg = JsonSerializer.Deserialize(data.Data!.ToString()!, MessageSTCContext.Default.MessageSTC)!; List fl = new(); foreach (var VARIABLE in smsg.Files) { fl.Add(VARIABLE.ID); } if (smsg.EncryptionKey == 0) { if (string.IsNullOrEmpty(smsg.Context)) { smsg.Context = ""; } else smsg.Context = Encryption.Generic.Encoders[(int)smsg.EncoderType] .GetString(Convert.FromBase64String(smsg.Context)); } else { LocalKeyInfo key = EncryptionHandler.GetKey(smsg.EncryptionKey); switch (key.EncryptionType) { case EncryptionType.RSA: smsg.Context = Encryption.RSA.Decrypt(Convert.FromBase64String(smsg.Context), key.Key, smsg.EncoderType); break; default: smsg.Context = Encryption.Generic.Encoders[(int)smsg.EncoderType] .GetString(Convert.FromBase64String(smsg.Context)); break; } } SocketMessage sm = new() { ID = smsg.ID, AuthorID = smsg.AuthorID, ChannelID = smsg.ChannelID, Context = smsg.Context, EncoderType = smsg.EncoderType, EncryptionKey = smsg.EncryptionKey, FileIDs = fl.ToArray(), Server = this, IsProfile = smsg.IsProfile }; if (MessageReceived is not null) MessageReceived.Invoke(sm); break; default: Console.WriteLine("Unknown"); break; } } catch (Exception exception) { Exception(exception); } } }