Skip to content

Commit 587a983

Browse files
Pass executor to account auth
1 parent 43e23dd commit 587a983

10 files changed

+45
-25
lines changed

server/src/main/java/com/soulfiremc/server/InstanceManager.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,8 @@ private void refreshExpiredAccounts() {
142142
accounts.add(authService.refresh(
143143
account,
144144
settingsSource.get(AccountSettings.USE_PROXIES_FOR_ACCOUNT_AUTH)
145-
? SFHelpers.getRandomEntry(settingsSource.proxies()) : null
145+
? SFHelpers.getRandomEntry(settingsSource.proxies()) : null,
146+
scheduler
146147
).join());
147148
refreshed++;
148149
} else {
@@ -172,7 +173,8 @@ private MinecraftAccount refreshAccount(MinecraftAccount account) {
172173
var refreshedAccount = authService.refresh(
173174
account,
174175
settingsSource.get(AccountSettings.USE_PROXIES_FOR_ACCOUNT_AUTH)
175-
? SFHelpers.getRandomEntry(settingsSource.proxies()) : null
176+
? SFHelpers.getRandomEntry(settingsSource.proxies()) : null,
177+
scheduler
176178
).join();
177179
var accounts = new ArrayList<>(settingsSource.accounts());
178180
accounts.replaceAll(a -> a.authType().equals(refreshedAccount.authType())

server/src/main/java/com/soulfiremc/server/account/MCAuthService.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import net.raphimc.minecraftauth.step.msa.StepMsaDeviceCode;
2525

2626
import java.util.concurrent.CompletableFuture;
27+
import java.util.concurrent.Executor;
2728
import java.util.function.Consumer;
2829

2930
public sealed interface MCAuthService<I, T>
@@ -72,15 +73,15 @@ public sealed interface MCAuthService<I, T>
7273
};
7374
}
7475

75-
CompletableFuture<MinecraftAccount> login(T data, SFProxy proxyData);
76+
CompletableFuture<MinecraftAccount> login(T data, SFProxy proxyData, Executor executor);
7677

7778
T createData(I data);
7879

79-
default CompletableFuture<MinecraftAccount> createDataAndLogin(I data, SFProxy proxyData) {
80-
return login(createData(data), proxyData);
80+
default CompletableFuture<MinecraftAccount> createDataAndLogin(I data, SFProxy proxyData, Executor executor) {
81+
return login(createData(data), proxyData, executor);
8182
}
8283

83-
CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData);
84+
CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData, Executor executor);
8485

8586
boolean isExpired(MinecraftAccount account);
8687

server/src/main/java/com/soulfiremc/server/account/MSBedrockCredentialsAuthService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import java.util.concurrent.CompletableFuture;
2828
import java.util.concurrent.CompletionException;
29+
import java.util.concurrent.Executor;
2930

3031
public final class MSBedrockCredentialsAuthService
3132
implements MCAuthService<String, MSBedrockCredentialsAuthService.MSBedrockCredentialsAuthData> {
@@ -34,7 +35,7 @@ public final class MSBedrockCredentialsAuthService
3435
private MSBedrockCredentialsAuthService() {}
3536

3637
@Override
37-
public CompletableFuture<MinecraftAccount> login(MSBedrockCredentialsAuthData data, SFProxy proxyData) {
38+
public CompletableFuture<MinecraftAccount> login(MSBedrockCredentialsAuthData data, SFProxy proxyData, Executor executor) {
3839
return CompletableFuture.supplyAsync(() -> {
3940
var flow = MinecraftAuth.BEDROCK_CREDENTIALS_LOGIN;
4041
try {
@@ -65,7 +66,7 @@ public MSBedrockCredentialsAuthData createData(String data) {
6566
}
6667

6768
@Override
68-
public CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData) {
69+
public CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData, Executor executor) {
6970
return CompletableFuture.supplyAsync(() -> {
7071
var flow = MinecraftAuth.BEDROCK_CREDENTIALS_LOGIN;
7172
var fullBedrockSession = flow.fromJson(((BedrockData) account.accountData()).authChain());

server/src/main/java/com/soulfiremc/server/account/MSBedrockDeviceCodeAuthService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import java.util.concurrent.CompletableFuture;
2727
import java.util.concurrent.CompletionException;
28+
import java.util.concurrent.Executor;
2829
import java.util.function.Consumer;
2930

3031
public final class MSBedrockDeviceCodeAuthService
@@ -34,7 +35,7 @@ public final class MSBedrockDeviceCodeAuthService
3435
private MSBedrockDeviceCodeAuthService() {}
3536

3637
@Override
37-
public CompletableFuture<MinecraftAccount> login(MSBedrockDeviceCodeAuthData data, SFProxy proxyData) {
38+
public CompletableFuture<MinecraftAccount> login(MSBedrockDeviceCodeAuthData data, SFProxy proxyData, Executor executor) {
3839
return CompletableFuture.supplyAsync(() -> {
3940
var flow = MinecraftAuth.BEDROCK_DEVICE_CODE_LOGIN;
4041
try {
@@ -53,7 +54,7 @@ public MSBedrockDeviceCodeAuthData createData(Consumer<StepMsaDeviceCode.MsaDevi
5354
}
5455

5556
@Override
56-
public CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData) {
57+
public CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData, Executor executor) {
5758
return CompletableFuture.supplyAsync(() -> {
5859
var flow = MinecraftAuth.BEDROCK_DEVICE_CODE_LOGIN;
5960
var fullBedrockSession = flow.fromJson(((BedrockData) account.accountData()).authChain());

server/src/main/java/com/soulfiremc/server/account/MSJavaCredentialsAuthService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import java.util.concurrent.CompletableFuture;
2828
import java.util.concurrent.CompletionException;
29+
import java.util.concurrent.Executor;
2930

3031
public final class MSJavaCredentialsAuthService
3132
implements MCAuthService<String, MSJavaCredentialsAuthService.MSJavaCredentialsAuthData> {
@@ -34,7 +35,7 @@ public final class MSJavaCredentialsAuthService
3435
private MSJavaCredentialsAuthService() {}
3536

3637
@Override
37-
public CompletableFuture<MinecraftAccount> login(MSJavaCredentialsAuthData data, SFProxy proxyData) {
38+
public CompletableFuture<MinecraftAccount> login(MSJavaCredentialsAuthData data, SFProxy proxyData, Executor executor) {
3839
return CompletableFuture.supplyAsync(() -> {
3940
var flow = MinecraftAuth.JAVA_CREDENTIALS_LOGIN;
4041
try {
@@ -65,7 +66,7 @@ public MSJavaCredentialsAuthData createData(String data) {
6566
}
6667

6768
@Override
68-
public CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData) {
69+
public CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData, Executor executor) {
6970
return CompletableFuture.supplyAsync(() -> {
7071
var flow = MinecraftAuth.JAVA_CREDENTIALS_LOGIN;
7172
var fullJavaSession = flow.fromJson(((OnlineChainJavaData) account.accountData()).authChain());

server/src/main/java/com/soulfiremc/server/account/MSJavaDeviceCodeAuthService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import java.util.concurrent.CompletableFuture;
2727
import java.util.concurrent.CompletionException;
28+
import java.util.concurrent.Executor;
2829
import java.util.function.Consumer;
2930

3031
public final class MSJavaDeviceCodeAuthService
@@ -34,7 +35,7 @@ public final class MSJavaDeviceCodeAuthService
3435
private MSJavaDeviceCodeAuthService() {}
3536

3637
@Override
37-
public CompletableFuture<MinecraftAccount> login(MSJavaDeviceCodeAuthService.MSJavaDeviceCodeAuthData data, SFProxy proxyData) {
38+
public CompletableFuture<MinecraftAccount> login(MSJavaDeviceCodeAuthData data, SFProxy proxyData, Executor executor) {
3839
return CompletableFuture.supplyAsync(() -> {
3940
var flow = MinecraftAuth.JAVA_DEVICE_CODE_LOGIN;
4041
try {
@@ -53,7 +54,7 @@ public MSJavaDeviceCodeAuthService.MSJavaDeviceCodeAuthData createData(Consumer<
5354
}
5455

5556
@Override
56-
public CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData) {
57+
public CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData, Executor executor) {
5758
return CompletableFuture.supplyAsync(() -> {
5859
var flow = MinecraftAuth.JAVA_DEVICE_CODE_LOGIN;
5960
var fullJavaSession = flow.fromJson(((OnlineChainJavaData) account.accountData()).authChain());

server/src/main/java/com/soulfiremc/server/account/MSJavaRefreshTokenAuthService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import java.util.concurrent.CompletableFuture;
2727
import java.util.concurrent.CompletionException;
28+
import java.util.concurrent.Executor;
2829

2930
public final class MSJavaRefreshTokenAuthService
3031
implements MCAuthService<String, MSJavaRefreshTokenAuthService.MSJavaRefreshTokenAuthData> {
@@ -33,7 +34,7 @@ public final class MSJavaRefreshTokenAuthService
3334
private MSJavaRefreshTokenAuthService() {}
3435

3536
@Override
36-
public CompletableFuture<MinecraftAccount> login(MSJavaRefreshTokenAuthData data, SFProxy proxyData) {
37+
public CompletableFuture<MinecraftAccount> login(MSJavaRefreshTokenAuthData data, SFProxy proxyData, Executor executor) {
3738
return CompletableFuture.supplyAsync(() -> {
3839
var flow = MinecraftAuth.JAVA_CREDENTIALS_LOGIN;
3940
try {
@@ -52,7 +53,7 @@ public MSJavaRefreshTokenAuthData createData(String data) {
5253
}
5354

5455
@Override
55-
public CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData) {
56+
public CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData, Executor executor) {
5657
return CompletableFuture.supplyAsync(() -> {
5758
var flow = MinecraftAuth.JAVA_CREDENTIALS_LOGIN;
5859
var fullJavaSession = flow.fromJson(((OnlineChainJavaData) account.accountData()).authChain());

server/src/main/java/com/soulfiremc/server/account/OfflineAuthService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.soulfiremc.server.proxy.SFProxy;
2222

2323
import java.util.concurrent.CompletableFuture;
24+
import java.util.concurrent.Executor;
2425

2526
public final class OfflineAuthService
2627
implements MCAuthService<String, OfflineAuthService.OfflineAuthData> {
@@ -37,7 +38,7 @@ public static MinecraftAccount createAccount(String username) {
3738
}
3839

3940
@Override
40-
public CompletableFuture<MinecraftAccount> login(OfflineAuthData data, SFProxy proxyData) {
41+
public CompletableFuture<MinecraftAccount> login(OfflineAuthData data, SFProxy proxyData, Executor executor) {
4142
return CompletableFuture.completedFuture(createAccount(data.username()));
4243
}
4344

@@ -47,7 +48,7 @@ public OfflineAuthData createData(String data) {
4748
}
4849

4950
@Override
50-
public CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData) {
51+
public CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData, Executor executor) {
5152
return CompletableFuture.completedFuture(account);
5253
}
5354

server/src/main/java/com/soulfiremc/server/account/TheAlteningAuthService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import java.net.URI;
3131
import java.util.UUID;
3232
import java.util.concurrent.CompletableFuture;
33+
import java.util.concurrent.Executor;
3334

3435
public final class TheAlteningAuthService
3536
implements MCAuthService<String, TheAlteningAuthService.TheAlteningAuthData> {
@@ -44,7 +45,7 @@ public final class TheAlteningAuthService
4445
private TheAlteningAuthService() {}
4546

4647
@Override
47-
public CompletableFuture<MinecraftAccount> login(TheAlteningAuthData data, SFProxy proxyData) {
48+
public CompletableFuture<MinecraftAccount> login(TheAlteningAuthData data, SFProxy proxyData, Executor executor) {
4849
var request = new AuthenticationRequest(data.altToken, PASSWORD, UUID.randomUUID().toString());
4950
return ReactorHttpHelper.createReactorClient(proxyData, true)
5051
.post()
@@ -75,7 +76,7 @@ public TheAlteningAuthData createData(String data) {
7576
}
7677

7778
@Override
78-
public CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData) {
79+
public CompletableFuture<MinecraftAccount> refresh(MinecraftAccount account, SFProxy proxyData, Executor executor) {
7980
// TODO: Figure out The Altening refreshing
8081
return CompletableFuture.completedFuture(account);
8182
}

server/src/main/java/com/soulfiremc/server/grpc/MCAuthServiceImpl.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,11 @@ public void loginCredentials(CredentialsAuthRequest request, StreamObserver<Cred
5555
try {
5656
var service = MCAuthService.convertService(request.getService());
5757
var results = SFHelpers.maxFutures(settings.get(AccountSettings.ACCOUNT_IMPORT_CONCURRENCY), request.getPayloadList(), payload ->
58-
service.createDataAndLogin(payload, settings.get(AccountSettings.USE_PROXIES_FOR_ACCOUNT_AUTH) ? SFHelpers.getRandomEntry(settings.proxies()) : null)
58+
service.createDataAndLogin(
59+
payload,
60+
settings.get(AccountSettings.USE_PROXIES_FOR_ACCOUNT_AUTH) ? SFHelpers.getRandomEntry(settings.proxies()) : null,
61+
instance.scheduler()
62+
)
5963
.thenApply(MinecraftAccount::toProto)
6064
.exceptionally(t -> {
6165
log.error("Error authenticating account", t);
@@ -86,7 +90,8 @@ public void loginDeviceCode(DeviceCodeAuthRequest request, StreamObserver<Device
8690
var instance = optionalInstance.get();
8791
var settings = instance.settingsSource();
8892

89-
MCAuthService.convertService(request.getService()).createDataAndLogin(deviceCode ->
93+
MCAuthService.convertService(request.getService()).createDataAndLogin(
94+
deviceCode ->
9095
responseObserver.onNext(DeviceCodeAuthResponse.newBuilder()
9196
.setDeviceCode(
9297
DeviceCode.newBuilder()
@@ -97,7 +102,9 @@ public void loginDeviceCode(DeviceCodeAuthRequest request, StreamObserver<Device
97102
.build()
98103
).build()
99104
),
100-
settings.get(AccountSettings.USE_PROXIES_FOR_ACCOUNT_AUTH) ? SFHelpers.getRandomEntry(settings.proxies()) : null)
105+
settings.get(AccountSettings.USE_PROXIES_FOR_ACCOUNT_AUTH) ? SFHelpers.getRandomEntry(settings.proxies()) : null,
106+
instance.scheduler()
107+
)
101108
.whenComplete((account, t) -> {
102109
if (t != null) {
103110
log.error("Error authenticating account", t);
@@ -124,8 +131,11 @@ public void refresh(RefreshRequest request, StreamObserver<RefreshResponse> resp
124131

125132
try {
126133
var receivedAccount = MinecraftAccount.fromProto(request.getAccount());
127-
var account = MCAuthService.convertService(request.getAccount().getType()).refresh(receivedAccount,
128-
settings.get(AccountSettings.USE_PROXIES_FOR_ACCOUNT_AUTH) ? SFHelpers.getRandomEntry(settings.proxies()) : null).join();
134+
var account = MCAuthService.convertService(request.getAccount().getType()).refresh(
135+
receivedAccount,
136+
settings.get(AccountSettings.USE_PROXIES_FOR_ACCOUNT_AUTH) ? SFHelpers.getRandomEntry(settings.proxies()) : null,
137+
instance.scheduler()
138+
).join();
129139

130140
responseObserver.onNext(RefreshResponse.newBuilder().setAccount(account.toProto()).build());
131141
responseObserver.onCompleted();

0 commit comments

Comments
 (0)