mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2025-01-13 11:01:20 +01:00
More on permission changes.
* Fix color replacing in command protection (had no effect previously). * Use "no permission" message for default bukkit command protection. * Use command protection only, no more parsing pre process for /pl etc. * Other tweaks (update descriptions, add shortcuts / child permissions).
This commit is contained in:
parent
0e56338336
commit
858302b1ba
@ -18,7 +18,6 @@ import fr.neatmonster.nocheatplus.components.JoinLeaveListener;
|
||||
import fr.neatmonster.nocheatplus.config.ConfPaths;
|
||||
import fr.neatmonster.nocheatplus.config.ConfigFile;
|
||||
import fr.neatmonster.nocheatplus.config.ConfigManager;
|
||||
import fr.neatmonster.nocheatplus.permissions.Permissions;
|
||||
import fr.neatmonster.nocheatplus.utilities.TickTask;
|
||||
import fr.neatmonster.nocheatplus.utilities.ds.prefixtree.SimpleCharPrefixTree;
|
||||
|
||||
@ -150,17 +149,6 @@ public class ChatListener extends CheckListener implements INotifyReload, JoinLe
|
||||
final String commandLabel = CommandUtil.getCommandLabel(alias, false);
|
||||
|
||||
final ChatConfig cc = ChatConfig.getConfig(player);
|
||||
|
||||
// Protect some commands to prevent players for seeing which plugins are installed.
|
||||
if (cc.protectPlugins) {
|
||||
// TODO: Use a prefix map and generalize this.
|
||||
// TODO: Configurable message.
|
||||
if ((commandLabel.equals("plugins") || commandLabel.equals("version") || commandLabel.equals("icanhasbukkit")) && !player.hasPermission(Permissions.ADMINISTRATION_PLUGINS)) {
|
||||
player.sendMessage(cc.noCommandPermMessage);
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Prevent /op and /deop commands from being used by players.
|
||||
if (cc.opInConsoleOnly && (commandLabel.equals("op") || commandLabel.equals("deop"))) {
|
||||
|
@ -15,6 +15,7 @@ import org.bukkit.plugin.PluginManager;
|
||||
import fr.neatmonster.nocheatplus.command.CommandUtil;
|
||||
import fr.neatmonster.nocheatplus.config.ConfPaths;
|
||||
import fr.neatmonster.nocheatplus.config.ConfigManager;
|
||||
import fr.neatmonster.nocheatplus.utilities.ColorUtil;
|
||||
|
||||
public class PermissionUtil {
|
||||
|
||||
@ -78,7 +79,7 @@ public class PermissionUtil {
|
||||
* @return
|
||||
*/
|
||||
public static List<CommandProtectionEntry> protectCommands(String permissionBase, Collection<String> ignoredCommands, boolean invertIgnored, boolean ops){
|
||||
return protectCommands(permissionBase, ignoredCommands, invertIgnored, ops, ConfigManager.getConfigFile().getString(ConfPaths.PROTECT_PLUGINS_HIDE_MSG_NOCOMMAND));
|
||||
return protectCommands(permissionBase, ignoredCommands, invertIgnored, ops, ColorUtil.replaceColors(ConfigManager.getConfigFile().getString(ConfPaths.PROTECT_PLUGINS_HIDE_MSG_NOCOMMAND)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -23,8 +23,6 @@ public class Permissions {
|
||||
* d8888888b Y8b "88 888 888 888 888 888 888 888 888 d,dP 888 888 "88 888 888 888 "88 88" 888 888
|
||||
*/
|
||||
private static final String ADMINISTRATION = NOCHEATPLUS + ".admin";
|
||||
// See plugins.
|
||||
public static final String ADMINISTRATION_PLUGINS = ADMINISTRATION + ".plugins";
|
||||
// Debug permission, for player spam (not in plugin.yml, currently).
|
||||
public static final String ADMINISTRATION_DEBUG = ADMINISTRATION + ".debug";
|
||||
|
||||
|
@ -83,6 +83,7 @@ import fr.neatmonster.nocheatplus.players.PlayerData;
|
||||
import fr.neatmonster.nocheatplus.players.PlayerMessageSender;
|
||||
import fr.neatmonster.nocheatplus.updates.Updates;
|
||||
import fr.neatmonster.nocheatplus.utilities.BlockProperties;
|
||||
import fr.neatmonster.nocheatplus.utilities.ColorUtil;
|
||||
import fr.neatmonster.nocheatplus.utilities.OnDemandTickListener;
|
||||
import fr.neatmonster.nocheatplus.utilities.ReflectionUtil;
|
||||
import fr.neatmonster.nocheatplus.utilities.TickTask;
|
||||
@ -653,7 +654,8 @@ public class NoCheatPlus extends JavaPlugin implements NoCheatPlusAPI {
|
||||
|
||||
protected void setupCommandProtection() {
|
||||
final List<CommandProtectionEntry> changedCommands = PermissionUtil.protectCommands(
|
||||
Arrays.asList("plugins", "version", "icanhasbukkit"), Permissions.FILTER_COMMAND, false);
|
||||
Permissions.FILTER_COMMAND, Arrays.asList("plugins", "version", "icanhasbukkit"),
|
||||
true, false, ColorUtil.replaceColors(ConfigManager.getConfigFile().getString(ConfPaths.PROTECT_PLUGINS_HIDE_MSG_NOPERMISSION)));
|
||||
if (this.changedCommands == null) this.changedCommands = changedCommands;
|
||||
else this.changedCommands.addAll(changedCommands);
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ permissions:
|
||||
nocheatplus:
|
||||
description: Allow the player to bypass all checks and give him all administration permissions.
|
||||
children:
|
||||
|
||||
# Check bypass permissions:
|
||||
nocheatplus.checks:
|
||||
description: Allow the player to bypass all checks.
|
||||
children:
|
||||
@ -256,6 +256,7 @@ permissions:
|
||||
nocheatplus.filter.command.nocheatplus:
|
||||
description: Filter permission to allow using sub commands of the /nocheatplus command. This permission should not be necessary to ever be given to any player unless the permission plugin is incompatible with certain aspects of super-perms.
|
||||
|
||||
# Command permissions:
|
||||
nocheatplus.command:
|
||||
description: "All command permissions, do not give lightly - if in doubt use shortcut permissions for moderators (nocheatplus.shortcut.monitor|safeadmin ...)."
|
||||
children:
|
||||
@ -296,24 +297,76 @@ permissions:
|
||||
nocheatplus.command.commands:
|
||||
description: Allow use of the ncp commands command.
|
||||
|
||||
|
||||
# Bypass permissions (other than checks):
|
||||
nocheatplus.bypass:
|
||||
description: Bypass permission other than command permissions.
|
||||
description: Bypass other features than checks.
|
||||
children:
|
||||
nocheatplus.bypass.denylogin:
|
||||
description: Bypass the login denial, such as exists with the ncp tempkick command.
|
||||
|
||||
|
||||
# Various shortcuts:
|
||||
nocheatplus.shortcut:
|
||||
description: 'Shortcut permissions designed to be somewhat "safe" to give (see children permissions).'
|
||||
children:
|
||||
nocheatplus.shortcut.info:
|
||||
description: Info commands about players.
|
||||
children:
|
||||
nocheatplus.command.notify: true
|
||||
nocheatplus.command.info: true
|
||||
nocheatplus.command.exemptions: true
|
||||
nocheatplus.command.kicklist: true
|
||||
# TODO: commands perm.
|
||||
nocheatplus.command.commands: true
|
||||
# TODO: Put lag here ?
|
||||
nocheatplus.shortcut.monitor:
|
||||
description: All monitoring commands such as player and system info (including plugins).
|
||||
children:
|
||||
nocheatplus.shortcut.info: true
|
||||
nocheatplus.command.version: true
|
||||
nocheatplus.command.lag: true
|
||||
nocheatplus.admin.plugins: true
|
||||
nocheatplus.feature.command: true
|
||||
nocheatplus.shortcut.safeadmin:
|
||||
description: 'Permissions for "safe" administration, excluding rather critical operations like reload and action commands like ban/delay (arbitrary console commands!). Fit for "heavy" mods, include temp-kicking and exemptions, does bypass login-denial.'
|
||||
children:
|
||||
nocheatplus.shortcut.monitor: true
|
||||
nocheatplus.command.tempkick: true
|
||||
nocheatplus.command.kick: true
|
||||
nocheatplus.command.unkick: true
|
||||
nocheatplus.command.exempt: true
|
||||
nocheatplus.command.unexempt: true
|
||||
nocheatplus.command.removeplayer: true
|
||||
nocheatplus.filter.command: true
|
||||
nocheatplus.bypass.denylogin: true
|
||||
nocheatplus.shortcut.bypass:
|
||||
description: Bypass everything that can be bypassed.
|
||||
children:
|
||||
nocheatplus.checks
|
||||
nocheatplus.bypass
|
||||
nocheatplus.filter.commands
|
||||
nocheatplus.mods
|
||||
|
||||
# Shortcut: convenient testing.
|
||||
nocheatplus.tester:
|
||||
description: Monitoring and debugging permissions, including removing data and exemption handling for oneself.
|
||||
children:
|
||||
# TODO: Might just inherit from shortcut.info.
|
||||
nocheatplus.shortcut.monitor: true
|
||||
nocheatplus.admin.debug: true
|
||||
nocheatplus.command.exempt.self: true
|
||||
nocheatplus.command.unexempt.self: true
|
||||
nocheatplus.command.removeplayer.self: true
|
||||
|
||||
# Shortcut: full administrator without check-bypass-permissions:
|
||||
nocheatplus.admin:
|
||||
description: "Give the player all administration rights (does not exclude from checks), do not give lightly - if in doubt use shortcut permissions for moderators (nocheatplus.shortcut.monitor|safeadmin ...)."
|
||||
children:
|
||||
# TODO: move debug permission (debug.XYZ?).
|
||||
nocheatplus.admin.debug:
|
||||
description: Receive debugging information (or cause console logs on other occasions).
|
||||
|
||||
nocheatplus.bypass.denylogin: true
|
||||
|
||||
nocheatplus.admin.plugins:
|
||||
description: Allow the player to see the list of all plugins (/plugins).
|
||||
|
||||
nocheatplus.filter.command: true
|
||||
nocheatplus.command: true
|
||||
|
||||
# Left in for compatibility reasons:
|
||||
@ -385,49 +438,4 @@ permissions:
|
||||
description: DEPRECATED, use nocheatplus.command.commands instead.
|
||||
children:
|
||||
nocheatplus.command.commands: true
|
||||
|
||||
nocheatplus.shortcut:
|
||||
description: 'Shortcut permissions designed to be somewhat "safe" to give (see children permissions).'
|
||||
children:
|
||||
nocheatplus.shortcut.info:
|
||||
description: Info commands about players.
|
||||
children:
|
||||
nocheatplus.command.notify: true
|
||||
nocheatplus.command.info: true
|
||||
nocheatplus.command.exemptions: true
|
||||
nocheatplus.command.kicklist: true
|
||||
# TODO: commands perm.
|
||||
nocheatplus.command.commands: true
|
||||
# TODO: Put lag here ?
|
||||
nocheatplus.shortcut.monitor:
|
||||
description: All monitoring commands such as player and system info (including plugins).
|
||||
children:
|
||||
nocheatplus.shortcut.info: true
|
||||
nocheatplus.command.version: true
|
||||
nocheatplus.command.lag: true
|
||||
nocheatplus.admin.plugins: true
|
||||
nocheatplus.feature.command: true
|
||||
nocheatplus.shortcut.safeadmin:
|
||||
description: 'Permissions for "safe" administration, excluding rather critical operations like reload and action commands like ban/delay (arbitrary console commands!). Fit for "heavy" mods, include temp-kicking and exemptions, does bypass login-denial.'
|
||||
children:
|
||||
nocheatplus.shortcut.monitor: true
|
||||
nocheatplus.command.tempkick: true
|
||||
nocheatplus.command.kick: true
|
||||
nocheatplus.command.unkick: true
|
||||
nocheatplus.command.exempt: true
|
||||
nocheatplus.command.unexempt: true
|
||||
nocheatplus.command.removeplayer: true
|
||||
nocheatplus.bypass.denylogin: true
|
||||
# TODO: Consider other shortcuts too: checks [so ]
|
||||
|
||||
nocheatplus.tester:
|
||||
description: Monitoring and debugging permissions, including removing data and exemption handling for oneself.
|
||||
children:
|
||||
# TODO: Might just inherit from shortcut.info.
|
||||
nocheatplus.shortcut.monitor: true
|
||||
nocheatplus.admin.debug: true
|
||||
nocheatplus.command.exempt.self: true
|
||||
nocheatplus.command.unexempt.self: true
|
||||
nocheatplus.command.removeplayer.self: true
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user