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