mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-19 18:34:49 +01:00
Merge development into localization
This commit is contained in:
@@ -2,6 +2,7 @@ package emu.grasscutter.server.dispatch;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.Grasscutter.ServerDebugMode;
|
||||
@@ -9,6 +10,8 @@ import express.http.HttpContextHandler;
|
||||
import express.http.Request;
|
||||
import express.http.Response;
|
||||
|
||||
import static emu.grasscutter.utils.Language.translate;
|
||||
|
||||
public final class DispatchHttpJsonHandler implements HttpContextHandler {
|
||||
private final String response;
|
||||
private final String[] missingRoutes = { // TODO: When http requests for theses routes are found please remove it from this list and update the route request type in the DispatchServer
|
||||
@@ -31,8 +34,8 @@ public final class DispatchHttpJsonHandler implements HttpContextHandler {
|
||||
@Override
|
||||
public void handle(Request req, Response res) throws IOException {
|
||||
// Checking for ALL here isn't required as when ALL is enabled enableDevLogging() gets enabled
|
||||
if(Grasscutter.getConfig().DebugMode == ServerDebugMode.MISSING && Arrays.stream(missingRoutes).anyMatch(x -> x == req.baseUrl())) {
|
||||
Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_request.replace("{ip}", req.ip()).replace("{method}", req.method()).replace("{url}", req.baseUrl()) + (Grasscutter.getConfig().DebugMode == ServerDebugMode.MISSING ? "(MISSING)" : ""));
|
||||
if(Grasscutter.getConfig().DebugMode == ServerDebugMode.MISSING && Arrays.stream(missingRoutes).anyMatch(x -> Objects.equals(x, req.baseUrl()))) {
|
||||
Grasscutter.getLogger().info(translate("messages.dispatch.request", req.ip(), req.method(), req.baseUrl()) + (Grasscutter.getConfig().DebugMode == ServerDebugMode.MISSING ? "(MISSING)" : ""));
|
||||
}
|
||||
res.send(response);
|
||||
}
|
||||
|
||||
@@ -35,6 +35,8 @@ import java.io.*;
|
||||
import java.net.URLDecoder;
|
||||
import java.util.*;
|
||||
|
||||
import static emu.grasscutter.utils.Language.translate;
|
||||
|
||||
public final class DispatchServer {
|
||||
public static String query_region_list = "";
|
||||
public static String query_cur_region = "";
|
||||
@@ -213,21 +215,21 @@ public final class DispatchServer {
|
||||
sslContextFactory.setKeyStorePassword(Grasscutter.getConfig().getDispatchOptions().KeystorePassword);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Grasscutter.getLogger().warn(Grasscutter.getLanguage().Not_load_keystore);
|
||||
Grasscutter.getLogger().warn(translate("messages.dispatch.keystore.password_error"));
|
||||
|
||||
try {
|
||||
sslContextFactory.setKeyStorePath(keystoreFile.getPath());
|
||||
sslContextFactory.setKeyStorePassword("123456");
|
||||
Grasscutter.getLogger().warn(Grasscutter.getLanguage().Use_default_keystore);
|
||||
Grasscutter.getLogger().warn(translate("messages.dispatch.keystore.default_password"));
|
||||
} catch (Exception e2) {
|
||||
Grasscutter.getLogger().warn(Grasscutter.getLanguage().Load_keystore_error);
|
||||
Grasscutter.getLogger().warn(translate("messages.dispatch.keystore.general_error"));
|
||||
e2.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
serverConnector = new ServerConnector(server, sslContextFactory);
|
||||
} else {
|
||||
Grasscutter.getLogger().warn(Grasscutter.getLanguage().Not_find_ssl_cert);
|
||||
Grasscutter.getLogger().warn(translate("messages.dispatch.keystore.no_keystore_error"));
|
||||
Grasscutter.getConfig().getDispatchOptions().UseSSL = false;
|
||||
|
||||
serverConnector = new ServerConnector(server);
|
||||
@@ -250,11 +252,11 @@ public final class DispatchServer {
|
||||
else config.enableCorsForAllOrigins();
|
||||
}
|
||||
});
|
||||
httpServer.get("/", (req, res) -> res.send(Grasscutter.getLanguage().Welcome));
|
||||
httpServer.get("/", (req, res) -> res.send(translate("messages.status.welcome")));
|
||||
|
||||
httpServer.raw().error(404, ctx -> {
|
||||
if(Grasscutter.getConfig().DebugMode == ServerDebugMode.MISSING) {
|
||||
Grasscutter.getLogger().info(Grasscutter.getLanguage().Potential_unhandled_request.replace("{method}", ctx.method()).replace("{url}", ctx.url()));
|
||||
Grasscutter.getLogger().info(translate("messages.dispatch.unhandled_request_error", ctx.method(), ctx.url()));
|
||||
}
|
||||
ctx.contentType("text/html");
|
||||
ctx.result("<!doctype html><html lang=\"en\"><body><img src=\"https://http.cat/404\" /></body></html>"); // I'm like 70% sure this won't break anything.
|
||||
@@ -312,7 +314,7 @@ public final class DispatchServer {
|
||||
if (requestData == null) {
|
||||
return;
|
||||
}
|
||||
Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_try_login.replace("{ip}", req.ip()));
|
||||
Grasscutter.getLogger().info(translate("messages.dispatch.account.login_attempt", req.ip()));
|
||||
|
||||
res.send(this.getAuthHandler().handleGameLogin(req, requestData));
|
||||
});
|
||||
@@ -332,7 +334,7 @@ public final class DispatchServer {
|
||||
return;
|
||||
}
|
||||
LoginResultJson responseData = new LoginResultJson();
|
||||
Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_login_token.replace("{ip}", req.ip()));
|
||||
Grasscutter.getLogger().info(translate("messages.dispatch.account.login_token_attempt"));
|
||||
|
||||
// Login
|
||||
Account account = DatabaseHelper.getAccountById(requestData.uid);
|
||||
@@ -340,16 +342,16 @@ public final class DispatchServer {
|
||||
// Test
|
||||
if (account == null || !account.getSessionKey().equals(requestData.token)) {
|
||||
responseData.retcode = -111;
|
||||
responseData.message = Grasscutter.getLanguage().Game_account_cache_error;
|
||||
responseData.message = translate("messages.dispatch.account.account_cache_error");
|
||||
|
||||
Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_token_login_failed.replace("{ip}", req.ip()));
|
||||
Grasscutter.getLogger().info(translate("messages.dispatch.account.login_token_error", req.ip()));
|
||||
} else {
|
||||
responseData.message = "OK";
|
||||
responseData.data.account.uid = requestData.uid;
|
||||
responseData.data.account.token = requestData.token;
|
||||
responseData.data.account.email = account.getEmail();
|
||||
|
||||
Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_login_in_token.replace("{ip}", req.ip()).replace("{uid}", responseData.data.account.uid));
|
||||
Grasscutter.getLogger().info(translate("messages.dispatch.account.login_token_success", req.ip(), requestData.uid));
|
||||
}
|
||||
|
||||
res.send(responseData);
|
||||
@@ -379,16 +381,16 @@ public final class DispatchServer {
|
||||
// Test
|
||||
if (account == null || !account.getSessionKey().equals(loginData.token)) {
|
||||
responseData.retcode = -201;
|
||||
responseData.message = Grasscutter.getLanguage().Wrong_session_key;
|
||||
responseData.message = translate("messages.dispatch.account.session_key_error");
|
||||
|
||||
Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_failed_exchange_combo_token.replace("{ip}", req.ip()));
|
||||
Grasscutter.getLogger().info(translate("messages.dispatch.account.combo_token_error", req.ip()));
|
||||
} else {
|
||||
responseData.message = "OK";
|
||||
responseData.data.open_id = loginData.uid;
|
||||
responseData.data.combo_id = "157795300";
|
||||
responseData.data.combo_token = account.generateLoginToken();
|
||||
|
||||
Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_exchange_combo_token.replace("{ip}", req.ip()));
|
||||
Grasscutter.getLogger().info(translate("messages.dispatch.account.combo_token_success", req.ip()));
|
||||
}
|
||||
|
||||
res.send(responseData);
|
||||
@@ -461,7 +463,7 @@ public final class DispatchServer {
|
||||
httpServer.raw().config.precompressStaticFiles = false; // If this isn't set to false, files such as images may appear corrupted when serving static files
|
||||
|
||||
httpServer.listen(Grasscutter.getConfig().getDispatchOptions().Port);
|
||||
Grasscutter.getLogger().info(Grasscutter.getLanguage().Dispatch_start_server_port.replace("{port}", Integer.toString(httpServer.raw().port())));
|
||||
Grasscutter.getLogger().info(translate("messages.dispatch.port_bind", Integer.toString(httpServer.raw().port())));
|
||||
}
|
||||
|
||||
private Map<String, String> parseQueryString(String qs) {
|
||||
|
||||
@@ -8,6 +8,8 @@ import emu.grasscutter.server.dispatch.json.LoginResultJson;
|
||||
import express.http.Request;
|
||||
import express.http.Response;
|
||||
|
||||
import static emu.grasscutter.utils.Language.translate;
|
||||
|
||||
public class DefaultAuthenticationHandler implements AuthenticationHandler {
|
||||
|
||||
@Override
|
||||
@@ -34,11 +36,9 @@ public class DefaultAuthenticationHandler implements AuthenticationHandler {
|
||||
|
||||
// Check if account exists, else create a new one.
|
||||
if (account == null) {
|
||||
// Account doesnt exist, so we can either auto create it if the config value is
|
||||
// set
|
||||
// Account doesn't exist, so we can either auto create it if the config value is set.
|
||||
if (Grasscutter.getConfig().getDispatchOptions().AutomaticallyCreateAccounts) {
|
||||
// This account has been created AUTOMATICALLY. There will be no permissions
|
||||
// added.
|
||||
// This account has been created AUTOMATICALLY. There will be no permissions added.
|
||||
account = DatabaseHelper.createAccountWithId(requestData.account, 0);
|
||||
|
||||
for (String permission : Grasscutter.getConfig().getDispatchOptions().defaultPermissions) {
|
||||
@@ -51,19 +51,18 @@ public class DefaultAuthenticationHandler implements AuthenticationHandler {
|
||||
responseData.data.account.token = account.generateSessionKey();
|
||||
responseData.data.account.email = account.getEmail();
|
||||
|
||||
Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_failed_login_account_create.replace("{ip}", req.ip()).replace("{uid}", responseData.data.account.uid));
|
||||
Grasscutter.getLogger().info(translate("messages.dispatch.account.account_login_create_success", req.ip(), responseData.data.account.uid));
|
||||
} else {
|
||||
responseData.retcode = -201;
|
||||
responseData.message = Grasscutter.getLanguage().Username_not_found_create_failed;
|
||||
responseData.message = translate("messages.dispatch.account.username_create_error");
|
||||
|
||||
Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_failed_login_account_no_found.replace("{ip}", req.ip()));
|
||||
Grasscutter.getLogger().info(translate("messages.dispatch.account.account_login_create_error", req.ip()));
|
||||
}
|
||||
} else {
|
||||
responseData.retcode = -201;
|
||||
responseData.message = Grasscutter.getLanguage().Username_not_found;
|
||||
responseData.message = translate("messages.dispatch.account.username_error");
|
||||
|
||||
Grasscutter.getLogger().info(String
|
||||
.format(Grasscutter.getLanguage().Client_failed_login_account_no_found, req.ip()));
|
||||
Grasscutter.getLogger().info(translate("messages.dispatch.account.account_login_exist_error", req.ip()));
|
||||
}
|
||||
} else {
|
||||
// Account was found, log the player in
|
||||
@@ -72,7 +71,7 @@ public class DefaultAuthenticationHandler implements AuthenticationHandler {
|
||||
responseData.data.account.token = account.generateSessionKey();
|
||||
responseData.data.account.email = account.getEmail();
|
||||
|
||||
Grasscutter.getLogger().info(Grasscutter.getLanguage().Client_login.replace("{ip}", req.ip()).replace("{uid}", responseData.data.account.uid));
|
||||
Grasscutter.getLogger().info(translate("messages.dispatch.account.login_success", req.ip(), responseData.data.account.uid));
|
||||
}
|
||||
|
||||
return responseData;
|
||||
|
||||
Reference in New Issue
Block a user