예제 #1
0
        static void Main(string[] args)
        {
            ClientToken tok = new ClientToken();

            tok.RequestCompleted += RequestCompleted;
            tok.RequestErrored   += RequestErrored;

            string callsign = "sadfsdfsdf";
            string password = "******";
            string globalIP = "IP";

            Wait = false;
            tok.GetToken(callsign, password);

            while (Wait)
            {
                Thread.Sleep(10);
            }

            if (Error)
            {
                Console.WriteLine("Error getting token " + tok.LastError);
                return;
            }

            Console.WriteLine("Got token " + tok.LastToken);

            Wait = true;

            ClientTokenCheck chk = new ClientTokenCheck();

            chk.RequestCompleted += RequestCompleted;
            chk.RequestErrored   += RequestErrored;

            List <string> groups = new List <string>();

            groups.Add("DEVELOPERS");
            groups.Add("Planning.Developers");
            groups.Add("A.GROUP.THAT.NEVER.EXISTS");

            tok.LastToken = string.Empty;

            chk.CheckToken(callsign, tok.LastToken, globalIP, groups);

            while (Wait)
            {
                Thread.Sleep(10);
            }

            if (Error)
            {
                Console.WriteLine("Error getting token " + chk.LastError);
                return;
            }

            Console.WriteLine("Got response OK" + chk.BZID);

            Console.ReadLine();
        }
예제 #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());
            }
        }