Last active
September 15, 2016 19:48
-
-
Save Aaron1011/358b3c862bed72506c695e36288b41dc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/BungeeCord-Patches/0004-Configurable-Waterfall-Metrics.patch b/BungeeCord-Patches/0004-Configurable-Waterfall-Metrics.patch | |
| index ebb7ac6..cd750da 100644 | |
| --- a/BungeeCord-Patches/0004-Configurable-Waterfall-Metrics.patch | |
| +++ b/BungeeCord-Patches/0004-Configurable-Waterfall-Metrics.patch | |
| @@ -1,4 +1,4 @@ | |
| -From 2b4b56de0968e5a63f727123a3becd03df65edeb Mon Sep 17 00:00:00 2001 | |
| +From 11eaba725d46660a261f38e5c1a6ebca6ae4ba3d Mon Sep 17 00:00:00 2001 | |
| From: Techcable <[email protected]> | |
| Date: Thu, 19 May 2016 10:55:20 -0700 | |
| Subject: [PATCH] Configurable Waterfall Metrics | |
| @@ -17,143 +17,46 @@ index b30541b..293ec4e 100644 | |
| + */ | |
| + boolean isMetrics(); | |
| } | |
| -diff --git a/proxy/src/main/java/io/github/waterfallmc/waterfall/Metrics.java b/proxy/src/main/java/io/github/waterfallmc/waterfall/Metrics.java | |
| -new file mode 100644 | |
| -index 0000000..ae5a2a9 | |
| ---- /dev/null | |
| +diff --git a/proxy/src/main/java/net/md_5/bungee/Metrics.java b/proxy/src/main/java/io/github/waterfallmc/waterfall/Metrics.java | |
| +similarity index 96% | |
| +rename from proxy/src/main/java/net/md_5/bungee/Metrics.java | |
| +rename to proxy/src/main/java/io/github/waterfallmc/waterfall/Metrics.java | |
| +index 9523987..ae5a2a9 100644 | |
| +--- a/proxy/src/main/java/net/md_5/bungee/Metrics.java | |
| +++ b/proxy/src/main/java/io/github/waterfallmc/waterfall/Metrics.java | |
| -@@ -0,0 +1,131 @@ | |
| +@@ -1,4 +1,4 @@ | |
| +-package net.md_5.bungee; | |
| +package io.github.waterfallmc.waterfall; | |
| -+ | |
| -+import java.io.BufferedReader; | |
| -+import java.io.IOException; | |
| -+import java.io.InputStreamReader; | |
| -+import java.io.OutputStreamWriter; | |
| -+import java.io.UnsupportedEncodingException; | |
| -+import java.net.URL; | |
| -+import java.net.URLConnection; | |
| -+import java.net.URLEncoder; | |
| -+import java.util.TimerTask; | |
| + | |
| + import java.io.BufferedReader; | |
| + import java.io.IOException; | |
| +@@ -9,6 +9,8 @@ import java.net.URL; | |
| + import java.net.URLConnection; | |
| + import java.net.URLEncoder; | |
| + import java.util.TimerTask; | |
| + | |
| +import net.md_5.bungee.BungeeCord; | |
| -+import net.md_5.bungee.api.ProxyServer; | |
| -+ | |
| -+public class Metrics extends TimerTask | |
| -+{ | |
| -+ | |
| -+ /** | |
| -+ * The current revision number | |
| -+ */ | |
| -+ private final static int REVISION = 5; | |
| -+ /** | |
| -+ * The base url of the metrics domain | |
| -+ */ | |
| -+ private static final String BASE_URL = "http://mcstats.org"; | |
| -+ /** | |
| -+ * The url used to report a server's status | |
| -+ */ | |
| -+ private static final String REPORT_URL = "/report/%s"; | |
| -+ /** | |
| -+ * Interval of time to ping (in minutes) | |
| -+ */ | |
| + import net.md_5.bungee.api.ProxyServer; | |
| + | |
| + public class Metrics extends TimerTask | |
| +@@ -29,7 +31,7 @@ public class Metrics extends TimerTask | |
| + /** | |
| + * Interval of time to ping (in minutes) | |
| + */ | |
| +- final static int PING_INTERVAL = 10; | |
| + public final static int PING_INTERVAL = 10; | |
| -+ boolean firstPost = true; | |
| -+ | |
| -+ @Override | |
| -+ public void run() | |
| -+ { | |
| -+ try | |
| -+ { | |
| -+ // We use the inverse of firstPost because if it is the first time we are posting, | |
| -+ // it is not a interval ping, so it evaluates to FALSE | |
| -+ // Each time thereafter it will evaluate to TRUE, i.e PING! | |
| -+ postPlugin( !firstPost ); | |
| -+ | |
| -+ // After the first post we set firstPost to false | |
| -+ // Each post thereafter will be a ping | |
| -+ firstPost = false; | |
| -+ } catch ( IOException ex ) | |
| -+ { | |
| -+ // ProxyServer.getInstance().getLogger().info( "[Metrics] " + ex.getMessage() ); | |
| -+ } | |
| -+ } | |
| -+ | |
| -+ /** | |
| -+ * Generic method that posts a plugin to the metrics website | |
| -+ */ | |
| -+ private void postPlugin(boolean isPing) throws IOException | |
| -+ { | |
| -+ // Construct the post data | |
| -+ final StringBuilder data = new StringBuilder(); | |
| -+ data.append( encode( "guid" ) ).append( '=' ).append( encode( BungeeCord.getInstance().config.getUuid() ) ); | |
| -+ encodeDataPair( data, "version", ProxyServer.getInstance().getVersion() ); | |
| -+ encodeDataPair( data, "server", "0" ); | |
| -+ encodeDataPair( data, "players", Integer.toString( ProxyServer.getInstance().getOnlineCount() ) ); | |
| -+ encodeDataPair( data, "revision", String.valueOf( REVISION ) ); | |
| -+ | |
| -+ // If we're pinging, append it | |
| -+ if ( isPing ) | |
| -+ { | |
| -+ encodeDataPair( data, "ping", "true" ); | |
| -+ } | |
| -+ | |
| -+ // Create the url | |
| + boolean firstPost = true; | |
| + | |
| + @Override | |
| +@@ -71,7 +73,7 @@ public class Metrics extends TimerTask | |
| + } | |
| + | |
| + // Create the url | |
| +- URL url = new URL( BASE_URL + String.format( REPORT_URL, encode( "BungeeCord" ) ) ); | |
| + URL url = new URL( BASE_URL + String.format( REPORT_URL, encode( "Waterfall" ) ) ); | |
| -+ | |
| -+ // Connect to the website | |
| -+ URLConnection connection; | |
| -+ | |
| -+ connection = url.openConnection(); | |
| -+ | |
| -+ connection.setDoOutput( true ); | |
| -+ final BufferedReader reader; | |
| -+ final String response; | |
| -+ try ( OutputStreamWriter writer = new OutputStreamWriter( connection.getOutputStream() ) ) | |
| -+ { | |
| -+ writer.write( data.toString() ); | |
| -+ writer.flush(); | |
| -+ reader = new BufferedReader( new InputStreamReader( connection.getInputStream() ) ); | |
| -+ response = reader.readLine(); | |
| -+ } | |
| -+ reader.close(); | |
| -+ | |
| -+ if ( response == null || response.startsWith( "ERR" ) ) | |
| -+ { | |
| -+ throw new IOException( response ); //Throw the exception | |
| -+ } | |
| -+ } | |
| -+ | |
| -+ /** | |
| -+ * <p> | |
| -+ * Encode a key/value data pair to be used in a HTTP post request. This | |
| -+ * INCLUDES a & so the first key/value pair MUST be included manually, | |
| -+ * e.g:</p> | |
| -+ * <code> | |
| -+ * StringBuffer data = new StringBuffer(); | |
| -+ * data.append(encode("guid")).append('=').append(encode(guid)); | |
| -+ * encodeDataPair(data, "version", description.getVersion()); | |
| -+ * </code> | |
| -+ * | |
| -+ * @param buffer the StringBuilder to append the data pair onto | |
| -+ * @param key the key value | |
| -+ * @param value the value | |
| -+ */ | |
| -+ private static void encodeDataPair(final StringBuilder buffer, final String key, final String value) throws UnsupportedEncodingException | |
| -+ { | |
| -+ buffer.append( '&' ).append( encode( key ) ).append( '=' ).append( encode( value ) ); | |
| -+ } | |
| -+ | |
| -+ /** | |
| -+ * Encode text as UTF-8 | |
| -+ * | |
| -+ * @param text the text to encode | |
| -+ * @return the encoded text, as UTF-8 | |
| -+ */ | |
| -+ private static String encode(final String text) throws UnsupportedEncodingException | |
| -+ { | |
| -+ return URLEncoder.encode( text, "UTF-8" ); | |
| -+ } | |
| -+} | |
| + | |
| + // Connect to the website | |
| + URLConnection connection; | |
| diff --git a/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java b/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java | |
| index 03160da..1fa3ecd 100644 | |
| --- a/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java | |
| @@ -205,141 +108,6 @@ index 33c646a..8fd256c 100644 | |
| } | |
| public void startListeners() | |
| -diff --git a/proxy/src/main/java/net/md_5/bungee/Metrics.java b/proxy/src/main/java/net/md_5/bungee/Metrics.java | |
| -deleted file mode 100644 | |
| -index 9523987..0000000 | |
| ---- a/proxy/src/main/java/net/md_5/bungee/Metrics.java | |
| -+++ /dev/null | |
| -@@ -1,129 +0,0 @@ | |
| --package net.md_5.bungee; | |
| -- | |
| --import java.io.BufferedReader; | |
| --import java.io.IOException; | |
| --import java.io.InputStreamReader; | |
| --import java.io.OutputStreamWriter; | |
| --import java.io.UnsupportedEncodingException; | |
| --import java.net.URL; | |
| --import java.net.URLConnection; | |
| --import java.net.URLEncoder; | |
| --import java.util.TimerTask; | |
| --import net.md_5.bungee.api.ProxyServer; | |
| -- | |
| --public class Metrics extends TimerTask | |
| --{ | |
| -- | |
| -- /** | |
| -- * The current revision number | |
| -- */ | |
| -- private final static int REVISION = 5; | |
| -- /** | |
| -- * The base url of the metrics domain | |
| -- */ | |
| -- private static final String BASE_URL = "http://mcstats.org"; | |
| -- /** | |
| -- * The url used to report a server's status | |
| -- */ | |
| -- private static final String REPORT_URL = "/report/%s"; | |
| -- /** | |
| -- * Interval of time to ping (in minutes) | |
| -- */ | |
| -- final static int PING_INTERVAL = 10; | |
| -- boolean firstPost = true; | |
| -- | |
| -- @Override | |
| -- public void run() | |
| -- { | |
| -- try | |
| -- { | |
| -- // We use the inverse of firstPost because if it is the first time we are posting, | |
| -- // it is not a interval ping, so it evaluates to FALSE | |
| -- // Each time thereafter it will evaluate to TRUE, i.e PING! | |
| -- postPlugin( !firstPost ); | |
| -- | |
| -- // After the first post we set firstPost to false | |
| -- // Each post thereafter will be a ping | |
| -- firstPost = false; | |
| -- } catch ( IOException ex ) | |
| -- { | |
| -- // ProxyServer.getInstance().getLogger().info( "[Metrics] " + ex.getMessage() ); | |
| -- } | |
| -- } | |
| -- | |
| -- /** | |
| -- * Generic method that posts a plugin to the metrics website | |
| -- */ | |
| -- private void postPlugin(boolean isPing) throws IOException | |
| -- { | |
| -- // Construct the post data | |
| -- final StringBuilder data = new StringBuilder(); | |
| -- data.append( encode( "guid" ) ).append( '=' ).append( encode( BungeeCord.getInstance().config.getUuid() ) ); | |
| -- encodeDataPair( data, "version", ProxyServer.getInstance().getVersion() ); | |
| -- encodeDataPair( data, "server", "0" ); | |
| -- encodeDataPair( data, "players", Integer.toString( ProxyServer.getInstance().getOnlineCount() ) ); | |
| -- encodeDataPair( data, "revision", String.valueOf( REVISION ) ); | |
| -- | |
| -- // If we're pinging, append it | |
| -- if ( isPing ) | |
| -- { | |
| -- encodeDataPair( data, "ping", "true" ); | |
| -- } | |
| -- | |
| -- // Create the url | |
| -- URL url = new URL( BASE_URL + String.format( REPORT_URL, encode( "BungeeCord" ) ) ); | |
| -- | |
| -- // Connect to the website | |
| -- URLConnection connection; | |
| -- | |
| -- connection = url.openConnection(); | |
| -- | |
| -- connection.setDoOutput( true ); | |
| -- final BufferedReader reader; | |
| -- final String response; | |
| -- try ( OutputStreamWriter writer = new OutputStreamWriter( connection.getOutputStream() ) ) | |
| -- { | |
| -- writer.write( data.toString() ); | |
| -- writer.flush(); | |
| -- reader = new BufferedReader( new InputStreamReader( connection.getInputStream() ) ); | |
| -- response = reader.readLine(); | |
| -- } | |
| -- reader.close(); | |
| -- | |
| -- if ( response == null || response.startsWith( "ERR" ) ) | |
| -- { | |
| -- throw new IOException( response ); //Throw the exception | |
| -- } | |
| -- } | |
| -- | |
| -- /** | |
| -- * <p> | |
| -- * Encode a key/value data pair to be used in a HTTP post request. This | |
| -- * INCLUDES a & so the first key/value pair MUST be included manually, | |
| -- * e.g:</p> | |
| -- * <code> | |
| -- * StringBuffer data = new StringBuffer(); | |
| -- * data.append(encode("guid")).append('=').append(encode(guid)); | |
| -- * encodeDataPair(data, "version", description.getVersion()); | |
| -- * </code> | |
| -- * | |
| -- * @param buffer the StringBuilder to append the data pair onto | |
| -- * @param key the key value | |
| -- * @param value the value | |
| -- */ | |
| -- private static void encodeDataPair(final StringBuilder buffer, final String key, final String value) throws UnsupportedEncodingException | |
| -- { | |
| -- buffer.append( '&' ).append( encode( key ) ).append( '=' ).append( encode( value ) ); | |
| -- } | |
| -- | |
| -- /** | |
| -- * Encode text as UTF-8 | |
| -- * | |
| -- * @param text the text to encode | |
| -- * @return the encoded text, as UTF-8 | |
| -- */ | |
| -- private static String encode(final String text) throws UnsupportedEncodingException | |
| -- { | |
| -- return URLEncoder.encode( text, "UTF-8" ); | |
| -- } | |
| --} | |
| -- | |
| -2.8.2 | |
| +2.9.3 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment