Skip to content

Commit e330376

Browse files
committed
pipeline fixes
1 parent 65ac413 commit e330376

File tree

18 files changed

+150
-109
lines changed

18 files changed

+150
-109
lines changed

.github/workflows/javadoc-pages.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ on:
1010
jobs:
1111
publish:
1212
runs-on: ubuntu-latest
13+
1314
steps:
1415
- name: Checkout repository
1516
uses: actions/checkout@v3
@@ -27,10 +28,10 @@ jobs:
2728
with:
2829
java-version: '17'
2930
distribution: 'temurin'
30-
cache: 'maven'
31+
cache: 'gradle'
3132

32-
- name: Generate Javadoc
33-
run: mvn clean javadoc:aggregate -pl :openaudiomc-api -U
33+
- name: Generate Javadoc (API module)
34+
run: ./gradlew :OpenAudioMc:API:javadoc --no-daemon
3435

3536
- name: Checkout javadoc branch
3637
uses: actions/checkout@v3
@@ -46,7 +47,8 @@ jobs:
4647
mkdir -p javadoc
4748
4849
- name: Copy new javadoc
49-
run: cp -r api/target/reports/apidocs/* javadoc-branch/javadoc/
50+
run: |
51+
cp -r OpenAudioMc/API/build/docs/javadoc/* javadoc-branch/javadoc/
5052
5153
- name: Commit and push javadoc
5254
run: |

.tool-versions

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
java openjdk-17
1+
java openjdk-21

OpenAudioMc/Plugin/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ import dev.s7a.gradle.minecraft.server.tasks.LaunchMinecraftServerTask
161161
["20", "1.20.4"],
162162
// ["21", "1.21.4"],
163163
["21", "1.21.7"],
164-
["2110", "1.21.10"]
164+
["2110", "1.21.10"],
165+
["2111", "1.21.11"]
165166
].each { name, version ->
166167
task("testPlugin$name", type: LaunchMinecraftServerTask) {
167168
dependsOn 'shadowJar' // Changed from 'build' to use the shaded jar
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
BUILD_NUM="1552"
1+
BUILD_NUM="1564"

OpenAudioMc/Plugin/src/main/java/com/craftmend/openaudiomc/generic/networking/io/SocketConnection.java

Lines changed: 58 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,30 @@
55
import com.craftmend.openaudiomc.generic.authentication.AuthenticationService;
66
import com.craftmend.openaudiomc.generic.authentication.objects.ServerKeySet;
77
import com.craftmend.openaudiomc.generic.events.events.StateChangeEvent;
8-
import com.craftmend.openaudiomc.generic.networking.DefaultNetworkingService;
9-
import com.craftmend.openaudiomc.generic.oac.OpenaudioAccountService;
108
import com.craftmend.openaudiomc.generic.logging.OpenAudioLogger;
11-
import com.craftmend.openaudiomc.generic.networking.certificate.CertificateHelper;
9+
import com.craftmend.openaudiomc.generic.networking.DefaultNetworkingService;
1210
import com.craftmend.openaudiomc.generic.networking.abstracts.AbstractPacket;
11+
import com.craftmend.openaudiomc.generic.networking.certificate.CertificateHelper;
1312
import com.craftmend.openaudiomc.generic.networking.drivers.ClientDriver;
1413
import com.craftmend.openaudiomc.generic.networking.drivers.NotificationDriver;
1514
import com.craftmend.openaudiomc.generic.networking.drivers.SystemDriver;
15+
import com.craftmend.openaudiomc.generic.networking.interfaces.Authenticatable;
16+
import com.craftmend.openaudiomc.generic.networking.interfaces.SocketDriver;
17+
import com.craftmend.openaudiomc.generic.oac.OpenaudioAccountService;
1618
import com.craftmend.openaudiomc.generic.platform.interfaces.TaskService;
1719
import com.craftmend.openaudiomc.generic.rest.RestRequest;
20+
import com.craftmend.openaudiomc.generic.rest.ServerEnvironment;
1821
import com.craftmend.openaudiomc.generic.rest.response.NoResponse;
1922
import com.craftmend.openaudiomc.generic.rest.routes.Endpoint;
2023
import com.craftmend.openaudiomc.generic.rest.types.RelayLoginResponse;
2124
import com.craftmend.openaudiomc.generic.state.StateService;
2225
import com.craftmend.openaudiomc.generic.state.states.*;
23-
import com.craftmend.openaudiomc.generic.networking.interfaces.Authenticatable;
24-
import com.craftmend.openaudiomc.generic.networking.interfaces.SocketDriver;
25-
2626
import com.craftmend.openaudiomc.generic.storage.enums.StorageKey;
2727
import com.craftmend.openaudiomc.generic.uploads.UploadIndexService;
28+
import com.craftmend.openaudiomc.generic.utils.NamedExecutors;
2829
import io.socket.client.IO;
2930
import io.socket.client.Socket;
30-
3131
import lombok.Getter;
32-
3332
import okhttp3.Call;
3433
import okhttp3.OkHttpClient;
3534
import okhttp3.WebSocket;
@@ -41,7 +40,24 @@
4140

4241
public class SocketConnection {
4342

44-
@Getter private final DefaultNetworkingService parent;
43+
private static final OkHttpClient SOCKET_HTTP_CLIENT = buildSocketHttpClient();
44+
private static OkHttpClient buildSocketHttpClient() {
45+
ProxySelector.setDefault(new NullProxySelector());
46+
47+
OkHttpClient.Builder builder = new OkHttpClient.Builder()
48+
.proxySelector(new NullProxySelector())
49+
.dispatcher(NamedExecutors.namedDispatcher("OA-SocketPreauth"));
50+
51+
if (OpenAudioMc.SERVER_ENVIRONMENT == ServerEnvironment.DEVELOPMENT) {
52+
OpenAudioLogger.warn("Running in development mode, disabling SSL verification");
53+
CertificateHelper.ignore(builder);
54+
}
55+
56+
return builder.build();
57+
}
58+
59+
@Getter
60+
private final DefaultNetworkingService parent;
4561

4662
private Socket socket;
4763
@Getter
@@ -50,8 +66,8 @@ public class SocketConnection {
5066
private boolean registeredLogout = false;
5167
@Getter
5268
private RelayLoginResponse previousLogin;
53-
private ServerKeySet keySet;
54-
private SystemDriver systemDriver = new SystemDriver(this);
69+
private final ServerKeySet keySet;
70+
private final SystemDriver systemDriver = new SystemDriver(this);
5571

5672
private final SocketDriver[] drivers = new SocketDriver[]{
5773
new NotificationDriver(),
@@ -71,18 +87,17 @@ public void setupConnection() {
7187

7288
if (!isReconnect && !OpenAudioMc.getService(StateService.class).getCurrentState().canConnect()) return;
7389

74-
// update state
7590
if (!isReconnect) {
76-
// only override the state if we are not reconnecting
7791
OpenAudioMc.getService(StateService.class).setState(new AssigningRelayState());
7892
} else {
7993
OpenAudioLogger.info("Attempting to restore connection to OpenAudioMc, attempt " + attempt);
8094
}
8195

8296
if (!registeredLogout) {
83-
relayLoginRequest = new RestRequest(RelayLoginResponse.class, Endpoint.RELAY_LOGIN);
84-
relayLoginRequest.setQuery("oa-version", OpenAudioMc.BUILD.getBuildNumber() + "");
85-
relayLogoutRequest = new RestRequest(NoResponse.class, Endpoint.RELAY_LOGOUT);
97+
relayLoginRequest = new RestRequest<>(RelayLoginResponse.class, Endpoint.RELAY_LOGIN)
98+
.setQuery("oa-version", String.valueOf(OpenAudioMc.BUILD.getBuildNumber()));
99+
100+
relayLogoutRequest = new RestRequest<>(NoResponse.class, Endpoint.RELAY_LOGOUT);
86101

87102
EventApi.getInstance().registerHandler(StateChangeEvent.class, event -> {
88103
if (event.getOldState() instanceof ConnectedState) {
@@ -93,13 +108,10 @@ public void setupConnection() {
93108
registeredLogout = true;
94109
}
95110

96-
ProxySelector.setDefault(new NullProxySelector());
97-
OkHttpClient okHttpClient = CertificateHelper.ignore(new OkHttpClient.Builder().proxySelector(new NullProxySelector())).build();
98-
99111
IO.Options opts = new IO.Options();
100-
opts.callFactory = (Call.Factory) okHttpClient;
112+
opts.callFactory = (Call.Factory) SOCKET_HTTP_CLIENT;
113+
opts.webSocketFactory = (WebSocket.Factory) SOCKET_HTTP_CLIENT;
101114
opts.reconnection = false;
102-
opts.webSocketFactory = (WebSocket.Factory) okHttpClient;
103115
opts.forceNew = true;
104116
opts.rememberUpgrade = false;
105117

@@ -108,7 +120,7 @@ public void setupConnection() {
108120
"type=server&private=%s&public=%s&reconnect=%s",
109121
keySet.getPrivateKey().getValue(),
110122
keySet.getPublicKey().getValue(),
111-
isReconnect ? "true" : "false"
123+
isReconnect
112124
);
113125
} else {
114126
opts.query = String.format(
@@ -118,19 +130,20 @@ public void setupConnection() {
118130
);
119131
}
120132

121-
// only do login handling if we're not reconnecting, because then we'd be re-using the same config
122133
if (!isReconnect) {
123134
OpenAudioMc.resolveDependency(TaskService.class).schduleSyncDelayedTask(() -> {
124135
if (OpenAudioMc.getService(StateService.class).getCurrentState() instanceof AssigningRelayState) {
125136
OpenAudioLogger.info("Connecting timed out.");
126-
OpenAudioMc.getService(StateService.class).setState(new IdleState("Connecting to OpenAudioMc timed out"));
137+
OpenAudioMc.getService(StateService.class)
138+
.setState(new IdleState("Connecting to OpenAudioMc timed out"));
127139
}
128140
}, 20 * 35);
129141

130142
relayLoginRequest.run();
131143

132144
if (relayLoginRequest.hasError()) {
133-
OpenAudioMc.getService(StateService.class).setState(new IdleState("Failed to do the initial handshake. Error: " + relayLoginRequest.getError()));
145+
OpenAudioMc.getService(StateService.class)
146+
.setState(new IdleState("Failed to do the initial handshake. Error: " + relayLoginRequest.getError()));
134147
OpenAudioLogger.info("Failed to get instance: " + relayLoginRequest.getError().getMessage());
135148
try {
136149
throw new IOException("Failed to get instance! see console for error information");
@@ -140,43 +153,37 @@ public void setupConnection() {
140153
return;
141154
}
142155

143-
RelayLoginResponse loginResponse = relayLoginRequest.getResponse();
144-
previousLogin = loginResponse;
145-
OpenAudioMc.getService(UploadIndexService.class).setContent(loginResponse.getFiles());
156+
previousLogin = relayLoginRequest.getResponse();
157+
OpenAudioMc.getService(UploadIndexService.class).setContent(previousLogin.getFiles());
146158
}
147159

148160
if (previousLogin == null) {
149-
OpenAudioMc.getService(StateService.class).setState(new IdleState("Failed to get a relay instance"));
150-
OpenAudioLogger.warn("Entered a track which should only be entered during recovery, but there was no previous login. reconnect: " + isReconnect + " attempt: " + attempt);
161+
OpenAudioMc.getService(StateService.class)
162+
.setState(new IdleState("Failed to get a relay instance"));
163+
OpenAudioLogger.warn("Recovery path hit without previous login");
151164
return;
152165
}
153166

154167
try {
155-
String endpoint = previousLogin.getRelayEndpoint();
156-
endpoint = endpoint.replace("https", "http");
168+
String endpoint = previousLogin.getRelayEndpoint().replace("https", "http");
157169
socket = IO.socket(endpoint, opts);
158170
} catch (URISyntaxException e) {
159171
OpenAudioLogger.error(e, "Received an invalid endpoint");
172+
return;
160173
}
161174

162-
// this should again, only be done if we're not reconnecting
163175
if (!isReconnect) {
164-
// register state to be connecting
165176
OpenAudioMc.getService(StateService.class).setState(new ConnectingState());
166-
167-
// clear session cache
168177
OpenAudioMc.getService(AuthenticationService.class).getDriver().initCache();
169178
}
170179

171-
// schedule timeout check
172180
OpenAudioMc.resolveDependency(TaskService.class).schduleSyncDelayedTask(() -> {
173-
// was it a normal connection?
174181
if (OpenAudioMc.getService(StateService.class).getCurrentState() instanceof ConnectingState) {
175182
OpenAudioLogger.warn("Connect timed out.");
176-
OpenAudioMc.getService(StateService.class).setState(new IdleState("Connecting to the assigned instance timed out (socket)"));
183+
OpenAudioMc.getService(StateService.class)
184+
.setState(new IdleState("Connecting to the assigned instance timed out (socket)"));
177185
}
178186

179-
// alternatively, check if we're still in the same reconnect cycle
180187
if (OpenAudioMc.getService(StateService.class).getCurrentState() instanceof ReconnectingState) {
181188
ReconnectingState state = (ReconnectingState) OpenAudioMc.getService(StateService.class).getCurrentState();
182189
if (state.getStateId().equals(stateId) && state.getAttempts() == attempt) {
@@ -185,9 +192,9 @@ public void setupConnection() {
185192
}
186193
}, 20 * 35);
187194

188-
189-
// register drivers
190-
for (SocketDriver driver : drivers) driver.boot(socket, this);
195+
for (SocketDriver driver : drivers) {
196+
driver.boot(socket, this);
197+
}
191198

192199
socket.connect();
193200
}
@@ -196,22 +203,22 @@ public void disconnect() {
196203
if (relayLogoutRequest != null) {
197204
relayLogoutRequest.run();
198205
}
199-
if (this.socket != null) {
200-
// let them know that we intend to shut down
206+
if (socket != null) {
201207
systemDriver.setAnnouncedShutdown(true);
202-
this.socket.emit("announce-shutdown", "goodbye");
203-
this.socket.disconnect();
208+
socket.emit("announce-shutdown", "goodbye");
209+
socket.disconnect();
204210
}
205211
OpenAudioMc.getService(StateService.class).setState(new IdleState());
206-
OpenAudioMc.getService(OpenaudioAccountService.class).getVoiceApiConnection().stop();
212+
OpenAudioMc.getService(OpenaudioAccountService.class)
213+
.getVoiceApiConnection()
214+
.stop();
207215
}
208216

209217
public void send(Authenticatable client, AbstractPacket packet) {
210-
// only send the packet if the client is online, valid and the plugin is connected
211-
if (client.isConnected() && OpenAudioMc.getService(StateService.class).getCurrentState().isConnected()) {
218+
if (client.isConnected() &&
219+
OpenAudioMc.getService(StateService.class).getCurrentState().isConnected()) {
212220
packet.setClient(client.getOwner().getUniqueId());
213221
socket.emit("data", OpenAudioMc.getGson().toJson(packet));
214222
}
215223
}
216-
217224
}

0 commit comments

Comments
 (0)