mirror of
				https://github.com/usmannasir/cyberpanel.git
				synced 2025-10-31 18:36:17 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			1183 lines
		
	
	
		
			34 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			1183 lines
		
	
	
		
			34 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| app.controller('installDocker', function ($scope, $http, $timeout, $window) {
 | |
|     $scope.installDockerStatus = true;
 | |
|     $scope.installBoxGen = true;
 | |
|     $scope.dockerInstallBTN = false;
 | |
| 
 | |
|     $scope.installDocker = function () {
 | |
| 
 | |
|         $scope.installDockerStatus = false;
 | |
|         $scope.installBoxGen = true;
 | |
|         $scope.dockerInstallBTN = true;
 | |
| 
 | |
|         url = "/docker/installDocker";
 | |
| 
 | |
|         var data = {};
 | |
|         var config = {
 | |
|             headers: {
 | |
|                 'X-CSRFToken': getCookie('csrftoken')
 | |
|             }
 | |
|         };
 | |
| 
 | |
| 
 | |
|         $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
 | |
| 
 | |
| 
 | |
|         function ListInitialDatas(response) {
 | |
|             $scope.cyberPanelLoading = true;
 | |
|             if (response.data.status === 1) {
 | |
|                 $scope.installBoxGen = false;
 | |
|                 getRequestStatus();
 | |
|             }
 | |
|             else {
 | |
|                 new PNotify({
 | |
|                     title: 'Operation Failed!',
 | |
|                     text: response.data.error_message,
 | |
|                     type: 'error'
 | |
|                 });
 | |
|             }
 | |
| 
 | |
|         }
 | |
| 
 | |
|         function cantLoadInitialDatas(response) {
 | |
|             $scope.cyberPanelLoading = true;
 | |
|             new PNotify({
 | |
|                 title: 'Operation Failed!',
 | |
|                 text: 'Could not connect to server, please refresh this page',
 | |
|                 type: 'error'
 | |
|             });
 | |
|         }
 | |
| 
 | |
|     };
 | |
| 
 | |
|     function getRequestStatus() {
 | |
|         $scope.cyberPanelLoading = false;
 | |
| 
 | |
|         url = "/serverstatus/switchTOLSWSStatus";
 | |
| 
 | |
|         var data = {};
 | |
| 
 | |
|         var config = {
 | |
|             headers: {
 | |
|                 'X-CSRFToken': getCookie('csrftoken')
 | |
|             }
 | |
|         };
 | |
| 
 | |
| 
 | |
|         $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
 | |
| 
 | |
| 
 | |
|         function ListInitialDatas(response) {
 | |
|             if (response.data.abort === 0) {
 | |
|                 $scope.requestData = response.data.requestStatus;
 | |
|                 $timeout(getRequestStatus, 1000);
 | |
|             }
 | |
|             else {
 | |
|                 // Notifications
 | |
|                 $scope.cyberPanelLoading = true;
 | |
|                 $timeout.cancel();
 | |
|                 $scope.requestData = response.data.requestStatus;
 | |
|                 if (response.data.installed === 1) {
 | |
|                     $timeout(function () {
 | |
|                         $window.location.reload();
 | |
|                     }, 3000);
 | |
|                 }
 | |
| 
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         function cantLoadInitialDatas(response) {
 | |
|             $scope.cyberPanelLoading = true;
 | |
|             new PNotify({
 | |
|                 title: 'Operation Failed!',
 | |
|                 text: 'Could not connect to server, please refresh this page',
 | |
|                 type: 'error'
 | |
|             });
 | |
| 
 | |
| 
 | |
|         }
 | |
| 
 | |
|     }
 | |
| });
 | |
| 
 | |
| /* Java script code for docker management */
 | |
| var delayTimer = null;
 | |
| 
 | |
| app.controller('dockerImages', function ($scope) {
 | |
|     $scope.tagList = [];
 | |
|     $scope.imageTag = {};
 | |
| });
 | |
| 
 | |
| /* Java script code to install Container */
 | |
| 
 | |
| app.controller('runContainer', function ($scope, $http) {
 | |
|     $scope.containerCreationLoading = true;
 | |
|     $scope.installationDetailsForm = false;
 | |
|     $scope.installationProgress = true;
 | |
|     $scope.errorMessageBox = true;
 | |
|     $scope.success = true;
 | |
|     $scope.couldNotConnect = true;
 | |
|     $scope.goBackDisable = true;
 | |
| 
 | |
|     $scope.volList = {};
 | |
|     $scope.volListNumber = 0;
 | |
|     $scope.addVolField = function () {
 | |
|         $scope.volList[$scope.volListNumber] = {'dest': '', 'src': ''};
 | |
|         $scope.volListNumber = $scope.volListNumber + 1;
 | |
|         console.log($scope.volList)
 | |
|     };
 | |
|     $scope.removeVolField = function () {
 | |
|         delete $scope.volList[$scope.volListNumber - 1];
 | |
|         $scope.volListNumber = $scope.volListNumber - 1;
 | |
|     };
 | |
| 
 | |
|     $scope.addEnvField = function () {
 | |
|         var countEnv = Object.keys($scope.envList).length;
 | |
|         $scope.envList[countEnv + 1] = {'name': '', 'value': ''};
 | |
|     };
 | |
| 
 | |
|     var statusFile;
 | |
| 
 | |
|     $scope.createContainer = function () {
 | |
| 
 | |
|         $scope.containerCreationLoading = true;
 | |
|         $scope.installationDetailsForm = true;
 | |
|         $scope.installationProgress = false;
 | |
|         $scope.errorMessageBox = true;
 | |
|         $scope.success = true;
 | |
|         $scope.couldNotConnect = true;
 | |
|         $scope.goBackDisable = true;
 | |
| 
 | |
|         $scope.currentStatus = "Starting creation..";
 | |
| 
 | |
|         url = "/docker/submitContainerCreation";
 | |
| 
 | |
|         var name = $scope.name;
 | |
|         var tag = $scope.tag;
 | |
|         var memory = $scope.memory;
 | |
|         var dockerOwner = $scope.dockerOwner;
 | |
|         var image = $scope.image;
 | |
|         var numberOfEnv = Object.keys($scope.envList).length;
 | |
| 
 | |
|         var data = {
 | |
|             name: name,
 | |
|             tag: tag,
 | |
|             memory: memory,
 | |
|             dockerOwner: dockerOwner,
 | |
|             image: image,
 | |
|             envList: $scope.envList,
 | |
|             volList: $scope.volList
 | |
| 
 | |
|         };
 | |
| 
 | |
|         try {
 | |
|             $.each($scope.portType, function (port, protocol) {
 | |
|                 data[port + "/" + protocol] = $scope.eport[port];
 | |
|             });
 | |
|         }
 | |
|         catch (err) {
 | |
|         }
 | |
| 
 | |
|         var config = {
 | |
|             headers: {
 | |
|                 'X-CSRFToken': getCookie('csrftoken')
 | |
|             }
 | |
|         };
 | |
| 
 | |
|         $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
 | |
| 
 | |
| 
 | |
|         function ListInitialDatas(response) {
 | |
| 
 | |
|             if (response.data.createContainerStatus === 1) {
 | |
|                 $scope.currentStatus = "Successful. Redirecting...";
 | |
|                 window.location.href = "/docker/view/" + $scope.name
 | |
|             }
 | |
|             else {
 | |
| 
 | |
|                 $scope.containerCreationLoading = true;
 | |
|                 $scope.installationDetailsForm = true;
 | |
|                 $scope.installationProgress = false;
 | |
|                 $scope.errorMessageBox = false;
 | |
|                 $scope.success = true;
 | |
|                 $scope.couldNotConnect = true;
 | |
|                 $scope.goBackDisable = false;
 | |
| 
 | |
|                 $scope.errorMessage = response.data.error_message;
 | |
|             }
 | |
| 
 | |
| 
 | |
|         }
 | |
| 
 | |
|         function cantLoadInitialDatas(response) {
 | |
| 
 | |
|             $scope.containerCreationLoading = true;
 | |
|             $scope.installationDetailsForm = true;
 | |
|             $scope.installationProgress = false;
 | |
|             $scope.errorMessageBox = true;
 | |
|             $scope.success = true;
 | |
|             $scope.couldNotConnect = false;
 | |
|             $scope.goBackDisable = false;
 | |
| 
 | |
|         }
 | |
|     };
 | |
|     $scope.goBack = function () {
 | |
|         $scope.containerCreationLoading = true;
 | |
|         $scope.installationDetailsForm = false;
 | |
|         $scope.installationProgress = true;
 | |
|         $scope.errorMessageBox = true;
 | |
|         $scope.success = true;
 | |
|         $scope.couldNotConnect = true;
 | |
|         $scope.goBackDisable = true;
 | |
|         $("#installProgress").css("width", "0%");
 | |
|     };
 | |
| 
 | |
| });
 | |
| 
 | |
| /* Javascript code for listing containers */
 | |
| 
 | |
| 
 | |
| app.controller('listContainers', function ($scope, $http) {
 | |
|     $scope.activeLog = "";
 | |
|     $scope.assignActive = "";
 | |
| 
 | |
|     $scope.assignContainer = function (name) {
 | |
|         $("#assign").modal("show");
 | |
|         $scope.assignActive = name;
 | |
|     };
 | |
| 
 | |
|     $scope.submitAssignContainer = function () {
 | |
|         url = "/docker/assignContainer";
 | |
| 
 | |
|         var data = {name: $scope.assignActive, admin: $scope.dockerOwner};
 | |
| 
 | |
|         var config = {
 | |
|             headers: {
 | |
|                 'X-CSRFToken': getCookie('csrftoken')
 | |
|             }
 | |
|         };
 | |
| 
 | |
|         $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
| 
 | |
|         function ListInitialData(response) {
 | |
| 
 | |
|             if (response.data.assignContainerStatus === 1) {
 | |
|                 new PNotify({
 | |
|                     title: 'Container assigned successfully',
 | |
|                     type: 'success'
 | |
|                 });
 | |
|                 window.location.href = '/docker/listContainers';
 | |
|             }
 | |
|             else {
 | |
|                 new PNotify({
 | |
|                     title: 'Unable to complete request',
 | |
|                     text: response.data.error_message,
 | |
|                     type: 'error'
 | |
|                 });
 | |
|             }
 | |
|             $("#assign").modal("hide");
 | |
|         }
 | |
| 
 | |
|         function cantLoadInitialData(response) {
 | |
|             console.log("not good");
 | |
|             new PNotify({
 | |
|                 title: 'Unable to complete request',
 | |
|                 type: 'error'
 | |
|             });
 | |
|             $("#assign").modal("hide");
 | |
|         }
 | |
|     };
 | |
| 
 | |
|     $scope.delContainer = function (name, unlisted=false) {
 | |
|         (new PNotify({
 | |
|             title: 'Confirmation Needed',
 | |
|             text: 'Are you sure?',
 | |
|             icon: 'fa fa-question-circle',
 | |
|             hide: false,
 | |
|             confirm: {
 | |
|                 confirm: true
 | |
|             },
 | |
|             buttons: {
 | |
|                 closer: false,
 | |
|                 sticker: false
 | |
|             },
 | |
|             history: {
 | |
|                 history: false
 | |
|             }
 | |
|         })).get().on('pnotify.confirm', function () {
 | |
|             $('#imageLoading').show();
 | |
|             url = "/docker/delContainer";
 | |
| 
 | |
|             var data = {name: name, unlisted: unlisted};
 | |
| 
 | |
|             var config = {
 | |
|                 headers: {
 | |
|                     'X-CSRFToken': getCookie('csrftoken')
 | |
|                 }
 | |
|             };
 | |
| 
 | |
|             $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
| 
 | |
| 
 | |
|             function ListInitialData(response) {
 | |
|                 console.log(response);
 | |
| 
 | |
|                 if (response.data.delContainerStatus === 1) {
 | |
|                     location.reload();
 | |
|                 }
 | |
|                 else if (response.data.delContainerStatus === 2) {
 | |
|                     (new PNotify({
 | |
|                         title: response.data.error_message,
 | |
|                         text: 'Delete anyway?',
 | |
|                         icon: 'fa fa-question-circle',
 | |
|                         hide: false,
 | |
|                         confirm: {
 | |
|                             confirm: true
 | |
|                         },
 | |
|                         buttons: {
 | |
|                             closer: false,
 | |
|                             sticker: false
 | |
|                         },
 | |
|                         history: {
 | |
|                             history: false
 | |
|                         }
 | |
|                     })).get().on('pnotify.confirm', function () {
 | |
|                         url = "/docker/delContainer";
 | |
| 
 | |
|                         var data = {name: name, unlisted: unlisted, force: 1};
 | |
| 
 | |
|                         var config = {
 | |
|                             headers: {
 | |
|                                 'X-CSRFToken': getCookie('csrftoken')
 | |
|                             }
 | |
|                         };
 | |
| 
 | |
|                         $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
| 
 | |
| 
 | |
|                         function ListInitialData(response) {
 | |
|                             if (response.data.delContainerStatus === 1) {
 | |
|                                 location.reload();
 | |
|                             }
 | |
|                             else {
 | |
|                                 $("#listFail").fadeIn();
 | |
|                                 $scope.errorMessage = response.data.error_message;
 | |
|                             }
 | |
|                             $('#imageLoading').hide();
 | |
|                         }
 | |
| 
 | |
|                         function cantLoadInitialData(response) {
 | |
|                             $('#imageLoading').hide();
 | |
|                         }
 | |
|                     })
 | |
|                 }
 | |
|                 else {
 | |
|                     $("#listFail").fadeIn();
 | |
|                     $scope.errorMessage = response.data.error_message;
 | |
|                 }
 | |
|                 $('#imageLoading').hide();
 | |
|             }
 | |
| 
 | |
|             function cantLoadInitialData(response) {
 | |
|                 $('#imageLoading').hide();
 | |
|             }
 | |
|         })
 | |
|     }
 | |
| 
 | |
|     $scope.showLog = function (name, refresh = false) {
 | |
|         $scope.logs = "";
 | |
|         if (refresh === false) {
 | |
|             $('#logs').modal('show');
 | |
|             $scope.activeLog = name;
 | |
|         }
 | |
|         else {
 | |
|             name = $scope.activeLog;
 | |
|         }
 | |
|         $scope.logs = "Loading...";
 | |
| 
 | |
|         url = "/docker/getContainerLogs";
 | |
| 
 | |
|         var data = {name: name};
 | |
| 
 | |
|         var config = {
 | |
|             headers: {
 | |
|                 'X-CSRFToken': getCookie('csrftoken')
 | |
|             }
 | |
|         };
 | |
| 
 | |
|         $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
| 
 | |
| 
 | |
|         function ListInitialData(response) {
 | |
|             console.log(response);
 | |
| 
 | |
|             if (response.data.containerLogStatus === 1) {
 | |
|                 $scope.logs = response.data.containerLog;
 | |
|             }
 | |
|             else {
 | |
|                 new PNotify({
 | |
|                     title: 'Unable to complete request',
 | |
|                     text: response.data.error_message,
 | |
|                     type: 'error'
 | |
|                 });
 | |
| 
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         function cantLoadInitialData(response) {
 | |
|             new PNotify({
 | |
|                 title: 'Unable to complete request',
 | |
|                 type: 'error'
 | |
|             });
 | |
|         }
 | |
|     };
 | |
| 
 | |
|     url = "/docker/getContainerList";
 | |
| 
 | |
|     var data = {page: 1};
 | |
| 
 | |
|     var config = {
 | |
|         headers: {
 | |
|             'X-CSRFToken': getCookie('csrftoken')
 | |
|         }
 | |
|     };
 | |
| 
 | |
|     $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
| 
 | |
| 
 | |
|     function ListInitialData(response) {
 | |
|         console.log(response);
 | |
| 
 | |
|         if (response.data.listContainerStatus === 1) {
 | |
| 
 | |
|             var finalData = JSON.parse(response.data.data);
 | |
|             $scope.ContainerList = finalData;
 | |
|             console.log($scope.ContainerList);
 | |
|             $("#listFail").hide();
 | |
|         }
 | |
|         else {
 | |
|             $("#listFail").fadeIn();
 | |
|             $scope.errorMessage = response.data.error_message;
 | |
| 
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function cantLoadInitialData(response) {
 | |
|         console.log("not good");
 | |
|     }
 | |
| 
 | |
| 
 | |
|     $scope.getFurtherContainersFromDB = function (pageNumber) {
 | |
| 
 | |
|         var config = {
 | |
|             headers: {
 | |
|                 'X-CSRFToken': getCookie('csrftoken')
 | |
|             }
 | |
|         };
 | |
| 
 | |
|         var data = {page: pageNumber};
 | |
| 
 | |
| 
 | |
|         dataurl = "/docker/getContainerList";
 | |
| 
 | |
|         $http.post(dataurl, data, config).then(ListInitialData, cantLoadInitialData);
 | |
| 
 | |
| 
 | |
|         function ListInitialData(response) {
 | |
|             if (response.data.listContainerStatus === 1) {
 | |
| 
 | |
|                 var finalData = JSON.parse(response.data.data);
 | |
|                 $scope.ContainerList = finalData;
 | |
|                 $("#listFail").hide();
 | |
|             }
 | |
|             else {
 | |
|                 $("#listFail").fadeIn();
 | |
|                 $scope.errorMessage = response.data.error_message;
 | |
|                 console.log(response.data);
 | |
| 
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         function cantLoadInitialData(response) {
 | |
|             console.log("not good");
 | |
|         }
 | |
| 
 | |
| 
 | |
|     };
 | |
| });
 | |
| 
 | |
| /* Java script code for containerr home page */
 | |
| 
 | |
| app.controller('viewContainer', function ($scope, $http) {
 | |
|     $scope.cName = "";
 | |
|     $scope.status = "";
 | |
|     $scope.savingSettings = false;
 | |
|     $scope.loadingTop = false;
 | |
| 
 | |
|     $scope.recreate = function () {
 | |
|         (new PNotify({
 | |
|             title: 'Confirmation Needed',
 | |
|             text: 'Are you sure?',
 | |
|             icon: 'fa fa-question-circle',
 | |
|             hide: false,
 | |
|             confirm: {
 | |
|                 confirm: true
 | |
|             },
 | |
|             buttons: {
 | |
|                 closer: false,
 | |
|                 sticker: false
 | |
|             },
 | |
|             history: {
 | |
|                 history: false
 | |
|             }
 | |
|         })).get().on('pnotify.confirm', function () {
 | |
|             $('#infoLoading').show();
 | |
| 
 | |
|             url = "/docker/recreateContainer";
 | |
|             var data = {name: $scope.cName};
 | |
|             var config = {
 | |
|                 headers: {
 | |
|                     'X-CSRFToken': getCookie('csrftoken')
 | |
|                 }
 | |
|             };
 | |
| 
 | |
|             $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
|             function ListInitialData(response) {
 | |
|                 if (response.data.recreateContainerStatus === 1) {
 | |
|                     new PNotify({
 | |
|                         title: 'Action completed!',
 | |
|                         text: 'Redirecting...',
 | |
|                         type: 'success'
 | |
|                     });
 | |
|                     location.reload();
 | |
|                 }
 | |
|                 else {
 | |
|                     new PNotify({
 | |
|                         title: 'Unable to complete request',
 | |
|                         text: response.data.error_message,
 | |
|                         type: 'error'
 | |
|                     });
 | |
| 
 | |
|                 }
 | |
|                 $('#infoLoading').hide();
 | |
|             }
 | |
| 
 | |
|             function cantLoadInitialData(response) {
 | |
|                 PNotify.error({
 | |
|                     title: 'Unable to complete request',
 | |
|                     text: "Problem in connecting to server"
 | |
|                 });
 | |
|                 $('#actionLoading').hide();
 | |
|             }
 | |
|         })
 | |
|     };
 | |
| 
 | |
|     $scope.addEnvField = function () {
 | |
|         var countEnv = Object.keys($scope.envList).length;
 | |
|         $scope.envList[countEnv + 1] = {'name': '', 'value': ''};
 | |
|     };
 | |
| 
 | |
|     $scope.showTop = function () {
 | |
|         $scope.topHead = [];
 | |
|         $scope.topProcesses = [];
 | |
|         $scope.loadingTop = true;
 | |
|         $("#processes").modal("show");
 | |
| 
 | |
|         url = "/docker/getContainerTop";
 | |
|         var data = {name: $scope.cName};
 | |
|         var config = {
 | |
|             headers: {
 | |
|                 'X-CSRFToken': getCookie('csrftoken')
 | |
|             }
 | |
|         };
 | |
| 
 | |
|         $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
|         function ListInitialData(response) {
 | |
|             if (response.data.containerTopStatus === 1) {
 | |
|                 $scope.topHead = response.data.processes.Titles;
 | |
|                 $scope.topProcesses = response.data.processes.Processes;
 | |
|             }
 | |
|             else {
 | |
|                 new PNotify({
 | |
|                     title: 'Unable to complete request',
 | |
|                     text: response.data.error_message,
 | |
|                     type: 'error'
 | |
|                 });
 | |
| 
 | |
|             }
 | |
|             $scope.loadingTop = false;
 | |
|         }
 | |
| 
 | |
|         function cantLoadInitialData(response) {
 | |
|             PNotify.error({
 | |
|                 title: 'Unable to complete request',
 | |
|                 text: "Problem in connecting to server"
 | |
|             });
 | |
|             $scope.loadingTop = false;
 | |
|         }
 | |
| 
 | |
|     };
 | |
| 
 | |
|     $scope.cRemove = function () {
 | |
|         (new PNotify({
 | |
|             title: 'Confirmation Needed',
 | |
|             text: 'Are you sure?',
 | |
|             icon: 'fa fa-question-circle',
 | |
|             hide: false,
 | |
|             confirm: {
 | |
|                 confirm: true
 | |
|             },
 | |
|             buttons: {
 | |
|                 closer: false,
 | |
|                 sticker: false
 | |
|             },
 | |
|             history: {
 | |
|                 history: false
 | |
|             }
 | |
|         })).get().on('pnotify.confirm', function () {
 | |
|             $('#actionLoading').show();
 | |
| 
 | |
|             url = "/docker/delContainer";
 | |
|             var data = {name: $scope.cName, unlisted: false};
 | |
|             var config = {
 | |
|                 headers: {
 | |
|                     'X-CSRFToken': getCookie('csrftoken')
 | |
|                 }
 | |
|             };
 | |
| 
 | |
|             $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
|             function ListInitialData(response) {
 | |
|                 if (response.data.delContainerStatus === 1) {
 | |
|                     new PNotify({
 | |
|                         title: 'Container deleted!',
 | |
|                         text: 'Redirecting...',
 | |
|                         type: 'success'
 | |
|                     });
 | |
|                     window.location.href = '/docker/listContainers';
 | |
|                 }
 | |
|                 else {
 | |
|                     new PNotify({
 | |
|                         title: 'Unable to complete request',
 | |
|                         text: response.data.error_message,
 | |
|                         type: 'error'
 | |
|                     });
 | |
|                 }
 | |
|                 $('#actionLoading').hide();
 | |
|             }
 | |
| 
 | |
|             function cantLoadInitialData(response) {
 | |
|                 PNotify.error({
 | |
|                     title: 'Unable to complete request',
 | |
|                     text: "Problem in connecting to server"
 | |
|                 });
 | |
|                 $('#actionLoading').hide();
 | |
|             }
 | |
|         })
 | |
|     };
 | |
| 
 | |
|     $scope.refreshStatus = function () {
 | |
|         url = "/docker/getContainerStatus";
 | |
|         var data = {name: $scope.cName};
 | |
|         var config = {
 | |
|             headers: {
 | |
|                 'X-CSRFToken': getCookie('csrftoken')
 | |
|             }
 | |
|         };
 | |
| 
 | |
|         $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
|         function ListInitialData(response) {
 | |
|             if (response.data.containerStatus === 1) {
 | |
|                 console.log(response.data.status);
 | |
|                 $scope.status = response.data.status;
 | |
|             }
 | |
|             else {
 | |
|                 new PNotify({
 | |
|                     title: 'Unable to complete request',
 | |
|                     text: response.data.error_message,
 | |
|                     type: 'error'
 | |
|                 });
 | |
| 
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         function cantLoadInitialData(response) {
 | |
|             PNotify.error({
 | |
|                 title: 'Unable to complete request',
 | |
|                 text: "Problem in connecting to server"
 | |
|             });
 | |
|         }
 | |
| 
 | |
|     };
 | |
| 
 | |
|     $scope.addVolField = function () {
 | |
|         $scope.volList[$scope.volListNumber] = {'dest': '', 'src': ''};
 | |
|         $scope.volListNumber = $scope.volListNumber + 1;
 | |
|     };
 | |
|     $scope.removeVolField = function () {
 | |
|         delete $scope.volList[$scope.volListNumber - 1];
 | |
|         $scope.volListNumber = $scope.volListNumber - 1;
 | |
|     };
 | |
| 
 | |
|     $scope.saveSettings = function () {
 | |
|         $('#containerSettingLoading').show();
 | |
|         url = "/docker/saveContainerSettings";
 | |
|         $scope.savingSettings = true;
 | |
| 
 | |
|         var data = {
 | |
|             name: $scope.cName,
 | |
|             memory: $scope.memory,
 | |
|             startOnReboot: $scope.startOnReboot,
 | |
|             envConfirmation: $scope.envConfirmation,
 | |
|             envList: $scope.envList,
 | |
|             volList: $scope.volList
 | |
|         };
 | |
| 
 | |
| 
 | |
|         var config = {
 | |
|             headers: {
 | |
|                 'X-CSRFToken': getCookie('csrftoken')
 | |
|             }
 | |
|         };
 | |
| 
 | |
|         $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
|         function ListInitialData(response) {
 | |
|             if (response.data.saveSettingsStatus === 1) {
 | |
|                 if ($scope.envConfirmation) {
 | |
|                     new PNotify({
 | |
|                         title: 'Done. Redirecting...',
 | |
|                         type: 'success'
 | |
|                     });
 | |
|                     location.reload();
 | |
|                 }
 | |
|                 else {
 | |
|                     new PNotify({
 | |
|                         title: 'Settings Saved',
 | |
|                         type: 'success'
 | |
|                     });
 | |
|                 }
 | |
|             }
 | |
|             else {
 | |
|                 new PNotify({
 | |
|                     title: 'Unable to complete request',
 | |
|                     text: response.data.error_message,
 | |
|                     type: 'error'
 | |
|                 });
 | |
| 
 | |
|             }
 | |
|             $('#containerSettingLoading').hide();
 | |
|             $scope.savingSettings = false;
 | |
|         }
 | |
| 
 | |
|         function cantLoadInitialData(response) {
 | |
|             new PNotify({
 | |
|                 title: 'Unable to complete request',
 | |
|                 text: "Problem in connecting to server",
 | |
|                 type: 'error'
 | |
|             });
 | |
|             $('#containerSettingLoading').hide();
 | |
|             $scope.savingSettings = false;
 | |
|         }
 | |
| 
 | |
|         if ($scope.startOnReboot === true) {
 | |
|             $scope.rPolicy = "Yes";
 | |
|         }
 | |
|         else {
 | |
|             $scope.rPolicy = "No";
 | |
|         }
 | |
| 
 | |
|     };
 | |
| 
 | |
|     $scope.cAction = function (action) {
 | |
|         $('#actionLoading').show();
 | |
|         url = "/docker/doContainerAction";
 | |
|         var data = {name: $scope.cName, action: action};
 | |
|         var config = {
 | |
|             headers: {
 | |
|                 'X-CSRFToken': getCookie('csrftoken')
 | |
|             }
 | |
|         };
 | |
| 
 | |
|         $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
| 
 | |
| 
 | |
|         function ListInitialData(response) {
 | |
|             console.log(response);
 | |
| 
 | |
|             if (response.data.containerActionStatus === 1) {
 | |
|                 new PNotify({
 | |
|                     title: 'Success!',
 | |
|                     text: 'Action completed',
 | |
|                     type: 'success'
 | |
|                 });
 | |
|                 $scope.status = response.data.status;
 | |
|                 $scope.refreshStatus()
 | |
|             }
 | |
|             else {
 | |
|                 new PNotify({
 | |
|                     title: 'Unable to complete request',
 | |
|                     text: response.data.error_message,
 | |
|                     type: 'error'
 | |
|                 });
 | |
| 
 | |
|             }
 | |
|             $('#actionLoading').hide();
 | |
|         }
 | |
| 
 | |
|         function cantLoadInitialData(response) {
 | |
|             PNotify.error({
 | |
|                 title: 'Unable to complete request',
 | |
|                 text: "Problem in connecting to server"
 | |
|             });
 | |
|             $('#actionLoading').hide();
 | |
|         }
 | |
| 
 | |
|     };
 | |
| 
 | |
|     $scope.loadLogs = function (name) {
 | |
|         $scope.logs = "Loading...";
 | |
| 
 | |
|         url = "/docker/getContainerLogs";
 | |
| 
 | |
|         var data = {name: name};
 | |
| 
 | |
|         var config = {
 | |
|             headers: {
 | |
|                 'X-CSRFToken': getCookie('csrftoken')
 | |
|             }
 | |
|         };
 | |
| 
 | |
|         $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
| 
 | |
| 
 | |
|         function ListInitialData(response) {
 | |
|             console.log(response);
 | |
| 
 | |
|             if (response.data.containerLogStatus === 1) {
 | |
|                 $scope.logs = response.data.containerLog;
 | |
|             }
 | |
|             else {
 | |
|                 $scope.logs = response.data.error_message;
 | |
| 
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         function cantLoadInitialData(response) {
 | |
|             console.log("not good");
 | |
|             $scope.logs = "Error loading log";
 | |
|         }
 | |
|     };
 | |
| 
 | |
| });
 | |
| 
 | |
| 
 | |
| /* Java script code for docker image management */
 | |
| app.controller('manageImages', function ($scope, $http) {
 | |
|     $scope.tagList = [];
 | |
|     $scope.showingSearch = false;
 | |
|     $("#searchResult").hide();
 | |
| 
 | |
|     $scope.pullImage = function (image, tag) {
 | |
|         function ListInitialDatas(response) {
 | |
|             if (response.data.installImageStatus === 1) {
 | |
|                 new PNotify({
 | |
|                     title: 'Image pulled successfully',
 | |
|                     text: 'Reloading...',
 | |
|                     type: 'success'
 | |
|                 });
 | |
|                 location.reload()
 | |
|             }
 | |
|             else {
 | |
|                 new PNotify({
 | |
|                     title: 'Failed to complete request',
 | |
|                     text: response.data.error_message,
 | |
|                     type: 'error'
 | |
|                 });
 | |
|             }
 | |
| 
 | |
|             $('#imageLoading').hide();
 | |
| 
 | |
|         }
 | |
| 
 | |
|         function cantLoadInitialDatas(response) {
 | |
|             $('#imageLoading').hide();
 | |
|             new PNotify({
 | |
|                 title: 'Failed to complete request',
 | |
|                 type: 'error'
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         if (image && tag) {
 | |
|             $('#imageLoading').show();
 | |
| 
 | |
|             url = "/docker/installImage";
 | |
|             var data = {
 | |
|                 image: image,
 | |
|                 tag: tag
 | |
|             };
 | |
|             var config = {
 | |
|                 headers: {
 | |
|                     'X-CSRFToken': getCookie('csrftoken')
 | |
|                 }
 | |
|             };
 | |
| 
 | |
|             $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
 | |
| 
 | |
|         }
 | |
|         else {
 | |
|             new PNotify({
 | |
|                 title: 'Unable to complete request',
 | |
|                 text: 'Please select a tag',
 | |
|                 type: 'info'
 | |
|             });
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     $scope.searchImages = function () {
 | |
|         console.log($scope.searchString);
 | |
|         if (!$scope.searchString) {
 | |
|             $("#searchResult").hide();
 | |
|         }
 | |
|         else {
 | |
|             $("#searchResult").show();
 | |
|         }
 | |
|         clearTimeout(delayTimer);
 | |
|         delayTimer = setTimeout(function () {
 | |
|             $('#imageLoading').show();
 | |
| 
 | |
|             url = "/docker/searchImage";
 | |
|             var data = {
 | |
|                 string: $scope.searchString
 | |
|             };
 | |
|             var config = {
 | |
|                 headers: {
 | |
|                     'X-CSRFToken': getCookie('csrftoken')
 | |
|                 }
 | |
|             };
 | |
| 
 | |
|             $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
 | |
| 
 | |
|             function ListInitialDatas(response) {
 | |
|                 if (response.data.searchImageStatus === 1) {
 | |
|                     $scope.images = response.data.matches;
 | |
|                     console.log($scope.images)
 | |
|                 }
 | |
|                 else {
 | |
|                     new PNotify({
 | |
|                         title: 'Failed to complete request',
 | |
|                         text: response.data.error,
 | |
|                         type: 'error'
 | |
|                     });
 | |
|                 }
 | |
| 
 | |
|                 $('#imageLoading').hide();
 | |
| 
 | |
|             }
 | |
| 
 | |
|             function cantLoadInitialDatas(response) {
 | |
|                 $('#imageLoading').hide();
 | |
|                 new PNotify({
 | |
|                     title: 'Failed to complete request',
 | |
|                     type: 'error'
 | |
|                 });
 | |
|             }
 | |
|         }, 500);
 | |
|     }
 | |
| 
 | |
|     function populateTagList(image, page) {
 | |
|         $('imageLoading').show();
 | |
|         url = "/docker/getTags"
 | |
|         var data = {
 | |
|             image: image,
 | |
|             page: page + 1
 | |
|         };
 | |
| 
 | |
|         var config = {
 | |
|             headers: {
 | |
|                 'X-CSRFToken': getCookie('csrftoken')
 | |
|             }
 | |
|         };
 | |
|         $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
| 
 | |
| 
 | |
|         function ListInitialData(response) {
 | |
| 
 | |
|             if (response.data.getTagsStatus === 1) {
 | |
|                 $scope.tagList[image].splice(-1, 1);
 | |
|                 $scope.tagList[image] = $scope.tagList[image].concat(response.data.list);
 | |
| 
 | |
|                 if (response.data.next != null) {
 | |
|                     $scope.tagList[image].push("Load more");
 | |
|                 }
 | |
|             }
 | |
|             else {
 | |
|                 new PNotify({
 | |
|                     title: 'Unable to complete request',
 | |
|                     text: response.data.error_message,
 | |
|                     type: 'error'
 | |
|                 });
 | |
|             }
 | |
|             $('#imageLoading').hide();
 | |
|         }
 | |
| 
 | |
|         function cantLoadInitialData(response) {
 | |
|             new PNotify({
 | |
|                 title: 'Unable to complete request',
 | |
|                 text: response.data.error_message,
 | |
|                 type: 'error'
 | |
|             });
 | |
|             $('#imageLoading').hide();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     $scope.runContainer = function (image) {
 | |
|         $("#errorMessage").hide();
 | |
|         if ($scope.imageTag[image] !== undefined) {
 | |
|             $("#imageList").css("pointer-events", "none");
 | |
|         }
 | |
|         else {
 | |
|             $("#errorMessage").show();
 | |
|             $scope.errorMessage = "Please select a tag";
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     $scope.loadTags = function (event) {
 | |
|         var pagesloaded = $(event.target).data('pageloaded');
 | |
|         var image = event.target.id;
 | |
| 
 | |
|         if (!pagesloaded) {
 | |
|             $scope.tagList[image] = ['Loading...'];
 | |
|             $(event.target).data('pageloaded', 1);
 | |
| 
 | |
|             populateTagList(image, pagesloaded);
 | |
| //             $("#"+image+" option:selected").prop("selected", false);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     $scope.selectTag = function () {
 | |
|         var image = event.target.id;
 | |
|         var selectedTag = $('#' + image).find(":selected").text();
 | |
| 
 | |
|         if (selectedTag == 'Load more') {
 | |
|             var pagesloaded = $(event.target).data('pageloaded');
 | |
|             $(event.target).data('pageloaded', pagesloaded + 1);
 | |
| 
 | |
|             populateTagList(image, pagesloaded);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     $scope.getHistory = function (counter) {
 | |
|         $('#imageLoading').show();
 | |
|         var name = $("#" + counter).val()
 | |
| 
 | |
|         url = "/docker/getImageHistory";
 | |
| 
 | |
|         var data = {name: name};
 | |
| 
 | |
|         var config = {
 | |
|             headers: {
 | |
|                 'X-CSRFToken': getCookie('csrftoken')
 | |
|             }
 | |
|         };
 | |
| 
 | |
|         $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
| 
 | |
| 
 | |
|         function ListInitialData(response) {
 | |
|             console.log(response);
 | |
| 
 | |
|             if (response.data.imageHistoryStatus === 1) {
 | |
|                 $('#history').modal('show');
 | |
|                 $scope.historyList = response.data.history;
 | |
|             }
 | |
|             else {
 | |
|                 new PNotify({
 | |
|                     title: 'Unable to complete request',
 | |
|                     text: response.data.error_message,
 | |
|                     type: 'error'
 | |
|                 });
 | |
|             }
 | |
|             $('#imageLoading').hide();
 | |
|         }
 | |
| 
 | |
|         function cantLoadInitialData(response) {
 | |
|             new PNotify({
 | |
|                 title: 'Unable to complete request',
 | |
|                 text: response.data.error_message,
 | |
|                 type: 'error'
 | |
|             });
 | |
|             $('#imageLoading').hide();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     $scope.rmImage = function (counter) {
 | |
| 
 | |
|         (new PNotify({
 | |
|             title: 'Confirmation Needed',
 | |
|             text: 'Are you sure?',
 | |
|             icon: 'fa fa-question-circle',
 | |
|             hide: false,
 | |
|             confirm: {
 | |
|                 confirm: true
 | |
|             },
 | |
|             buttons: {
 | |
|                 closer: false,
 | |
|                 sticker: false
 | |
|             },
 | |
|             history: {
 | |
|                 history: false
 | |
|             }
 | |
|         })).get().on('pnotify.confirm', function () {
 | |
|             $('#imageLoading').show();
 | |
| 
 | |
|             if (counter == '0') {
 | |
|                 var name = 0;
 | |
|             }
 | |
|             else {
 | |
|                 var name = $("#" + counter).val()
 | |
|             }
 | |
| 
 | |
|             url = "/docker/removeImage";
 | |
| 
 | |
|             var data = {name: name};
 | |
| 
 | |
|             var config = {
 | |
|                 headers: {
 | |
|                     'X-CSRFToken': getCookie('csrftoken')
 | |
|                 }
 | |
|             };
 | |
| 
 | |
|             $http.post(url, data, config).then(ListInitialData, cantLoadInitialData);
 | |
| 
 | |
| 
 | |
|             function ListInitialData(response) {
 | |
|                 console.log(response);
 | |
| 
 | |
|                 if (response.data.removeImageStatus === 1) {
 | |
|                     new PNotify({
 | |
|                         title: 'Image(s) removed',
 | |
|                         type: 'success'
 | |
|                     });
 | |
|                     window.location.href = "/docker/manageImages";
 | |
|                 }
 | |
|                 else {
 | |
|                     new PNotify({
 | |
|                         title: 'Unable to complete request',
 | |
|                         text: response.data.error_message,
 | |
|                         type: 'error'
 | |
|                     });
 | |
|                 }
 | |
|                 $('#imageLoading').hide();
 | |
|             }
 | |
| 
 | |
|             function cantLoadInitialData(response) {
 | |
|                 new PNotify({
 | |
|                     title: 'Unable to complete request',
 | |
|                     text: response.data.error_message,
 | |
|                     type: 'error'
 | |
|                 });
 | |
|                 $('#imageLoading').hide();
 | |
|             }
 | |
| 
 | |
|         })
 | |
|     }
 | |
| }); |