From 01f73d24f115a4d88fd680cc9ecd91dbe81b97f8 Mon Sep 17 00:00:00 2001 From: SimSonic Date: Thu, 2 Apr 2015 12:01:28 +0600 Subject: [PATCH] UUIDs are really working!.. --- .../rscPermissions/API/PlayerType.java | 41 +++++++++++++++---- .../Backends/DatabaseContents.java | 7 ++-- .../rscPermissions/IndependentMain.java | 8 ++-- src/main/resources/languages/english.yml | 4 +- src/main/resources/languages/russian.yml | 8 ++-- 5 files changed, 48 insertions(+), 20 deletions(-) diff --git a/src/main/java/ru/simsonic/rscPermissions/API/PlayerType.java b/src/main/java/ru/simsonic/rscPermissions/API/PlayerType.java index 06530ac..1498594 100644 --- a/src/main/java/ru/simsonic/rscPermissions/API/PlayerType.java +++ b/src/main/java/ru/simsonic/rscPermissions/API/PlayerType.java @@ -37,18 +37,45 @@ public enum PlayerType return INTERNET_SUBNETMASK; return INAPPLICABLE; } + public static String normalize(String entity) + { + if(entity == null || "".equals(entity)) + return ""; + if(Matchers.isCorrectDashlessUUID(entity)) + return Matchers.uuidAddDashes(entity); + return entity; + } public boolean isEntityApplicable(String entity, String identifier) { if(entity == null || "".equals(entity) || identifier == null || "".equals(identifier)) return false; - switch(this) + try { - case NAME: - return identifier.equals(entity); - case UUID: - identifier = identifier.replace("-", ""); - case DASHLESS_UUID: - return entity.equalsIgnoreCase(identifier); + switch(this) + { + case NAME: + return identifier.equals(entity); + case DASHLESS_UUID: + if(Matchers.isCorrectUUID(identifier)) + identifier = Matchers.uuidRemoveDashes(identifier); + if(Matchers.isCorrectDashlessUUID(identifier)) + return entity.equalsIgnoreCase(identifier); + break; + case UUID: + if(Matchers.isCorrectDashlessUUID(identifier)) + identifier = Matchers.uuidAddDashes(identifier); + if(Matchers.isCorrectUUID(identifier)) + return entity.equalsIgnoreCase(identifier); + break; + case INTERNET_WILDCARD: + case INTERNET_SUBNETMASK: + // TO DO HERE + return false; + case INAPPLICABLE: + default: + break; + } + } catch(IllegalArgumentException ex) { } return false; } diff --git a/src/main/java/ru/simsonic/rscPermissions/Backends/DatabaseContents.java b/src/main/java/ru/simsonic/rscPermissions/Backends/DatabaseContents.java index 3f21fad..8e0a2c1 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Backends/DatabaseContents.java +++ b/src/main/java/ru/simsonic/rscPermissions/Backends/DatabaseContents.java @@ -2,6 +2,7 @@ package ru.simsonic.rscPermissions.Backends; import java.util.ArrayList; import java.util.Date; import ru.simsonic.rscPermissions.API.Destination; +import ru.simsonic.rscPermissions.API.PlayerType; import ru.simsonic.rscPermissions.API.RowEntity; import ru.simsonic.rscPermissions.API.RowInheritance; import ru.simsonic.rscPermissions.API.RowPermission; @@ -32,7 +33,7 @@ public class DatabaseContents for(String oneEntity : splittedByEntity) { final RowEntity clone = row.clone(); - clone.entity = oneEntity; + clone.entity = PlayerType.normalize(oneEntity); le.add(clone); } } @@ -50,7 +51,7 @@ public class DatabaseContents for(String entity : splittedByEntity) { final RowPermission clone = row.clone(); - clone.entity = entity; + clone.entity = PlayerType.normalize(entity); clone.permission = permission; clone.destination = destination; lp.add(clone); @@ -71,7 +72,7 @@ public class DatabaseContents for(String entity : splittedByEntity) { final RowInheritance clone = row.clone(); - clone.entity = entity; + clone.entity = PlayerType.normalize(entity); clone.parent = parent; clone.deriveInstance(); clone.destination = destination; diff --git a/src/main/java/ru/simsonic/rscPermissions/IndependentMain.java b/src/main/java/ru/simsonic/rscPermissions/IndependentMain.java index d9cae89..4734535 100644 --- a/src/main/java/ru/simsonic/rscPermissions/IndependentMain.java +++ b/src/main/java/ru/simsonic/rscPermissions/IndependentMain.java @@ -21,9 +21,9 @@ public class IndependentMain System.out.println("https://github.com/SimSonic/rscPermissions/"); // TESTING HERE remoteDb.initialize(null, - "", // DATABASE - "", // USERNAME - "", // PASSWORD + "s0.voxile.ru:3306/servers-shared", // DATABASE + "server-primary", // USERNAME + "zcHzCBFZtTv28JfG", // PASSWORD "rscp_"); if(remoteDb.connect()) { @@ -44,7 +44,7 @@ public class IndependentMain } intCache.setDefaultGroup("Default", true); intCache.fill(contents); - final ResolutionResult result = intCache.resolvePlayer("Reality_SC"); + final ResolutionResult result = intCache.resolvePlayer("87f946d8212440539d685eab07f8e266"); // Sorted output ArrayList perms = new ArrayList<>(result.permissions.keySet()); Collections.sort(perms); diff --git a/src/main/resources/languages/english.yml b/src/main/resources/languages/english.yml index c3d30e9..e6240f0 100644 --- a/src/main/resources/languages/english.yml +++ b/src/main/resources/languages/english.yml @@ -13,7 +13,7 @@ integration: residence-yes: "{_LG}Residence was found and integrated." residence-no: "{_YL}Residence was not found." debug: - enable: "{_LS}You will see a lot of debugging information now." - disable: "{_LS}Debugging information is now hidden for you." + enable: "You will see a lot of debugging information now." + disable: "Debugging information is now hidden for you." mysql: fetched: "Tables have been fetched." diff --git a/src/main/resources/languages/russian.yml b/src/main/resources/languages/russian.yml index 03097e7..7b12ebf 100644 --- a/src/main/resources/languages/russian.yml +++ b/src/main/resources/languages/russian.yml @@ -3,8 +3,8 @@ generic: disabled: "[rscp] Плагин rscPermissions выключен." reloaded: "[rscp] Плагин rscPermissions перезапущен, конфигурация перечитана." metrics: "[rscp] Включён сбор метрики (mcstats.org)." - player-only: "[rscp] Эта команда не может быть использована из консоли." - console-only: "[rscp] Эта команда может быть использована только из консоли." + player-only: "{_LR}Эта команда не может быть использована из консоли." + console-only: "{_LR}Эта команда может быть использована только из консоли." integration: vault-yes: "{_LG}Vault обнаружён и подключён." vault-no: "{_LR}Не удаётся найти плагин Vault. Рекомендуется его скорейшая установка." @@ -13,7 +13,7 @@ integration: residence-yes: "{_LG}Residence обнаружён и подключён." residence-no: "{_YL}Residence не обнаружен." debug: - enable: "{_LS}Теперь Вы будете видеть отладочную информацию." - disable: "{_LS}Отладочная информация теперь скрыта от Вас." + enable: "Теперь Вы будете видеть отладочную информацию." + disable: "Отладочная информация теперь скрыта от Вас." mysql: fetched: "База данных перечитана."