Example #1
0
        /// <summary>
        /// Automatically gives operator status using QL's internal op system to all of the server's
        /// current players who are SST users with userlevel Admin or higher.
        /// </summary>
        public async Task AutoOpActiveAdmins()
        {
            if (!_sst.IsMonitoringServer)
            {
                return;
            }
            var cfgHandler = new ConfigHandler();
            var cfg        = cfgHandler.ReadConfiguration();

            if (!cfg.CoreOptions.autoOpAdmins)
            {
                return;
            }

            var userDb   = new DbUsers();
            var allUsers = userDb.GetAllUsers();

            foreach (var u in allUsers.Where(u => _sst.ServerInfo.CurrentPlayers.ContainsKey(u.Name)))
            {
                if (u.AccessLevel <= UserLevel.SuperUser)
                {
                    continue;
                }
                var id = GetPlayerId(u.Name);
                if (id == -1)
                {
                    continue;
                }
                await _sst.QlCommands.SendToQlAsync(string.Format("op {0}", id), false);

                Log.Write(string.Format("Auto-opping {0} (user level: {1})",
                                        u.Name, u.AccessLevel), _logClassType, _logPrefix);
            }
        }
Example #2
0
        /// <summary>
        /// Executes the specified command asynchronously.
        /// </summary>
        /// <param name="c">The command argument information.</param>
        /// <returns><c>true</c> if the command was successfully executed, otherwise <c>false</c>.</returns>
        public async Task <bool> ExecAsync(Cmd c)
        {
            var userDb   = new DbUsers();
            var allUsers = userDb.GetAllUsers();
            var sb       = new StringBuilder();

            foreach (var u in allUsers.Where(u => _sst.ServerInfo.CurrentPlayers.ContainsKey(u.Name)))
            {
                sb.Append(string.Format("^7{0} (^5{1}^7), ", u.Name, u.AccessLevel));
            }
            StatusMessage = string.Format("^5Access levels: {0}", sb.ToString().TrimEnd(',', ' '));
            await SendServerSay(c, StatusMessage);

            return(true);
        }