Skip to content

Commit

Permalink
Fix compilation
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexProgrammerDE committed Dec 6, 2024
1 parent 344b91a commit 0103006
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import java.util.List;
import java.util.UUID;

import static com.soulfiremc.client.ClientBrigadierHelper.help;
import static com.soulfiremc.client.ClientBrigadierHelper.literal;
Expand Down Expand Up @@ -64,7 +65,7 @@ public void onNext(InstanceCreateResponse value) {
rpcClient
.instanceStub().updateInstanceConfig(InstanceUpdateConfigRequest.newBuilder()
.setId(value.getId())
.setConfig(clientSettingsManager.exportSettingsProto())
.setConfig(clientSettingsManager.exportSettingsProto(UUID.fromString(value.getId())))
.build(), new StreamObserver<>() {
@Override
public void onNext(InstanceUpdateConfigResponse instanceUpdateResponse) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,23 @@
import com.soulfiremc.brigadier.ClientConsoleCommandSource;
import com.soulfiremc.brigadier.GenericTerminalConsole;
import com.soulfiremc.builddata.BuildData;
import com.soulfiremc.client.settings.ProxyParser;
import com.soulfiremc.server.account.AuthType;
import com.soulfiremc.server.proxy.ProxyType;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.Option;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.concurrent.Callable;
import java.util.stream.Collectors;

@Slf4j
@Getter
@RequiredArgsConstructor
@Command(
name = "soulfire",
Expand Down Expand Up @@ -120,29 +119,7 @@ public Integer call() {
// Delayed to here, so help and version do not get cut off
GenericTerminalConsole.setupStreams();

if (accountFile != null && authType != null) {
try {
cliManager
.clientSettingsManager()
.loadFromString(Files.readString(accountFile), authType, null);
} catch (IOException e) {
log.error("Failed to load accounts!", e);
return 1;
}
}

if (proxyFile != null) {
try {
cliManager
.clientSettingsManager()
.loadFromString(
Files.readString(proxyFile),
proxyType == null ? ProxyParser.uriParser() : ProxyParser.typeParser(proxyType));
} catch (IOException e) {
log.error("Failed to load proxies!", e);
return 1;
}
}
cliManager.clientSettingsManager().commandDefinition(this);

if (start) {
cliManager.clientCommandManager().execute("start-attack", new ClientConsoleCommandSource());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,23 @@
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
import com.google.gson.JsonElement;
import com.soulfiremc.client.cli.SFCommandDefinition;
import com.soulfiremc.client.grpc.RPCClient;
import com.soulfiremc.grpc.generated.AccountTypeCredentials;
import com.soulfiremc.grpc.generated.CredentialsAuthRequest;
import com.soulfiremc.grpc.generated.InstanceConfig;
import com.soulfiremc.server.account.AuthType;
import com.soulfiremc.server.account.MinecraftAccount;
import com.soulfiremc.server.proxy.SFProxy;
import com.soulfiremc.server.settings.PropertyKey;
import com.soulfiremc.server.settings.lib.SettingsImpl;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;

import javax.inject.Inject;
import javax.inject.Provider;
import java.io.IOException;
import java.nio.file.Files;
import java.util.*;
import java.util.function.Consumer;
import java.util.function.Predicate;
Expand All @@ -45,6 +48,8 @@ public class ClientSettingsManager {
Multimaps.newListMultimap(new LinkedHashMap<>(), ArrayList::new);
private final Map<String, Map<String, Provider<JsonElement>>> providers = new LinkedHashMap<>();
private final RPCClient rpcClient;
@Setter
private SFCommandDefinition commandDefinition;
private SettingsImpl settingsSource = SettingsImpl.EMPTY;

public void registerProvider(PropertyKey property, Provider<JsonElement> provider) {
Expand All @@ -57,12 +62,35 @@ public void registerListener(PropertyKey property, Consumer<JsonElement> listene
listeners.put(property, listener);
}

public InstanceConfig exportSettingsProto() {
public InstanceConfig exportSettingsProto(UUID instanceId) {
// Load accounts
if (commandDefinition.accountFile() != null && commandDefinition.authType() != null) {
try {
loadFromString(instanceId, Files.readString(commandDefinition.accountFile()), commandDefinition.authType());
} catch (IOException e) {
log.error("Failed to load accounts!", e);
throw new RuntimeException(e);
}
}

// Load proxies
if (commandDefinition.proxyFile() != null) {
try {
loadFromString(
Files.readString(commandDefinition.proxyFile()),
commandDefinition.proxyType() == null ? ProxyParser.uriParser() : ProxyParser.typeParser(commandDefinition.proxyType()));
} catch (IOException e) {
log.error("Failed to load proxies!", e);
throw new RuntimeException(e);
}
}

// Load settings
gatherProviders();
return settingsSource.toProto();
}

public void gatherProviders() {
private void gatherProviders() {
var settings = new HashMap<String, Map<String, JsonElement>>();
providers.forEach((namespace, properties) -> {
var namespaceMap = new HashMap<String, JsonElement>();
Expand All @@ -76,7 +104,7 @@ public void gatherProviders() {
settingsSource = settingsSource.withSettings(settings);
}

public void loadFromString(String data, ProxyParser proxyParser) {
private void loadFromString(String data, ProxyParser proxyParser) {
try {
var newProxies =
data.lines()
Expand All @@ -99,14 +127,14 @@ public void loadFromString(String data, ProxyParser proxyParser) {
}
}

public void loadFromString(String data, AuthType authType, SFProxy proxy) {
private void loadFromString(UUID instanceId, String data, AuthType authType) {
try {
var newAccounts =
fromStringList(data.lines()
fromStringList(instanceId, data.lines()
.map(String::strip)
.filter(Predicate.not(String::isBlank))
.distinct()
.toList(), authType, proxy);
.toList(), authType);

if (newAccounts.isEmpty()) {
log.warn("No accounts found in the provided data!");
Expand All @@ -121,17 +149,14 @@ public void loadFromString(String data, AuthType authType, SFProxy proxy) {
}
}

private List<MinecraftAccount> fromStringList(List<String> accounts, AuthType authType, SFProxy proxy) {
private List<MinecraftAccount> fromStringList(UUID instanceId, List<String> accounts, AuthType authType) {
try {
var request =
CredentialsAuthRequest.newBuilder()
.setInstanceId(instanceId.toString())
.setService(AccountTypeCredentials.valueOf(authType.name()))
.addAllPayload(accounts);

if (proxy != null) {
request.setProxy(proxy.toProto());
}

return rpcClient.mcAuthServiceBlocking().loginCredentials(request.build()).getAccountList()
.stream()
.map(MinecraftAccount::fromProto)
Expand Down

0 comments on commit 0103006

Please sign in to comment.