Added parameter on 1000 response, added MC info cmd and more changes

This commit is contained in:
Carlos 2019-08-26 14:52:31 +02:00
parent 2e238027bb
commit 94a8831495
26 changed files with 141 additions and 69 deletions

View File

@ -11,9 +11,9 @@ Dont worry about privacy or security: all data is stored in your browser offline
* Command history: Use up/down arrow keys to browse the command history, like in the real console.
* Colors supported, for both Windows and Linux hosts. (Colors are represented different in each platform).
* Real-time connected players, machine CPU and server RAM usage information.
* Capable of keep connected to more than one server to keep retrieving console log in the background for them.
* English, Spanish and Russian (thanks to Stashenko) supported.
* Free and updated regularly.
* And many more!
* Free ,updated regularly, and many more!
![Screenshot](https://i.imgur.com/sN1sYju.png)

View File

@ -0,0 +1,3 @@
If you are having issues with client not connecting and throwing random errors after a upgrade,
please force client reload on your browser by pressing Ctrl+F5 to reload the whole page.
This issue happens sometimes due to browsers caching JavaScript code.

View File

@ -210,7 +210,7 @@
<!-- Webpage footer -->
<footer class="footer mt-auto py-3">
<div class="container">
<span class="text-muted">WebConsole v1.2 - <a href="https://github.com/mesacarlos/WebConsole">GitHub</a></span>
<span class="text-muted">WebConsole v1.3 - <a href="https://github.com/mesacarlos/WebConsole">GitHub</a></span>
</div>
</footer>
@ -220,11 +220,11 @@
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<!-- WebConsole JS Scripts -->
<script src="scripts/WebConsoleLanguage.js"></script>
<script src="scripts/WebConsoleConnector.js"></script>
<script src="scripts/WebConsoleManager.js"></script>
<script src="scripts/WebConsolePersistenceManager.js"></script>
<script src="scripts/WebConsole.js"></script>
<script src="scripts/WebConsoleJqueryHandler.js"></script>
<script src="scripts/WebConsoleLanguage.js?v=1.3"></script>
<script src="scripts/WebConsoleConnector.js?v=1.3"></script>
<script src="scripts/WebConsoleManager.js?v=1.3"></script>
<script src="scripts/WebConsolePersistenceManager.js?v=1.3"></script>
<script src="scripts/WebConsole.js?v=1.3"></script>
<script src="scripts/WebConsoleJqueryHandler.js?v=1.3"></script>
</body>
</html>

View File

@ -1,6 +1,10 @@
name: WebConsole
main: com.mesacarlos.webconsole.WebConsole
version: 1.2
version: 1.3
description: WebSockets-based web console
author: Carlos Mesa
commands:
commands:
WebConsole:
description: Shows version and active connections of WebConsole
permission: webconsole.webconsole
usage: /WebConsole

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>WebConsole</groupId>
<artifactId>WebConsole</artifactId>
<version>1.2</version>
<version>1.3</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>

View File

@ -17,8 +17,9 @@ import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
import org.java_websocket.server.DefaultSSLWebSocketServerFactory;
import com.mesacarlos.webconsole.minecraft.WebConsoleCommand;
import com.mesacarlos.webconsole.util.LogFilter;
import com.mesacarlos.webconsole.websockets.WSServer;
import com.mesacarlos.webconsole.websocket.WSServer;
public class WebConsole extends JavaPlugin {
FileConfiguration config = this.getConfig();
@ -31,15 +32,20 @@ public class WebConsole extends JavaPlugin {
public void onEnable() {
createConfig();
//Start WebSocket Server
try {
startWS();
} catch (Exception e) {
Bukkit.getLogger().warning("Error occured while starting WebSockets Server.");
Bukkit.getLogger().warning("Error occured while starting WebSocket Server.");
e.printStackTrace();
}
//This filter is used to read the whole console.
Filter f = new LogFilter(getWSServer());
((org.apache.logging.log4j.core.Logger) LogManager.getRootLogger()).addFilter(f);
//Register /WebConsole command
getCommand("WebConsole").setExecutor(new WebConsoleCommand(this.getDescription().getVersion()));
}
@Override

View File

@ -1,19 +0,0 @@
package com.mesacarlos.webconsole.command;
import org.bukkit.Bukkit;
import org.java_websocket.WebSocket;
import com.mesacarlos.webconsole.json.Players;
import com.mesacarlos.webconsole.websockets.WSServer;
public class PlayersCommand implements WSCommand{
@Override
public void execute(WSServer wsServer, WebSocket conn, String params) {
int connectedPlayers = Bukkit.getOnlinePlayers().size();
int maxPlayers = Bukkit.getMaxPlayers();
wsServer.sendToClient(conn, new Players("Currently " + connectedPlayers + " connected players for a maximum of " + maxPlayers, connectedPlayers, maxPlayers));
}
}

View File

@ -0,0 +1,42 @@
package com.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 com.mesacarlos.webconsole.util.LoginManager;
public class WebConsoleCommand implements CommandExecutor {
private String version;
public WebConsoleCommand(String version) {
this.version = version;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
StringBuilder msg = new StringBuilder();
msg.append("WebConsole version " + version + ".\n");
ArrayList<InetSocketAddress> connections = LoginManager.getInstance().getLoggedInUsers();
if (connections.isEmpty()) {
msg.append("There are no logged in WebConsole connections now.");
} else {
msg.append("Connected to WebConsole from:\n");
for (int i = 0; i < connections.size(); i++) {
InetSocketAddress connection = connections.get(i);
msg.append(connection.toString());
if(i+1 < connections.size())
msg.append("\n");
}
}
sender.sendMessage(msg.toString());
return true;
}
}

View File

@ -7,7 +7,7 @@ import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.Logger;
import org.apache.logging.log4j.message.Message;
import com.mesacarlos.webconsole.websockets.WSServer;
import com.mesacarlos.webconsole.websocket.WSServer;
public class LogFilter implements Filter{
private WSServer wsServer;

View File

@ -2,10 +2,9 @@ package com.mesacarlos.webconsole.util;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List;
public class LoginManager {
private List<InetSocketAddress> loggedInUsers = new ArrayList<InetSocketAddress>();
private ArrayList<InetSocketAddress> loggedInUsers = new ArrayList<InetSocketAddress>();
private static LoginManager instance;
private LoginManager() {}
@ -27,4 +26,8 @@ public class LoginManager {
public boolean isLoggedIn(InetSocketAddress address) {
return loggedInUsers.contains(address);
}
public ArrayList<InetSocketAddress> getLoggedInUsers() {
return loggedInUsers;
}
}

View File

@ -1,4 +1,4 @@
package com.mesacarlos.webconsole.websockets;
package com.mesacarlos.webconsole.websocket;
import java.net.InetSocketAddress;
import java.util.Collection;
@ -10,14 +10,14 @@ import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;
import com.mesacarlos.webconsole.WebConsole;
import com.mesacarlos.webconsole.command.CommandFactory;
import com.mesacarlos.webconsole.command.WSCommand;
import com.mesacarlos.webconsole.json.ConsoleOutput;
import com.mesacarlos.webconsole.json.JSONOutput;
import com.mesacarlos.webconsole.json.LoginRequired;
import com.mesacarlos.webconsole.json.Processed;
import com.mesacarlos.webconsole.json.UnknownCommand;
import com.mesacarlos.webconsole.util.LoginManager;
import com.mesacarlos.webconsole.websocket.command.CommandFactory;
import com.mesacarlos.webconsole.websocket.command.WSCommand;
import com.mesacarlos.webconsole.websocket.response.ConsoleOutput;
import com.mesacarlos.webconsole.websocket.response.JSONOutput;
import com.mesacarlos.webconsole.websocket.response.LoginRequired;
import com.mesacarlos.webconsole.websocket.response.Processed;
import com.mesacarlos.webconsole.websocket.response.UnknownCommand;
public class WSServer extends WebSocketServer {
private HashMap<String, WSCommand> commands = CommandFactory.getCommandsHashMap();

View File

@ -1,4 +1,4 @@
package com.mesacarlos.webconsole.command;
package com.mesacarlos.webconsole.websocket.command;
import java.util.HashMap;

View File

@ -1,4 +1,4 @@
package com.mesacarlos.webconsole.command;
package com.mesacarlos.webconsole.websocket.command;
import java.lang.management.ManagementFactory;
@ -9,8 +9,8 @@ import javax.management.ObjectName;
import org.java_websocket.WebSocket;
import com.mesacarlos.webconsole.json.CpuUsage;
import com.mesacarlos.webconsole.websockets.WSServer;
import com.mesacarlos.webconsole.websocket.WSServer;
import com.mesacarlos.webconsole.websocket.response.CpuUsage;
public class CpuUsageCommand implements WSCommand {

View File

@ -1,4 +1,4 @@
package com.mesacarlos.webconsole.command;
package com.mesacarlos.webconsole.websocket.command;
import java.util.concurrent.ExecutionException;
@ -6,7 +6,7 @@ import org.bukkit.Bukkit;
import org.bukkit.command.ConsoleCommandSender;
import org.java_websocket.WebSocket;
import com.mesacarlos.webconsole.websockets.WSServer;
import com.mesacarlos.webconsole.websocket.WSServer;
public class ExecCommand implements WSCommand {

View File

@ -1,12 +1,12 @@
package com.mesacarlos.webconsole.command;
package com.mesacarlos.webconsole.websocket.command;
import org.bukkit.Bukkit;
import org.java_websocket.WebSocket;
import com.mesacarlos.webconsole.json.LoginRequired;
import com.mesacarlos.webconsole.json.Processed;
import com.mesacarlos.webconsole.util.LoginManager;
import com.mesacarlos.webconsole.websockets.WSServer;
import com.mesacarlos.webconsole.websocket.WSServer;
import com.mesacarlos.webconsole.websocket.response.LoginRequired;
import com.mesacarlos.webconsole.websocket.response.Processed;
public class LogInCommand implements WSCommand {

View File

@ -0,0 +1,27 @@
package com.mesacarlos.webconsole.websocket.command;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.java_websocket.WebSocket;
import com.mesacarlos.webconsole.websocket.WSServer;
import com.mesacarlos.webconsole.websocket.response.Players;
public class PlayersCommand implements WSCommand{
@Override
public void execute(WSServer wsServer, WebSocket conn, String params) {
List<String> connectedPlayersList = new ArrayList<String>();
for(Player player : Bukkit.getOnlinePlayers()) {
connectedPlayersList.add(player.getName());
}
int connectedPlayers = Bukkit.getOnlinePlayers().size();
int maxPlayers = Bukkit.getMaxPlayers();
wsServer.sendToClient(conn, new Players("Currently " + connectedPlayers + " connected players for a maximum of " + maxPlayers, connectedPlayers, maxPlayers, connectedPlayersList));
}
}

View File

@ -1,9 +1,9 @@
package com.mesacarlos.webconsole.command;
package com.mesacarlos.webconsole.websocket.command;
import org.java_websocket.WebSocket;
import com.mesacarlos.webconsole.json.RamUsage;
import com.mesacarlos.webconsole.websockets.WSServer;
import com.mesacarlos.webconsole.websocket.WSServer;
import com.mesacarlos.webconsole.websocket.response.RamUsage;
public class RamUsageCommand implements WSCommand {

View File

@ -1,8 +1,8 @@
package com.mesacarlos.webconsole.command;
package com.mesacarlos.webconsole.websocket.command;
import org.java_websocket.WebSocket;
import com.mesacarlos.webconsole.websockets.WSServer;
import com.mesacarlos.webconsole.websocket.WSServer;
public interface WSCommand {
void execute(WSServer wsServer, WebSocket conn, String params);

View File

@ -1,4 +1,4 @@
package com.mesacarlos.webconsole.json;
package com.mesacarlos.webconsole.websocket.response;
import com.google.gson.JsonObject;

View File

@ -1,4 +1,4 @@
package com.mesacarlos.webconsole.json;
package com.mesacarlos.webconsole.websocket.response;
import com.google.gson.JsonObject;

View File

@ -1,4 +1,4 @@
package com.mesacarlos.webconsole.json;
package com.mesacarlos.webconsole.websocket.response;
public interface JSONOutput {
/**

View File

@ -1,4 +1,4 @@
package com.mesacarlos.webconsole.json;
package com.mesacarlos.webconsole.websocket.response;
import com.google.gson.JsonObject;

View File

@ -1,16 +1,21 @@
package com.mesacarlos.webconsole.json;
package com.mesacarlos.webconsole.websocket.response;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
public class Players implements JSONOutput{
private String message;
private int connectedPlayers;
private int maxPlayers;
private List<String> connectedPlayersList;
public Players(String message, int connectedPlayers, int maxPlayers) {
public Players(String message, int connectedPlayers, int maxPlayers, List<String> connectedPlayersList) {
this.message = message;
this.connectedPlayers = connectedPlayers;
this.maxPlayers = maxPlayers;
this.connectedPlayersList = connectedPlayersList;
}
@Override
@ -38,6 +43,7 @@ public class Players implements JSONOutput{
object.addProperty("statusDescription", "Players");
object.addProperty("connectedPlayers", getConnectedPlayers());
object.addProperty("maxPlayers", getMaxPlayers());
object.addProperty("players", new Gson().toJson(connectedPlayersList));
object.addProperty("message", getMessage());
return object.toString();
}

View File

@ -1,4 +1,4 @@
package com.mesacarlos.webconsole.json;
package com.mesacarlos.webconsole.websocket.response;
import com.google.gson.JsonObject;

View File

@ -1,4 +1,4 @@
package com.mesacarlos.webconsole.json;
package com.mesacarlos.webconsole.websocket.response;
import com.google.gson.JsonObject;

View File

@ -1,4 +1,4 @@
package com.mesacarlos.webconsole.json;
package com.mesacarlos.webconsole.websocket.response;
import com.google.gson.JsonObject;