Ejemplo n.º 1
0
 private void SecurityArea_CheckPlayerAcceptance(object sender, BooleanResultPlayerEventArgs e)
 {
     CheckPlayerAcceptance?.Invoke(this, e);
 }
Ejemplo n.º 2
0
        private void HandleEnter(ServerPlayer player, NetworkMessage msg)
        {
            Logger.Log4("Processing enter for " + player.PlayerID.ToString());

            MsgEnter enter = msg as MsgEnter;

            if (enter == null)
            {
                return;
            }

            if (enter.PlayerType == Data.Players.PlayerTypes.ComputerPlayer)
            {
                if (player.HasValidEnter)   // keep the one valid connection
                {
                    Logger.Log1("Reject Solo bot on  " + player.PlayerID + " connection");
                    player.SendMessage(new MsgReject(MsgReject.RejectionCodes.RejectBadType, Resources.NoRobotsMessage));
                }
                else
                {
                    SendReject(player, MsgReject.RejectionCodes.RejectBadType, Resources.NoRobotsMessage);
                }
                return;
            }

            if (enter.Callsign == string.Empty || enter.Callsign.Length < 3)
            {
                SendReject(player, MsgReject.RejectionCodes.RejectBadCallsign, Resources.BadCallsignMessage);
                return;
            }

            player.DesiredTeam = enter.PlayerTeam;
            player.Callsign    = enter.Callsign;
            player.Motto       = enter.Motto;
            player.Token       = enter.Token;

            Server.BooleanResultPlayerEventArgs args = new Server.BooleanResultPlayerEventArgs(player);
            CheckPlayerAcceptance?.Invoke(this, args);

            if (!args.Result)
            {
                SendReject(player, MsgReject.RejectionCodes.RejectUnknown, Resources.APIRejectMessage);
                return;
            }

            player.HasValidEnter = true;
            if (player.Token == string.Empty && !Config.ProtectRegisteredNames)
            {
                player.AuthStatus = ServerPlayer.AuthStatuses.NoneProvided;
                if (!Config.AllowAnonUsers)
                {
                    SendReject(player, MsgReject.RejectionCodes.RejectBadCallsign, Resources.NoUnregMessage);
                }
                else
                {
                    SendAccept(player);
                }
            }
            else
            {
                Logger.Log3("Starting token verification for " + player.PlayerID.ToString() + ":" + enter.Callsign);

                player.AuthStatus = ServerPlayer.AuthStatuses.InProgress;

                ClientTokenCheck checker = new ClientTokenCheck();
                checker.Tag = player;
                checker.RequestCompleted += this.Checker_RequestCompleted;
                checker.RequestErrored   += this.Checker_RequestErrored;

                checker.CheckToken(player.Callsign, player.Token, player.GetIPAsString(), Config.Security.GetGroupNames());
            }
        }