Server now responds with 401 when incorrect login (instead of 403)

This commit is contained in:
Carlos
2019-08-12 14:18:44 +02:00
parent 31686615f3
commit c691c2de0b
5 changed files with 239 additions and 39 deletions

View File

@ -5,6 +5,106 @@
2019 Carlos Mesa under MIT License.
*/
/**
* Global variables
*/
var persistenceManager = new WebConsolePersistenceManager();
var connectionManager = new WebConsoleManager();
/**
* Show saved serverlist on startup
*/
$(document).ready(function() {
$("#serverContainer").hide();
updateServerList();
});
/**
* Server saver button click handler
*/
$("#saveAndConnectServerButton").click(function() {
//Save server
var name = $("#server-name").val();
var uri = $("#server-uri").val();
persistenceManager.saveServer(new WSServer(name, uri));
//Empty all modal values
$("#server-name").val("");
$("#server-uri").val("");
//Update GUI serverlist
updateServerList();
//Connect to server
openServer(name);
});
/**
* Server saver button click handler
*/
$("#passwordTypedButton").click(function() {
//Send LOGIN command to server
});
/**
* Prepare and show server to user
*/
function openServer(serverName){
//Hide welcome div if user is in welcome page
$("#welcomeContainer").hide();
$("#serverContainer").show();
//If a connection is already active, delete all subscribers
if(typeof connectionManager.activeConnection !== "undefined"){
connectionManager.activeConnection.removeSubscribers();
}
//Start connection or retrieve it if already exists
if(typeof connectionManager.getConnection(serverName) === "undefined"){
//Retrieve from persistence
var serverObj = persistenceManager.getServer(serverName);
connectionManager.activeConnection = new WebConsoleConnector(serverObj.serverName, serverObj.serverURI);
}else{
//Use active connection
connectionManager.activeConnection = connectionManager.getConnection(serverName);
}
//Subscribe a function and connect
connectionManager.activeConnection.subscribe(onWebSocketsMessage);
connectionManager.activeConnection.connect();
}
function onWebSocketsMessage(message){
switch (message.status) {
case 10:
//Console Output
break;
case 200:
//Processed
break;
case 400:
//Unknown Command
break;
case 401:
//Waiting for login
break;
case 403:
//Forbidden
break;
default:
console.log('Unknown server response:');
console.log(message);
}
console.log(message);
}
/**
* Update dropdown with saved server list
*/
@ -13,15 +113,13 @@ function updateServerList(){
$('.servermenuitem').remove();
//Add all servers
var servers = new WebConsolePersistenceManager().getAllServers();
var servers = persistenceManager.getAllServers();
for(var i = 0; i < servers.length; i++){
$('#ServerListDropDown').append('<a class="dropdown-item servermenuitem" href="#" onclick=openServer("' + servers[i].serverName + '")>' + servers[i].serverName + '</a>');
}
}
/**
* Prepare and show server to user
*/
function openServer(serverName){
//Show a "no servers" message when no servers are added
if(servers.length == 0){
$('#ServerListDropDown').append('<a class="dropdown-item servermenuitem disabled" href="#">No Servers added</a>');
}
}

View File

@ -6,7 +6,7 @@
*/
class WebConsoleManager {
constructor(){
this.activeConnections = [];
this.activeConnections = []; //Active Connectors list
}
/**
@ -20,6 +20,7 @@ class WebConsoleManager {
* Retrieve server by name
*/
getConnection(serverName){
var i;
for (i = 0; i < this.activeConnections.length; i++) {
if(this.activeConnections[i].serverName == serverName){
return this.activeConnections[i];

View File

@ -7,20 +7,28 @@
class WebConsolePersistenceManager{
/**
* Saves server into WebStorage
* Saves or updates server into WebStorage
*/
saveServer(serverName, serverURI, serverPassword){
this.createListIfUndefined();
saveServer(serverObject){
this.initializeLocalStorage();
//Create anonymous object
var server = new Object();
server.serverName = serverName;
server.serverURI = serverURI;
server.serverPassword = serverPassword;
//Save to WebStorage
//Check if server exists
var i;
var found = false;
var servers = this.getAllServers();
servers.push(server);
for (i = 0; i < servers.length; i++) {
if(servers[i].serverName == serverObject.serverName){
//Exists, replacing it
servers[i] = serverObject;
found = true;
}
}
//Not found, adding it
if(found == false){
servers.push(serverObject);
}
this.replaceAllServers(servers);
}
@ -28,9 +36,10 @@ class WebConsolePersistenceManager{
* Delete server from saved servers
*/
deleteServer(serverName){
this.createListIfUndefined();
this.initializeLocalStorage();
//Find server
var i;
var index = -1;
var servers = this.getAllServers();
for (i = 0; i < servers.length; i++) {
@ -52,8 +61,9 @@ class WebConsolePersistenceManager{
* Get server details as object
*/
getServer(serverName){
this.createListIfUndefined();
this.initializeLocalStorage();
var i;
var servers = this.getAllServers();
for (i = 0; i < servers.length; i++) {
if(servers[i].serverName == serverName){
@ -66,16 +76,23 @@ class WebConsolePersistenceManager{
* Get all servers
*/
getAllServers(){
this.createListIfUndefined();
return JSON.parse(window.localStorage.servers);
this.initializeLocalStorage();
var storageObj = JSON.parse(window.localStorage.WebConsole);
return storageObj.servers;
}
/**
* Create server list if not defined
*/
createListIfUndefined(){
if (typeof window.localStorage.servers === 'undefined') {
window.localStorage.servers = JSON.stringify(new Array());
initializeLocalStorage(){
if (typeof window.localStorage.WebConsole === 'undefined') {
//Create empty object
var storageObj = new Object();
storageObj.servers = new Array();
//Save to WebStorage
window.localStorage.WebConsole = JSON.stringify(storageObj);
}
}
@ -83,7 +100,19 @@ class WebConsolePersistenceManager{
* Replaces all server list with provided list
*/
replaceAllServers(newServerList){
window.localStorage.servers = JSON.stringify(newServerList);
//Retrieve saved data
var storageObj = JSON.parse(window.localStorage.WebConsole);
storageObj.servers = newServerList;
//Save to WebStorage
window.localStorage.WebConsole = JSON.stringify(storageObj);
}
}
class WSServer{
constructor(serverName, serverURI){
this.serverName = serverName;
this.serverURI = serverURI;
}
}