Browse Source

I'm still working ...

master
Stanislav Usenkov 9 years ago
parent
commit
f0c19dbc5b
  1. 2
      pom.xml
  2. 43
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
  3. 48
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitUtilities.java
  4. 35
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java
  5. 3
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandDebug.java
  6. 22
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUser.java
  7. 42
      src/main/java/ru/simsonic/rscPermissions/Engine/CommandUtilities.java
  8. 2
      src/main/java/ru/simsonic/rscPermissions/Sponge/Commands/SpongeCommands.java
  9. 1
      src/main/java/ru/simsonic/rscPermissions/Sponge/SpongePermissionManager.java
  10. 11
      src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java

2
pom.xml

@ -4,7 +4,7 @@
<groupId>ru.simsonic</groupId> <groupId>ru.simsonic</groupId>
<artifactId>rscPermissions</artifactId> <artifactId>rscPermissions</artifactId>
<version>0.10.0b-SNAPSHOT</version> <version>0.10.1b-SNAPSHOT</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>rscPermissions</name> <name>rscPermissions</name>

43
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java

@ -1,7 +1,5 @@
package ru.simsonic.rscPermissions.Bukkit; package ru.simsonic.rscPermissions.Bukkit;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@ -145,7 +143,7 @@ public class BukkitPermissionManager extends RestartableThread
public synchronized ResolutionResult resolveOfflinePlayer(OfflinePlayer offline) public synchronized ResolutionResult resolveOfflinePlayer(OfflinePlayer offline)
{ {
final ResolutionParams params = new ResolutionParams(); final ResolutionParams params = new ResolutionParams();
params.applicableIdentifiers = getOfflinePlayerIdentifiers(offline); params.applicableIdentifiers = BukkitUtilities.getOfflinePlayerIdentifiers(offline);
final ResolutionResult result = rscp.internalCache.resolvePlayer(params); final ResolutionResult result = rscp.internalCache.resolvePlayer(params);
for(String id : params.applicableIdentifiers) for(String id : params.applicableIdentifiers)
resolutions.put(id, result); resolutions.put(id, result);
@ -155,7 +153,7 @@ public class BukkitPermissionManager extends RestartableThread
public synchronized ResolutionResult resolvePlayer(Player player) public synchronized ResolutionResult resolvePlayer(Player player)
{ {
final ResolutionParams params = new ResolutionParams(); final ResolutionParams params = new ResolutionParams();
params.applicableIdentifiers = getPlayerIdentifiers(player); params.applicableIdentifiers = BukkitUtilities.getPlayerIdentifiers(player);
if(rscp.regionListProvider != null) if(rscp.regionListProvider != null)
{ {
Set<String> regionSet = rscp.regionListProvider.getPlayerRegions(player); Set<String> regionSet = rscp.regionListProvider.getPlayerRegions(player);
@ -172,47 +170,14 @@ public class BukkitPermissionManager extends RestartableThread
} }
public synchronized void forgetOfflinePlayer(OfflinePlayer offline) public synchronized void forgetOfflinePlayer(OfflinePlayer offline)
{ {
for(String id : getOfflinePlayerIdentifiers(offline)) for(String id : BukkitUtilities.getOfflinePlayerIdentifiers(offline))
resolutions.remove(id); resolutions.remove(id);
} }
public synchronized void forgetPlayer(Player player) public synchronized void forgetPlayer(Player player)
{ {
for(String id : getPlayerIdentifiers(player)) for(String id : BukkitUtilities.getPlayerIdentifiers(player))
resolutions.remove(id); resolutions.remove(id);
} }
private static String[] getOfflinePlayerIdentifiers(OfflinePlayer offline)
{
final ArrayList<String> result = new ArrayList<>();
try
{
result.add(offline.getName());
} catch(RuntimeException | NoSuchMethodError ex) {
}
try
{
result.add(offline.getUniqueId().toString().toLowerCase());
} catch(RuntimeException | NoSuchMethodError ex) {
}
return result.toArray(new String[result.size()]);
}
private static String[] getPlayerIdentifiers(Player player)
{
final ArrayList<String> result = new ArrayList<>();
try
{
result.add(player.getName());
} catch(RuntimeException | NoSuchMethodError ex) {
}
try
{
result.add(player.getUniqueId().toString().toLowerCase());
} catch(RuntimeException | NoSuchMethodError ex) {
}
final InetSocketAddress socketAddress = player.getAddress();
if(socketAddress != null)
result.add(socketAddress.getAddress().getHostAddress());
return result.toArray(new String[result.size()]);
}
public Set<CommandSender> getDebuggers() public Set<CommandSender> getDebuggers()
{ {
synchronized(debug) synchronized(debug)

48
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitUtilities.java

@ -0,0 +1,48 @@
package ru.simsonic.rscPermissions.Bukkit;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
public class BukkitUtilities
{
public static String[] getOfflinePlayerIdentifiers(OfflinePlayer offline)
{
final ArrayList<String> result = new ArrayList<>();
// SERVERS BEFORE UUIDs
try
{
result.add(offline.getName());
} catch(RuntimeException | NoSuchMethodError ex) {
}
// SERVERS WITH UUIDs
try
{
result.add(offline.getUniqueId().toString().toLowerCase());
} catch(RuntimeException | NoSuchMethodError ex) {
}
return result.toArray(new String[result.size()]);
}
public static String[] getPlayerIdentifiers(Player player)
{
// SERVERS BEFORE UUIDs
final ArrayList<String> result = new ArrayList<>();
try
{
result.add(player.getName());
} catch(RuntimeException | NoSuchMethodError ex) {
}
// SERVERS WITH UUIDs
try
{
result.add(player.getUniqueId().toString().toLowerCase());
} catch(RuntimeException | NoSuchMethodError ex) {
}
// ONLINE IP CONNECTION
final InetSocketAddress socketAddress = player.getAddress();
if(socketAddress != null)
result.add(socketAddress.getAddress().getHostAddress());
return result.toArray(new String[result.size()]);
}
}

35
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java

@ -177,39 +177,4 @@ public class BukkitCommands
} }
throw new CommandAnswerException(help); throw new CommandAnswerException(help);
} }
public static boolean argumentToBoolean(String arg, Boolean prevForToggle) throws IllegalArgumentException
{
if(arg == null || "".equals(arg))
throw new IllegalArgumentException("Argument is null or empty.");
switch(arg.toLowerCase())
{
case "enable":
case "true":
case "yes":
case "on":
return true;
case "disable":
case "false":
case "no":
case "off":
return false;
case "toggle":
if(prevForToggle != null)
return !prevForToggle;
else
throw new IllegalArgumentException("Previous value is unknown.");
}
throw new IllegalArgumentException("Cannot understand boolean value.");
}
public static int argumentToInteger(String arg) throws IllegalArgumentException
{
if(arg == null || "".equals(arg))
throw new IllegalArgumentException("Argument is null or empty.");
try
{
return Integer.parseInt(arg);
} catch(NumberFormatException ex) {
throw new IllegalArgumentException(ex.getMessage());
}
}
} }

3
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandDebug.java

@ -3,6 +3,7 @@ package ru.simsonic.rscPermissions.Bukkit.Commands;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException; import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.CommandUtilities;
import ru.simsonic.rscPermissions.Engine.Phrases; import ru.simsonic.rscPermissions.Engine.Phrases;
public class CommandDebug public class CommandDebug
@ -21,7 +22,7 @@ public class CommandDebug
{ {
try try
{ {
isDebugging = BukkitCommands.argumentToBoolean(args[1], isDebugging); isDebugging = CommandUtilities.argumentToBoolean(args[1], isDebugging);
} catch(IllegalArgumentException ex) { } catch(IllegalArgumentException ex) {
throw new CommandAnswerException("{_LR}" + ex.getMessage()); throw new CommandAnswerException("{_LR}" + ex.getMessage());
} }

22
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUser.java

@ -6,6 +6,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException; import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.Backends.DatabaseTransaction;
import ru.simsonic.rscPermissions.Engine.Matchers; import ru.simsonic.rscPermissions.Engine.Matchers;
import ru.simsonic.rscPermissions.Engine.ResolutionResult; import ru.simsonic.rscPermissions.Engine.ResolutionResult;
@ -18,6 +19,11 @@ public class CommandUser
} }
public void onUserCommandHub(CommandSender sender, String[] args) throws CommandAnswerException public void onUserCommandHub(CommandSender sender, String[] args) throws CommandAnswerException
{ {
/*
/rscp - command
user - 0
<entity> - 1 // -u; --by-uuid / -n (--by-name)
*/
if(sender.hasPermission("rscp.admin")) if(sender.hasPermission("rscp.admin"))
{ {
if(args.length < 3) if(args.length < 3)
@ -28,16 +34,14 @@ public class CommandUser
final ResolutionResult result = (player != null) final ResolutionResult result = (player != null)
? rscp.permissionManager.getResult(player) ? rscp.permissionManager.getResult(player)
: rscp.permissionManager.getResult(args[1]); : rscp.permissionManager.getResult(args[1]);
if(Matchers.isCorrectDashlessUUID(args[1]))
args[1] = Matchers.uuidAddDashes(args[1]);
switch(args[2].toLowerCase()) switch(args[2].toLowerCase())
{ {
case "p":
case "prefix": case "prefix":
case "p":
viewPrefix(result, args[1]); viewPrefix(result, args[1]);
break; break;
case "s":
case "suffix": case "suffix":
case "s":
viewSuffix(result, args[1]); viewSuffix(result, args[1]);
break; break;
case "listpermissions": case "listpermissions":
@ -66,6 +70,8 @@ public class CommandUser
} }
private void viewPrefix(ResolutionResult result, String user) throws CommandAnswerException private void viewPrefix(ResolutionResult result, String user) throws CommandAnswerException
{ {
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>(); final ArrayList<String> answer = new ArrayList<>();
answer.add("Calculated prefix for user {_YL}" + user + "{_LS} is:"); answer.add("Calculated prefix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.prefix + "{_R}\""); answer.add("{_R}\"" + result.prefix + "{_R}\"");
@ -73,6 +79,8 @@ public class CommandUser
} }
private void viewSuffix(ResolutionResult result, String user) throws CommandAnswerException private void viewSuffix(ResolutionResult result, String user) throws CommandAnswerException
{ {
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>(); final ArrayList<String> answer = new ArrayList<>();
answer.add("Calculated suffix for user {_YL}" + user + "{_LS} is:"); answer.add("Calculated suffix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.suffix + "{_R}\""); answer.add("{_R}\"" + result.suffix + "{_R}\"");
@ -80,6 +88,8 @@ public class CommandUser
} }
private void listPermissions(ResolutionResult result, String user) throws CommandAnswerException private void listPermissions(ResolutionResult result, String user) throws CommandAnswerException
{ {
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>(); final ArrayList<String> answer = new ArrayList<>();
answer.add("Permission list for user {_YL}" + user + "{_LS}:"); answer.add("Permission list for user {_YL}" + user + "{_LS}:");
final ArrayList<String> sorted_keys = new ArrayList<>(result.permissions.keySet()); final ArrayList<String> sorted_keys = new ArrayList<>(result.permissions.keySet());
@ -90,6 +100,8 @@ public class CommandUser
} }
private void listGroups(ResolutionResult result, String user) throws CommandAnswerException private void listGroups(ResolutionResult result, String user) throws CommandAnswerException
{ {
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>(); final ArrayList<String> answer = new ArrayList<>();
answer.add("Group list for user {_YL}" + user + "{_LS}:"); answer.add("Group list for user {_YL}" + user + "{_LS}:");
for(String group : result.getOrderedGroups()) for(String group : result.getOrderedGroups())
@ -99,6 +111,8 @@ public class CommandUser
private void addGroup(ResolutionResult result, String user, String parent, String destination, Integer seconds) throws CommandAnswerException private void addGroup(ResolutionResult result, String user, String parent, String destination, Integer seconds) throws CommandAnswerException
{ {
final ArrayList<String> answer = new ArrayList<>(); final ArrayList<String> answer = new ArrayList<>();
final DatabaseTransaction databaseTransaction = new DatabaseTransaction(rscp);
databaseTransaction.apply();
throw new CommandAnswerException(answer); throw new CommandAnswerException(answer);
} }
private void removeGroup(ResolutionResult result, String user, String parent) throws CommandAnswerException private void removeGroup(ResolutionResult result, String user, String parent) throws CommandAnswerException

42
src/main/java/ru/simsonic/rscPermissions/Engine/CommandUtilities.java

@ -0,0 +1,42 @@
package ru.simsonic.rscPermissions.Engine;
public class CommandUtilities
{
public static boolean argumentToBoolean(String arg, Boolean prevForToggle) throws IllegalArgumentException
{
if(arg == null || "".equals(arg))
throw new IllegalArgumentException("Argument is null or empty.");
switch(arg.toLowerCase())
{
case "enable":
case "true":
case "yes":
case "on":
case "1":
return true;
case "disable":
case "false":
case "no":
case "off":
case "0":
return false;
case "toggle":
if(prevForToggle != null)
return !prevForToggle;
else
throw new IllegalArgumentException("Previous value is unknown.");
}
throw new IllegalArgumentException("Cannot understand boolean value.");
}
public static int argumentToInteger(String arg) throws IllegalArgumentException
{
if(arg == null || "".equals(arg))
throw new IllegalArgumentException("Argument is null or empty.");
try
{
return Integer.parseInt(arg);
} catch(NumberFormatException ex) {
throw new IllegalArgumentException(ex.getMessage());
}
}
}

2
src/main/java/ru/simsonic/rscPermissions/Sponge/Commands/SpongeCommands.java

@ -1,10 +1,10 @@
package ru.simsonic.rscPermissions.Sponge.Commands; package ru.simsonic.rscPermissions.Sponge.Commands;
import org.spongepowered.api.command.spec.CommandExecutor;
import org.spongepowered.api.command.CommandException; import org.spongepowered.api.command.CommandException;
import org.spongepowered.api.command.CommandResult; import org.spongepowered.api.command.CommandResult;
import org.spongepowered.api.command.CommandSource; import org.spongepowered.api.command.CommandSource;
import org.spongepowered.api.command.args.CommandContext; import org.spongepowered.api.command.args.CommandContext;
import org.spongepowered.api.command.spec.CommandExecutor;
import org.spongepowered.api.command.spec.CommandSpec; import org.spongepowered.api.command.spec.CommandSpec;
import org.spongepowered.api.text.Text; import org.spongepowered.api.text.Text;

1
src/main/java/ru/simsonic/rscPermissions/Sponge/SpongePermissionManager.java

@ -3,7 +3,6 @@ package ru.simsonic.rscPermissions.Sponge;
import java.util.Collection; import java.util.Collection;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import org.slf4j.Logger;
import org.spongepowered.api.service.context.ContextCalculator; import org.spongepowered.api.service.context.ContextCalculator;
import org.spongepowered.api.service.permission.PermissionDescription; import org.spongepowered.api.service.permission.PermissionDescription;
import org.spongepowered.api.service.permission.PermissionService; import org.spongepowered.api.service.permission.PermissionService;

11
src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java

@ -1,17 +1,6 @@
package ru.simsonic.rscPermissions; package ru.simsonic.rscPermissions;
import com.google.inject.Inject;
import java.io.File; import java.io.File;
import org.slf4j.Logger;
/*
import org.spongepowered.api.Game;
import org.spongepowered.api.event.Subscribe;
import org.spongepowered.api.event.sstate.ServerAboutToStartEvent;
import org.spongepowered.api.event.state.ServerStartedEvent;
import org.spongepowered.api.event.state.ServerStartingEvent;
import org.spongepowered.api.event.state.ServerStoppedEvent;
import org.spongepowered.api.event.state.ServerStoppingEvent;
*/
import org.spongepowered.api.plugin.Plugin; import org.spongepowered.api.plugin.Plugin;
import ru.simsonic.rscPermissions.API.Settings; import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.Engine.Backends.BackendDatabase; import ru.simsonic.rscPermissions.Engine.Backends.BackendDatabase;

Loading…
Cancel
Save