Deleted 403 response code and now also comparing port on login.
This commit is contained in:
parent
bbb35815e9
commit
4ce66aec2e
@ -78,7 +78,7 @@ Server communicate with all connected clients using JSON. The following table sh
|
||||
| Variable |Meaning |
|
||||
|---------------------|-----------------------------------------------------------------------------|
|
||||
| status |Status code (as integer), representing response type. See listing below* |
|
||||
| statusDescription |Status description (as String) describing status code |
|
||||
| statusDescription |Status description (as String) describing response type. |
|
||||
| respondsTo |`(Optional)` Original command sent by client which triggered this response|
|
||||
| message |Response content |
|
||||
|
||||
@ -87,7 +87,6 @@ Server communicate with all connected clients using JSON. The following table sh
|
||||
- **200**: Ok/Processed.
|
||||
- **400**: Unknown command.
|
||||
- **401**: Login required/Not logged in.
|
||||
- **403**: Forbidden/Unauthorised (Probably not logged in).
|
||||
|
||||
|
||||
#### Client -> Websocket Server
|
||||
|
@ -138,10 +138,6 @@ function onWebSocketsMessage(message){
|
||||
}else{
|
||||
$('#passwordModal').modal('show');
|
||||
}
|
||||
break;
|
||||
case 403:
|
||||
//Forbidden
|
||||
|
||||
break;
|
||||
default:
|
||||
console.log('Unknown server response:');
|
||||
|
@ -13,7 +13,7 @@ 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().getAddress().toString()))
|
||||
if (LoginManager.getInstance().isLoggedIn(conn.getRemoteSocketAddress()))
|
||||
return;
|
||||
|
||||
// Get password from config files
|
||||
@ -21,7 +21,7 @@ public class LogInCommand implements WSCommand {
|
||||
|
||||
if (receivedPassword.equals(password)) {
|
||||
// Password is correct, logging in
|
||||
LoginManager.getInstance().logIn(conn.getRemoteSocketAddress().getAddress().toString());
|
||||
LoginManager.getInstance().logIn(conn.getRemoteSocketAddress());
|
||||
wsServer.sendToClient(conn, new Processed("Logged In", "LOGIN ********"));
|
||||
Bukkit.getLogger().info("[WebConsole] Successfully logged in from " + conn.getRemoteSocketAddress());
|
||||
} else {
|
||||
|
@ -1,39 +0,0 @@
|
||||
package com.mesacarlos.webconsole.json;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
public class Forbidden implements JSONOutput{
|
||||
private String message;
|
||||
private String respondsTo;
|
||||
|
||||
public Forbidden(String message, String respondsTo) {
|
||||
this.message = message;
|
||||
this.respondsTo = respondsTo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStatusCode() {
|
||||
return 403;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRespondsTo() {
|
||||
return respondsTo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toJSON() {
|
||||
JsonObject object = new JsonObject();
|
||||
object.addProperty("status", getStatusCode());
|
||||
object.addProperty("statusDescription", "Forbidden");
|
||||
object.addProperty("respondsTo", getRespondsTo());
|
||||
object.addProperty("message", getMessage());
|
||||
return object.toString();
|
||||
}
|
||||
|
||||
}
|
@ -6,6 +6,10 @@ public class Processed implements JSONOutput{
|
||||
private String message;
|
||||
private String respondsTo;
|
||||
|
||||
public Processed(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public Processed(String message, String respondsTo) {
|
||||
this.message = message;
|
||||
this.respondsTo = respondsTo;
|
||||
|
@ -1,10 +1,11 @@
|
||||
package com.mesacarlos.webconsole.util;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class LoginManager {
|
||||
private List<String> loggedInUsers = new ArrayList<String>();
|
||||
private List<InetSocketAddress> loggedInUsers = new ArrayList<InetSocketAddress>();
|
||||
private static LoginManager instance;
|
||||
|
||||
private LoginManager() {}
|
||||
@ -15,15 +16,15 @@ public class LoginManager {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public void logIn(String address) {
|
||||
public void logIn(InetSocketAddress address) {
|
||||
loggedInUsers.add(address);
|
||||
}
|
||||
|
||||
public void logOut(String address) {
|
||||
public void logOut(InetSocketAddress address) {
|
||||
loggedInUsers.remove(address);
|
||||
}
|
||||
|
||||
public boolean isLoggedIn(String address) {
|
||||
public boolean isLoggedIn(InetSocketAddress address) {
|
||||
return loggedInUsers.contains(address);
|
||||
}
|
||||
}
|
@ -13,9 +13,9 @@ 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.Forbidden;
|
||||
import com.mesacarlos.webconsole.json.JSONOutput;
|
||||
import com.mesacarlos.webconsole.json.LoginRequired;
|
||||
import com.mesacarlos.webconsole.json.Processed;
|
||||
import com.mesacarlos.webconsole.json.UnknownWSCmd;
|
||||
import com.mesacarlos.webconsole.util.LoginManager;
|
||||
|
||||
@ -30,7 +30,10 @@ public class WSServer extends WebSocketServer {
|
||||
|
||||
@Override
|
||||
public void onOpen(WebSocket conn, ClientHandshake handshake) {
|
||||
sendToClient(conn, new LoginRequired("Connection started, waiting login"));
|
||||
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());
|
||||
}
|
||||
|
||||
@ -50,10 +53,10 @@ public class WSServer extends WebSocketServer {
|
||||
sendToClient(conn, new UnknownWSCmd("Unknown command", message));
|
||||
Bukkit.getLogger().info(
|
||||
"[WebConsole] Signal '" + message + "' was not processed since is not valid. Is your plugin/web interface up to date?");
|
||||
} else if (!LoginManager.getInstance().isLoggedIn(conn.getRemoteSocketAddress().getAddress().toString())
|
||||
} else if (!LoginManager.getInstance().isLoggedIn(conn.getRemoteSocketAddress())
|
||||
&& !wsCommand.equals("LOGIN")) {
|
||||
//User is not authorised. DO NOTHING, IMPORTANT!
|
||||
sendToClient(conn, new Forbidden("Forbidden", message));
|
||||
sendToClient(conn, new LoginRequired("Forbidden"));
|
||||
Bukkit.getLogger().warning("[WebConsole] " + conn.getRemoteSocketAddress()
|
||||
+ " tried to run '" + message + "' while not logged in!");
|
||||
} else {
|
||||
@ -63,7 +66,7 @@ public class WSServer extends WebSocketServer {
|
||||
|
||||
@Override
|
||||
public void onClose(WebSocket conn, int code, String reason, boolean remote) {
|
||||
LoginManager.getInstance().logOut(conn.getRemoteSocketAddress().getAddress().toString());
|
||||
LoginManager.getInstance().logOut(conn.getRemoteSocketAddress());
|
||||
Bukkit.getLogger()
|
||||
.info("[WebConsole] Closed WS connection " + conn.getRemoteSocketAddress() + ". Reason: " + reason);
|
||||
}
|
||||
@ -93,7 +96,7 @@ public class WSServer extends WebSocketServer {
|
||||
public void onNewConsoleLinePrinted(String line) {
|
||||
Collection<WebSocket> connections = getConnections();
|
||||
for (WebSocket connection : connections) {
|
||||
if (LoginManager.getInstance().isLoggedIn(connection.getRemoteSocketAddress().getAddress().toString()))
|
||||
if (LoginManager.getInstance().isLoggedIn(connection.getRemoteSocketAddress()))
|
||||
sendToClient(connection, new ConsoleOutput(line));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user