2017-11-16 16:42:22 +11:00

322 lines
9.9 KiB
JavaScript

registerController("EvilPortalController", ['$api', '$scope', function ($api, $scope) {
getControls();
getPortals();
$scope.portals = [];
$scope.portalToDelete = null;
$scope.portalDeleteValidation = '';
$scope.messages = [];
$scope.newPortalName = '';
$scope.throbber = true;
$scope.running = false;
$scope.library = true;
$scope.whiteList = '';
$scope.whiteListInput = '';
$scope.accessList = '';
$scope.accessListInput = '';
$scope.workshopPortal = {name: "", files: [], storage: "internal"};
$scope.editPortalFile = {portalName: "", storage: "", file: "", code: ""};
$scope.handleControl = function (control) {
control.throbber = true;
switch (control.title) {
case "CaptivePortal":
$api.request({
module: "EvilPortal",
action: "startStop"
}, function (response) {
getControls();
control.throbber = false;
if (!response.control_success) {
$scope.sendMessage(control.title, response.control_message);
}
$scope.refreshLivePreview()
});
break;
case "Auto Start":
$api.request({
module: "EvilPortal",
action: "enableDisable"
}, function (response) {
getControls();
control.throbber = false;
if (!response.control_success) {
$scope.sendMessage(control.title, response.control_message);
}
});
break;
}
};
$scope.sendMessage = function (t, m) {
// Add a new message to the top of the list
$scope.messages.unshift({title: t, msg: m});
// if there are 4 items in the list remove the 4th item
if ($scope.messages.length == 4) {
$scope.dismissMessage(3);
}
};
$scope.dismissMessage = function ($index) {
//var index = $scope.messages.indexOf(message);
$scope.messages.splice($index, 1);
};
function getControls() {
$scope.throbber = true;
$api.request({
module: "EvilPortal",
action: "getControlValues"
}, function (response) {
updateControls(response);
});
}
function updateControls(response) {
var running;
var autostart;
if (response.running == false) {
running = "Start";
$scope.running = false;
} else {
running = "Stop";
$scope.running = true;
}
if (response.autostart == false) {
autostart = "Enable";
} else {
autostart = "Disable";
}
$scope.controls = [
{
title: "CaptivePortal",
status: running,
visible: true,
throbber: false
},
{
title: "Auto Start",
status: autostart,
visible: true,
throbber: false
}];
$scope.throbber = false;
}
$scope.createNewPortal = function () {
$api.request({
module: "EvilPortal",
action: "createNewPortal",
portalName: $scope.newPortalName
}, function (response) {
if (response.create_success) {
getPortals();
$scope.newPortalName = '';
} else {
$scope.sendMessage("Error Creating Portal", response.create_message);
}
});
};
$scope.deletePortalRequest = function(portal) {
$scope.portalToDelete = portal;
console.log(portal);
};
$scope.deletePortal = function (portal) {
console.log(portal.storage);
console.log(portal.title);
$scope.portalToDelete = null;
$scope.portalDeleteValidation = null
$api.request({
module: "EvilPortal",
action: "deletePortal",
storage: portal.storage,
name: portal.title
}, function (response) {
$scope.sendMessage("Delete Portal", response.message);
getPortals();
});
};
$scope.activatePortal = function (portal) {
$api.request({
module: "EvilPortal",
action: "activatePortal",
storage: portal.storage,
name: portal.title
}, function (response) {
//$scope.sendMessage("Activate Portal", response.message);
getPortals();
});
};
$scope.deactivatePortal = function (portal) {
$api.request({
module: "EvilPortal",
action: "deactivatePortal",
storage: portal.storage,
name: portal.title
}, function (response) {
//$scope.sendMessage("Deactivate Portal", response.message);
getPortals();
});
};
$scope.editPortal = function (portal, file) {
$api.request({
module: "EvilPortal",
action: "getPortalCode",
storage: portal.storage,
name: portal.name,
portalFile: file
}, function (response) {
//$scope.sendMessage("Edit Portal", response.message);
$scope.editPortalFile.code = response.code;
$scope.editPortalFile.file = file;
$scope.editPortalFile.portalName = portal.name;
$scope.editPortalFile.storage = portal.storage;
});
};
$scope.savePortalCode = function (editFile) {
$api.request({
module: "EvilPortal",
action: "submitPortalCode",
storage: editFile.storage,
portalCode: editFile.code,
name: editFile.portalName,
fileName: editFile.file
}, function (response) {
$scope.sendMessage("Edit File", response.message);
});
};
$scope.getPortalFiles = function (portal) {
$api.request({
module: "EvilPortal",
action: "portalFiles",
storage: portal.storage,
name: portal.title
}, function (response) {
$scope.workshopPortal.name = portal.title;
$scope.workshopPortal.storage = portal.storage;
$scope.workshopPortal.files = response.portalFiles;
$scope.library = false;
});
};
function getPortals() {
$api.request({
module: "EvilPortal",
action: "portalList"
}, function (response) {
$scope.portals = [];
for (var i = 0; i < response.length; i++) {
$scope.portals.unshift({
title: response[i].title,
storage: response[i].location,
active: response[i].active
});
//console.log({title: response[i].title, storage: response[i].location, active: response[i].active});
}
});
}
$scope.refreshLivePreview = function () {
window.frames['livePreviewIframe'].src = "http://172.16.42.1";
};
$scope.getList = function (listToGet) {
$api.request({
module: "EvilPortal",
action: "getList",
listName: listToGet
}, function (response) {
if (response.list_success) {
if (listToGet == "whiteList") {
$scope.whiteList = response.list_contents;
} else if (listToGet == "accessList") {
$scope.accessList = response.list_contents;
}
} else {
$scope.sendMessage("List Data Error", response.list_message);
console.log(response);
}
});
};
$scope.addWhiteListClient = function () {
$api.request({
module: "EvilPortal",
action: "addToList",
listName: "whiteList",
clientIP: $scope.whiteListInput
}, function (response) {
if (response.add_success) {
$scope.whiteListInput = '';
$scope.getList("whiteList");
} else {
$scope.sendMessage("White List", response.add_message);
console.log(response);
}
});
};
$scope.removeWhiteListClient = function () {
$api.request({
module: "EvilPortal",
action: "removeFromList",
listName: "whiteList",
clientIP: $scope.whiteListInput
}, function (response) {
if (response.remove_success) {
$scope.whiteListInput = '';
$scope.getList("whiteList");
} else {
$scope.sendMessage("White List", response.remove_message);
console.log(response);
}
});
};
$scope.authorizeClient = function () {
$api.request({
module: "EvilPortal",
action: "addToList",
listName: "accessList",
clientIP: $scope.accessListInput
}, function (response) {
if (response.add_success) {
$scope.accessListInput = '';
$scope.getList("accessList");
} else {
$scope.sendMessage("Access List", response.add_message);
console.log(response);
}
});
};
$scope.revokeClient = function () {
$api.request({
module: "EvilPortal",
action: "removeFromList",
listName: "accessList",
clientIP: $scope.accessListInput
}, function (response) {
if (response.remove_success) {
$scope.accessListInput = '';
$scope.getList("accessList");
} else {
$scope.sendMessage("Access List", response.remove_message);
console.log(response);
}
});
}
}]);