diff --git a/PermissionsBukkit.jar b/PermissionsBukkit.jar new file mode 100644 index 00000000..aed1d272 Binary files /dev/null and b/PermissionsBukkit.jar differ diff --git a/PermissionsEx.jar b/PermissionsEx.jar new file mode 100644 index 00000000..5e7443ad Binary files /dev/null and b/PermissionsEx.jar differ diff --git a/bpermissions.jar b/bpermissions.jar new file mode 100644 index 00000000..1a675375 Binary files /dev/null and b/bpermissions.jar differ diff --git a/pom.xml b/pom.xml index acbc2522..c3f97dee 100644 --- a/pom.xml +++ b/pom.xml @@ -158,5 +158,26 @@ dev-SNAPSHOT compile + + ru.tehkode + PermissionsEx + 1.19.1 + system + ${project.basedir}/PermissionsEx.jar + + + de.bananaco + bPermissions + 2.9.1 + system + ${project.basedir}/bpermissions.jar + + + com.platymuus.bukkit.permissions + PermissionsBukkit + 1.6 + system + ${project.basedir}/PermissionsBukkit.jar + diff --git a/src/main/java/org/dynmap/bukkit/DynmapPlugin.java b/src/main/java/org/dynmap/bukkit/DynmapPlugin.java index c6144ca7..d017cdb9 100644 --- a/src/main/java/org/dynmap/bukkit/DynmapPlugin.java +++ b/src/main/java/org/dynmap/bukkit/DynmapPlugin.java @@ -63,7 +63,10 @@ import org.dynmap.PlayerList; import org.dynmap.bukkit.permissions.BukkitPermissions; import org.dynmap.bukkit.permissions.NijikokunPermissions; import org.dynmap.bukkit.permissions.OpPermissions; +import org.dynmap.bukkit.permissions.PEXPermissions; +import org.dynmap.bukkit.permissions.PermBukkitPermissions; import org.dynmap.bukkit.permissions.PermissionProvider; +import org.dynmap.bukkit.permissions.bPermPermissions; import org.dynmap.common.BiomeMap; import org.dynmap.common.DynmapCommandSender; import org.dynmap.common.DynmapPlayer; @@ -417,7 +420,13 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI { /* Set up player login/quit event handler */ registerPlayerLoginListener(); - permissions = NijikokunPermissions.create(getServer(), "dynmap"); + permissions = PEXPermissions.create(getServer(), "dynmap"); + if (permissions == null) + permissions = bPermPermissions.create(getServer(), "dynmap"); + if (permissions == null) + permissions = PermBukkitPermissions.create(getServer(), "dynmap"); + if (permissions == null) + permissions = NijikokunPermissions.create(getServer(), "dynmap"); if (permissions == null) permissions = BukkitPermissions.create("dynmap"); if (permissions == null) diff --git a/src/main/java/org/dynmap/bukkit/permissions/PEXPermissions.java b/src/main/java/org/dynmap/bukkit/permissions/PEXPermissions.java new file mode 100644 index 00000000..07149d31 --- /dev/null +++ b/src/main/java/org/dynmap/bukkit/permissions/PEXPermissions.java @@ -0,0 +1,37 @@ +package org.dynmap.bukkit.permissions; + +import org.bukkit.Server; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import org.dynmap.Log; + +import ru.tehkode.permissions.PermissionManager; +import ru.tehkode.permissions.bukkit.PermissionsEx; + +public class PEXPermissions implements PermissionProvider { + String name; + PermissionManager pm; + + public static PEXPermissions create(Server server, String name) { + Plugin permissionsPlugin = server.getPluginManager().getPlugin("PermissionsEx"); + if (permissionsPlugin == null) + return null; + server.getPluginManager().enablePlugin(permissionsPlugin); + if(PermissionsEx.isAvailable() == false) + return null; + Log.info("Using PermissionsEx " + permissionsPlugin.getDescription().getVersion() + " for access control"); + return new PEXPermissions(name); + } + + public PEXPermissions(String name) { + this.name = name; + pm = PermissionsEx.getPermissionManager(); + } + + @Override + public boolean has(CommandSender sender, String permission) { + Player player = sender instanceof Player ? (Player) sender : null; + return (player != null) ? pm.has(player, name + "." + permission) : true; + } +} diff --git a/src/main/java/org/dynmap/bukkit/permissions/PermBukkitPermissions.java b/src/main/java/org/dynmap/bukkit/permissions/PermBukkitPermissions.java new file mode 100644 index 00000000..21bc54b2 --- /dev/null +++ b/src/main/java/org/dynmap/bukkit/permissions/PermBukkitPermissions.java @@ -0,0 +1,36 @@ +package org.dynmap.bukkit.permissions; + +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.platymuus.bukkit.permissions.PermissionsPlugin; + +public class PermBukkitPermissions implements PermissionProvider { + String name; + PermissionsPlugin plugin; + + public static PermBukkitPermissions create(Server server, String name) { + Plugin permissionsPlugin = server.getPluginManager().getPlugin("PermissionsBukkit"); + if (permissionsPlugin == null) + return null; + + server.getPluginManager().enablePlugin(permissionsPlugin); + Log.info("Using PermissionsBukkit " + permissionsPlugin.getDescription().getVersion() + " for access control"); + return new PermBukkitPermissions(permissionsPlugin, name); + } + + public PermBukkitPermissions(Plugin permissionsPlugin, String name) { + this.name = name; + plugin = (PermissionsPlugin) permissionsPlugin; + } + + @Override + public boolean has(CommandSender sender, String permission) { + Player player = sender instanceof Player ? (Player) sender : null; + return (player != null) ? plugin.getPlayerInfo(player.getName()).getPermissions().containsKey(name + "." + permission) : true; + } +} diff --git a/src/main/java/org/dynmap/bukkit/permissions/bPermPermissions.java b/src/main/java/org/dynmap/bukkit/permissions/bPermPermissions.java new file mode 100644 index 00000000..e5643139 --- /dev/null +++ b/src/main/java/org/dynmap/bukkit/permissions/bPermPermissions.java @@ -0,0 +1,35 @@ +package org.dynmap.bukkit.permissions; + +import org.bukkit.Server; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import org.dynmap.Log; + +import ru.tehkode.permissions.bukkit.PermissionsEx; + +import de.bananaco.bpermissions.api.ApiLayer; +import de.bananaco.bpermissions.api.util.CalculableType; + +public class bPermPermissions implements PermissionProvider { + String name; + + public static bPermPermissions create(Server server, String name) { + Plugin permissionsPlugin = server.getPluginManager().getPlugin("bPermissions"); + if (permissionsPlugin == null) + return null; + server.getPluginManager().enablePlugin(permissionsPlugin); + Log.info("Using bPermissions " + permissionsPlugin.getDescription().getVersion() + " for access control"); + return new bPermPermissions(name); + } + + public bPermPermissions(String name) { + this.name = name; + } + + @Override + public boolean has(CommandSender sender, String permission) { + Player player = sender instanceof Player ? (Player) sender : null; + return (player != null) ? ApiLayer.hasPermission(player.getWorld().getName(), CalculableType.USER, player.getName(), name + "." + permission) : true; + } +}