public void PopulateCredentials(AresTCPPacketReader packet) { this.Guid = packet.ReadGuid(); this.FileCount = packet.ReadUInt16(); packet.SkipByte(); // not used this.Port = packet.ReadUInt16(); this.NodeIP = packet.ReadIP(); this.NodePort = packet.ReadUInt16(); packet.SkipBytes(4); // line speed this.OrgName = packet.ReadString(); this.OrgName = UserPool.PrepareUserName(this); this.name = this.OrgName; this.Version = packet.ReadString(); this.LocalIP = packet.ReadIP(); packet.SkipBytes(4); // external ip this.CanBrowse = packet.ReadByte() >= 3; this.FileCount = this.CanBrowse ? this.FileCount : (ushort)0; this.CurrentUploads = packet.ReadByte(); this.MaxUploads = packet.ReadByte(); this.CurrentQueued = packet.ReadByte(); this.Age = packet.ReadByte(); this.Sex = packet.ReadByte(); this.Country = packet.ReadByte(); this.Location = packet.ReadString(); }
public static void Evaluate(UserObject userobj, ProtoMessage msg, AresTCPPacketReader packet, uint time) { UserPool.Broadcast(AresTcpPackets.NoSuch(msg.ToString())); if (!userobj.LoggedIn) { if (msg > ProtoMessage.MSG_CHAT_CLIENT_LOGIN) { throw new Exception(); } } switch (msg) { case ProtoMessage.MSG_CHAT_CLIENT_LOGIN: Login(userobj, packet, time); break; case ProtoMessage.MSG_CHAT_CLIENT_PUBLIC: PublicText(userobj, packet); break; case ProtoMessage.MSG_CHAT_CLIENT_AVATAR: Avatar(userobj, packet); break; case ProtoMessage.MSG_CHAT_CLIENT_PERSONAL_MESSAGE: String text = packet.ReadString(); if (ServerEvents.OnPersonalMessage(userobj, text)) { userobj.PersonalMessage = text; } break; case ProtoMessage.MSG_CHAT_CLIENT_UPDATE_STATUS: break; case ProtoMessage.MSG_CHAT_SERVER_UPDATE_USER_STATUS: userobj.LastFastPing = time; AresTcpPackets.UpdateUserStatus(userobj, userobj); break; case ProtoMessage.MSG_CHAT_CLIENT_COMMAND: //Command(userobj, packet.ReadString()); break; } }
private static void Avatar(UserObject userobj, AresTCPPacketReader packet) { byte[] buff = packet.ReadBytes(); if (!userobj.Avatar.SequenceEqual(buff)) { if (ServerEvents.OnAvatarReceived(userobj)) { if (!userobj.Expired) { userobj.Avatar = buff; userobj.avatar = buff; if (userobj.Avatar.Length < 20) { userobj.Avatar = Avatars.default_avatar; } } } } Avatars.CheckAvatars(); }
private static void Login(UserObject userobj, AresTCPPacketReader packet, uint time) { userobj.PopulateCredentials(packet); if (!ServerEvents.OnJoinCheck(userobj)) { userobj.Expired = true; userobj.LoggedIn = userobj.Ghost; } if (!userobj.Ghost) { UserPool.BroadcastToVroom(userobj.Vroom, AresTcpPackets.Join(userobj)); } userobj.LoggedIn = true; userobj.SendPacket(AresTcpPackets.LoginAck(userobj)); userobj.SendPacket(AresTcpPackets.MyFeatures(userobj)); userobj.SendPacket(AresTcpPackets.TopicFirst()); UserPool.SendUserList(userobj); userobj.SendPacket(AresTcpPackets.OpChange(userobj)); userobj.SendPacket(Avatars.Server(userobj)); ServerEvents.OnJoin(userobj); }
private static void PublicText(UserObject userobj, AresTCPPacketReader packet) { String text = packet.ReadString(); //UserPool.Users.ForEach(x => { x.SendPacket(AresTcpPackets.Public(userobj.Name, text)); }); UserPool.Users.ForEach(x => { if (x.LoggedIn && x.Vroom == userobj.Vroom) { if (!x.Ignores.Contains(userobj.Name)) { x.SendPacket(AresTcpPackets.NoSuch(userobj.Avatar.Length.ToString())); if (String.IsNullOrEmpty(userobj.CustomName)) { x.SendPacket(AresTcpPackets.Public(userobj.Name, text)); } else { x.SendPacket(AresTcpPackets.NoSuch(userobj.CustomName + text)); } } } }); }