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>
<artifactId>rscPermissions</artifactId>
<version>0.10.0b-SNAPSHOT</version>
<version>0.10.1b-SNAPSHOT</version>
<packaging>jar</packaging>
<name>rscPermissions</name>

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

@ -1,7 +1,5 @@
package ru.simsonic.rscPermissions.Bukkit;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
@ -145,7 +143,7 @@ public class BukkitPermissionManager extends RestartableThread
public synchronized ResolutionResult resolveOfflinePlayer(OfflinePlayer offline)
{
final ResolutionParams params = new ResolutionParams();
params.applicableIdentifiers = getOfflinePlayerIdentifiers(offline);
params.applicableIdentifiers = BukkitUtilities.getOfflinePlayerIdentifiers(offline);
final ResolutionResult result = rscp.internalCache.resolvePlayer(params);
for(String id : params.applicableIdentifiers)
resolutions.put(id, result);
@ -155,7 +153,7 @@ public class BukkitPermissionManager extends RestartableThread
public synchronized ResolutionResult resolvePlayer(Player player)
{
final ResolutionParams params = new ResolutionParams();
params.applicableIdentifiers = getPlayerIdentifiers(player);
params.applicableIdentifiers = BukkitUtilities.getPlayerIdentifiers(player);
if(rscp.regionListProvider != null)
{
Set<String> regionSet = rscp.regionListProvider.getPlayerRegions(player);
@ -172,47 +170,14 @@ public class BukkitPermissionManager extends RestartableThread
}
public synchronized void forgetOfflinePlayer(OfflinePlayer offline)
{
for(String id : getOfflinePlayerIdentifiers(offline))
for(String id : BukkitUtilities.getOfflinePlayerIdentifiers(offline))
resolutions.remove(id);
}
public synchronized void forgetPlayer(Player player)
{
for(String id : getPlayerIdentifiers(player))
for(String id : BukkitUtilities.getPlayerIdentifiers(player))
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()
{
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);
}
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 ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.CommandUtilities;
import ru.simsonic.rscPermissions.Engine.Phrases;
public class CommandDebug
@ -21,7 +22,7 @@ public class CommandDebug
{
try
{
isDebugging = BukkitCommands.argumentToBoolean(args[1], isDebugging);
isDebugging = CommandUtilities.argumentToBoolean(args[1], isDebugging);
} catch(IllegalArgumentException ex) {
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 ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.Backends.DatabaseTransaction;
import ru.simsonic.rscPermissions.Engine.Matchers;
import ru.simsonic.rscPermissions.Engine.ResolutionResult;
@ -18,6 +19,11 @@ public class CommandUser
}
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(args.length < 3)
@ -28,16 +34,14 @@ public class CommandUser
final ResolutionResult result = (player != null)
? rscp.permissionManager.getResult(player)
: rscp.permissionManager.getResult(args[1]);
if(Matchers.isCorrectDashlessUUID(args[1]))
args[1] = Matchers.uuidAddDashes(args[1]);
switch(args[2].toLowerCase())
{
case "p":
case "prefix":
case "p":
viewPrefix(result, args[1]);
break;
case "s":
case "suffix":
case "s":
viewSuffix(result, args[1]);
break;
case "listpermissions":
@ -66,6 +70,8 @@ public class CommandUser
}
private void viewPrefix(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Calculated prefix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.prefix + "{_R}\"");
@ -73,6 +79,8 @@ public class CommandUser
}
private void viewSuffix(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Calculated suffix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.suffix + "{_R}\"");
@ -80,6 +88,8 @@ public class CommandUser
}
private void listPermissions(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Permission list for user {_YL}" + user + "{_LS}:");
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
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Group list for user {_YL}" + user + "{_LS}:");
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
{
final ArrayList<String> answer = new ArrayList<>();
final DatabaseTransaction databaseTransaction = new DatabaseTransaction(rscp);
databaseTransaction.apply();
throw new CommandAnswerException(answer);
}
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;
import org.spongepowered.api.command.spec.CommandExecutor;
import org.spongepowered.api.command.CommandException;
import org.spongepowered.api.command.CommandResult;
import org.spongepowered.api.command.CommandSource;
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.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.Map;
import java.util.Optional;
import org.slf4j.Logger;
import org.spongepowered.api.service.context.ContextCalculator;
import org.spongepowered.api.service.permission.PermissionDescription;
import org.spongepowered.api.service.permission.PermissionService;

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

@ -1,17 +1,6 @@
package ru.simsonic.rscPermissions;
import com.google.inject.Inject;
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 ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.Engine.Backends.BackendDatabase;

Loading…
Cancel
Save