From c37680b62c2458105f0b702cffa6da42e5d19157 Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Tue, 23 Aug 2011 08:21:03 +0800 Subject: [PATCH] Add support for superperms/PermissionsBukkit/whatever-you-wanna-call-it --- src/main/java/org/dynmap/DynmapPlugin.java | 3 ++ .../dynmap/permissions/BukkitPermissions.java | 31 +++++++++++++++++++ .../permissions/NijikokunPermissions.java | 2 ++ .../org/dynmap/permissions/OpPermissions.java | 2 ++ 4 files changed, 38 insertions(+) create mode 100644 src/main/java/org/dynmap/permissions/BukkitPermissions.java diff --git a/src/main/java/org/dynmap/DynmapPlugin.java b/src/main/java/org/dynmap/DynmapPlugin.java index 2c116d70..7af35cdf 100644 --- a/src/main/java/org/dynmap/DynmapPlugin.java +++ b/src/main/java/org/dynmap/DynmapPlugin.java @@ -58,6 +58,7 @@ import org.dynmap.debug.Debug; import org.dynmap.debug.Debugger; import org.dynmap.hdmap.HDBlockModels; import org.dynmap.hdmap.TexturePack; +import org.dynmap.permissions.BukkitPermissions; import org.dynmap.permissions.NijikokunPermissions; import org.dynmap.permissions.OpPermissions; import org.dynmap.permissions.PermissionProvider; @@ -199,6 +200,8 @@ public class DynmapPlugin extends JavaPlugin { events = new Events(); permissions = NijikokunPermissions.create(getServer(), "dynmap"); + if (permissions == null) + permissions = BukkitPermissions.create("dynmap"); if (permissions == null) permissions = new OpPermissions(new String[] { "fullrender", "cancelrender", "radiusrender", "resetstats", "reload" }); diff --git a/src/main/java/org/dynmap/permissions/BukkitPermissions.java b/src/main/java/org/dynmap/permissions/BukkitPermissions.java new file mode 100644 index 00000000..f0cb2dcc --- /dev/null +++ b/src/main/java/org/dynmap/permissions/BukkitPermissions.java @@ -0,0 +1,31 @@ +package org.dynmap.permissions; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.dynmap.Log; + +public class BukkitPermissions implements PermissionProvider { + String name; + + public static BukkitPermissions create(String name) { + try { + Class.forName("org.bukkit.permissions.PermissibleBase"); /* See if class exists */ + } catch (ClassNotFoundException cnfx) { + return null; + } + Log.info("Using Bukkit Permissions (superperms) for access control"); + return new BukkitPermissions(name); + } + + public BukkitPermissions(String name) { + this.name = name; + } + + @Override + public boolean has(CommandSender sender, String permission) { + Player player = sender instanceof Player ? (Player) sender : null; + return player != null + ? player.hasPermission(name + "." + permission) || player.hasPermission(name + ".*") + : true; + } +} diff --git a/src/main/java/org/dynmap/permissions/NijikokunPermissions.java b/src/main/java/org/dynmap/permissions/NijikokunPermissions.java index 4f2a5423..dade7c82 100644 --- a/src/main/java/org/dynmap/permissions/NijikokunPermissions.java +++ b/src/main/java/org/dynmap/permissions/NijikokunPermissions.java @@ -4,6 +4,7 @@ import org.bukkit.Server; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; +import org.dynmap.Log; import com.nijiko.permissions.PermissionHandler; import com.nijikokun.bukkit.Permissions.Permissions; @@ -17,6 +18,7 @@ public class NijikokunPermissions implements PermissionProvider { if (permissionsPlugin == null) return null; server.getPluginManager().enablePlugin(permissionsPlugin); + Log.info("Using Permissions " + permissionsPlugin.getDescription().getVersion() + " for access control"); return new NijikokunPermissions(permissionsPlugin, name); } diff --git a/src/main/java/org/dynmap/permissions/OpPermissions.java b/src/main/java/org/dynmap/permissions/OpPermissions.java index 653ba164..e882c90e 100644 --- a/src/main/java/org/dynmap/permissions/OpPermissions.java +++ b/src/main/java/org/dynmap/permissions/OpPermissions.java @@ -4,6 +4,7 @@ import java.util.HashSet; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.dynmap.Log; public class OpPermissions implements PermissionProvider { public HashSet opCommands = new HashSet(); @@ -12,6 +13,7 @@ public class OpPermissions implements PermissionProvider { for (String opCommand : opCommands) { this.opCommands.add(opCommand); } + Log.info("Using ops.txt for access control"); } @Override