aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus')
-rw-r--r--src/Java/gtPlusPlus/GTplusplus.java2
-rw-r--r--src/Java/gtPlusPlus/core/lib/CORE.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/Utils.java20
-rw-r--r--src/Java/gtPlusPlus/core/util/geo/GeoUtils.java100
-rw-r--r--src/Java/gtPlusPlus/core/util/networking/NetworkUtils.java12
5 files changed, 132 insertions, 4 deletions
diff --git a/src/Java/gtPlusPlus/GTplusplus.java b/src/Java/gtPlusPlus/GTplusplus.java
index 045e0a535b..9f367388a6 100644
--- a/src/Java/gtPlusPlus/GTplusplus.java
+++ b/src/Java/gtPlusPlus/GTplusplus.java
@@ -162,6 +162,8 @@ implements ActionListener
{
Utils.LOG_INFO("Loading "+CORE.name+" V"+CORE.VERSION);
Utils.LOG_INFO("Latest is "+CORE.MASTER_VERSION+". Updated? "+Utils.isModUpToDate());
+ Utils.LOG_INFO("User's Country: "+CORE.USER_COUNTRY);
+
//FirstCall();
FMLCommonHandler.instance().bus().register(new LoginEventHandler());
Utils.LOG_INFO("Login Handler Initialized");
diff --git a/src/Java/gtPlusPlus/core/lib/CORE.java b/src/Java/gtPlusPlus/core/lib/CORE.java
index 9e049c475f..e4370accc4 100644
--- a/src/Java/gtPlusPlus/core/lib/CORE.java
+++ b/src/Java/gtPlusPlus/core/lib/CORE.java
@@ -4,6 +4,7 @@ import java.util.*;
import gregtech.api.GregTech_API;
import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.geo.GeoUtils;
import gtPlusPlus.core.util.gregtech.recipehandlers.GregtechRecipe;
import gtPlusPlus.core.util.networking.NetworkUtils;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials;
@@ -28,6 +29,7 @@ public class CORE {
public static final String MODID = "miscutils";
public static final String VERSION = "1.4.9.86-Beta";
public static final String MASTER_VERSION = NetworkUtils.getContentFromURL("https://raw.githubusercontent.com/draknyte1/GTplusplus/master/Recommended.txt").toLowerCase();
+ public static final String USER_COUNTRY = GeoUtils.determineUsersCountry();
public static boolean isModUpToDate = Utils.isModUpToDate();
public static boolean DEBUG = false;
public static final boolean LOAD_ALL_CONTENT = false;
diff --git a/src/Java/gtPlusPlus/core/util/Utils.java b/src/Java/gtPlusPlus/core/util/Utils.java
index db8ed87231..79dd93a2f1 100644
--- a/src/Java/gtPlusPlus/core/util/Utils.java
+++ b/src/Java/gtPlusPlus/core/util/Utils.java
@@ -32,6 +32,8 @@ import net.minecraftforge.fluids.*;
import net.minecraftforge.oredict.OreDictionary;
import org.apache.commons.lang3.EnumUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.FMLLog;
@@ -157,32 +159,42 @@ public class Utils {
}
return (target.getItem() == input.getItem() && ((target.getItemDamage() == WILDCARD_VALUE && !strict) || target.getItemDamage() == input.getItemDamage()));
}
+
+ //Logging Functions
+ private static final Logger modLogger = makeLogger();
+
+ //Generate GT++ Logger
+ public static Logger makeLogger(){
+ Logger gtPlusPlusLogger = LogManager.getLogger("GT++");
+ return gtPlusPlusLogger;
+ }
+
//Non-Dev Comments
public static void LOG_INFO(String s){
//if (CORE.DEBUG){
- FMLLog.info("GT++: "+s);
+ modLogger.info(s);
//}
}
//Non-Dev Comments
public static void LOG_MACHINE_INFO(String s){
if (CORE.configSwitches.MACHINE_INFO || ClientProxy.playerName.toLowerCase().contains("draknyte1")){
- FMLLog.info("GT++: Machine Info: "+s);
+ modLogger.info("Machine Info: "+s);
}
}
//Developer Comments
public static void LOG_WARNING(String s){
if (CORE.DEBUG){
- FMLLog.warning("GT++: "+s);
+ modLogger.warn(s);
}
}
//Errors
public static void LOG_ERROR(String s){
if (CORE.DEBUG){
- FMLLog.severe("GT++: "+s);
+ modLogger.fatal(s);
}
}
diff --git a/src/Java/gtPlusPlus/core/util/geo/GeoUtils.java b/src/Java/gtPlusPlus/core/util/geo/GeoUtils.java
new file mode 100644
index 0000000000..9a7a16a8ab
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/util/geo/GeoUtils.java
@@ -0,0 +1,100 @@
+package gtPlusPlus.core.util.geo;
+
+import java.io.*;
+import java.net.*;
+
+import org.apache.http.client.utils.URIBuilder;
+
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.networking.NetworkUtils;
+
+public class GeoUtils {
+
+ public static String determineUsersCountry(){
+ if (NetworkUtils.checkNetworkIsAvailableWithValidInterface()){
+ return getUsersCountry();
+ }
+ else {
+ return "Offline.";
+ }
+ }
+
+ private static String getUsersIPAddress() {
+ try {
+ String webPage = "http://checkip.amazonaws.com/";
+ URL url = new URL(webPage);
+ URLConnection urlConnection = url.openConnection();
+ InputStream is = urlConnection.getInputStream();
+ InputStreamReader isr = new InputStreamReader(is);
+ int numCharsRead;
+ char[] charArray = new char[1024];
+ StringBuffer sb = new StringBuffer();
+ while ((numCharsRead = isr.read(charArray)) > 0) {
+ sb.append(charArray, 0, numCharsRead);
+ }
+ String result = sb.toString();
+ return result;
+ } catch (IOException e) {}
+ return "Error getting users IP.";
+ }
+
+ private static String getUsersCountry() {
+
+ //Get the IP
+ String ipAddress = getUsersIPAddress();
+
+ //Build a URL
+ URIBuilder builder = new URIBuilder()
+ .setScheme("http")
+ .setHost("ipinfo.io")
+ .setPath("/"+ipAddress+"/country/");
+
+ URI uri;
+ try {
+ //Convert the URI Builder to a URI, then to a URL
+ uri = builder.build();
+ URL url = uri.toURL();
+
+ //Main Check method
+ try {
+ URLConnection urlConnection = url.openConnection();
+ InputStream is = urlConnection.getInputStream();
+ InputStreamReader isr = new InputStreamReader(is);
+ int numCharsRead;
+ char[] charArray = new char[1024];
+ StringBuffer sb = new StringBuffer();
+ while ((numCharsRead = isr.read(charArray)) > 0) {
+ sb.append(charArray, 0, numCharsRead);
+ }
+ String temp = sb.toString();
+ String result = temp.replaceAll("(\\r|\\n)", "");
+ return result;
+ //Catch block for bad connection
+ } catch (IOException e) {
+ Utils.LOG_INFO("Method 1 - Failed.");
+ }
+
+ //Secondary method
+ try (java.util.Scanner s = new java.util.Scanner(url.openStream(), "UTF-8").useDelimiter("\\A")) {
+ String r = s.next();
+ return r.replaceAll("(\\r|\\n)", "");
+ //Catch block for bad connection
+ } catch (java.io.IOException e) {
+ Utils.LOG_INFO("Method 2 - Failed.");
+ }
+
+ }
+ //Catch block for all the Bad URI/URL building
+ catch (URISyntaxException | MalformedURLException e1) {
+ if (e1 instanceof URISyntaxException){
+ Utils.LOG_INFO("Bad URI Syntax for builder.");
+ }
+ else {
+ Utils.LOG_INFO("Malformed URL.");
+ }
+ Utils.LOG_INFO("Country Check - Failed.");
+ }
+ return "Error getting users Country. "+ipAddress;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/util/networking/NetworkUtils.java b/src/Java/gtPlusPlus/core/util/networking/NetworkUtils.java
index b02b50bbfd..84234382d9 100644
--- a/src/Java/gtPlusPlus/core/util/networking/NetworkUtils.java
+++ b/src/Java/gtPlusPlus/core/util/networking/NetworkUtils.java
@@ -33,6 +33,18 @@ public class NetworkUtils {
return "offline";
}
+ public static boolean checkNetworkIsAvailableWithValidInterface(){
+ try {
+ if (hasValidNetworkInterface()){
+ if (netIsAvailableGithub() || netIsAvailableOther() || netIsAvailableBaidu() || netIsAvailableGoogle()){
+ return true;
+ }
+ }
+ }
+ catch (SocketException e) {}
+ return false;
+ }
+
private static boolean netIsAvailableGoogle() {
try {
final URL url = new URL("http://www.google.com");