mirror of
https://github.com/simon987/Much-Assembly-Required.git
synced 2025-12-17 00:29:21 +00:00
SSL now working and reorganised web server
This commit is contained in:
@@ -48,7 +48,7 @@ public class GameServer implements Runnable {
|
||||
|
||||
try{
|
||||
mongo = new MongoClient("localhost", 27017);
|
||||
userManager = new UserManager(mongo);
|
||||
userManager = new UserManager(mongo, config);
|
||||
|
||||
} catch (UnknownHostException e) {
|
||||
e.printStackTrace();
|
||||
@@ -199,7 +199,7 @@ public class GameServer implements Runnable {
|
||||
|
||||
LogManager.LOGGER.info("Loading all data from MongoDB");
|
||||
|
||||
DB db = mongo.getDB("mar");
|
||||
DB db = mongo.getDB(config.getString("mongo_dbname"));
|
||||
|
||||
DBCollection worlds = db.getCollection("world");
|
||||
DBCollection server = db.getCollection("server");
|
||||
@@ -235,7 +235,7 @@ public class GameServer implements Runnable {
|
||||
|
||||
LogManager.LOGGER.info("Saving to MongoDB | W:" + gameUniverse.getWorldCount() + " | U:" + gameUniverse.getUserCount());
|
||||
try{
|
||||
DB db = mongo.getDB("mar");
|
||||
DB db = mongo.getDB(config.getString("mongo_dbname"));
|
||||
|
||||
int unloaded_worlds = 0;
|
||||
|
||||
|
||||
@@ -1,19 +1,7 @@
|
||||
package net.simon987.server;
|
||||
|
||||
import net.simon987.server.logging.LogManager;
|
||||
import net.simon987.server.user.RegistrationException;
|
||||
import net.simon987.server.web.AlertMessage;
|
||||
import net.simon987.server.web.AlertType;
|
||||
import net.simon987.server.websocket.SocketServer;
|
||||
import org.apache.velocity.app.VelocityEngine;
|
||||
import org.json.simple.JSONObject;
|
||||
import spark.ModelAndView;
|
||||
import spark.Spark;
|
||||
import spark.template.velocity.VelocityTemplateEngine;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import net.simon987.server.web.WebServer;
|
||||
|
||||
|
||||
public class Main {
|
||||
@@ -24,184 +12,10 @@ public class Main {
|
||||
|
||||
//Load
|
||||
GameServer.INSTANCE.load();
|
||||
|
||||
(new Thread(GameServer.INSTANCE)).start();
|
||||
|
||||
//TEST ---------------------------
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty("file.resource.loader.path", "templates/");
|
||||
VelocityTemplateEngine templateEngine = new VelocityTemplateEngine(new VelocityEngine(properties));
|
||||
//--
|
||||
|
||||
//Websocket
|
||||
Spark.webSocket("/socket", SocketServer.class);
|
||||
|
||||
Spark.staticFiles.externalLocation("static");
|
||||
|
||||
Spark.get("/", (request, response) -> {
|
||||
Map<String, Object> model = new HashMap<>();
|
||||
model.put("session", request.session());
|
||||
|
||||
return new ModelAndView(model, "home.vm");
|
||||
}, templateEngine);
|
||||
|
||||
Spark.get("/leaderboard", (request, response) -> {
|
||||
Map<String, Object> model = new HashMap<>();
|
||||
model.put("session", request.session());
|
||||
|
||||
return new ModelAndView(new HashMap<>(), "leaderboard.vm");
|
||||
}, templateEngine);
|
||||
|
||||
Spark.get("/play", (request, response) -> {
|
||||
Map<String, Object> model = new HashMap<>();
|
||||
model.put("session", request.session());
|
||||
|
||||
return new ModelAndView(model, "play.vm");
|
||||
}, templateEngine);
|
||||
|
||||
Spark.get("/account", (request, response) -> {
|
||||
Map<String, Object> model = new HashMap<>();
|
||||
model.put("session", request.session());
|
||||
|
||||
|
||||
if (request.session().attribute("username") != null) {
|
||||
model.put("user", GameServer.INSTANCE.getGameUniverse().getUser(request.session().attribute("username")));
|
||||
}
|
||||
|
||||
return new ModelAndView(model, "account.vm");
|
||||
}, templateEngine);
|
||||
|
||||
Spark.post("/register", (request, response) -> {
|
||||
String username = request.queryParams("username");
|
||||
String password = request.queryParams("password");
|
||||
|
||||
if (username != null && password != null) {
|
||||
try {
|
||||
GameServer.INSTANCE.getUserManager().registerUser(username, password);
|
||||
|
||||
AlertMessage[] messages = {new AlertMessage("Successfully registered", AlertType.SUCCESS)};
|
||||
request.session().attribute("messages", messages);
|
||||
request.session().attribute("username", username);
|
||||
|
||||
LogManager.LOGGER.fine("(Web) " + username + " registered " + request.ip());
|
||||
} catch (RegistrationException e) {
|
||||
AlertMessage[] messages = {new AlertMessage(e.getMessage(), AlertType.DANGER)};
|
||||
request.session().attribute("messages", messages);
|
||||
}
|
||||
}
|
||||
|
||||
response.redirect("/account");
|
||||
return null;
|
||||
});
|
||||
|
||||
Spark.post("/login", (request, response) -> {
|
||||
String username = request.queryParams("username");
|
||||
String password = request.queryParams("password");
|
||||
|
||||
if (username != null && password != null) {
|
||||
if (GameServer.INSTANCE.getUserManager().validateUser(username, password)) {
|
||||
AlertMessage[] messages = {new AlertMessage("Logged in as " + username, AlertType.SUCCESS)};
|
||||
request.session().attribute("messages", messages);
|
||||
request.session().attribute("username", username);
|
||||
|
||||
LogManager.LOGGER.fine("(Web) " + username + " logged in");
|
||||
} else {
|
||||
AlertMessage[] messages = {new AlertMessage("Invalid username or password", AlertType.DANGER)};
|
||||
request.session().attribute("messages", messages);
|
||||
}
|
||||
}
|
||||
|
||||
response.redirect("/account");
|
||||
return null;
|
||||
});
|
||||
|
||||
Spark.get("logout", (request, response) -> {
|
||||
|
||||
AlertMessage[] messages = {new AlertMessage("Logged out", AlertType.INFO)};
|
||||
request.session().attribute("messages", messages);
|
||||
request.session().removeAttribute("username");
|
||||
|
||||
response.redirect("/account");
|
||||
return null;
|
||||
});
|
||||
|
||||
Spark.post("change_password", (request, response) -> {
|
||||
|
||||
String username = request.session().attribute("username");
|
||||
String currentPassword = request.queryParams("password");
|
||||
String newPassword = request.queryParams("new_password");
|
||||
String newPasswordRepeat = request.queryParams("new_password_repeat");
|
||||
|
||||
if (newPassword.equals(newPasswordRepeat)) {
|
||||
|
||||
if (username != null && GameServer.INSTANCE.getUserManager().validateUser(username, currentPassword)) {
|
||||
|
||||
try {
|
||||
GameServer.INSTANCE.getUserManager().changePassword(username, newPassword);
|
||||
AlertMessage[] messages = {new AlertMessage("Changed password", AlertType.SUCCESS)};
|
||||
request.session().attribute("messages", messages);
|
||||
} catch (RegistrationException e) {
|
||||
AlertMessage[] messages = {new AlertMessage(e.getMessage(), AlertType.DANGER)};
|
||||
request.session().attribute("messages", messages);
|
||||
}
|
||||
|
||||
} else {
|
||||
AlertMessage[] messages = {new AlertMessage("Invalid password", AlertType.DANGER)};
|
||||
request.session().attribute("messages", messages);
|
||||
}
|
||||
} else {
|
||||
AlertMessage[] messages = {new AlertMessage("Passwords did not match", AlertType.DANGER)};
|
||||
request.session().attribute("messages", messages);
|
||||
}
|
||||
|
||||
response.redirect("/account");
|
||||
return null;
|
||||
});
|
||||
|
||||
Spark.get("/server_info", (request, response) -> {
|
||||
|
||||
//TODO put that in a constructor somewhere
|
||||
String address;
|
||||
if (GameServer.INSTANCE.getConfig().getInt("use_ssl") == 0) {
|
||||
address = "ws://" +
|
||||
GameServer.INSTANCE.getConfig().getString("mar_address") + ":" +
|
||||
GameServer.INSTANCE.getConfig().getString("mar_port") + "/socket";
|
||||
} else {
|
||||
address = "wss://" +
|
||||
GameServer.INSTANCE.getConfig().getString("mar_address") + ":" +
|
||||
GameServer.INSTANCE.getConfig().getString("mar_port") + "/socket";
|
||||
}
|
||||
String serverName = GameServer.INSTANCE.getConfig().getString("server_name");
|
||||
int tickLength = GameServer.INSTANCE.getConfig().getInt("tick_length");
|
||||
|
||||
JSONObject json = new JSONObject();
|
||||
|
||||
String username = request.session().attribute("username");
|
||||
|
||||
if (username != null) {
|
||||
String token = GameServer.INSTANCE.getUserManager().generateAndGetToken(username);
|
||||
|
||||
json.put("token", token);
|
||||
json.put("username", username);
|
||||
|
||||
} else {
|
||||
|
||||
json.put("token", "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
|
||||
json.put("username", "guest");
|
||||
}
|
||||
|
||||
json.put("address", address);
|
||||
json.put("serverName", serverName);
|
||||
json.put("tickLength", tickLength);
|
||||
|
||||
response.header("Content-Type", "application/json");
|
||||
|
||||
return json.toJSONString();
|
||||
|
||||
});
|
||||
|
||||
Spark.after((request, response) -> response.header("Content-Encoding", "gzip"));
|
||||
//Web server
|
||||
new WebServer(GameServer.INSTANCE.getConfig());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -55,8 +55,8 @@ public class GameUniverse {
|
||||
* @return World, null if not found
|
||||
*/
|
||||
private World loadWorld(int x, int y, String dimension) {
|
||||
|
||||
DB db = mongo.getDB("mar");
|
||||
|
||||
DB db = mongo.getDB(GameServer.INSTANCE.getConfig().getString("mongo_dbname"));
|
||||
DBCollection worlds = db.getCollection("world");
|
||||
|
||||
BasicDBObject whereQuery = new BasicDBObject();
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.simon987.server.user;
|
||||
|
||||
import com.mongodb.*;
|
||||
import net.simon987.server.GameServer;
|
||||
import net.simon987.server.ServerConfiguration;
|
||||
import net.simon987.server.assembly.exception.CancelledException;
|
||||
import net.simon987.server.crypto.RandomStringGenerator;
|
||||
import net.simon987.server.logging.LogManager;
|
||||
@@ -14,10 +15,10 @@ public class UserManager {
|
||||
private MongoClient mongo;
|
||||
private DBCollection userCollection;
|
||||
|
||||
public UserManager(MongoClient mongo) {
|
||||
public UserManager(MongoClient mongo, ServerConfiguration config) {
|
||||
|
||||
this.mongo = mongo;
|
||||
DB db = mongo.getDB("mar");
|
||||
DB db = mongo.getDB(config.getString("mongo_dbname"));
|
||||
userCollection = db.getCollection("user");
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package net.simon987.server.web;
|
||||
|
||||
import net.simon987.server.GameServer;
|
||||
import spark.ModelAndView;
|
||||
import spark.Request;
|
||||
import spark.Response;
|
||||
import spark.TemplateViewRoute;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class AccountPage implements TemplateViewRoute {
|
||||
@Override
|
||||
public ModelAndView handle(Request request, Response response) {
|
||||
Map<String, Object> model = new HashMap<>();
|
||||
model.put("session", request.session());
|
||||
|
||||
|
||||
if (request.session().attribute("username") != null) {
|
||||
model.put("user", GameServer.INSTANCE.getGameUniverse().getUser(request.session().attribute("username")));
|
||||
}
|
||||
|
||||
return new ModelAndView(model, "account.vm");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package net.simon987.server.web;
|
||||
|
||||
import net.simon987.server.GameServer;
|
||||
import net.simon987.server.user.RegistrationException;
|
||||
import spark.ModelAndView;
|
||||
import spark.Request;
|
||||
import spark.Response;
|
||||
import spark.Route;
|
||||
|
||||
public class ChangePasswordRoute implements Route {
|
||||
|
||||
@Override
|
||||
public ModelAndView handle(Request request, Response response) {
|
||||
String username = request.session().attribute("username");
|
||||
String currentPassword = request.queryParams("password");
|
||||
String newPassword = request.queryParams("new_password");
|
||||
String newPasswordRepeat = request.queryParams("new_password_repeat");
|
||||
|
||||
if (newPassword.equals(newPasswordRepeat)) {
|
||||
|
||||
if (username != null && GameServer.INSTANCE.getUserManager().validateUser(username, currentPassword)) {
|
||||
|
||||
try {
|
||||
GameServer.INSTANCE.getUserManager().changePassword(username, newPassword);
|
||||
AlertMessage[] messages = {new AlertMessage("Changed password", AlertType.SUCCESS)};
|
||||
request.session().attribute("messages", messages);
|
||||
} catch (RegistrationException e) {
|
||||
AlertMessage[] messages = {new AlertMessage(e.getMessage(), AlertType.DANGER)};
|
||||
request.session().attribute("messages", messages);
|
||||
}
|
||||
|
||||
} else {
|
||||
AlertMessage[] messages = {new AlertMessage("Invalid password", AlertType.DANGER)};
|
||||
request.session().attribute("messages", messages);
|
||||
}
|
||||
} else {
|
||||
AlertMessage[] messages = {new AlertMessage("Passwords did not match", AlertType.DANGER)};
|
||||
request.session().attribute("messages", messages);
|
||||
}
|
||||
|
||||
response.redirect("/account");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
21
Server/src/main/java/net/simon987/server/web/HomePage.java
Normal file
21
Server/src/main/java/net/simon987/server/web/HomePage.java
Normal file
@@ -0,0 +1,21 @@
|
||||
package net.simon987.server.web;
|
||||
|
||||
import spark.ModelAndView;
|
||||
import spark.Request;
|
||||
import spark.Response;
|
||||
import spark.TemplateViewRoute;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class HomePage implements TemplateViewRoute {
|
||||
|
||||
@Override
|
||||
public ModelAndView handle(Request request, Response response) throws Exception {
|
||||
|
||||
Map<String, Object> model = new HashMap<>(1);
|
||||
model.put("session", request.session());
|
||||
|
||||
return new ModelAndView(model, "home.vm");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package net.simon987.server.web;
|
||||
|
||||
import spark.ModelAndView;
|
||||
import spark.Request;
|
||||
import spark.Response;
|
||||
import spark.TemplateViewRoute;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class LeaderBoardPage implements TemplateViewRoute {
|
||||
|
||||
@Override
|
||||
public ModelAndView handle(Request request, Response response) {
|
||||
Map<String, Object> model = new HashMap<>(1);
|
||||
model.put("session", request.session());
|
||||
|
||||
return new ModelAndView(model, "leaderboard.vm");
|
||||
}
|
||||
}
|
||||
32
Server/src/main/java/net/simon987/server/web/LoginRoute.java
Normal file
32
Server/src/main/java/net/simon987/server/web/LoginRoute.java
Normal file
@@ -0,0 +1,32 @@
|
||||
package net.simon987.server.web;
|
||||
|
||||
import net.simon987.server.GameServer;
|
||||
import net.simon987.server.logging.LogManager;
|
||||
import spark.ModelAndView;
|
||||
import spark.Request;
|
||||
import spark.Response;
|
||||
import spark.Route;
|
||||
|
||||
public class LoginRoute implements Route {
|
||||
@Override
|
||||
public ModelAndView handle(Request request, Response response) {
|
||||
String username = request.queryParams("username");
|
||||
String password = request.queryParams("password");
|
||||
|
||||
if (username != null && password != null) {
|
||||
if (GameServer.INSTANCE.getUserManager().validateUser(username, password)) {
|
||||
AlertMessage[] messages = {new AlertMessage("Logged in as " + username, AlertType.SUCCESS)};
|
||||
request.session().attribute("messages", messages);
|
||||
request.session().attribute("username", username);
|
||||
|
||||
LogManager.LOGGER.fine("(Web) " + username + " logged in");
|
||||
} else {
|
||||
AlertMessage[] messages = {new AlertMessage("Invalid username or password", AlertType.DANGER)};
|
||||
request.session().attribute("messages", messages);
|
||||
}
|
||||
}
|
||||
|
||||
response.redirect("/account");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package net.simon987.server.web;
|
||||
|
||||
import spark.ModelAndView;
|
||||
import spark.Request;
|
||||
import spark.Response;
|
||||
import spark.Route;
|
||||
|
||||
public class LogoutRoute implements Route {
|
||||
@Override
|
||||
public ModelAndView handle(Request request, Response response) {
|
||||
AlertMessage[] messages = {new AlertMessage("Logged out", AlertType.INFO)};
|
||||
request.session().attribute("messages", messages);
|
||||
request.session().removeAttribute("username");
|
||||
|
||||
response.redirect("/account");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
20
Server/src/main/java/net/simon987/server/web/PlayPage.java
Normal file
20
Server/src/main/java/net/simon987/server/web/PlayPage.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package net.simon987.server.web;
|
||||
|
||||
import spark.ModelAndView;
|
||||
import spark.Request;
|
||||
import spark.Response;
|
||||
import spark.TemplateViewRoute;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class PlayPage implements TemplateViewRoute {
|
||||
|
||||
@Override
|
||||
public ModelAndView handle(Request request, Response response) {
|
||||
Map<String, Object> model = new HashMap<>(1);
|
||||
model.put("session", request.session());
|
||||
|
||||
return new ModelAndView(model, "play.vm");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package net.simon987.server.web;
|
||||
|
||||
import net.simon987.server.GameServer;
|
||||
import net.simon987.server.logging.LogManager;
|
||||
import net.simon987.server.user.RegistrationException;
|
||||
import spark.ModelAndView;
|
||||
import spark.Request;
|
||||
import spark.Response;
|
||||
import spark.Route;
|
||||
|
||||
public class RegisterRoute implements Route {
|
||||
|
||||
@Override
|
||||
public ModelAndView handle(Request request, Response response) {
|
||||
String username = request.queryParams("username");
|
||||
String password = request.queryParams("password");
|
||||
|
||||
if (username != null && password != null) {
|
||||
try {
|
||||
GameServer.INSTANCE.getUserManager().registerUser(username, password);
|
||||
|
||||
AlertMessage[] messages = {new AlertMessage("Successfully registered", AlertType.SUCCESS)};
|
||||
request.session().attribute("messages", messages);
|
||||
request.session().attribute("username", username);
|
||||
|
||||
LogManager.LOGGER.fine("(Web) " + username + " registered " + request.ip());
|
||||
} catch (RegistrationException e) {
|
||||
AlertMessage[] messages = {new AlertMessage(e.getMessage(), AlertType.DANGER)};
|
||||
request.session().attribute("messages", messages);
|
||||
}
|
||||
}
|
||||
|
||||
response.redirect("/account");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package net.simon987.server.web;
|
||||
|
||||
import net.simon987.server.GameServer;
|
||||
import org.json.simple.JSONObject;
|
||||
import spark.Request;
|
||||
import spark.Response;
|
||||
import spark.Route;
|
||||
|
||||
public class ServerInfoRoute implements Route {
|
||||
|
||||
private String address;
|
||||
private String serverName;
|
||||
private int tickLength;
|
||||
|
||||
public ServerInfoRoute() {
|
||||
|
||||
//Info variables that don't change
|
||||
|
||||
if (GameServer.INSTANCE.getConfig().getInt("use_ssl") == 0) {
|
||||
address = "ws://" +
|
||||
GameServer.INSTANCE.getConfig().getString("mar_address") + ":" +
|
||||
GameServer.INSTANCE.getConfig().getString("mar_port") + "/socket";
|
||||
} else {
|
||||
address = "wss://" +
|
||||
GameServer.INSTANCE.getConfig().getString("mar_address") + ":" +
|
||||
GameServer.INSTANCE.getConfig().getString("mar_port") + "/socket";
|
||||
}
|
||||
|
||||
serverName = GameServer.INSTANCE.getConfig().getString("server_name");
|
||||
tickLength = GameServer.INSTANCE.getConfig().getInt("tick_length");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object handle(Request request, Response response) {
|
||||
|
||||
JSONObject json = new JSONObject();
|
||||
|
||||
String username = request.session().attribute("username");
|
||||
|
||||
if (username != null) {
|
||||
String token = GameServer.INSTANCE.getUserManager().generateAndGetToken(username);
|
||||
|
||||
json.put("token", token);
|
||||
json.put("username", username);
|
||||
|
||||
} else {
|
||||
|
||||
json.put("token",
|
||||
"00000000000000000000000000000000" +
|
||||
"00000000000000000000000000000000" +
|
||||
"00000000000000000000000000000000" +
|
||||
"00000000000000000000000000000000");
|
||||
json.put("username", "guest");
|
||||
}
|
||||
|
||||
json.put("address", address);
|
||||
json.put("serverName", serverName);
|
||||
json.put("tickLength", tickLength);
|
||||
|
||||
response.header("Content-Type", "application/json");
|
||||
|
||||
return json.toJSONString();
|
||||
}
|
||||
}
|
||||
54
Server/src/main/java/net/simon987/server/web/WebServer.java
Normal file
54
Server/src/main/java/net/simon987/server/web/WebServer.java
Normal file
@@ -0,0 +1,54 @@
|
||||
package net.simon987.server.web;
|
||||
|
||||
import net.simon987.server.ServerConfiguration;
|
||||
import net.simon987.server.logging.LogManager;
|
||||
import net.simon987.server.websocket.SocketServer;
|
||||
import org.apache.velocity.app.VelocityEngine;
|
||||
import spark.Spark;
|
||||
import spark.template.velocity.VelocityTemplateEngine;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
public class WebServer {
|
||||
|
||||
public WebServer(ServerConfiguration config) {
|
||||
|
||||
//Velocity config
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty("file.resource.loader.path", "templates/");
|
||||
VelocityTemplateEngine templateEngine = new VelocityTemplateEngine(new VelocityEngine(properties));
|
||||
Spark.staticFiles.externalLocation("static");
|
||||
|
||||
//Spark config
|
||||
if (config.getInt("use_ssl") != 0) {
|
||||
|
||||
/*
|
||||
* Generate keystore from Let's Encrypt with command:
|
||||
* openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.kjs -name muchassemblyrequired -CAfile chain.pem -caname root -password file:password.txt
|
||||
*
|
||||
* Certificates generated from Let's Encrypt are usually in /etc/letsencrypt/live/www.site.com
|
||||
*/
|
||||
|
||||
Spark.secure(
|
||||
config.getString("keyStore_path"),
|
||||
config.getString("keyStore_password"), null, null);
|
||||
LogManager.LOGGER.info("(Web) Enabled ssl");
|
||||
}
|
||||
|
||||
Spark.webSocket("/socket", SocketServer.class);
|
||||
|
||||
Spark.get("/", new HomePage(), templateEngine);
|
||||
Spark.get("/leaderboard", new LeaderBoardPage(), templateEngine);
|
||||
Spark.get("/play", new PlayPage(), templateEngine);
|
||||
Spark.get("/account", new AccountPage(), templateEngine);
|
||||
|
||||
Spark.post("/register", new RegisterRoute());
|
||||
Spark.post("/login", new LoginRoute());
|
||||
Spark.get("/logout", new LogoutRoute());
|
||||
Spark.post("/change_password", new ChangePasswordRoute());
|
||||
Spark.get("/server_info", new ServerInfoRoute());
|
||||
|
||||
Spark.after((request, response) -> response.header("Content-Encoding", "gzip"));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -36,13 +36,13 @@ public class SocketServer {
|
||||
|
||||
@OnWebSocketConnect
|
||||
public void onOpen(Session session) {
|
||||
LogManager.LOGGER.info("(WS) New Websocket connection " + session.getRemoteAddress());
|
||||
LogManager.LOGGER.info("(WS) New Websocket connection " + session.getRemoteAddress().getAddress());
|
||||
onlineUserManager.add(new OnlineUser(session));
|
||||
}
|
||||
|
||||
@OnWebSocketClose
|
||||
public void onClose(Session session, int code, String reason) {
|
||||
LogManager.LOGGER.info("(WS) Closed " + session.getRemoteAddress() + " with exit code " + code + " additional info: " + reason);
|
||||
LogManager.LOGGER.info("(WS) Closed " + session.getRemoteAddress().getAddress() + " with exit code " + code + " additional info: " + reason);
|
||||
onlineUserManager.remove(onlineUserManager.getUser(session));
|
||||
}
|
||||
|
||||
@@ -58,8 +58,7 @@ public class SocketServer {
|
||||
|
||||
} else {
|
||||
|
||||
LogManager.LOGGER.info("(WS) Received message from unauthenticated user " + session.getRemoteAddress());
|
||||
|
||||
LogManager.LOGGER.info("(WS) Received message from unauthenticated user " + session.getRemoteAddress().getAddress());
|
||||
if (message.length() == 128) {
|
||||
|
||||
User user = GameServer.INSTANCE.getUserManager().validateAuthToken(message);
|
||||
@@ -85,7 +84,7 @@ public class SocketServer {
|
||||
onlineUser.getUser().setGuest(true);
|
||||
|
||||
LogManager.LOGGER.info("(WS) Created guest user " +
|
||||
onlineUser.getUser().getUsername() + session.getRemoteAddress());
|
||||
onlineUser.getUser().getUsername() + session.getRemoteAddress().getAddress());
|
||||
|
||||
try {
|
||||
session.getRemote().sendString("{\"t\":\"auth\", \"m\":\"ok\"}");
|
||||
@@ -158,6 +157,5 @@ public class SocketServer {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user