add proxy checking thingy

This commit is contained in:
ayunami2000 2022-01-31 20:26:04 -05:00
parent a71351177b
commit ceb5b8f2b3
5 changed files with 48264 additions and 47848 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,7 @@
package net.lax1dude.eaglercraft;
import java.util.regex.Pattern;
public class ConfigConstants {
public static boolean profanity = false;
@ -11,4 +13,14 @@ public class ConfigConstants {
public static final boolean html5build = true;
public static String[] proxies = new String[]{"pproxy.rom1504.fr","webmcproxy.glitch.me"};
public static Pattern ipPattern = Pattern.compile("^"
+ "(((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}" // Domain name
+ "|"
+ "localhost" // localhost
+ "|"
+ "(([0-9]{1,3}\\.){3})[0-9]{1,3})" // Ip
+ "(:"
+ "[0-9]{1,5})?$"); // Port
}

View File

@ -6,6 +6,12 @@ import net.minecraft.src.GuiTextField;
import net.minecraft.src.NBTTagCompound;
import net.minecraft.src.StringTranslate;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.Arrays;
public class GuiScreenEditProfile extends GuiScreen {
private GuiScreen parent;
@ -22,6 +28,8 @@ public class GuiScreenEditProfile extends GuiScreen {
private int mousex = 0;
private int mousey = 0;
private int proxyInvalid = 0;
private static final TextureLocation gui = new TextureLocation("/gui/gui.png");
public static final String[] defaultOptions = new String[] {
@ -92,6 +100,10 @@ public class GuiScreenEditProfile extends GuiScreen {
public void drawScreen(int mx, int my, float par3) {
StringTranslate var1 = StringTranslate.getInstance();
this.drawDefaultBackground();
if(proxyInvalid>0){
--proxyInvalid;
this.drawCenteredString(this.fontRenderer, "error: proxy is invalid! switching proxy... (if it fails too often, backspace out the proxy)", this.width / 2, 5, 16777215);
}
this.drawCenteredString(this.fontRenderer, this.screenTitle, this.width / 2, 15, 16777215);
this.drawString(this.fontRenderer, var1.translateKey("profile.screenname"), this.width / 2 - 20, this.height / 6 + 8, 10526880);
this.drawString(this.fontRenderer, var1.translateKey("profile.playerSkin"), this.width / 2 - 20, this.height / 6 + 66, 10526880);
@ -189,6 +201,33 @@ public class GuiScreenEditProfile extends GuiScreen {
if(par1GuiButton.id == 200) {
EaglerProfile.username = this.username.getText().length() == 0 ? "null" : this.username.getText();
this.mc.gameSettings.proxy=proxy.getText();
//check proxy
if(!this.mc.gameSettings.proxy.equals("")) {
proxyInvalid=0;
this.drawCenteredString(this.fontRenderer, "checking proxy...", this.width / 2, 5, 16777215);
try {
if(!ConfigConstants.ipPattern.matcher(this.mc.gameSettings.proxy).matches())throw new IOException("lol");
URL url = new URL("http" + (EaglerAdapter.isSSLPage() ? "s" : "") + "://" + this.mc.gameSettings.proxy + "/api/vm/net/connect");
URLConnection con = url.openConnection();
HttpURLConnection http = (HttpURLConnection) con;
http.connect();
if(http.getResponseCode()!=HttpURLConnection.HTTP_OK&&http.getResponseCode()!=HttpURLConnection.HTTP_NOT_FOUND){
http.disconnect();
throw new IOException("lol");
}
http.disconnect();
} catch (IOException e) {
//change proxy and then do nothing else if it fails
this.mc.gameSettings.proxy=this.mc.gameSettings.getNewProxy();
proxy.setText(this.mc.gameSettings.proxy);
proxyInvalid = 300;
return;
}
}
EaglerProfile.presetSkinId = selectedSlot - EaglerProfile.skinNames.size();
if(EaglerProfile.presetSkinId < 0) {
EaglerProfile.presetSkinId = -1;

View File

@ -1,13 +1,21 @@
package net.minecraft.src;
import net.lax1dude.eaglercraft.ConfigConstants;
import net.lax1dude.eaglercraft.EaglerAdapter;
import net.lax1dude.eaglercraft.EaglercraftRandom;
import net.lax1dude.eaglercraft.LocalStorageManager;
import net.minecraft.client.Minecraft;
public class GameSettings {
public static boolean useDefaultProtocol = true;
public static String proxy = (new String[]{"pproxy.rom1504.fr","webmcproxy.glitch.me"})[(int)Math.floor(Math.random()*2)];
public static String proxy = "";
public static String getNewProxy(){
String res=proxy;
while(res.equals(proxy)) res = ConfigConstants.proxies[(int) Math.floor(Math.random() * 2)];
return res;
}
static {
proxy = getNewProxy();
}
private static final String[] RENDER_DISTANCES = new String[] { "options.renderDistance.far", "options.renderDistance.normal", "options.renderDistance.short", "options.renderDistance.tiny" };

View File

@ -31,15 +31,6 @@ public class WebsocketNetworkManager implements INetworkManager {
private NetHandler netHandler;
Pattern ipPattern = Pattern.compile("^"
+ "(((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}" // Domain name
+ "|"
+ "localhost" // localhost
+ "|"
+ "(([0-9]{1,3}\\.){3})[0-9]{1,3})" // Ip
+ "(:"
+ "[0-9]{1,5})?$"); // Port
public WebsocketNetworkManager(String uri, String eagler, NetHandler netHandler) throws IOException {
this.netHandler = netHandler;
this.sharedKeyForEncryption = null;
@ -49,7 +40,7 @@ public class WebsocketNetworkManager implements INetworkManager {
boolean stillConnect=true;
if(!proxyUrl.equals("")&&!uri.contains("/")){
stillConnect=false;
if (ipPattern.matcher(proxyUrl).matches()&&ipPattern.matcher(uri).matches()) {
if (ConfigConstants.ipPattern.matcher(proxyUrl).matches()&&ConfigConstants.ipPattern.matcher(uri).matches()) {
String ip = uri;
String port = "25565";
if (uri.contains(":")) {