From fbdd56d9defd011b2b8068dc888417a2ffe36f08 Mon Sep 17 00:00:00 2001 From: DNx5 Date: Thu, 18 Feb 2016 09:15:43 +0700 Subject: [PATCH 1/4] Ignore country check for localhost. - don't log exception to console --- src/main/java/fr/xephi/authme/util/GeoLiteAPI.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/fr/xephi/authme/util/GeoLiteAPI.java b/src/main/java/fr/xephi/authme/util/GeoLiteAPI.java index f4907496..e3e6277b 100644 --- a/src/main/java/fr/xephi/authme/util/GeoLiteAPI.java +++ b/src/main/java/fr/xephi/authme/util/GeoLiteAPI.java @@ -89,11 +89,11 @@ public class GeoLiteAPI { * @return String */ public static String getCountryCode(String ip) { - if (isDataAvailable()) { + if (!"127.0.0.1".equals(ip) && isDataAvailable()) { try { return databaseReader.country(InetAddress.getByName(ip)).getCountry().getIsoCode(); } catch (Exception e) { - ConsoleLogger.logException("Error while getting country code", e); + ConsoleLogger.writeStackTrace(e); } } return "--"; @@ -107,11 +107,11 @@ public class GeoLiteAPI { * @return String */ public static String getCountryName(String ip) { - if (isDataAvailable()) { + if (!"127.0.0.1".equals(ip) && isDataAvailable()) { try { return databaseReader.country(InetAddress.getByName(ip)).getCountry().getName(); } catch (Exception e) { - ConsoleLogger.logException("Error while getting country name", e); + ConsoleLogger.writeStackTrace(e); } } return "N/A"; From 481cbaec2ff2634b5b409c580e89b87482d2c571 Mon Sep 17 00:00:00 2001 From: DNx5 Date: Thu, 18 Feb 2016 09:34:04 +0700 Subject: [PATCH 2/4] Don't check the country if nothing defined on configuration. - no need to enable protection to use country blacklist. #507 --- .../authme/listener/AuthMePlayerListener.java | 29 ++++++++++--------- .../authme/listener/AuthMeServerListener.java | 17 ++++++----- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java index b15007e6..a33fb93a 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java @@ -12,7 +12,6 @@ import fr.xephi.authme.cache.limbo.LimboPlayer; import fr.xephi.authme.output.MessageKey; import fr.xephi.authme.output.Messages; import fr.xephi.authme.permission.PermissionsManager; -import fr.xephi.authme.permission.PlayerPermission; import fr.xephi.authme.permission.PlayerStatePermission; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.util.GeoLiteAPI; @@ -109,7 +108,7 @@ public class AuthMePlayerListener implements Listener { if (Settings.useEssentialsMotd && cmd.equals("/motd")) { return; } - if(!Settings.isForcedRegistrationEnabled && Settings.allowAllCommandsIfRegIsOptional) { + if (!Settings.isForcedRegistrationEnabled && Settings.allowAllCommandsIfRegIsOptional) { return; } if (Settings.allowCommands.contains(cmd)) { @@ -255,18 +254,20 @@ public class AuthMePlayerListener implements Listener { } } - String playerIP = event.getAddress().getHostAddress(); - if (auth == null && Settings.enableProtection) { - String countryCode = GeoLiteAPI.getCountryCode(playerIP); - if (!Settings.countriesBlacklist.isEmpty() && Settings.countriesBlacklist.contains(countryCode)) { - event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_OTHER); - event.setKickMessage(m.retrieveSingle(MessageKey.COUNTRY_BANNED_ERROR)); - return; - } - if (!Settings.countries.isEmpty() && !Settings.countries.contains(countryCode)) { - event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_OTHER); - event.setKickMessage(m.retrieveSingle(MessageKey.COUNTRY_BANNED_ERROR)); - return; + if (auth == null) { + if (!Settings.countriesBlacklist.isEmpty() || !Settings.countries.isEmpty()) { + String playerIP = event.getAddress().getHostAddress(); + String countryCode = GeoLiteAPI.getCountryCode(playerIP); + if (Settings.countriesBlacklist.contains(countryCode)) { + event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_OTHER); + event.setKickMessage(m.retrieveSingle(MessageKey.COUNTRY_BANNED_ERROR)); + return; + } + if (Settings.enableProtection && !Settings.countries.contains(countryCode)) { + event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_OTHER); + event.setKickMessage(m.retrieveSingle(MessageKey.COUNTRY_BANNED_ERROR)); + return; + } } } diff --git a/src/main/java/fr/xephi/authme/listener/AuthMeServerListener.java b/src/main/java/fr/xephi/authme/listener/AuthMeServerListener.java index ef991390..e6874d4d 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMeServerListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMeServerListener.java @@ -32,14 +32,15 @@ public class AuthMeServerListener implements Listener { return; } - String countryCode = GeoLiteAPI.getCountryCode(event.getAddress().getHostAddress()); - if (!Settings.countriesBlacklist.isEmpty() && Settings.countriesBlacklist.contains(countryCode)) { - event.setMotd(m.retrieveSingle(MessageKey.COUNTRY_BANNED_ERROR)); - return; - } - - if (!Settings.countries.isEmpty() && !Settings.countries.contains(countryCode)) { - event.setMotd(m.retrieveSingle(MessageKey.COUNTRY_BANNED_ERROR)); + if (!Settings.countriesBlacklist.isEmpty() || !Settings.countries.isEmpty()){ + String countryCode = GeoLiteAPI.getCountryCode(event.getAddress().getHostAddress()); + if( Settings.countriesBlacklist.contains(countryCode)) { + event.setMotd(m.retrieveSingle(MessageKey.COUNTRY_BANNED_ERROR)); + return; + } + if (!Settings.countries.contains(countryCode)) { + event.setMotd(m.retrieveSingle(MessageKey.COUNTRY_BANNED_ERROR)); + } } } From cc266a7bd6ed45fa78887fdb18ca88a0123deb6f Mon Sep 17 00:00:00 2001 From: DNx5 Date: Thu, 18 Feb 2016 09:42:45 +0700 Subject: [PATCH 3/4] Update javadoc. --- src/main/java/fr/xephi/authme/util/GeoLiteAPI.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/fr/xephi/authme/util/GeoLiteAPI.java b/src/main/java/fr/xephi/authme/util/GeoLiteAPI.java index e3e6277b..f7e972fb 100644 --- a/src/main/java/fr/xephi/authme/util/GeoLiteAPI.java +++ b/src/main/java/fr/xephi/authme/util/GeoLiteAPI.java @@ -84,9 +84,9 @@ public class GeoLiteAPI { /** * Get the country code of the given IP address. * - * @param ip Ip address + * @param ip textual IP address address to lookup. * - * @return String + * @return two-character ISO 3166-1 alpha code for the country. */ public static String getCountryCode(String ip) { if (!"127.0.0.1".equals(ip) && isDataAvailable()) { @@ -102,9 +102,9 @@ public class GeoLiteAPI { /** * Get the country name of the given IP address. * - * @param ip Ip address + * @param ip textual IP address address to lookup. * - * @return String + * @return The name of the country. */ public static String getCountryName(String ip) { if (!"127.0.0.1".equals(ip) && isDataAvailable()) { From 8c08bdb7f9e2dbe2367ccb27b058433b2aff8476 Mon Sep 17 00:00:00 2001 From: DNx5 Date: Thu, 18 Feb 2016 10:29:40 +0700 Subject: [PATCH 4/4] oops.. --- src/main/java/fr/xephi/authme/util/GeoLiteAPI.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/xephi/authme/util/GeoLiteAPI.java b/src/main/java/fr/xephi/authme/util/GeoLiteAPI.java index f7e972fb..065d1961 100644 --- a/src/main/java/fr/xephi/authme/util/GeoLiteAPI.java +++ b/src/main/java/fr/xephi/authme/util/GeoLiteAPI.java @@ -84,7 +84,7 @@ public class GeoLiteAPI { /** * Get the country code of the given IP address. * - * @param ip textual IP address address to lookup. + * @param ip textual IP address to lookup. * * @return two-character ISO 3166-1 alpha code for the country. */ @@ -102,7 +102,7 @@ public class GeoLiteAPI { /** * Get the country name of the given IP address. * - * @param ip textual IP address address to lookup. + * @param ip textual IP address to lookup. * * @return The name of the country. */