private static void CallEvent(ServerRoles instance) { try { Player.UnverifiedPlayers.TryGetValue(instance._hub, out Player player); // Means the player connected before WaitingForPlayers event is fired // Let's call Joined event, since it wasn't called, to avoid breaking the logic of the order of event calls // Blame NorthWood if (player == null) { Joined.CallEvent(instance._hub, out player); } PlayerAPI.Dictionary.Add(instance._hub.gameObject, player); player.IsVerified = true; player.RawUserId = player.UserId.GetRawUserId(); Log.SendRaw($"Player {player.Nickname} ({player.UserId}) ({player.Id}) connected with the IP: {player.IPAddress}", ConsoleColor.Green); PlayerEvents.OnVerified(new VerifiedEventArgs(player)); } catch (Exception ex) { Log.Error($"{typeof(Verified).FullName}.{nameof(CallEvent)}:\n{ex}"); } }
private Server _Connect(string sqlServer) { Server RetVal = new Server(); if (ParamUserId == "") { RetVal.ConnectionContext.LoginSecure = true; } else { RetVal.ConnectionContext.LoginSecure = false; RetVal.ConnectionContext.Login = ParamUserId; RetVal.ConnectionContext.Password = ParamPassword; } StringBuilder LogText = new StringBuilder($"-- ##### Connecting to the server : {sqlServer} ##### ... :"); try { IsSqlConnectionActive = true; foreach (ServerRole ServerRoleItem in RetVal.Roles) { ServerRoles.Add(ServerRoleItem.Name); } LogText.Append("OK"); return(RetVal); } catch (Exception ex) { IsSqlConnectionActive = false; LogText.Append($"FAILED : {ex.Message}"); return(null); } finally { Log(LogText.ToString()); } }
internal static void Prefix(ServerRoles __instance, ref string i) { Player pl = Player.List.Where(x => x.ServerRoles == __instance).FirstOrDefault(); if (pl == null) { return; } if (!EventHandlers.Stats.TryGetValue(pl.UserId, out Stats imain)) { return; } int lvl = imain.lvl; string pref = $"{lvl} {Cfg.Lvl}"; string admin = ""; string your = ""; if (pl.Adminsearch()) { admin = $"{pl.Group.BadgeText} | "; } if (i != "") { your = $" | {i}"; } if (!i.Contains(pref)) { i = $"{admin}{pref}{your}"; } }
private void handler(AdminQueryEvent ev, string perm, bool hierarchy = false) { ServerRoles serverRoles = ((UnityEngine.GameObject)ev.Admin.GetGameObject()).GetComponent <ServerRoles>(); PermissionsHandler permissionsHandler = ServerStatic.GetPermissionsHandler(); if ((permissionsHandler.StaffAccess && serverRoles.Staff) || (permissionsHandler.ManagersAccess && serverRoles.RaEverywhere) || (permissionsHandler.BanningTeamAccess && serverRoles.RaEverywhere)) { return; } Server server = PluginManager.Manager.Server; if (hierarchy && plugin.GetConfigBool("AP_HIERARCHY_ENABLE")) { bool isHigher = true; string[] queryArgs = ev.Query.Split(' '); if (queryArgs.Length > 1) { List <Player> playerList = server.GetPlayers(""); string[] players = queryArgs[1].Split('.'); playerList = playerList.FindAll(p => { if (Array.IndexOf(players, p.PlayerId.ToString()) > -1) { return(true); } return(false); }); if (playerList.Count > 0) { foreach (Player player in playerList) { if (!checkHierarchy(ev.Admin, player)) { isHigher = false; } } } } if (!isHigher) { ev.Successful = false; ev.Handled = true; ev.Output = "Player is higher rank than you!"; } } if (!hasPerm(ev.Admin, ev.Admin.GetUserGroup().Name, perm)) { ev.Successful = false; ev.Handled = true; ev.Output = "You Don't Have Permission to do that! You require the permission " + perm + "!"; } }
private static bool Prefix(ServerRoles __instance, UserGroup group) { var ev = new ChangingGroupEventArgs(API.Features.Player.Get(__instance.gameObject), group); Player.OnChangingGroup(ev); return(ev.IsAllowed); }
public static Npc CreateNPC(Vector3 pos, Vector2 rot, Vector3 scale, RoleType type = RoleType.ClassD, ItemType itemHeld = ItemType.None, string name = "(EMPTY)", string root_node = "default_node.yml") { GameObject obj = UnityEngine.Object.Instantiate( NetworkManager.singleton.spawnPrefabs.FirstOrDefault(p => p.gameObject.name == "Player")); CharacterClassManager ccm = obj.GetComponent <CharacterClassManager>(); pos = new Vector3(pos.x, pos.y - (1f - scale.y) * Plugin.Instance.Config.NpcSizePositionMultiplier, pos.z); obj.transform.localScale = scale; obj.transform.position = pos; QueryProcessor processor = obj.GetComponent <QueryProcessor>(); processor.NetworkPlayerId = QueryProcessor._idIterator++; processor._ipAddress = "127.0.0.WAN"; ccm.CurClass = type; obj.GetComponent <PlayerStats>().SetHPAmount(ccm.Classes.SafeGet(type).maxHP); obj.GetComponent <NicknameSync>().Network_myNickSync = name; ServerRoles roles = obj.GetComponent <ServerRoles>(); roles.MyText = "NPC"; roles.MyColor = "red"; NetworkServer.Spawn(obj); PlayerManager.AddPlayer(obj); //I'm not sure if I need this Player ply_obj = new Player(obj); Player.Dictionary.Add(obj, ply_obj); Player.IdsCache.Add(ply_obj.Id, ply_obj); Npc npcc = obj.AddComponent <Npc>(); npcc.ItemHeld = itemHeld; npcc.RootNode = TalkNode.FromFile(Path.Combine(Config.NPCs_nodes_path, root_node)); npcc.NPCPlayer.ReferenceHub.transform.localScale = scale; npcc.NPCPlayer.SessionVariables.Add("IsNPC", true); npcc.AttachedCoroutines.Add(Timing.CallDelayed(0.3f, () => { npcc.NPCPlayer.ReferenceHub.playerMovementSync.OverridePosition(pos, 0, true); npcc.NPCPlayer.Rotations = rot; })); npcc.AttachedCoroutines.Add(Timing.CallDelayed(0.4f, () => { npcc.FireEvent(new NPCOnCreatedEvent(npcc, null)); })); return(npcc); }
public void RaLogin() { ServerRoles.RemoteAdmin = true; ServerRoles.Permissions = SynapseGroup.GetVanillaPermissionValue() | ServerRoles._globalPerms; ServerRoles.RemoteAdminMode = GlobalRemoteAdmin ? ServerRoles.AccessMode.GlobalAccess : ServerRoles.AccessMode.PasswordOverride; if (!ServerRoles.AdminChatPerms) { ServerRoles.AdminChatPerms = SynapseGroup.HasVanillaPermission(PlayerPermissions.AdminChat); } ServerRoles.TargetOpenRemoteAdmin(Connection, false); }
private static bool RefreshPermission(ServerRoles __instance, bool disp = false) { try { var player = __instance.GetPlayer(); player.RefreshPermission(disp); } catch (Exception e) { Logger.Get.Error($"Synapse-Permission: RefreshPermissionPatch failed!!\n{e}"); } return(false); }
public static bool Prefix(ref ServerRoles __instance, string i) { CharacterClassManager cmm = __instance.gameObject.GetComponent <CharacterClassManager>(); if (cmm.NetworkIsVerified) { if (Player.Get(cmm.UserId).GlobalBadge.HasValue) { Log.Warn("Changing a player's badge who has global badge is not allowed!"); return(false); } } return(true); }
public static void SetPermission(this Smod2.API.Player self, string color, string badge, double permission, bool cover, bool hidden, bool isStaff = false) { GameObject player = (GameObject)self.GetGameObject(); ServerRoles ComponentRole = player.GetComponent <ServerRoles>(); UserGroup group = new UserGroup(); group.BadgeColor = color; group.BadgeText = badge; group.Permissions = (ulong)permission; group.Cover = cover; group.HiddenByDefault = hidden; ComponentRole.SetGroup(group, false, false, false); if (isStaff) { ComponentRole.Staff = true; } }
private static bool Prefix(ServerRoles __instance, UserGroup group) { try { var ev = new ChangingGroupEventArgs(API.Features.Player.Get(__instance.gameObject), group); Player.OnChangingGroup(ev); return(ev.IsAllowed); } catch (Exception e) { Exiled.API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.ChangingGrounp: {e}\n{e.StackTrace}"); return(true); } }
public static bool Prefix(ServerRoles __instance, UserGroup group) { if (EventPlugin.SetGroupEventDisable) { return(true); } try { bool allow = true; Events.InvokeSetGroup(__instance.gameObject, ref group, ref allow); return(allow); } catch (Exception e) { Log.Error($"SetGroup Error: {e}"); return(true); } }
/// <summary> /// Runs before the first update. /// </summary> private void Start() { _roles = GetComponent <ServerRoles>(); _nextCycle = Time.time; _originalColor = _roles.NetworkMyColor; }
/// <summary> /// Callback for patching /// </summary> /// <param name="__instance"></param> private static void CallCmdServerSignatureCompletePostFix(ServerRoles __instance) { Instance.AddWelcomeController(__instance.gameObject); }
private static bool Prefix(ServerRoles __instance) { return(false); }
public void Awake() { Roles = GetComponent <ServerRoles>(); NextCycle = Time.time; OriginalColor = Roles.NetworkMyColor; }
private void CommandHandler(AdminQueryEvent ev) { ServerRoles serverRoles = ((UnityEngine.GameObject)ev.Admin.GetGameObject()).GetComponent <ServerRoles>(); PermissionsHandler permissionsHandler = ServerStatic.GetPermissionsHandler(); if ((permissionsHandler.StaffAccess && serverRoles.Staff) || (permissionsHandler.ManagersAccess && serverRoles.RaEverywhere) || (permissionsHandler.BanningTeamAccess && serverRoles.RaEverywhere)) { return; } try { int pos = Array.IndexOf(plugin.GetConfigList("AP_COMMANDS_*"), ev.Admin.SteamId); if (pos > -1) { return; } pos = Array.IndexOf(plugin.GetConfigList("AP_COMMANDS_*"), ev.Admin.GetUserGroup().Name); if (pos > -1) { return; } Dictionary <string, string> dic = plugin.GetConfigDict("AP_COMMANDS"); string listString; if (!dic.TryGetValue(ev.Query.Split(' ')[0].ToLower(), out listString)) { ev.Successful = false; ev.Handled = true; ev.Output = "You Don't Have Permission to do that!"; return; } string[] users = ParseCommaSeparatedString(listString); bool canDo = false; if (users.Length > 0) { pos = Array.IndexOf(users, ev.Admin.SteamId); if (pos > -1) { canDo = true; } pos = Array.IndexOf(users, ev.Admin.GetUserGroup().Name); if (pos > -1) { canDo = true; } } if (!canDo) { ev.Successful = false; ev.Handled = true; ev.Output = "You Don't Have Permission to do that!"; } } catch (Exception e) { plugin.Error(e.ToString()); ev.Successful = false; ev.Handled = true; } }
private void GiveHandler(AdminQueryEvent ev) { ServerRoles serverRoles = ((UnityEngine.GameObject)ev.Admin.GetGameObject()).GetComponent <ServerRoles>(); PermissionsHandler permissionsHandler = ServerStatic.GetPermissionsHandler(); if ((permissionsHandler.StaffAccess && serverRoles.Staff) || (permissionsHandler.ManagersAccess && serverRoles.RaEverywhere) || (permissionsHandler.BanningTeamAccess && serverRoles.RaEverywhere)) { return; } Server server = PluginManager.Manager.Server; if (plugin.GetConfigBool("AP_HIERARCHY_ENABLE")) { bool isHigher = true; string[] queryArgs = ev.Query.Split(' '); if (queryArgs.Length > 1) { List <Player> playerList = server.GetPlayers(""); string[] players = queryArgs[1].Split('.'); playerList = playerList.FindAll(p => { if (Array.IndexOf(players, p.PlayerId.ToString()) > -1) { return(true); } return(false); }); if (playerList.Count > 0) { foreach (Player player in playerList) { if (!checkHierarchy(ev.Admin, player)) { isHigher = false; } } } } if (!isHigher) { ev.Successful = false; ev.Handled = true; ev.Output = "Player is higher rank than you!"; } } string perm = ""; string[] args = ev.Query.Split(' '); if (args.Length != 3) { return; } int itemCode; if (!Int32.TryParse(args[args.Length - 1], out itemCode)) { return; } switch (itemCode) { case (int)ItemType.JANITOR_KEYCARD: case (int)ItemType.SCIENTIST_KEYCARD: case (int)ItemType.MAJOR_SCIENTIST_KEYCARD: case (int)ItemType.ZONE_MANAGER_KEYCARD: case (int)ItemType.GUARD_KEYCARD: case (int)ItemType.SENIOR_GUARD_KEYCARD: case (int)ItemType.CONTAINMENT_ENGINEER_KEYCARD: case (int)ItemType.MTF_LIEUTENANT_KEYCARD: case (int)ItemType.MTF_COMMANDER_KEYCARD: case (int)ItemType.FACILITY_MANAGER_KEYCARD: case (int)ItemType.CHAOS_INSURGENCY_DEVICE: case (int)ItemType.O5_LEVEL_KEYCARD: perm = "AP_RM_PLAYER_GIVE_KEYCARD"; break; case (int)ItemType.RADIO: case (int)ItemType.COM15: case (int)ItemType.MEDKIT: case (int)ItemType.FLASHLIGHT: case (int)ItemType.WEAPON_MANAGER_TABLET: case (int)ItemType.DISARMER: perm = "AP_RM_PLAYER_GIVE_TOOL"; break; case (int)ItemType.MICROHID: case (int)ItemType.E11_STANDARD_RIFLE: case (int)ItemType.P90: case (int)ItemType.MP4: case (int)ItemType.USP: case (int)ItemType.LOGICER: perm = "AP_RM_PLAYER_GIVE_WEAPON"; break; case (int)ItemType.FRAG_GRENADE: case (int)ItemType.FLASHBANG: perm = "AP_RM_PLAYER_GIVE_GRENADE"; break; case (int)ItemType.DROPPED_7: case (int)ItemType.DROPPED_9: case (int)ItemType.DROPPED_5: perm = "AP_RM_PLAYER_GIVE_AMMO"; break; case (int)ItemType.COIN: case (int)ItemType.CUP: perm = "AP_RM_PLAYER_GIVE_OTHER"; break; } if (!hasPerm(ev.Admin, ev.Admin.GetUserGroup().Name, perm)) { ev.Successful = false; ev.Handled = true; ev.Output = "You Don't Have Permission to do that! You require the permission " + perm + "!"; } }
/// <summary> /// Is run whenever a user joins the server (instead of pre-authenticates) /// </summary> /// <param name="gameObject"></param> public void SmartGuardDeepCheck(GameObject go) { try { if (!_enable) { return; } CharacterClassManager ccm = go.GetComponent <CharacterClassManager>(); ServerRoles sr = go.GetComponent <ServerRoles>(); NicknameSync ns = go.GetComponent <NicknameSync>(); CustomLiteNetLib4MirrorTransport cln = go.GetComponent <CustomLiteNetLib4MirrorTransport>(); string domain = ccm.UserId.Split('@')[1].ToLower(); //Whitelist Check if (sr.BypassStaff && _skStaffGlobal) { Base.SmartGuard("User is global staff. Skipping..."); return; } else if (sr.RemoteAdmin && _skStaffServer) { Base.SmartGuard("User is server staff. Skipping..."); return; } else if (_uidWhitelist.Contains(ccm.UserId)) { Base.SmartGuard("User's UserId is whitelisted. Skipping..."); } else if (_nameWhitelist.Contains(ns.MyNick)) { Base.SmartGuard("User's name is whitelisted (not recommended). Skipping..."); return; } //Blacklist Check if (_nameFilterSmart) { string antil33t = _rgx.Replace(ns.MyNick.ToLower(), string.Empty); foreach (KeyValuePair <string, string> pair in leetrules) { antil33t = antil33t.Replace(pair.Key, pair.Value); } if (_nameBlacklist.Contains(antil33t)) { if (_banDurationOne == 0) { HandlePunishments(go, "Blacklisted name"); return; } else if (_banDurationOne > 0) { HandlePunishments(go, "Blacklisted name"); return; } } } else if (!_nameFilterSmart) { if (_nameBlacklist.Contains(ns.MyNick.ToLower())) { if (_banDurationOne == 0) { HandlePunishments(go, "Blacklisted name"); return; } else if (_banDurationOne > 0) { HandlePunishments(go, "Blacklisted name"); return; } } } if (_uidBlacklist.Contains(ccm.UserId)) { if (_banDurationOne == 0) { HandlePunishments(go, "Blacklisted UID"); } else if (_banDurationOne > 0) { HandlePunishments(go, "Blacklisted UID"); } } bool doContinue = true; if (domain == "discord") { doContinue = CheckDiscord(go); } else if (domain == "steam") { doContinue = CheckSteam(go); } if (!doContinue) { return; } } catch (Exception e) { Base.Error(e.ToString()); } }
public IEnumerable <IResource> GetResources() { yield return(new ServerRolesContext(ServerRoles.EmptyToNull() ?? new[] { ServerRole.ContentManagement | ServerRole.ContentDelivery | ServerRole.Publishing | ServerRole.ContentIndexing })); var context = new GenericSitecoreInformationContext(ServiceClient ?? DefaultServiceClient); var instanceName = InstanceName; if (!string.IsNullOrEmpty(instanceName)) { context.InstanceName = instanceName; } var assemblies = Assemblies; if (assemblies != null) { context.Assemblies = new AssemblyFileCollection(assemblies); } var version = Version; if (version != null) { context.SetVersion(version); } var configuration = Configuration; if (configuration != null) { context.Configuration = configuration; context.WebConfigFile = configuration; } var include = IncludeFiles; if (include != null) { context.IncludeFiles = include; } var globalAsax = GlobalAsaxFile; if (globalAsax != null) { context.GlobalAsaxFile = globalAsax; } var pipelines = Pipelines; if (pipelines != null) { context.Pipelines = pipelines.ToDictionary(x => x.Name, x => x); } var defaultPipelines = DefaultPipelines; if (defaultPipelines != null) { context.DefaultsContext.Pipelines = defaultPipelines.ToDictionary(x => x.Name, x => x); } var installedModules = InstalledModules; if (installedModules != null) { context.ModulesInformation = new MockModulesContext(installedModules); } yield return(context); }
static private void GlobalModWarning() { int Rect2Order = 0; GUI.color = Color.red; // if (PlayerList.anyAdminOnServer) // { // GUI.Label(new Rect(Screen.width - 300, RectOrder * 20 + 10, 500, 30), "Admin is on"); // RectOrder++; // } foreach (var player in GameObject.FindGameObjectsWithTag("Player")) { ServerRoles SR = player.GetComponent <ServerRoles>(); NicknameSync nickname = player.GetComponent <NicknameSync>(); PermissionsHandler pm = player.GetComponent <PermissionsHandler>(); CharacterClassManager ccm = player.GetComponent <CharacterClassManager>(); SteamManager SM = player.GetComponent <SteamManager>(); if (_isGlobalMod(ccm.SteamId)) { WarningMessage = nickname.myNick + " is a global moderator !!"; } try { if (pm.ManagersAccess) { GUI.Label(new Rect(Screen.width - 300, Rect2Order * 20, 500, 30), nickname.myNick + " has global Managers Access"); } } catch { } try { if (SR.Permissions != 0) { GUI.Label(new Rect(Screen.width - 300, Rect2Order * 20, 500, 30), nickname.myNick + " has permission number " + SR.Permissions); Rect2Order++; } } catch { } if (SR.RaEverywhere) { GUI.Label(new Rect(Screen.width - 300, Rect2Order * 20, 500, 30), nickname.myNick + " is global admin"); Rect2Order++; } if (SR.Staff) { GUI.Label(new Rect(Screen.width - 300, Rect2Order * 20, 500, 30), nickname.myNick + " is staff"); Rect2Order++; } if ((bool)SR.GetType().GetField("OverwatchEnabled", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(SR)) { GUI.Label(new Rect(Screen.width - 300, Rect2Order * 20, 500, 30), nickname.myNick + " has entered Overwatch Mode!!"); } } }
private void KickBanHandler(AdminQueryEvent ev) { ServerRoles serverRoles = ((UnityEngine.GameObject)ev.Admin.GetGameObject()).GetComponent <ServerRoles>(); PermissionsHandler permissionsHandler = ServerStatic.GetPermissionsHandler(); if ((permissionsHandler.StaffAccess && serverRoles.Staff) || (permissionsHandler.ManagersAccess && serverRoles.RaEverywhere) || (permissionsHandler.BanningTeamAccess && serverRoles.RaEverywhere)) { return; } Server server = PluginManager.Manager.Server; if (plugin.GetConfigBool("AP_HIERARCHY_ENABLE")) { bool isHigher = true; string[] queryArgs = ev.Query.Split(' '); if (queryArgs.Length > 1) { List <Player> playerList = server.GetPlayers(""); string[] players = queryArgs[1].Split('.'); playerList = playerList.FindAll(p => { if (Array.IndexOf(players, p.PlayerId.ToString()) > -1) { return(true); } return(false); }); if (playerList.Count > 0) { foreach (Player player in playerList) { if (!checkHierarchy(ev.Admin, player)) { isHigher = false; } } } } if (!isHigher) { ev.Successful = false; ev.Handled = true; ev.Output = "Player is higher rank than you!"; } } if (plugin.GetConfigBool("AP_DISABLE")) { bool isHigher = true; string[] queryArgs = ev.Query.Split(' '); if (queryArgs.Length > 1) { List <Player> playerList = new List <Player>(); foreach (string plyID in queryArgs[1].Split('.')) { playerList.AddRange(server.GetPlayers(plyID)); } if (playerList.Count > 0) { foreach (Player player in playerList) { if (!checkHierarchy(ev.Admin, player)) { isHigher = false; } } } } if (!isHigher) { ev.Successful = false; ev.Handled = true; ev.Output = "Player is higher rank than you!"; } } string perm = ""; string[] args = ev.Query.Split(' '); if (args.Length < 3) { return; } int time = Int32.Parse(args[args.Length - 1]); if (time <= 0) { perm = "AP_RM_PLAYER_KICK"; } else if (time > 0 && time < 60) { perm = "AP_RM_PLAYER_MINUTES"; } else if (time > 59 && time < 1440) { perm = "AP_RM_PLAYER_HOURS"; } else if (time > 1439 && time < 525600) { perm = "AP_RM_PLAYER_DAYS"; } else if (time > 525599) { perm = "AP_RM_PLAYER_YEARS"; } else { ev.Successful = false; ev.Handled = true; return; } if (!hasPerm(ev.Admin, ev.Admin.GetUserGroup().Name, perm)) { ev.Successful = false; ev.Handled = true; ev.Output = "You Don't Have Permission to do that! You require the permission " + perm + "!"; } }
internal static void Prefix(ServerRoles __instance, ref string i) { if (i == "default") { Player pl = Player.List.Where(x => x.ServerRoles == __instance).FirstOrDefault(); if (pl == null) { return; } if (!EventHandlers.Stats.TryGetValue(pl.UserId, out Stats imain)) { return; } int lvl = imain.lvl; string color = i; if (lvl == 1) { color = "green"; } else if (lvl == 2) { color = "crimson"; } else if (lvl == 3) { color = "cyan"; } else if (lvl == 4) { color = "deep_pink"; } else if (lvl == 5) { color = "yellow"; } else if (lvl == 6) { color = "orange"; } else if (lvl == 7) { color = "lime"; } else if (lvl == 8) { color = "pumpkin"; } else if (lvl == 9) { color = "red"; } else if (lvl >= 10 && 20 >= lvl) { color = "green"; } else if (lvl >= 20 && 30 >= lvl) { color = "crimson"; } else if (lvl >= 30 && 40 >= lvl) { color = "cyan"; } else if (lvl >= 40 && 50 >= lvl) { color = "deep_pink"; } else if (lvl >= 50 && 60 >= lvl) { color = "yellow"; } else if (lvl >= 60 && 70 >= lvl) { color = "orange"; } else if (lvl >= 70 && 80 >= lvl) { color = "lime"; } else if (lvl >= 80 && 90 >= lvl) { color = "pumpkin"; } else if (lvl >= 90 && 100 >= lvl) { color = "red"; } else if (lvl >= 100) { color = "red"; } i = color; } }