Massive update enabling view-only users
This commit is contained in:
parent
d1b158a0fe
commit
d8c71045d2
@ -248,7 +248,7 @@
|
||||
<!-- Webpage footer -->
|
||||
<footer class="footer mt-auto py-3">
|
||||
<div class="container">
|
||||
<span class="text-muted">WebConsole v1.6 - <a href="https://github.com/mesacarlos/WebConsole">GitHub</a></span>
|
||||
<span class="text-muted">WebConsole v2.0 - <a href="https://github.com/mesacarlos/WebConsole">GitHub</a></span>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
@ -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
|
||||
log-read-error = Error trying to read latest.log file
|
||||
|
||||
# User.java
|
||||
user-tostring = User {0} from {1} as {2}
|
@ -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
|
||||
log-read-error = Chyba při čtení souboru latest.log
|
||||
|
||||
# User.java
|
||||
user-tostring = Uživatel {0} z {1} tak jako {2}
|
@ -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
|
||||
log-read-error = Fehler beim lesen der 'latest.log'-Logdatei
|
||||
|
||||
# User.java
|
||||
user-tostring = Benutzer {0} von {1} wie {2}
|
@ -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
|
||||
log-read-error = Error trying to read latest.log file
|
||||
|
||||
# User.java
|
||||
user-tostring = User {0} from {1} as {2}
|
@ -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
|
||||
log-read-error = Error leyendo el fichero latest.log
|
||||
|
||||
# User.java
|
||||
user-tostring = Usuario {0} desde {1} como {2}
|
@ -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
|
||||
log-read-error = Erreur lors de la lecture du fichier latest.log
|
||||
|
||||
# User.java
|
||||
user-tostring = Utilisateur {0} depuis {1} comme {2}
|
@ -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
|
||||
log-read-error = Errore metre tentavo di leggere latest.log
|
||||
|
||||
# User.java
|
||||
user-tostring = Utente {0} a partire dal {1} come {2}
|
@ -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
|
||||
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}
|
@ -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
|
||||
log-read-error = Erro ao ler o arquivo latest.log
|
||||
|
||||
# User.java
|
||||
user-tostring = Usuário {0} da {1} como {2}
|
@ -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
|
||||
log-read-error = ошибка чтения последнего latest.log
|
||||
|
||||
# User.java
|
||||
user-tostring = пользователь {0} из {1} так как {2}
|
@ -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文件时出错
|
||||
log-read-error = 读取Latest.log文件时出错
|
||||
|
||||
# User.java
|
||||
user-tostring = 用户 {0} 从 {1} 如 {2}
|
@ -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:
|
||||
|
2
pom.xml
2
pom.xml
@ -4,7 +4,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>WebConsole</groupId>
|
||||
<artifactId>WebConsole</artifactId>
|
||||
<version>1.6</version>
|
||||
<version>2.0</version>
|
||||
<build>
|
||||
<sourceDirectory>src</sourceDirectory>
|
||||
<plugins>
|
||||
|
@ -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();
|
||||
}
|
||||
|
116
src/es/mesacarlos/webconsole/auth/LoginManager.java
Normal file
116
src/es/mesacarlos/webconsole/auth/LoginManager.java
Normal file
@ -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<User> loggedInUsers = new ArrayList<User>();
|
||||
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<User> 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<String, Object> passwords = plugin.getConfig().getConfigurationSection("passwords").getConfigurationSection("admin").getValues(false);
|
||||
|
||||
for(Map.Entry<String, Object> 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<String, Object> passwords = plugin.getConfig().getConfigurationSection("passwords").getConfigurationSection("viewer").getValues(false);
|
||||
|
||||
for(Map.Entry<String, Object> 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;
|
||||
}
|
||||
}
|
33
src/es/mesacarlos/webconsole/auth/User.java
Normal file
33
src/es/mesacarlos/webconsole/auth/User.java
Normal file
@ -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);
|
||||
}
|
||||
}
|
7
src/es/mesacarlos/webconsole/auth/UserType.java
Normal file
7
src/es/mesacarlos/webconsole/auth/UserType.java
Normal file
@ -0,0 +1,7 @@
|
||||
package es.mesacarlos.webconsole.auth;
|
||||
|
||||
public enum UserType {
|
||||
ADMIN,
|
||||
VIEWER,
|
||||
UNKNOWN
|
||||
}
|
@ -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<InetSocketAddress> connections = LoginManager.getInstance().getLoggedInUsers();
|
||||
ArrayList<User> 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");
|
||||
}
|
||||
}
|
||||
|
@ -1,50 +0,0 @@
|
||||
package es.mesacarlos.webconsole.util;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class LoginManager {
|
||||
private ArrayList<InetSocketAddress> loggedInUsers = new ArrayList<InetSocketAddress>();
|
||||
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<InetSocketAddress> getLoggedInUsers() {
|
||||
return loggedInUsers;
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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()));
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user