private void Checker_RequestErrored(object sender, EventArgs e) { Logger.Log4("Token Checkup failed"); ClientTokenCheck checker = sender as ClientTokenCheck; if (checker == null || checker.Tag as ServerPlayer == null) { return; } ServerPlayer player = checker.Tag as ServerPlayer; Logger.Log3("Token verification failed for " + player.PlayerID.ToString() + ":" + player.Callsign); player.AuthStatus = ServerPlayer.AuthStatuses.Failed; if (!Config.AllowAnonUsers) { SendReject(player, MsgReject.RejectionCodes.RejectBadCallsign, Resources.BadAuthMessage); } else { SendAccept(player); } }
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(); }
private void Checker_RequestCompleted(object sender, EventArgs e) { ClientTokenCheck checker = sender as ClientTokenCheck; if (checker == null || checker.Tag as ServerPlayer == null) { return; } ServerPlayer player = checker.Tag as ServerPlayer; Logger.Log3("Token verification returned for " + player.PlayerID.ToString() + ":" + player.Callsign + (checker.OK ? " OK:" : " BAD:") + (checker.NameRegistered ? "REGISTERED" : "UNKNOWN")); if (checker.OK) { player.AuthStatus = ServerPlayer.AuthStatuses.Valid; player.BZID = checker.BZID; player.GroupMemberships = checker.Groups; bool ban = false; string reason = string.Empty; if (CheckIDBan != null) { ban = CheckIDBan(player, ref reason); } if (ban) { PlayerBanned?.Invoke(this, player); SendReject(player, MsgReject.RejectionCodes.RejectIDBanned, reason); } else { SendAccept(player); } } else if (checker.NameRegistered && Config.ProtectRegisteredNames) { SendReject(player, MsgReject.RejectionCodes.RejectBadCallsign, Resources.NameTakenMessagae); } else { if (!Config.AllowAnonUsers) { SendReject(player, MsgReject.RejectionCodes.RejectBadCallsign, Resources.NoUnregMessage); } else { SendAccept(player); } } }
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()); } }