public async Task <bool> DoKick(KickingEventArgs ev) { string banned_user_id = ev.Target.UserId; Player adminHub = ev.Issuer; string adminId = "idk"; Log.Info("Kick DETECTED:"); Log.Info($"Banned ID: {banned_user_id}"); Log.Info($"Admin Name: {adminHub.Nickname}"); Log.Info($"Admin ID: {adminId}"); if (await WebTask.IssueKick(plugin.Config.APIKey, banned_user_id, ev.Target.Nickname, adminId, ev.Reason)) { Log.Info($"Successfully pushed kick for {banned_user_id} to the web API!"); SendClientToServer(ev.Target, 7796); // We can safely remove the ban since the web client will handle it from here. //BanHandler.RemoveBan(ev.Details.Id, ev.Type); return(true); } else { // Error out to requesting admin adminHub.Broadcast(15, $"ERROR while adding kick to web API for: {ev.Target.Nickname}({banned_user_id})"); Log.Error($"FATAL KICKING ERROR! WebTask.IssueKick() Failed to push to web API"); ServerConsole.Disconnect(ev.Target.GameObject.gameObject, ev.Reason); return(false); } }
public async Task <bool> DoBan(BanningEventArgs ev) { string banned_user_id = ev.Target.UserId; string banned_nickname = ev.Target.Nickname; string banned_ip_address = ev.Target.IPAddress; int banduration = ev.Duration; Player adminHub = ev.Issuer; Log.Info("--------------------------------------"); Log.Info("Ban detected, plugin taking over:"); Log.Info($"Banned Name: {banned_nickname}"); Log.Info($"Banned ID: {banned_user_id}"); Log.Info($"Banned IP: {banned_ip_address}"); Log.Info($"Admin Name: {adminHub.Nickname}"); Log.Info($"Admin ID: {adminHub.UserId}"); Log.Info($"Duration: {banduration}"); if (banduration.ToString().Contains("1576800000")) { banduration = 0; Log.Info($"Duration: UPDATED TO PERM!"); } string reason = ev.Reason; if (reason == "") { reason = "No reason provided. Please contact a Head Administrator for further details."; } if (await WebTask.IssueBan(plugin.Config.APIKey, banned_user_id, banned_nickname, banned_ip_address, adminHub.UserId, banduration, reason, ev.Target.ReferenceHub.serverRoles.DoNotTrack)) { Log.Info($"Successfully pushed ban for {banned_user_id} ({banned_ip_address}) to the web API!"); Log.Info("--------------------------------------"); SendClientToServer(ev.Target, 7790); // We can safely remove the ban since the web client will handle it from here. //BanHandler.RemoveBan(ev.Target.UserId, ev.); return(true); } else { // Error out to requesting admin adminHub.Broadcast(15, $"ERROR while adding ban to web API for: {banned_nickname}({banned_user_id})"); Log.Error($"FATAL BANNING ERROR! WebTask.IssueBan() Failed to push to web API"); // Actually ban them since the webapi decided to do the funny... BanDetails ban = new BanDetails { OriginalName = ev.Target.Nickname, Id = ev.Target.UserId, IssuanceTime = TimeBehaviour.CurrentTimestamp(), Expires = DateTime.UtcNow.AddMinutes((double)ev.Duration).Ticks, Reason = ev.Reason, Issuer = ev.Issuer.UserId }; BanHandler.IssueBan(ban, BanHandler.BanType.UserId); Log.Info("Pushed manual server-side ban."); Log.Info("--------------------------------------"); return(false); } return(false); }
public async Task DisconnectChecks(LeftEventArgs ev) { PlayerInfo pinfo; if (PlayerInfoDict.TryGetValue(ev.Player.UserId, out pinfo)) { long sessionTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds() - pinfo.connectTime; Log.Info($"[Player Update] Logging Playerdata for {ev.Player} ({ev.Player.UserId})[{ev.Player.IPAddress}] Session Time: {sessionTime} DNT: {ev.Player.ReferenceHub.serverRoles.DoNotTrack}"); await WebTask.UpdatePlayer(plugin.Config.APIKey, plugin.Config.ServerSlug, ev.Player.UserId, ev.Player.IPAddress, ev.Player.Nickname, ev.Player.ReferenceHub.serverRoles.DoNotTrack, sessionTime); } if (PlayerInfoDict.ContainsKey(ev.Player.UserId)) { PlayerInfoDict.Remove(ev.Player.UserId); } }
public async Task BanChecks(PreAuthenticatingEventArgs ev) { Log.Info($" USERID: {ev.UserId} connected, pulling player info from web api!"); if (plugin.Config.IsLobby) { await WebTask.IsKickedDetail(plugin.Config.APIKey, ev.UserId); await WebTask.IsBannedDetail(plugin.Config.APIKey, ev.UserId, false); } else { if (await WebTask.GetPlayerInfo(plugin.Config.APIKey, ev.UserId)) { PlayerInfo pi; if (PlayerInfoDict.TryGetValue(ev.UserId, out pi)) { ; } { if (pi.isBanned) { Player ply = Player.Get(ev.UserId); if (ply != null) { SendClientToServer(ply, 7790); } else { StartStopwatch(); ToKick.Add(new PlayerToKick(ev.UserId, KickReason.Ban)); } return; } } } } }
public static async Task <bool> DoUploadLogs() { await WebTask.UploadRoundLogs(logList); return(true); }
/****************************************************************************** * ASYNC EVENT HANDLING ******************************************************************************/ public async Task ConnectChecks(JoinedEventArgs ev) { if (ToKick.TryGetValue(new PlayerToKick(ev.Player.UserId, KickReason.Ban), out var tk)) { ToKick.Remove(tk); SendClientToServer(ev.Player, 7790); } PlayerInfo pinfo; if (PlayerInfoDict.TryGetValue(ev.Player.UserId, out pinfo)) { if (pinfo.needsCreating) { await WebTask.CreatePlayer(plugin.Config.APIKey, ev.Player.UserId, ev.Player.Nickname, ev.Player.ReferenceHub.serverRoles.DoNotTrack); return; } if (pinfo.isStaff) { UserGroup ug = ServerStatic.GetPermissionsHandler().GetGroup(pinfo.adminRank); ev.Player.SetRank(pinfo.adminRank, ug); string badgetext = ug.BadgeText; switch (pinfo.adminRank) { case "owner": { pinfo.badgeText = "OWNER"; break; } case "doa": { pinfo.badgeText = "O5-COUNCIL (DIRECTOR)"; break; } case "management": { pinfo.badgeText = "SERVER MANAGER"; break; } case "headadmin": { pinfo.badgeText = "COMMANDER (HEAD-ADMIN)"; break; } case "admin": { pinfo.badgeText = "LIEUTENANT (ADMIN)"; break; } case "moderator": { pinfo.badgeText = "CADET (MOD)"; break; } case "juniormod": { pinfo.badgeText = "FACILITY GUARD (JR.MOD)"; break; } } ev.Player.RankName = badgetext; } if (pinfo.isTop20) { UserGroup rank = ev.Player.Group; if (rank == null) { ev.Player.RankName = "TOP 20 PLAYTIME"; ev.Player.RankColor = "lime"; } else { pinfo.badgeColor = rank.BadgeColor; Log.Info($"[TOP 20] {ev.Player.Nickname} ({ev.Player.UserId}) Is Top20, and is alternating badges. {rank.BadgeText} {rank.BadgeColor}"); } } PlayerInfoDict.Remove(ev.Player.UserId); // Remove old shit PlayerInfoDict.Add(ev.Player.UserId, pinfo); // Add it back } if (!plugin.Config.IsLobby) { Timing.RunCoroutine(MOTD(ev.Player)); } return; }