mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-11-26 14:17:58 +00:00
Add message for bind failure (HTTP)
This commit is contained in:
parent
a957379afb
commit
8afcc0b89a
@ -64,9 +64,8 @@ public class MihoyoKcpServer extends Thread {
|
|||||||
|
|
||||||
// Wait until the server socket is closed.
|
// Wait until the server socket is closed.
|
||||||
f.channel().closeFuture().sync();
|
f.channel().closeFuture().sync();
|
||||||
} catch (Exception e) {
|
} catch (Exception exception) {
|
||||||
// TODO Auto-generated catch block
|
Grasscutter.getLogger().error("Unable to start game server.", exception);
|
||||||
e.printStackTrace();
|
|
||||||
} finally {
|
} finally {
|
||||||
// Close
|
// Close
|
||||||
finish();
|
finish();
|
||||||
|
@ -24,6 +24,7 @@ import emu.grasscutter.utils.Utils;
|
|||||||
import javax.net.ssl.KeyManagerFactory;
|
import javax.net.ssl.KeyManagerFactory;
|
||||||
import javax.net.ssl.SSLContext;
|
import javax.net.ssl.SSLContext;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.net.BindException;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URLDecoder;
|
import java.net.URLDecoder;
|
||||||
@ -159,11 +160,20 @@ public final class DispatchServer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private HttpServer safelyCreateServer(InetSocketAddress address) {
|
||||||
|
try {
|
||||||
|
return HttpServer.create(address, 0);
|
||||||
|
} catch (BindException ignored) {
|
||||||
|
Grasscutter.getLogger().error("Unable to bind to port: " + getAddress().getPort() + " (HTTP)");
|
||||||
|
} catch (Exception exception) {
|
||||||
|
Grasscutter.getLogger().error("Unable to start HTTP server.", exception);
|
||||||
|
} return null;
|
||||||
|
}
|
||||||
|
|
||||||
public void start() throws Exception {
|
public void start() throws Exception {
|
||||||
HttpServer server;
|
HttpServer server;
|
||||||
if (Grasscutter.getConfig().getDispatchOptions().UseSSL) {
|
if (Grasscutter.getConfig().getDispatchOptions().UseSSL) {
|
||||||
HttpsServer httpsServer;
|
HttpsServer httpsServer = HttpsServer.create(getAddress(), 0);
|
||||||
httpsServer = HttpsServer.create(getAddress(), 0);
|
|
||||||
SSLContext sslContext = SSLContext.getInstance("TLS");
|
SSLContext sslContext = SSLContext.getInstance("TLS");
|
||||||
try (FileInputStream fis = new FileInputStream(Grasscutter.getConfig().getDispatchOptions().KeystorePath)) {
|
try (FileInputStream fis = new FileInputStream(Grasscutter.getConfig().getDispatchOptions().KeystorePath)) {
|
||||||
char[] keystorePassword = Grasscutter.getConfig().getDispatchOptions().KeystorePassword.toCharArray();
|
char[] keystorePassword = Grasscutter.getConfig().getDispatchOptions().KeystorePassword.toCharArray();
|
||||||
@ -176,15 +186,21 @@ public final class DispatchServer {
|
|||||||
|
|
||||||
httpsServer.setHttpsConfigurator(new HttpsConfigurator(sslContext));
|
httpsServer.setHttpsConfigurator(new HttpsConfigurator(sslContext));
|
||||||
server = httpsServer;
|
server = httpsServer;
|
||||||
|
} catch (BindException ignored) {
|
||||||
|
Grasscutter.getLogger().error("Unable to bind to port: " + getAddress().getPort() + " (HTTPS)");
|
||||||
|
server = this.safelyCreateServer(this.getAddress());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Grasscutter.getLogger().warn("[Dispatch] No SSL cert found! Falling back to HTTP server.");
|
Grasscutter.getLogger().warn("[Dispatch] No SSL cert found! Falling back to HTTP server.");
|
||||||
Grasscutter.getConfig().getDispatchOptions().UseSSL = false;
|
Grasscutter.getConfig().getDispatchOptions().UseSSL = false;
|
||||||
server = HttpServer.create(getAddress(), 0);
|
server = this.safelyCreateServer(this.getAddress());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
server = HttpServer.create(getAddress(), 0);
|
server = this.safelyCreateServer(this.getAddress());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(server == null)
|
||||||
|
throw new NullPointerException("An HTTP server was not created.");
|
||||||
|
|
||||||
server.createContext("/", t -> responseHTML(t, "Hello"));
|
server.createContext("/", t -> responseHTML(t, "Hello"));
|
||||||
|
|
||||||
// Dispatch
|
// Dispatch
|
||||||
|
Loading…
Reference in New Issue
Block a user