public override void OnPluginLoaded() { Self = this; Server.PluginHost.Loaded += OnHostLoadedPlugin; this.formatter = new AdvancedClientFormatter(); foreach (var user in Server.Users) { user.Socket.Formatter = formatter; user.Extended["CustomFont"] = null; user.Extended["SupportEmote"] = false; user.Extended["VoiceIgnore"] = new List <String>(); user.Extended["CustomEmote"] = new List <ClientEmoteItem>(); } foreach (var user in Server.Users) { OnSendJoin(user); } var js = Server.PluginHost.Find(s => s.Name.ToLower() == "javascript"); if (js != null) { OnHostLoadedPlugin(null, js); } Server.SendAnnounce("cb0tProtocol plugin has been loaded!!"); }
//called by Listener methods protected AresTcpSocket(IPacketFormatter formatter, Socket socket) : this() { should_mask = false;//client sends masked Socket = socket; Formatter = orgFormatter = formatter; }
protected ClientCommand(int identyfikator, Guid sessionId, ISender sender, IPacketFormatter packetFormatter, Operation operation, Status status) { _sender = sender; _packetFormatter = packetFormatter; Packet = new Packet(operation, status, sessionId, identyfikator); }
public ServerSendMessage(ClientData source, ISessionsRepository sessionsRepository, IPacketFormatter packetFormatter, string messageToSend) : base(source, sessionsRepository, packetFormatter, Operation.Message, Status.Ok) { _messageToSend = messageToSend; _sourceSessionId = SessionsRepository.GetSessionId(Source); }
public ServerInvite(ClientData source, int destinationId, ISessionsRepository sessionsRepository, IPacketFormatter packetFormatter) : base(source, sessionsRepository, packetFormatter, Operation.Invite, Status.Ok) { _destinationId = destinationId; _sourceSessionId = SessionsRepository.GetSessionId(Source); }
public AresTcpSocket(IPacketFormatter formatter) { Monitor = new IOMonitor(); Monitor.Start(); outQueue = new ConcurrentQueue <IPacket>(); Socket = SocketManager.CreateTcp(); Formatter = orgFormatter = formatter; }
public Server(IPacketFormatter packetFormatter, ISessionsRepository sessionsRepository, ICommandHandler commandHandler, IClientIdsRepository clientIdsRepository) { _packetFormatter = packetFormatter; _sessionsRepository = sessionsRepository; _commandHandler = commandHandler; _clientIdsRepository = clientIdsRepository; }
protected ServerCommand(ClientData source, ISessionsRepository sessionsRepository, IPacketFormatter packetFormatter, Operation operation, Status status) { Source = source; SessionsRepository = sessionsRepository; PacketFormatter = packetFormatter; _operation = operation; _status = status; }
public AresUdpSocket(IPacketFormatter formatter) { Formatter = formatter; Socket = SocketManager.CreateUdp(); Monitor = new IOMonitor(); recvTask = new SocketReceiveTask(8192); recvTask.Completed += ReceiveComplete; sendHandler = new EventHandler <IOTaskCompleteEventArgs <SocketSendTask> >(SendComplete); }
//called by Listener methods private AresTcpSocket(IPacketFormatter formatter, Socket socket) { should_mask = false; Monitor = new IOMonitor(); Monitor.Start(); outQueue = new ConcurrentQueue <IPacket>(); this.Socket = socket; Formatter = orgFormatter = formatter; }
private object ReadObject(Type type, IPacketFormatter formatter) { var members = TypeDictionary.GetRecord(type); object obj = Activator.CreateInstance(type, true); members.ForEach(prop => prop.Property.SetValue(obj, ReadProperty(prop, formatter), null)); return(obj); }
private IPacket ReadPacket(IPacketFormatter formatter) { try { ushort len = ReadUInt16(); if (Remaining < len + 1) { throw new EndOfStreamException(); } byte id = ReadByte(); byte[] payload = ReadBytes(len); return(formatter?.Unformat(id, payload)); } catch { return(null); } }
public Packet(byte[] input, int opcode, DateTime time, Direction direction, int number, IPacketFormatter formatter, string fileName) : base(new MemoryStream(input, 0, input.Length), Encoding.UTF8) { Opcode = opcode; Time = time; Direction = direction; Number = number; Formatter = formatter; FileName = fileName; Status = ParsedStatus.None; WriteToFile = true; if (number == 0) { _firstPacketTime = Time; } TimeSpan = Time - _firstPacketTime; }
private IPacket ReadPacket(IPacketFormatter formatter, bool len_prefix = true) { try { int len = -1; if (len_prefix) { len = ReadUInt16(); } if (Remaining < len + 1) { throw new EndOfStreamException(); } byte id = ReadByte(); byte[] payload = ReadBytes((len == -1) ? (int)Remaining : len); return(formatter?.Unformat(id, payload)); } catch { return(null); } }
public ServerCloseAndOpenNewSessionCommand(ClientData source, ISessionsRepository sessionsRepository, IPacketFormatter packetFormatter) : base(source, sessionsRepository, packetFormatter, Operation.CloseSession, Status.Ok) { }
public ClientDisconnect(int ident, Guid sessionId, ISender sender, IPacketFormatter packetFormatter) : base(ident, sessionId, sender, packetFormatter, Operation.Disconnect, Status.Ok) { }
public ClientGetId(int ident, Guid sessionId, ISender sender, IPacketFormatter packetFormatter) : base(ident, sessionId, sender, packetFormatter, Operation.GetId, Status.Ok) { }
public Client(IPacketFormatter packetFormatter, ICommandHandler commandHandler) { _packetFormatter = packetFormatter; _commandHandler = commandHandler; }
public ServerDeclineInvite(ClientData source, int destinationId, ISessionsRepository sessionsRepository, IPacketFormatter packetFormatter) : base(source, sessionsRepository, packetFormatter, Operation.Invite, Status.Decline) { _destinationId = destinationId; }
public ServerDisconnect(ClientData source, ISessionsRepository sessionsRepository, IPacketFormatter packetFormatter) : base(source, sessionsRepository, packetFormatter, Operation.Disconnect, Status.Ok) { }
public PacketSerializer(IPacketFormatter formatter) { Formatter = formatter; }
public AresTcpSocket(IPacketFormatter formatter) : this() { Socket = SocketManager.CreateTcp(); Formatter = orgFormatter = formatter; }
public AresUdpSerializer(IPacketFormatter formatter) : base(formatter) { }
public virtual T ReadObject <T>(IPacketFormatter formatter) { object ret = ReadObject(typeof(T), formatter); return((T)(ret ?? default)); }
private object ReadProperty(PropertyData prop, IPacketFormatter formatter) { switch (Type.GetTypeCode(prop.Property.PropertyType)) { case TypeCode.Boolean: if (Remaining < 1 && prop.Attribute.Optional) { if (prop.Attribute.OptionalValue != null) { return((bool)prop.Attribute.OptionalValue); } else { return(false); } } return(ReadBoolean()); case TypeCode.Byte: if (Remaining < 1 && prop.Attribute.Optional) { if (prop.Attribute.OptionalValue != null) { return((byte)prop.Attribute.OptionalValue); } else { return((byte)0); } } return(ReadByte()); case TypeCode.SByte: if (Remaining < 1 && prop.Attribute.Optional) { return((sbyte)0); } return(ReadSByte()); case TypeCode.Int16: if (Remaining < 2 && prop.Attribute.Optional) { if (prop.Attribute.OptionalValue != null) { return((short)prop.Attribute.OptionalValue); } else { return((short)0); } } return(ReadInt16()); case TypeCode.UInt16: if (Remaining < 2 && prop.Attribute.Optional) { if (prop.Attribute.OptionalValue != null) { return((ushort)prop.Attribute.OptionalValue); } else { return((ushort)0); } } return(ReadUInt16()); case TypeCode.Int32: if (Remaining < 4 && prop.Attribute.Optional) { if (prop.Attribute.OptionalValue != null) { return((int)prop.Attribute.OptionalValue); } else { return((int)0); } } return(ReadInt32()); case TypeCode.UInt32: if (Remaining < 4 && prop.Attribute.Optional) { if (prop.Attribute.OptionalValue != null) { return((uint)prop.Attribute.OptionalValue); } else { return((uint)0); } } return(ReadUInt32()); case TypeCode.Single: if (Remaining < 4 && prop.Attribute.Optional) { if (prop.Attribute.OptionalValue != null) { return((float)prop.Attribute.OptionalValue); } else { return((float)0); } } return(ReadSingle()); case TypeCode.Int64: if (Remaining < 8 && prop.Attribute.Optional) { if (prop.Attribute.OptionalValue != null) { return((long)prop.Attribute.OptionalValue); } else { return((long)0); } } return(ReadInt64()); case TypeCode.UInt64: if (Remaining < 8 && prop.Attribute.Optional) { if (prop.Attribute.OptionalValue != null) { return((ulong)prop.Attribute.OptionalValue); } else { return((ulong)0); } } return(ReadUInt64()); case TypeCode.Double: if (Remaining < 8 && prop.Attribute.Optional) { if (prop.Attribute.OptionalValue != null) { return((double)prop.Attribute.OptionalValue); } else { return((double)0); } } return(ReadDouble()); case TypeCode.Decimal: if (Remaining < 16 && prop.Attribute.Optional) { if (prop.Attribute.OptionalValue != null) { return((decimal)prop.Attribute.OptionalValue); } else { return((decimal)0); } } return(ReadDecimal()); case TypeCode.String: string ret; if (prop.Attribute.Length > 0) { ret = ReadString(prop.Attribute.Length); } else if (prop.Attribute.LengthPrefix) { ret = ReadString(ReadUInt16()); } else { ret = ReadString(); } if (prop.Attribute.MaxLength > 0) { byte[] b = Encoding.GetBytes(ret); ret = Encoding.GetString(b, 0, Math.Min(b.Length, prop.Attribute.MaxLength)); } return(ret); case TypeCode.Object: Type ptype = prop.Property.PropertyType; if (ptype == typeof(byte[])) { return(ReadBytes((int)Remaining)); } else if (ptype == typeof(Guid)) { if (Remaining < 16 && prop.Attribute.Optional) { if (prop.Attribute.OptionalValue != null) { return((Guid)prop.Attribute.OptionalValue); } else { return(Guid.Empty); } } return(ReadGuid()); } else if (ptype == typeof(IPAddress)) { if (Remaining < 4 && prop.Attribute.Optional) { if (prop.Attribute.OptionalValue != null) { return((IPAddress)prop.Attribute.OptionalValue); } else { return(IPAddress.Any); } } return(ReadIPAddress()); } else if (typeof(IPacket).IsAssignableFrom(ptype)) { if (Remaining >= 3) { return(ReadPacket(formatter)); } } throw new NotSupportedException("This data type is not supported by the serializer"); } return(null); }
public AresUdpSocket(IPacketFormatter formatter) { Formatter = formatter; Socket = SocketManager.CreateUdp(); Monitor = new IOMonitor(); }
public ClientCloseAndOpenNewSessionCommand(int ident, Guid sessionId, ISender sender, IPacketFormatter packetFormatter) : base(ident, sessionId, sender, packetFormatter, Operation.CloseSession, Status.Ok) { }
public ClientInvite(int ident, int destinationId, Guid sessionId, ISender sender, IPacketFormatter packetFormatter) : base(ident, sessionId, sender, packetFormatter, Operation.Invite, Status.Ok) { Packet.SetDestinationId(destinationId); }
public ServerGetId(ClientData source, ISessionsRepository sessionsRepository, IPacketFormatter packetFormatter) : base(source, sessionsRepository, packetFormatter, Operation.GetId, Status.Ok) { }
public ClientSendMessage(int ident, Guid sessionId, ISender sender, IPacketFormatter packetFormatter, string messageToSend) : base(ident, sessionId, sender, packetFormatter, Operation.Message, Status.Ok) { Packet.SetMessage(messageToSend); }