Added Chinese to client and Spanish to server

This commit is contained in:
Carlos
2019-08-28 02:32:06 +02:00
parent 69b10a8514
commit aa6edfd0f0
17 changed files with 201 additions and 51 deletions

View File

@ -18,6 +18,7 @@ import org.bukkit.plugin.java.JavaPlugin;
import org.java_websocket.server.DefaultSSLWebSocketServerFactory;
import com.mesacarlos.webconsole.minecraft.WebConsoleCommand;
import com.mesacarlos.webconsole.util.Internationalization;
import com.mesacarlos.webconsole.util.LogFilter;
import com.mesacarlos.webconsole.websocket.WSServer;
@ -32,11 +33,14 @@ public class WebConsole extends JavaPlugin {
public void onEnable() {
createConfig();
//Change language to user-specified language.
Internationalization.setCurrentLocale(config.getString("language"));
//Start WebSocket Server
try {
startWS();
} catch (Exception e) {
Bukkit.getLogger().warning("Error occured while starting WebSocket Server.");
Bukkit.getLogger().warning(Internationalization.getPhrase("boot-error"));
e.printStackTrace();
}
@ -73,6 +77,9 @@ public class WebConsole extends JavaPlugin {
config.addDefault("host", "localhost");
config.addDefault("port", 8080);
config.addDefault("password", 1234);
// Language config
config.addDefault("language", "en");
config.options().copyDefaults(true);
saveConfig();

View File

@ -0,0 +1,35 @@
package com.mesacarlos.webconsole.util;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
public class Internationalization {
private static ResourceBundle messages = ResourceBundle.getBundle("phrases", new Locale("en"));
/**
* Changes locale of this application
* @param locale String representing language
*/
public static void setCurrentLocale(String locale) {
messages = ResourceBundle.getBundle("phrases", new Locale(locale));
}
/**
* Get current locale
* @return Current locale
*/
public static Locale getCurrentLocale() {
return messages.getLocale();
}
/**
* Gets translated message
* @return The desired message in user's language
*/
public static String getPhrase(String phrase, Object... params) {
String msg = messages.getString(phrase);
msg = MessageFormat.format(msg, params);
return msg;
}
}

View File

@ -10,6 +10,7 @@ import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;
import com.mesacarlos.webconsole.WebConsole;
import com.mesacarlos.webconsole.util.Internationalization;
import com.mesacarlos.webconsole.util.LoginManager;
import com.mesacarlos.webconsole.websocket.command.CommandFactory;
import com.mesacarlos.webconsole.websocket.command.WSCommand;
@ -30,11 +31,13 @@ public class WSServer extends WebSocketServer {
@Override
public void onOpen(WebSocket conn, ClientHandshake handshake) {
if(LoginManager.getInstance().isLoggedIn(conn.getRemoteSocketAddress()))
sendToClient(conn, new Processed("Connected. Already logged in, welcome back!"));
else
sendToClient(conn, new LoginRequired("Connection started, waiting login"));
Bukkit.getLogger().info("[WebConsole] Connected and waiting login from " + conn.getRemoteSocketAddress());
if (LoginManager.getInstance().isLoggedIn(conn.getRemoteSocketAddress())) {
sendToClient(conn, new Processed(Internationalization.getPhrase("connection-resumed-message")));
Bukkit.getLogger().info(Internationalization.getPhrase("connection-resumed-console", conn.getRemoteSocketAddress()));
} else {
sendToClient(conn, new LoginRequired(Internationalization.getPhrase("connection-login-message")));
Bukkit.getLogger().info(Internationalization.getPhrase("connection-login-console", conn.getRemoteSocketAddress()));
}
}
@Override
@ -49,16 +52,14 @@ public class WSServer extends WebSocketServer {
WSCommand cmd = commands.get(wsCommand);
if (cmd == null) {
//Command does not exist
sendToClient(conn, new UnknownCommand("Unknown command", message));
Bukkit.getLogger().info(
"[WebConsole] Signal '" + message + "' was not processed since is not valid. Is your plugin/web interface up to date?");
// Command does not exist
sendToClient(conn, new UnknownCommand(Internationalization.getPhrase("unknown-command-message"), message));
Bukkit.getLogger().info(Internationalization.getPhrase("unknown-command-console", message));
} else if (!LoginManager.getInstance().isLoggedIn(conn.getRemoteSocketAddress())
&& !wsCommand.equals("LOGIN")) {
//User is not authorised. DO NOTHING, IMPORTANT!
sendToClient(conn, new LoginRequired("Forbidden"));
Bukkit.getLogger().warning("[WebConsole] " + conn.getRemoteSocketAddress()
+ " tried to run '" + message + "' while not logged in!");
// User is not authorised. DO NOTHING, IMPORTANT!
sendToClient(conn, new LoginRequired(Internationalization.getPhrase("forbidden-message")));
Bukkit.getLogger().warning(Internationalization.getPhrase("forbidden-console", conn.getRemoteSocketAddress(), message));
} else {
cmd.execute(this, conn, wsCommandParams);
}
@ -67,21 +68,19 @@ public class WSServer extends WebSocketServer {
@Override
public void onClose(WebSocket conn, int code, String reason, boolean remote) {
LoginManager.getInstance().logOut(conn.getRemoteSocketAddress());
Bukkit.getLogger()
.info("[WebConsole] Closed WS connection " + conn.getRemoteSocketAddress());
Bukkit.getLogger().info(Internationalization.getPhrase("closed-connection", conn.getRemoteSocketAddress()));
}
@Override
public void onError(WebSocket conn, Exception ex) {
Bukkit.getLogger()
.warning("[WebConsole] Error occured on connection " + conn.getRemoteSocketAddress() + ":" + ex);
Bukkit.getLogger().warning(Internationalization.getPhrase("error-on-connection", conn.getRemoteSocketAddress(), ex));
}
@Override
public void onStart() {
Bukkit.getLogger().info("[WebConsole] WebSocket Server started successfully");
Bukkit.getLogger().info(Internationalization.getPhrase("started-websocket"));
}
/**
* Returns main class
* @return Main plugin class
@ -89,7 +88,7 @@ public class WSServer extends WebSocketServer {
public WebConsole getMainClass() {
return plugin;
}
/**
* Sends the message to all connected AND logged-in users
*/
@ -100,10 +99,10 @@ public class WSServer extends WebSocketServer {
sendToClient(connection, new ConsoleOutput(line));
}
}
/**
* Sends this JSONOutput to client
* @param conn Connection to client
* @param conn Connection to client
* @param content JSONOutput object
*/
public void sendToClient(WebSocket conn, JSONOutput content) {

View File

@ -9,6 +9,7 @@ import javax.management.ObjectName;
import org.java_websocket.WebSocket;
import com.mesacarlos.webconsole.util.Internationalization;
import com.mesacarlos.webconsole.websocket.WSServer;
import com.mesacarlos.webconsole.websocket.response.CpuUsage;
@ -18,7 +19,7 @@ public class CpuUsageCommand implements WSCommand {
public void execute(WSServer wsServer, WebSocket conn, String params) {
try {
double usage = getProcessCpuLoad();
wsServer.sendToClient(conn, new CpuUsage("Usage is " + usage + "%", usage));
wsServer.sendToClient(conn, new CpuUsage(Internationalization.getPhrase("cpu-usage-message", usage), usage));
} catch (Exception e) {
e.printStackTrace();
}

View File

@ -6,6 +6,7 @@ import org.bukkit.Bukkit;
import org.bukkit.command.ConsoleCommandSender;
import org.java_websocket.WebSocket;
import com.mesacarlos.webconsole.util.Internationalization;
import com.mesacarlos.webconsole.websocket.WSServer;
public class ExecCommand implements WSCommand {
@ -13,7 +14,7 @@ public class ExecCommand implements WSCommand {
@Override
public void execute(WSServer wsServer, WebSocket conn, String command) {
Bukkit.getLogger().info("[WebConsole] " + conn.getRemoteSocketAddress() + " executed '" + command + "'");
Bukkit.getLogger().info(Internationalization.getPhrase("cmd-executed-console", conn.getRemoteSocketAddress(), command));
ConsoleCommandSender sender = Bukkit.getServer().getConsoleSender();
try {

View File

@ -3,6 +3,7 @@ package com.mesacarlos.webconsole.websocket.command;
import org.bukkit.Bukkit;
import org.java_websocket.WebSocket;
import com.mesacarlos.webconsole.util.Internationalization;
import com.mesacarlos.webconsole.util.LoginManager;
import com.mesacarlos.webconsole.websocket.WSServer;
import com.mesacarlos.webconsole.websocket.response.LoginRequired;
@ -22,12 +23,12 @@ public class LogInCommand implements WSCommand {
if (receivedPassword.equals(password)) {
// Password is correct, logging in
LoginManager.getInstance().logIn(conn.getRemoteSocketAddress());
wsServer.sendToClient(conn, new Processed("Logged In", "LOGIN ********"));
Bukkit.getLogger().info("[WebConsole] Successfully logged in from " + conn.getRemoteSocketAddress());
wsServer.sendToClient(conn, new Processed(Internationalization.getPhrase("login-sucessful-message"), "LOGIN ********"));
Bukkit.getLogger().info(Internationalization.getPhrase("login-sucessful-console", conn.getRemoteSocketAddress()));
} else {
wsServer.sendToClient(conn, new LoginRequired("Incorrect password, try again"));
Bukkit.getLogger()
.info("[WebConsole] Password incorrect while login from " + conn.getRemoteSocketAddress());
// Password was incorrect
wsServer.sendToClient(conn, new LoginRequired(Internationalization.getPhrase("login-failed-message")));
Bukkit.getLogger().info(Internationalization.getPhrase("login-failed-console", conn.getRemoteSocketAddress()));
}
}

View File

@ -7,6 +7,7 @@ import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.java_websocket.WebSocket;
import com.mesacarlos.webconsole.util.Internationalization;
import com.mesacarlos.webconsole.websocket.WSServer;
import com.mesacarlos.webconsole.websocket.response.Players;
@ -18,10 +19,17 @@ public class PlayersCommand implements WSCommand{
for(Player player : Bukkit.getOnlinePlayers()) {
connectedPlayersList.add(player.getName());
}
int connectedPlayers = Bukkit.getOnlinePlayers().size();
int connectedPlayers = connectedPlayersList.size();
int maxPlayers = Bukkit.getMaxPlayers();
wsServer.sendToClient(conn, new Players("Currently " + connectedPlayers + " connected players for a maximum of " + maxPlayers, connectedPlayers, maxPlayers, connectedPlayersList));
wsServer.sendToClient(conn,
new Players(
Internationalization.getPhrase("players-message", connectedPlayers, maxPlayers),
connectedPlayers,
maxPlayers,
connectedPlayersList
));
}
}

View File

@ -2,6 +2,7 @@ package com.mesacarlos.webconsole.websocket.command;
import org.java_websocket.WebSocket;
import com.mesacarlos.webconsole.util.Internationalization;
import com.mesacarlos.webconsole.websocket.WSServer;
import com.mesacarlos.webconsole.websocket.response.RamUsage;
@ -16,7 +17,12 @@ public class RamUsageCommand implements WSCommand {
long used = max - free;
wsServer.sendToClient(conn,
new RamUsage(free + " free, " + used + " used, " + max + " maximum memory", free, used, max));
new RamUsage(
Internationalization.getPhrase("ram-usage-message", free, used, max),
free,
used,
max
));
}
}