Skip to content

Commit

Permalink
Cleanup some stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexProgrammerDE committed Nov 24, 2023
1 parent 0acd660 commit af4f6cd
Show file tree
Hide file tree
Showing 32 changed files with 442 additions and 456 deletions.
48 changes: 24 additions & 24 deletions src/main/java/net/pistonmaster/serverwrecker/AttackManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,30 @@ public class AttackManager {
@Setter
private AttackState attackState = AttackState.STOPPED;

private static MinecraftAccount getAccount(SettingsHolder settingsHolder, List<MinecraftAccount> accounts, int botId) {
if (accounts.isEmpty()) {
return new MinecraftAccount(String.format(settingsHolder.get(AccountSettings.NAME_FORMAT), botId));
}

return accounts.remove(0);
}

private static Optional<SWProxy> getProxy(int accountsPerProxy, Object2IntMap<SWProxy> proxyUseMap) {
if (proxyUseMap.isEmpty()) {
return Optional.empty(); // No proxies available
}

var selectedProxy = proxyUseMap.object2IntEntrySet().stream()
.filter(entry -> accountsPerProxy == -1 || entry.getIntValue() < accountsPerProxy)
.min(Comparator.comparingInt(Map.Entry::getValue))
.orElseThrow(() -> new IllegalStateException("No proxies available!")); // Should never happen

// Always present
selectedProxy.setValue(selectedProxy.getIntValue() + 1);

return Optional.of(selectedProxy.getKey());
}

public CompletableFuture<Void> start(SettingsHolder settingsHolder) {
if (!attackState.isStopped()) {
throw new IllegalStateException("Attack is already running");
Expand Down Expand Up @@ -195,30 +219,6 @@ public CompletableFuture<Void> start(SettingsHolder settingsHolder) {
});
}

private static MinecraftAccount getAccount(SettingsHolder settingsHolder, List<MinecraftAccount> accounts, int botId) {
if (accounts.isEmpty()) {
return new MinecraftAccount(String.format(settingsHolder.get(AccountSettings.NAME_FORMAT), botId));
}

return accounts.remove(0);
}

private static Optional<SWProxy> getProxy(int accountsPerProxy, Object2IntMap<SWProxy> proxyUseMap) {
if (proxyUseMap.isEmpty()) {
return Optional.empty(); // No proxies available
}

var selectedProxy = proxyUseMap.object2IntEntrySet().stream()
.filter(entry -> accountsPerProxy == -1 || entry.getIntValue() < accountsPerProxy)
.min(Comparator.comparingInt(Map.Entry::getValue))
.orElseThrow(() -> new IllegalStateException("No proxies available!")); // Should never happen

// Always present
selectedProxy.setValue(selectedProxy.getIntValue() + 1);

return Optional.of(selectedProxy.getKey());
}

public CompletableFuture<Void> stop() {
if (attackState.isStopped()) {
return CompletableFuture.completedFuture(null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@
* setting up logging.
*/
public class ServerWreckerBootstrap {
public static final Path DATA_FOLDER = Path.of(System.getProperty("user.home"), ".serverwrecker");
public static final Path PLUGINS_FOLDER = DATA_FOLDER.resolve("plugins");
public static final PluginManager PLUGIN_MANAGER = new JarPluginManager(PLUGINS_FOLDER);
private static final Logger LOGGER = LoggerFactory.getLogger(ServerWreckerBootstrap.class);

static {
System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");

Expand All @@ -64,11 +69,6 @@ public class ServerWreckerBootstrap {
}
}

public static final Path DATA_FOLDER = Path.of(System.getProperty("user.home"), ".serverwrecker");
public static final Path PLUGINS_FOLDER = DATA_FOLDER.resolve("plugins");
public static final PluginManager PLUGIN_MANAGER = new JarPluginManager(PLUGINS_FOLDER);
private static final Logger LOGGER = LoggerFactory.getLogger(ServerWreckerBootstrap.class);

private ServerWreckerBootstrap() {
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
*/
package net.pistonmaster.serverwrecker;

import net.pistonmaster.serverwrecker.api.ServerWreckerAPI;
import net.pistonmaster.serverwrecker.cli.SWCommandDefinition;
import net.pistonmaster.serverwrecker.common.OperationMode;
import net.pistonmaster.serverwrecker.grpc.RPCClient;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,12 @@ private static boolean checkForUpdates() {
return false;
}

@SuppressWarnings("UnstableApiUsage")
public static void setupLoggingAndVia(SettingsHolder settingsHolder) {
Via.getManager().debugHandler().setEnabled(settingsHolder.get(DevSettings.VIA_DEBUG));
ServerWreckerBootstrap.setupLogging(settingsHolder);
}

/**
* Generates a JWT for the admin user.
*
Expand All @@ -265,12 +271,6 @@ public String generateAdminJWT() {
.compact();
}

@SuppressWarnings("UnstableApiUsage")
public static void setupLoggingAndVia(SettingsHolder settingsHolder) {
Via.getManager().debugHandler().setEnabled(settingsHolder.get(DevSettings.VIA_DEBUG));
ServerWreckerBootstrap.setupLogging(settingsHolder);
}

private void shutdownHook() {
// Shutdown the attacks if there is any
stopAllAttacks().join();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,14 @@
*/
package net.pistonmaster.serverwrecker.cli;

import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import net.pistonmaster.serverwrecker.ServerWreckerServer;
import net.pistonmaster.serverwrecker.auth.AccountSettings;
import net.pistonmaster.serverwrecker.auth.AuthType;
import net.pistonmaster.serverwrecker.builddata.BuildData;
import net.pistonmaster.serverwrecker.command.SWTerminalConsole;
import net.pistonmaster.serverwrecker.grpc.RPCClient;
import net.pistonmaster.serverwrecker.proxy.ProxySettings;
import net.pistonmaster.serverwrecker.proxy.ProxyType;
import net.pistonmaster.serverwrecker.settings.BotSettings;
import net.pistonmaster.serverwrecker.settings.DevSettings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import picocli.CommandLine;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,6 @@
import org.cloudburstmc.math.vector.Vector3i;

public record OffsetData(OffsetType type, float maxHorizontalOffset, float maxVerticalOffset) {
public enum OffsetType {
XZ,
XYZ
}

public Vector3d getOffsetForBlock(Vector3i block) {
return switch (type) {
case XYZ -> {
Expand All @@ -47,4 +42,9 @@ public Vector3d getOffsetForBlock(Vector3i block) {
}
};
}

public enum OffsetType {
XZ,
XYZ
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@
import lombok.RequiredArgsConstructor;
import net.pistonmaster.serverwrecker.ServerWreckerBootstrap;
import net.pistonmaster.serverwrecker.ServerWreckerServer;
import net.pistonmaster.serverwrecker.grpc.generated.*;
import net.pistonmaster.serverwrecker.grpc.generated.ClientDataRequest;
import net.pistonmaster.serverwrecker.grpc.generated.ClientPlugin;
import net.pistonmaster.serverwrecker.grpc.generated.ConfigServiceGrpc;
import net.pistonmaster.serverwrecker.grpc.generated.UIClientDataResponse;

import javax.inject.Inject;
import java.util.ArrayList;
Expand All @@ -33,19 +36,6 @@
public class ConfigServiceImpl extends ConfigServiceGrpc.ConfigServiceImplBase {
private final ServerWreckerServer serverWreckerServer;

@Override
public void getUIClientData(ClientDataRequest request, StreamObserver<UIClientDataResponse> responseObserver) {
var username = Constant.CLIENT_ID_CONTEXT_KEY.get();
responseObserver.onNext(
UIClientDataResponse.newBuilder()
.setUsername(username)
.addAllPlugins(getExtensions())
.addAllPluginSettings(serverWreckerServer.getSettingsManager().exportSettingsMeta())
.build()
);
responseObserver.onCompleted();
}

private static Collection<ClientPlugin> getExtensions() {
var plugins = new ArrayList<ClientPlugin>();
for (var pluginWrapper : ServerWreckerBootstrap.PLUGIN_MANAGER.getPlugins()) {
Expand All @@ -66,4 +56,17 @@ private static Collection<ClientPlugin> getExtensions() {

return plugins;
}

@Override
public void getUIClientData(ClientDataRequest request, StreamObserver<UIClientDataResponse> responseObserver) {
var username = Constant.CLIENT_ID_CONTEXT_KEY.get();
responseObserver.onNext(
UIClientDataResponse.newBuilder()
.setUsername(username)
.addAllPlugins(getExtensions())
.addAllPluginSettings(serverWreckerServer.getSettingsManager().exportSettingsMeta())
.build()
);
responseObserver.onCompleted();
}
}
84 changes: 42 additions & 42 deletions src/main/java/net/pistonmaster/serverwrecker/gui/GUIFrame.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,48 @@ public GUIFrame() {
super("ServerWrecker");
}

public static void showHints(Injector injector) {
var logPanel = injector.getSingleton(LogPanel.class);
var cardContainer = injector.getSingleton(CardsContainer.class);

var commandsHint = new HintManager.Hint(
"Use \"help\" to get a list of all commands.",
(Component) logPanel.getClientProperty("log-panel-command-input"),
SwingConstants.TOP, "hint.commandInput", null);

var controlsHint = new HintManager.Hint(
"Here you can start, pause and stop a attack.",
injector.getSingleton(ControlPanel.class),
SwingConstants.TOP, "hint.controls", commandsHint);

var pluginsHint = new HintManager.Hint(
"Click to configure plugins to make the attack more effective.",
(Component) cardContainer.getClientProperty("plugin-menu-button"),
SwingConstants.BOTTOM, "hint.pluginsButton", controlsHint);

var proxyHint = new HintManager.Hint(
"Click to import HTTP, SOCKS4 and SOCKS5 proxies",
(Component) cardContainer.getClientProperty("proxy-menu-button"),
SwingConstants.LEFT, "hint.proxyButton", pluginsHint);

var accountsHint = new HintManager.Hint(
"Click to configure the bot offline-mode name format or bring your own accounts.",
(Component) cardContainer.getClientProperty("account-menu-button"),
SwingConstants.RIGHT, "hint.accountsButton", proxyHint);

var settingsHint = new HintManager.Hint(
"Click to configure host, port, version and more.",
(Component) cardContainer.getClientProperty("settings-menu-button"),
SwingConstants.BOTTOM, "hint.settingsButton", accountsHint);

var logsHint = new HintManager.Hint(
"Here are all logs of the software displayed. You can select text and right click it to upload it to pastes.dev",
logPanel,
SwingConstants.LEFT, "hint.logPanel", settingsHint);

HintManager.showHint(logsHint);
}

public void initComponents(Injector injector) {
if (SystemInfo.isMacOS) {
// Hide window title because we want to avoid dark-mode name issues
Expand Down Expand Up @@ -91,46 +133,4 @@ public void open(Injector injector) {
}
}
}

public static void showHints(Injector injector) {
var logPanel = injector.getSingleton(LogPanel.class);
var cardContainer = injector.getSingleton(CardsContainer.class);

var commandsHint = new HintManager.Hint(
"Use \"help\" to get a list of all commands.",
(Component) logPanel.getClientProperty("log-panel-command-input"),
SwingConstants.TOP, "hint.commandInput", null);

var controlsHint = new HintManager.Hint(
"Here you can start, pause and stop a attack.",
injector.getSingleton(ControlPanel.class),
SwingConstants.TOP, "hint.controls", commandsHint);

var pluginsHint = new HintManager.Hint(
"Click to configure plugins to make the attack more effective.",
(Component) cardContainer.getClientProperty("plugin-menu-button"),
SwingConstants.BOTTOM, "hint.pluginsButton", controlsHint);

var proxyHint = new HintManager.Hint(
"Click to import HTTP, SOCKS4 and SOCKS5 proxies",
(Component) cardContainer.getClientProperty("proxy-menu-button"),
SwingConstants.LEFT, "hint.proxyButton", pluginsHint);

var accountsHint = new HintManager.Hint(
"Click to configure the bot offline-mode name format or bring your own accounts.",
(Component) cardContainer.getClientProperty("account-menu-button"),
SwingConstants.RIGHT, "hint.accountsButton", proxyHint);

var settingsHint = new HintManager.Hint(
"Click to configure host, port, version and more.",
(Component) cardContainer.getClientProperty("settings-menu-button"),
SwingConstants.BOTTOM, "hint.settingsButton", accountsHint);

var logsHint = new HintManager.Hint(
"Here are all logs of the software displayed. You can select text and right click it to upload it to pastes.dev",
logPanel,
SwingConstants.LEFT, "hint.logPanel", settingsHint);

HintManager.showHint(logsHint);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import javafx.embed.swing.JFXPanel;
import lombok.Getter;
import net.lenni0451.reflect.Modules;
import net.pistonmaster.serverwrecker.ServerWreckerServer;
import net.pistonmaster.serverwrecker.auth.AccountRegistry;
import net.pistonmaster.serverwrecker.command.SWTerminalConsole;
import net.pistonmaster.serverwrecker.command.ShutdownManager;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,13 @@
*/
package net.pistonmaster.serverwrecker.gui.navigation;

import net.pistonmaster.serverwrecker.auth.AccountSettings;
import net.pistonmaster.serverwrecker.auth.AuthType;
import net.pistonmaster.serverwrecker.auth.MinecraftAccount;
import net.pistonmaster.serverwrecker.gui.GUIFrame;
import net.pistonmaster.serverwrecker.gui.GUIManager;
import net.pistonmaster.serverwrecker.gui.libs.JEnumComboBox;
import net.pistonmaster.serverwrecker.gui.libs.PresetJCheckBox;
import net.pistonmaster.serverwrecker.gui.libs.SwingTextUtils;
import net.pistonmaster.serverwrecker.gui.popups.ImportTextDialog;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.inject.Inject;
import javax.swing.*;
Expand Down Expand Up @@ -60,7 +56,7 @@ public AccountPanel(GUIManager guiManager, GUIFrame parent, CardsContainer cards
var accountSettingsPanel = new JPanel();
accountSettingsPanel.setLayout(new GridLayout(0, 2));

GeneratedPanel.addComponents(this, cardsContainer.getByNamespace("account"));
GeneratedPanel.addComponents(this, cardsContainer.getByNamespace("account"), guiManager.getSettingsManager());

accountOptionsPanel.add(accountSettingsPanel);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,10 @@ public class CardsContainer extends JPanel {
private final GUIManager guiManager;
@Getter
private final List<ClientPluginSettingsPage> pluginPages = new ArrayList<>();
private final CardLayout cardLayout = new CardLayout();

public void create() {
setLayout(new CardLayout());
setLayout(cardLayout);

// Add bot settings
panels.add(new GeneratedPanel(guiManager.getSettingsManager(), getByNamespace("bot")));
Expand Down Expand Up @@ -80,7 +81,6 @@ public ClientPluginSettingsPage getByNamespace(String namespace) {
}

public void show(String id) {
var cardLayout = (CardLayout) getLayout();
cardLayout.show(this, id);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import net.pistonmaster.serverwrecker.gui.GUIManager;
import net.pistonmaster.serverwrecker.gui.LogPanel;
import net.pistonmaster.serverwrecker.gui.libs.JFXFileHelper;
import net.pistonmaster.serverwrecker.settings.DevSettings;

import javax.inject.Inject;
import javax.swing.*;
Expand All @@ -37,7 +36,7 @@ public class DeveloperPanel extends NavigationItem {
public DeveloperPanel(GUIManager guiManager, LogPanel logPanel, CardsContainer cardsContainer) {
setLayout(new GridLayout(0, 2));

GeneratedPanel.addComponents(this, cardsContainer.getByNamespace("dev"));
GeneratedPanel.addComponents(this, cardsContainer.getByNamespace("dev"), guiManager.getSettingsManager());

add(new JLabel("Save Log:"));
var saveLog = new JButton("Save Log");
Expand Down
Loading

0 comments on commit af4f6cd

Please sign in to comment.