feat: support for getting proxies from url

This commit is contained in:
CreeperMaxCZ committed 2022-07-30 21:35:13 +02:00
1 parent 655bc70eaa
commit 204ff4b850
2 files changed
+40 -18

No files matched your search

+1 -1
View File
@@ -5,7 +5,7 @@
## 🆒 Features ## 🆒 Features
- ✅ Connect as many bots as you want - ✅ Connect as many bots as you want
- ✅ Use SOCKS4 or SOCKS5 proxies - ✅ Use SOCKS4 or SOCKS5 proxies from file or URL
- ✅ Receive colored or noncolored chat - ✅ Receive colored or noncolored chat
- ✅ Set connection delay - ✅ Set connection delay
- ✅ Set message or command on join - ✅ Set message or command on join
+39 -17
View File
@@ -8,20 +8,11 @@ import org.xbill.DNS.SRVRecord;
import org.xbill.DNS.Type; import org.xbill.DNS.Type;
import java.io.*; import java.io.*;
import java.net.InetAddress; import java.net.*;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.InvalidPathException;
import java.nio.file.Paths;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner; import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main { public class Main {
@@ -38,7 +29,7 @@ public class Main {
public static String joinMessage; public static String joinMessage;
private static boolean useProxies = false; private static boolean useProxies = false;
private static ArrayList<InetSocketAddress> proxies = new ArrayList<>(); private static final ArrayList<InetSocketAddress> proxies = new ArrayList<>();
private static int proxyIndex = 0; private static int proxyIndex = 0;
private static int proxyCount = 0; private static int proxyCount = 0;
private static ProxyInfo.Type proxyType; private static ProxyInfo.Type proxyType;
@@ -64,7 +55,7 @@ public class Main {
options.addOption("x", "most-minimal", false, "minimal run without any control, just connect the bots"); options.addOption("x", "most-minimal", false, "minimal run without any control, just connect the bots");
options.addOption("j", "join-msg", true, "join message / command"); options.addOption("j", "join-msg", true, "join message / command");
options.addOption("l", "proxy-list", true, "Path to proxy list file with proxy:port on every line"); options.addOption("l", "proxy-list", true, "Path or URL to proxy list file with proxy:port on every line");
options.addOption("t", "proxy-type", true, "Proxy type: SOCKS4 or SOCKS5"); options.addOption("t", "proxy-type", true, "Proxy type: SOCKS4 or SOCKS5");
options.addOption("nicks", true, "Path to nicks file with nick on every line"); options.addOption("nicks", true, "Path to nicks file with nick on every line");
@@ -91,9 +82,37 @@ public class Main {
System.exit(1); System.exit(1);
} }
String proxyPath = cmd.getOptionValue("l");
//read proxy list file //read proxy list file
try { try {
Scanner scanner = new Scanner(new File(cmd.getOptionValue('l')));
try {
//try to read specified path as URL
URL url = new URL(proxyPath);
BufferedReader read = new BufferedReader(
new InputStreamReader(url.openStream()));
Log.info("Reading proxies from URL");
String line;
while ((line = read.readLine()) != null) {
try {
String[] parts = line.trim().split(":");
if (parts.length == 2) {
int port = Integer.parseInt(parts[1]);
proxies.add(new InetSocketAddress(parts[0], port));
proxyCount++;
}
}
catch (Exception ignored) { }
}
read.close();
} catch (MalformedURLException e) {
Log.info("Specified proxy file is not a URL, trying to read file");
Scanner scanner = new Scanner(new File(proxyPath));
while (scanner.hasNextLine()) { while (scanner.hasNextLine()) {
try { try {
String[] parts = scanner.nextLine().trim().split(":"); String[] parts = scanner.nextLine().trim().split(":");
@@ -106,17 +125,20 @@ public class Main {
catch (Exception ignored) { } catch (Exception ignored) { }
} }
scanner.close(); scanner.close();
}
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
Log.error("Invalid proxy list file path."); Log.error("Invalid proxy list file path.");
System.exit(1); System.exit(1);
} }
if (proxyCount == 0) { if (proxyCount > 0) {
Log.error("No valid proxies found in file"); useProxies = true;
Log.info("Loaded " + proxyCount + " valid proxies");
} else {
Log.error("No valid proxies loaded");
System.exit(1); System.exit(1);
} }
useProxies = true;
} }