diff --git a/client/index.html b/client/index.html index f4b4616..9ca786a 100644 --- a/client/index.html +++ b/client/index.html @@ -248,7 +248,7 @@ diff --git a/phrases.properties b/phrases.properties index 046a378..ad13cfe 100644 --- a/phrases.properties +++ b/phrases.properties @@ -13,17 +13,18 @@ forbidden-console = [WebConsole] {0} tried to run "{1}" while not logged in! closed-connection = [WebConsole] Closed connection and logged out from {0} error-on-connection = [WebConsole] Error occurred on connection {0}: {1} started-websocket = [WebConsole] WebSocket Server started successfully. -error-disconnected-client = [WebConsole] Attempted to send a message to a disconnected client. +error-disconnected-client = [WebConsole] Attempted to send a message to a disconnected WebSocket client. # CpuUsageCommand.java cpu-usage-message = Usage is {0}% # ExecCommand.java +viewer-error-console = [WebConsole] {0} tried to run {1} without permission. cmd-executed-console = [WebConsole] {0} executed "{1}". # LogInCommand.java login-sucessful-message = Logged in -login-sucessful-console = [WebConsole] Successfully logged in from {0} +login-sucessful-console = [WebConsole] {0} successfully logged in. login-failed-message = Incorrect password, try again login-failed-console = [WebConsole] Password incorrect while login from {0} @@ -39,4 +40,7 @@ webconsole-no-connections = There are no logged in WebConsole connections now. webconsole-active-connections = Connected to WebConsole from: # ReadLogFileCommand.java -log-read-error = Error trying to read latest.log file \ No newline at end of file +log-read-error = Error trying to read latest.log file + +# User.java +user-tostring = User {0} from {1} as {2} \ No newline at end of file diff --git a/phrases_cs.properties b/phrases_cs.properties index eea808b..004d38a 100644 --- a/phrases_cs.properties +++ b/phrases_cs.properties @@ -19,11 +19,12 @@ error-disconnected-client = [WebConsole] Pokus o odeslání zprávy odpojenému cpu-usage-message = Využití je {0}% # ExecCommand.java +viewer-error-console = [WebConsole] {0} se pokusil spustit {1} bez povolení. cmd-executed-console = [WebConsole] {0} spustil "{1}". # LogInCommand.java login-sucessful-message = Jste přihlášeni. -login-sucessful-console = [WebConsole] Úspěšné přihlášení z {0} +login-sucessful-console = [WebConsole] {0} úspěšně přihlášeni. login-failed-message = Špatné heslo, zkuste prosím znovu. login-failed-console = [WebConsole] {0} se pokusil připojit se špatným heslem. @@ -39,4 +40,7 @@ webconsole-no-connections = Nejsou žádné WebConsole připojení. webconsole-active-connections = Připojeno k WebConsole z: # ReadLogFileCommand.java -log-read-error = Chyba při čtení souboru latest.log \ No newline at end of file +log-read-error = Chyba při čtení souboru latest.log + +# User.java +user-tostring = Uživatel {0} z {1} tak jako {2} \ No newline at end of file diff --git a/phrases_de.properties b/phrases_de.properties index e797802..3b94ebd 100644 --- a/phrases_de.properties +++ b/phrases_de.properties @@ -19,11 +19,12 @@ error-disconnected-client = [WebConsole] Es wurde versucht, eine Nachricht an ei cpu-usage-message = Die CPU Auslastung liegt bei {0}%. # ExecCommand.java +viewer-error-console = [WebConsole] {0} hat versucht, {1} ohne Erlaubnis auszuführen. cmd-executed-console = [WebConsole] {0} hat "{1}" ausgeführt. # LogInCommand.java login-sucessful-message = Eingeloggt. -login-sucessful-console = [WebConsole] {0} hat sich erfolgreich eingeloggt! +login-sucessful-console = [WebConsole] {0} hat sich erfolgreich eingeloggt. login-failed-message = Falsches Passwort, versuch es nochmal! login-failed-console = [WebConsole] {0} hat das Passwort falsch eingegeben @@ -39,4 +40,7 @@ webconsole-no-connections = Aktuell ist niemand mit der WebConsole verbunden webconsole-active-connections = Aktive Verbindugen von: # ReadLogFileCommand.java -log-read-error = Fehler beim lesen der 'latest.log'-Logdatei \ No newline at end of file +log-read-error = Fehler beim lesen der 'latest.log'-Logdatei + +# User.java +user-tostring = Benutzer {0} von {1} wie {2} \ No newline at end of file diff --git a/phrases_en.properties b/phrases_en.properties index 772e83e..ad13cfe 100644 --- a/phrases_en.properties +++ b/phrases_en.properties @@ -19,11 +19,12 @@ error-disconnected-client = [WebConsole] Attempted to send a message to a discon cpu-usage-message = Usage is {0}% # ExecCommand.java +viewer-error-console = [WebConsole] {0} tried to run {1} without permission. cmd-executed-console = [WebConsole] {0} executed "{1}". # LogInCommand.java login-sucessful-message = Logged in -login-sucessful-console = [WebConsole] Successfully logged in from {0} +login-sucessful-console = [WebConsole] {0} successfully logged in. login-failed-message = Incorrect password, try again login-failed-console = [WebConsole] Password incorrect while login from {0} @@ -39,4 +40,7 @@ webconsole-no-connections = There are no logged in WebConsole connections now. webconsole-active-connections = Connected to WebConsole from: # ReadLogFileCommand.java -log-read-error = Error trying to read latest.log file \ No newline at end of file +log-read-error = Error trying to read latest.log file + +# User.java +user-tostring = User {0} from {1} as {2} \ No newline at end of file diff --git a/phrases_es.properties b/phrases_es.properties index c1f68bc..d8b3eeb 100644 --- a/phrases_es.properties +++ b/phrases_es.properties @@ -19,11 +19,12 @@ error-disconnected-client = [WebConsole] Se intentó enviar un mensaje a un clie cpu-usage-message = En uso {0}% # ExecCommand.java +viewer-error-console = [WebConsole] {0} intentó ejecutar {1} sin permiso. cmd-executed-console = [WebConsole] {0} ejecutó "{1}". # LogInCommand.java login-sucessful-message = Sesión iniciada -login-sucessful-console = [WebConsole] Sesión iniciada con éxito desde {0} +login-sucessful-console = [WebConsole] {0} inició sesión con exito. login-failed-message = Contraña incorrecta, inténtalo de nuevo login-failed-console = [WebConsole] Contraseña incorrecta al intentar iniciar sesión desde {0} @@ -39,4 +40,7 @@ webconsole-no-connections = No hay ninguna conexión activa a WebConsole en este webconsole-active-connections = Conectado a WebConsole desde: # ReadLogFileCommand.java -log-read-error = Error leyendo el fichero latest.log \ No newline at end of file +log-read-error = Error leyendo el fichero latest.log + +# User.java +user-tostring = Usuario {0} desde {1} como {2} \ No newline at end of file diff --git a/phrases_fr.properties b/phrases_fr.properties index 3874eed..4ad4b61 100644 --- a/phrases_fr.properties +++ b/phrases_fr.properties @@ -19,11 +19,12 @@ error-disconnected-client = [WebConsole] Vous avez tenté d'envoyer un message cpu-usage-message = L'utilisation est {0}% # ExecCommand.java +viewer-error-console = [WebConsole] {0} a tenté d'exécuter {1} sans autorisation. cmd-executed-console = [WebConsole] {0} a exécuté "{1}". # LogInCommand.java login-sucessful-message = Connecté -login-sucessful-console = [WebConsole] Connexion réussie à partir de {0} +login-sucessful-console = [WebConsole] {0} session démarrée avec succès. login-failed-message = Mot de passe incorrect, réessayez login-failed-console = [WebConsole] Mot de passe incorrect lors de la connexion depuis {0} @@ -39,4 +40,7 @@ webconsole-no-connections = Aucune connexion WebConsole n'est connectée mainten webconsole-active-connections = Connecté à WebConsole depuis: # ReadLogFileCommand.java -log-read-error = Erreur lors de la lecture du fichier latest.log \ No newline at end of file +log-read-error = Erreur lors de la lecture du fichier latest.log + +# User.java +user-tostring = Utilisateur {0} depuis {1} comme {2} \ No newline at end of file diff --git a/phrases_it.properties b/phrases_it.properties index 337d2bd..e5bd04b 100644 --- a/phrases_it.properties +++ b/phrases_it.properties @@ -19,11 +19,12 @@ error-disconnected-client = [WebConsole] Tentativo di inviare un messaggio a un cpu-usage-message = L''uso è {0}% # ExecCommand.java +viewer-error-console = [WebConsole] {0} ha provato a eseguire {1} senza autorizzazione. cmd-executed-console = [WebConsole] {0} eseguito "{1}". # LogInCommand.java login-sucessful-message = Accesso eseguito -login-sucessful-console = [WebConsole] Connessione stabilita correttamente da {0} +login-sucessful-console = [WebConsole] {0} ha effettuato l'accesso correttamente. login-failed-message = Password scorretta, riprova login-failed-console = [WebConsole] Password scorretta inserita da {0} @@ -39,4 +40,7 @@ webconsole-no-connections = Non è stata effettuata ancora nessuna connessione t webconsole-active-connections = Connesso a WebConsole da: # ReadLogFileCommand.java -log-read-error = Errore metre tentavo di leggere latest.log \ No newline at end of file +log-read-error = Errore metre tentavo di leggere latest.log + +# User.java +user-tostring = Utente {0} a partire dal {1} come {2} \ No newline at end of file diff --git a/phrases_nl.properties b/phrases_nl.properties index e5a6279..af769f4 100644 --- a/phrases_nl.properties +++ b/phrases_nl.properties @@ -19,11 +19,12 @@ error-disconnected-client = [WebConsole] Poging om een bericht te sturen naar ee cpu-usage-message = Verbruik is {0}% # ExecCommand.java +viewer-error-console = [WebConsole] {0} heeft geprobeerd {1} uit te voeren zonder toestemming. cmd-executed-console = [WebConsole] {0} voerde "{1}" uit. # LogInCommand.java login-sucessful-message = Ingelogd -login-sucessful-console = [WebConsole] Successvol ingelogd van {0} +login-sucessful-console = [WebConsole] {0} succesvol ingelogd. login-failed-message = Incorrect wachtwoord, probeer het opnieuw login-failed-console = [WebConsole] Wachtwoord onjuist bij inloggen vanaf {0} @@ -39,4 +40,7 @@ webconsole-no-connections = Er zijn nu geen ingelogde Web Console-verbindingen. webconsole-active-connections = Verbonden aan WebConsole vanaf: # ReadLogFileCommand.java -log-read-error = Er is een fout opgetreden bij het lezen van het bestand latest.log \ No newline at end of file +log-read-error = Er is een fout opgetreden bij het lezen van het bestand latest.log + +# User.java +user-tostring = Gebruiker {0} uit {1} als {2} \ No newline at end of file diff --git a/phrases_pt.properties b/phrases_pt.properties index 692e55c..4d66632 100644 --- a/phrases_pt.properties +++ b/phrases_pt.properties @@ -19,6 +19,7 @@ error-disconnected-client = [WebConsole] Tentativa de enviar uma mensagem para u cpu-usage-message = Consumindo {0}% # ExecCommand.java +viewer-error-console = [WebConsole] {0} tentou executar o {1} sem permissão. cmd-executed-console = [WebConsole] {0} executou "{1}". # LogInCommand.java @@ -39,4 +40,7 @@ webconsole-no-connections = Atualmente não tem nenhum usuário conectado. webconsole-active-connections = Atualmente temos: # ReadLogFileCommand.java -log-read-error = Erro ao ler o arquivo latest.log \ No newline at end of file +log-read-error = Erro ao ler o arquivo latest.log + +# User.java +user-tostring = Usuário {0} da {1} como {2} \ No newline at end of file diff --git a/phrases_ru.properties b/phrases_ru.properties index 31267e5..9313abb 100644 --- a/phrases_ru.properties +++ b/phrases_ru.properties @@ -19,11 +19,12 @@ error-disconnected-client = [WebConsole] Попытка отправить со cpu-usage-message = Использование {0}% # ExecCommand.java +viewer-error-console = [WebConsole] {0} попытался запустить {1} без разрешения. cmd-executed-console = [WebConsole] {0} выполнил "{1}". # LogInCommand.java login-sucessful-message = Войти в систему -login-sucessful-console = [WebConsole] Успешно вошел в систему с {0} +login-sucessful-console = [WebConsole] {0} успешно авторизован login-failed-message = Неверный пароль, попробуйте еще раз login-failed-console = [WebConsole] Неверный пароль при входе с {0} @@ -39,4 +40,7 @@ webconsole-no-connections = В настоящее время нет подклю webconsole-active-connections = Подключен к веб-консоли из : # ReadLogFileCommand.java -log-read-error = ошибка чтения последнего latest.log \ No newline at end of file +log-read-error = ошибка чтения последнего latest.log + +# User.java +user-tostring = пользователь {0} из {1} так как {2} \ No newline at end of file diff --git a/phrases_zh.properties b/phrases_zh.properties index a66f11f..2a11d1a 100644 --- a/phrases_zh.properties +++ b/phrases_zh.properties @@ -19,11 +19,12 @@ error-disconnected-client = [WebConsole] 尝试向断开连接的WebSocket客户 cpu-usage-message = 已使用 {0}% # ExecCommand.java +viewer-error-console = [WebConsole] {0}试图未经许可而运行{1}。 cmd-executed-console = [網站控制台] {0} 執行 '{1}'. # LogInCommand.java login-sucessful-message = 登錄 -login-sucessful-console = [網站控制台] 成功登錄 {0} +login-sucessful-console = [網站控制台] {0}已成功登录。 login-failed-message = 密碼不正確,請重試 login-failed-console = [網站控制台] 登錄時密碼不正確 {0} @@ -39,4 +40,7 @@ webconsole-no-connections = 現在沒有連接登錄網站控制台。 webconsole-active-connections = 從以下位置連接到網站控制台: # ReadLogFileCommand.java -log-read-error = 读取Latest.log文件时出错 \ No newline at end of file +log-read-error = 读取Latest.log文件时出错 + +# User.java +user-tostring = 用户 {0} 从 {1} 如 {2} \ No newline at end of file diff --git a/plugin.yml b/plugin.yml index 05ea86a..78cb045 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,7 +1,7 @@ name: WebConsole main: es.mesacarlos.webconsole.WebConsole api-version: 1.13 -version: 1.6 +version: 2.0 description: WebSockets-based web console author: Carlos Mesa commands: diff --git a/pom.xml b/pom.xml index 3354db7..1e58e37 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 WebConsole WebConsole - 1.6 + 2.0 src diff --git a/src/es/mesacarlos/webconsole/WebConsole.java b/src/es/mesacarlos/webconsole/WebConsole.java index 1c9b2b2..6fafc25 100644 --- a/src/es/mesacarlos/webconsole/WebConsole.java +++ b/src/es/mesacarlos/webconsole/WebConsole.java @@ -13,6 +13,7 @@ import javax.net.ssl.TrustManagerFactory; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.Filter; import org.bukkit.Bukkit; +import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.plugin.java.JavaPlugin; import org.java_websocket.server.DefaultSSLWebSocketServerFactory; @@ -76,11 +77,17 @@ public class WebConsole extends JavaPlugin { // Connection config variables config.addDefault("host", "0.0.0.0"); config.addDefault("port", 8080); - config.addDefault("password", 1234); // Language config config.addDefault("language", "en"); - + + if(config.getConfigurationSection("passwords") == null) { + ConfigurationSection passwordsSection = config.createSection("passwords"); + ConfigurationSection adminPasswordSection = passwordsSection.createSection("admin"); + adminPasswordSection.addDefault("user1", "mySecurePassword"); + passwordsSection.createSection("viewer"); + } + config.options().copyDefaults(true); saveConfig(); } diff --git a/src/es/mesacarlos/webconsole/auth/LoginManager.java b/src/es/mesacarlos/webconsole/auth/LoginManager.java new file mode 100644 index 0000000..f7865dd --- /dev/null +++ b/src/es/mesacarlos/webconsole/auth/LoginManager.java @@ -0,0 +1,116 @@ +package es.mesacarlos.webconsole.auth; + +import java.net.InetSocketAddress; +import java.util.ArrayList; +import java.util.Map; + +import org.bukkit.Bukkit; + +import es.mesacarlos.webconsole.WebConsole; + +public class LoginManager { + private ArrayList loggedInUsers = new ArrayList(); + private static LoginManager instance; + + private LoginManager() {} + + public static LoginManager getInstance() { + if(instance == null) + instance = new LoginManager(); + return instance; + } + + /** + * Logs user in + * @param user User to login + */ + public void logIn(User user) { + loggedInUsers.add(user); + } + + /** + * Logs user out + * @param address User to logout + */ + public void logOut(InetSocketAddress address) { + for(User user : loggedInUsers) + if(user.getSocketAddress().equals(address)) + loggedInUsers.remove(user); + } + + public User getUser(InetSocketAddress address) { + for(User user : loggedInUsers) + if(user.getSocketAddress().equals(address)) + return user; + return null; + } + + /** + * Check if user is logged in + * @param address User to check + * @return true if user is logged in, false otherwise + */ + public boolean isLoggedIn(InetSocketAddress address) { + for(User user : loggedInUsers) + if(user.getSocketAddress().equals(address)) + return true; + return false; + } + + /** + * Retrieve the full logged-in user list + * @return list of logged in users + */ + public ArrayList getLoggedInUsers() { + return loggedInUsers; + } + + /** + * Check if the provided password corresponds to any admin + * @param password Provided password + * @return Name of the user if password corresponds to a valid admin, null if is a viewer or an invalid password + */ + public String isValidAdminPassword(String password) { + WebConsole plugin = (WebConsole)Bukkit.getPluginManager().getPlugin("WebConsole"); + Map passwords = plugin.getConfig().getConfigurationSection("passwords").getConfigurationSection("admin").getValues(false); + + for(Map.Entry entry : passwords.entrySet()) { + String pwd = (String)entry.getValue(); + if(pwd.equals(password)) + return entry.getKey(); + } + return null; + } + + /** + * Check if the provided password corresponds to any viewer + * @param password Provided password + * @return Name of the user if password corresponds to a valid viewer, null if is a admin or invalid password + */ + public String isValidViewerPassword(String password) { + WebConsole plugin = (WebConsole)Bukkit.getPluginManager().getPlugin("WebConsole"); + Map passwords = plugin.getConfig().getConfigurationSection("passwords").getConfigurationSection("viewer").getValues(false); + + for(Map.Entry entry : passwords.entrySet()) { + String pwd = (String)entry.getValue(); + if(pwd.equals(password)) + return entry.getKey(); + } + return null; + } + + public UserType isValidUser(String password) { + //Check if is an admin + String username = isValidAdminPassword(password); + if(username != null) + return UserType.ADMIN; + + //Check if is a viewer + username = isValidViewerPassword(password); + if(username != null) + return UserType.VIEWER; + + //He is nothing + return UserType.UNKNOWN; + } +} \ No newline at end of file diff --git a/src/es/mesacarlos/webconsole/auth/User.java b/src/es/mesacarlos/webconsole/auth/User.java new file mode 100644 index 0000000..066f2dc --- /dev/null +++ b/src/es/mesacarlos/webconsole/auth/User.java @@ -0,0 +1,33 @@ +package es.mesacarlos.webconsole.auth; + +import java.net.InetSocketAddress; + +import es.mesacarlos.webconsole.util.Internationalization; + +public class User { + private String username; + private InetSocketAddress socketAddress; + private UserType userType; + + public User(InetSocketAddress socketAddress, String username, UserType userType) { + this.socketAddress = socketAddress; + this.username = username; + this.userType = userType; + } + + public InetSocketAddress getSocketAddress() { + return socketAddress; + } + + public String getUsername() { + return username; + } + + public UserType getUserType() { + return userType; + } + + public String toString() { + return Internationalization.getPhrase("user-tostring", username, socketAddress, userType); + } +} \ No newline at end of file diff --git a/src/es/mesacarlos/webconsole/auth/UserType.java b/src/es/mesacarlos/webconsole/auth/UserType.java new file mode 100644 index 0000000..f653b0f --- /dev/null +++ b/src/es/mesacarlos/webconsole/auth/UserType.java @@ -0,0 +1,7 @@ +package es.mesacarlos.webconsole.auth; + +public enum UserType { + ADMIN, + VIEWER, + UNKNOWN +} \ No newline at end of file diff --git a/src/es/mesacarlos/webconsole/minecraft/WebConsoleCommand.java b/src/es/mesacarlos/webconsole/minecraft/WebConsoleCommand.java index 4d6c92c..f68713c 100644 --- a/src/es/mesacarlos/webconsole/minecraft/WebConsoleCommand.java +++ b/src/es/mesacarlos/webconsole/minecraft/WebConsoleCommand.java @@ -1,14 +1,14 @@ package es.mesacarlos.webconsole.minecraft; -import java.net.InetSocketAddress; import java.util.ArrayList; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import es.mesacarlos.webconsole.auth.LoginManager; +import es.mesacarlos.webconsole.auth.User; import es.mesacarlos.webconsole.util.Internationalization; -import es.mesacarlos.webconsole.util.LoginManager; public class WebConsoleCommand implements CommandExecutor { private String version; @@ -22,16 +22,16 @@ public class WebConsoleCommand implements CommandExecutor { StringBuilder msg = new StringBuilder(); msg.append(Internationalization.getPhrase("webconsole-version", version) + "\n"); - ArrayList connections = LoginManager.getInstance().getLoggedInUsers(); + ArrayList users = LoginManager.getInstance().getLoggedInUsers(); - if (connections.isEmpty()) { + if (users.isEmpty()) { msg.append(Internationalization.getPhrase("webconsole-no-connections")); } else { msg.append(Internationalization.getPhrase("webconsole-active-connections") + "\n"); - for (int i = 0; i < connections.size(); i++) { - InetSocketAddress connection = connections.get(i); - msg.append(connection.toString()); - if(i+1 < connections.size()) + for (int i = 0; i < users.size(); i++) { + User user = users.get(i); + msg.append(user.toString()); + if(i+1 < users.size()) msg.append("\n"); } } diff --git a/src/es/mesacarlos/webconsole/util/LoginManager.java b/src/es/mesacarlos/webconsole/util/LoginManager.java deleted file mode 100644 index 836e164..0000000 --- a/src/es/mesacarlos/webconsole/util/LoginManager.java +++ /dev/null @@ -1,50 +0,0 @@ -package es.mesacarlos.webconsole.util; - -import java.net.InetSocketAddress; -import java.util.ArrayList; - -public class LoginManager { - private ArrayList loggedInUsers = new ArrayList(); - private static LoginManager instance; - - private LoginManager() {} - - public static LoginManager getInstance() { - if(instance == null) - instance = new LoginManager(); - return instance; - } - - /** - * Logs user in - * @param address User to login - */ - public void logIn(InetSocketAddress address) { - loggedInUsers.add(address); - } - - /** - * Logs user out - * @param address User to logout - */ - public void logOut(InetSocketAddress address) { - loggedInUsers.remove(address); - } - - /** - * Check if user is logged in - * @param address User to check - * @return true if user is logged in, false otherwise - */ - public boolean isLoggedIn(InetSocketAddress address) { - return loggedInUsers.contains(address); - } - - /** - * Retrieve the full logged-in user list - * @return list of logged in users - */ - public ArrayList getLoggedInUsers() { - return loggedInUsers; - } -} \ No newline at end of file diff --git a/src/es/mesacarlos/webconsole/websocket/WSServer.java b/src/es/mesacarlos/webconsole/websocket/WSServer.java index 1473e37..38daf5b 100644 --- a/src/es/mesacarlos/webconsole/websocket/WSServer.java +++ b/src/es/mesacarlos/webconsole/websocket/WSServer.java @@ -11,9 +11,9 @@ import org.java_websocket.handshake.ClientHandshake; import org.java_websocket.server.WebSocketServer; import es.mesacarlos.webconsole.WebConsole; +import es.mesacarlos.webconsole.auth.LoginManager; import es.mesacarlos.webconsole.util.DateTimeUtils; import es.mesacarlos.webconsole.util.Internationalization; -import es.mesacarlos.webconsole.util.LoginManager; import es.mesacarlos.webconsole.websocket.command.WSCommandFactory; import es.mesacarlos.webconsole.websocket.command.WSCommand; import es.mesacarlos.webconsole.websocket.response.ConsoleOutput; diff --git a/src/es/mesacarlos/webconsole/websocket/command/ExecCommand.java b/src/es/mesacarlos/webconsole/websocket/command/ExecCommand.java index 98f0725..9348ccd 100644 --- a/src/es/mesacarlos/webconsole/websocket/command/ExecCommand.java +++ b/src/es/mesacarlos/webconsole/websocket/command/ExecCommand.java @@ -6,6 +6,9 @@ import org.bukkit.Bukkit; import org.bukkit.command.ConsoleCommandSender; import org.java_websocket.WebSocket; +import es.mesacarlos.webconsole.auth.LoginManager; +import es.mesacarlos.webconsole.auth.User; +import es.mesacarlos.webconsole.auth.UserType; import es.mesacarlos.webconsole.util.Internationalization; import es.mesacarlos.webconsole.websocket.WSServer; @@ -13,7 +16,13 @@ public class ExecCommand implements WSCommand { @Override public void execute(WSServer wsServer, WebSocket conn, String command) { - + User u = LoginManager.getInstance().getUser(conn.getRemoteSocketAddress()); + if(u == null || u.getUserType() != UserType.ADMIN) { + if(u != null) + Bukkit.getLogger().warning(Internationalization.getPhrase("viewer-error-console", u, command)); + return; + } + Bukkit.getLogger().info(Internationalization.getPhrase("cmd-executed-console", conn.getRemoteSocketAddress(), Internationalization.utf8ToIso(command))); ConsoleCommandSender sender = Bukkit.getServer().getConsoleSender(); diff --git a/src/es/mesacarlos/webconsole/websocket/command/LogInCommand.java b/src/es/mesacarlos/webconsole/websocket/command/LogInCommand.java index 11a4a72..a98f755 100644 --- a/src/es/mesacarlos/webconsole/websocket/command/LogInCommand.java +++ b/src/es/mesacarlos/webconsole/websocket/command/LogInCommand.java @@ -3,33 +3,48 @@ package es.mesacarlos.webconsole.websocket.command; import org.bukkit.Bukkit; import org.java_websocket.WebSocket; +import es.mesacarlos.webconsole.auth.LoginManager; +import es.mesacarlos.webconsole.auth.User; +import es.mesacarlos.webconsole.auth.UserType; import es.mesacarlos.webconsole.util.Internationalization; -import es.mesacarlos.webconsole.util.LoginManager; import es.mesacarlos.webconsole.websocket.WSServer; import es.mesacarlos.webconsole.websocket.response.LoginRequired; import es.mesacarlos.webconsole.websocket.response.Processed; public class LogInCommand implements WSCommand { - + @Override public void execute(WSServer wsServer, WebSocket conn, String password) { // If user is logged in, then return. if (LoginManager.getInstance().isLoggedIn(conn.getRemoteSocketAddress())) return; - - // Get password from config files - String receivedPassword = wsServer.getMainClass().getConfig().getString("password"); - - if (receivedPassword.equals(password)) { - // Password is correct, logging in - LoginManager.getInstance().logIn(conn.getRemoteSocketAddress()); - wsServer.sendToClient(conn, new Processed(Internationalization.getPhrase("login-sucessful-message"), "LOGIN ********")); - Bukkit.getLogger().info(Internationalization.getPhrase("login-sucessful-console", conn.getRemoteSocketAddress())); - } else { - // Password was incorrect - wsServer.sendToClient(conn, new LoginRequired(Internationalization.getPhrase("login-failed-message"))); - Bukkit.getLogger().info(Internationalization.getPhrase("login-failed-console", conn.getRemoteSocketAddress())); + + //Check user type and login is password is valid + switch(LoginManager.getInstance().isValidUser(password)) { + case ADMIN: + login(wsServer, conn, LoginManager.getInstance().isValidAdminPassword(password), UserType.ADMIN); + break; + case VIEWER: + login(wsServer, conn, LoginManager.getInstance().isValidViewerPassword(password), UserType.VIEWER); + break; + case UNKNOWN: + wsServer.sendToClient(conn, new LoginRequired(Internationalization.getPhrase("login-failed-message"))); + Bukkit.getLogger().info(Internationalization.getPhrase("login-failed-console", conn.getRemoteSocketAddress())); + break; + default: + wsServer.sendToClient(conn, new LoginRequired(Internationalization.getPhrase("login-failed-message"))); + Bukkit.getLogger().info(Internationalization.getPhrase("login-failed-console", conn.getRemoteSocketAddress())); + break; } + + } + + private void login(WSServer wsServer, WebSocket conn, String username, UserType as) { + User user = new User(conn.getRemoteSocketAddress(), username, as); + LoginManager.getInstance().logIn(user); + + wsServer.sendToClient(conn, new Processed(Internationalization.getPhrase("login-sucessful-message"), "LOGIN ********")); + Bukkit.getLogger().info(Internationalization.getPhrase("login-sucessful-console", user.toString())); } } \ No newline at end of file