示例#1
0
        internal void ChangeName(string oldname, string newname)
        {
            newname = newname.FormatUsername();

            if (string.IsNullOrWhiteSpace(newname))
            {
                newname = ExternalIp.AnonUsername();
            }

            if (oldname != newname)
            {
                name = newname;
                RaisePropertyChanged(nameof(Name));

                server.SendPacket((s) =>
                                  s != this &&
                                  s.Vroom == Vroom &&
                                  s.CanSee(this),
                                  new Parted()
                {
                    Username = oldname
                });

                PerformQuickLogin();
            }
        }
示例#2
0
        internal void HandleJoin(PacketEventArgs e)
        {
            Login login = (Login)e.Packet;

            Guid       = login.Guid;
            Encryption = login.Encryption == 250;
            ListenPort = login.ListenPort;
            NodeIp     = login.NodeIp;
            NodePort   = login.NodePort;
            name       = login.Username.FormatUsername();
            if (string.IsNullOrWhiteSpace(name))
            {
                name = ExternalIp.AnonUsername();
            }
            orgname     = name;
            Version     = login.Version;
            LocalIp     = login.LocalIp;
            Browsable   = (login.SupportFlag & 2) == 2;
            Compression = (login.SupportFlag & 4) == 4;
            Age         = login.Age;
            Gender      = login.Gender;
            Country     = login.Country;
            Region      = login.Region;
            Features    = login.Features;

            if ((Features & ClientFeatures.OPUS_VOICE) == ClientFeatures.OPUS_VOICE)
            {
                Features |= ClientFeatures.VOICE;
            }

            if ((Features & ClientFeatures.PRIVATE_OPUS_VOICE) == ClientFeatures.PRIVATE_OPUS_VOICE)
            {
                Features |= ClientFeatures.PRIVATE_VOICE;
            }

            var record    = server.History.Add(this);
            var autologin = server.History.Admin.Passwords.Find((s) => s.ClientId.Equals(record));

            admin = (autologin != null) ? autologin.Level : admin;
            admin = (LocalHost) ? AdminLevel.Host : admin;

            if (admin != AdminLevel.User)
            {
                RaisePropertyChanged("Admin");
            }

            if (!LocalHost)
            {
                DnsHelper.Resolve(record, FinishResolve);
            }
            else if (AllowedJoin(record))
            {
                FinishJoin();
            }
        }
示例#3
0
        internal void HandleJoin(PacketEventArgs e)
        {
            Login login = (Login)e.Packet;

            Guid       = login.Guid;
            ClientId   = new ClientId(Guid, ExternalIp);
            Encryption = login.Encryption == 250;
            ListenPort = login.ListenPort;
            NodeIp     = login.NodeIp;
            NodePort   = login.NodePort;
            name       = login.Username.FormatUsername();
            if (string.IsNullOrWhiteSpace(name))
            {
                name = ExternalIp.AnonUsername();
            }
            OrgName = name;
            Version = login.Version;
            LocalIp = login.LocalIp;
            Age     = login.Age;
            Gender  = login.Gender;
            Country = login.Country;
            Region  = login.Region;

            HandleFeatures(login);

            var record    = server.History.Add(this);
            var autologin = server.History.Admin.Passwords.Find((s) => s.ClientId.Equals(record.ClientId));

            admin = (autologin != null) ? autologin.Level : admin;
            admin = (LocalHost) ? AdminLevel.Host : admin;

            if (AllowedJoin(record))
            {
                if (server.Config.BotProtection)
                {
                    if (!record.Trusted)
                    {
                        IsCaptcha = true;
                        return;
                    }
                }

                FinishJoin();
            }
            else
            {
                server.Stats.Rejected++;
            }
        }