79 lines
2.4 KiB
Java
79 lines
2.4 KiB
Java
package com.velocitypowered.proxy;
|
|
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.GsonBuilder;
|
|
import com.velocitypowered.network.ConnectionManager;
|
|
import com.velocitypowered.proxy.config.VelocityConfiguration;
|
|
import com.velocitypowered.proxy.connection.http.NettyHttpClient;
|
|
import com.velocitypowered.proxy.util.EncryptionUtils;
|
|
import io.netty.bootstrap.Bootstrap;
|
|
import net.kyori.text.Component;
|
|
import net.kyori.text.serializer.GsonComponentSerializer;
|
|
import org.apache.logging.log4j.LogManager;
|
|
import org.apache.logging.log4j.Logger;
|
|
|
|
import java.io.IOException;
|
|
import java.net.InetSocketAddress;
|
|
import java.nio.file.Paths;
|
|
import java.security.KeyPair;
|
|
|
|
public class VelocityServer {
|
|
private static final Logger logger = LogManager.getLogger(VelocityServer.class);
|
|
private static final VelocityServer INSTANCE = new VelocityServer();
|
|
public static final Gson GSON = new GsonBuilder()
|
|
.registerTypeHierarchyAdapter(Component.class, new GsonComponentSerializer())
|
|
.create();
|
|
|
|
private final ConnectionManager cm = new ConnectionManager();
|
|
private VelocityConfiguration configuration;
|
|
private NettyHttpClient httpClient;
|
|
private KeyPair serverKeyPair;
|
|
|
|
private VelocityServer() {
|
|
}
|
|
|
|
public static VelocityServer getServer() {
|
|
return INSTANCE;
|
|
}
|
|
|
|
public KeyPair getServerKeyPair() {
|
|
return serverKeyPair;
|
|
}
|
|
|
|
public VelocityConfiguration getConfiguration() {
|
|
return configuration;
|
|
}
|
|
|
|
public void start() {
|
|
// Create a key pair
|
|
logger.info("Booting up Velocity...");
|
|
try {
|
|
configuration = VelocityConfiguration.read(Paths.get("velocity.toml"));
|
|
if (!configuration.validate()) {
|
|
logger.error("Your configuration is invalid. Velocity will refuse to start up until the errors are resolved.");
|
|
System.exit(1);
|
|
}
|
|
} catch (IOException e) {
|
|
logger.error("Unable to load your velocity.toml. The server will shut down.", e);
|
|
System.exit(1);
|
|
}
|
|
serverKeyPair = EncryptionUtils.createRsaKeyPair(1024);
|
|
|
|
httpClient = new NettyHttpClient(this);
|
|
|
|
this.cm.bind(configuration.getBind());
|
|
}
|
|
|
|
public Bootstrap initializeGenericBootstrap() {
|
|
return this.cm.createWorker();
|
|
}
|
|
|
|
public void shutdown() {
|
|
this.cm.shutdown();
|
|
}
|
|
|
|
public NettyHttpClient getHttpClient() {
|
|
return httpClient;
|
|
}
|
|
}
|