File manager - Edit - /usr/local/CyberCP/websiteFunctions/static/websiteFunctions/DockerContainers.js
Back
app.controller('ListDockersitecontainer', function ($scope, $http) { $scope.cyberPanelLoading = true; $scope.conatinerview = true; $('#cyberpanelLoading').hide(); // Format bytes to human readable function formatBytes(bytes, decimals = 2) { if (bytes === 0) return '0 Bytes'; const k = 1024; const dm = decimals < 0 ? 0 : decimals; const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]; } $scope.getcontainer = function () { $('#cyberpanelLoading').show(); url = "/docker/getDockersiteList"; var data = {'name': $('#sitename').html()}; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { $('#cyberpanelLoading').hide(); if (response.data.status === 1) { $scope.cyberPanelLoading = true; var finalData = JSON.parse(response.data.data[1]); $scope.ContainerList = finalData; $("#listFail").hide(); } else { $("#listFail").fadeIn(); $scope.errorMessage = response.data.error_message; } } function cantLoadInitialData(response) { $scope.cyberPanelLoading = true; $('#cyberpanelLoading').hide(); new PNotify({ title: 'Operation Failed!', text: 'Connection disrupted, refresh the page.', type: 'error' }); } }; $scope.Lunchcontainer = function (containerid) { $scope.cyberpanelLoading = false; $('#cyberpanelLoading').show(); var url = "/docker/getContainerAppinfo"; var data = { 'name': $('#sitename').html(), 'id': containerid }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { $scope.cyberpanelLoading = true; $('#cyberpanelLoading').hide(); if (response.data.status === 1) { var containerInfo = response.data.data[1]; console.log("Full container info:", containerInfo); // Find the container in the list and update its information for (var i = 0; i < $scope.ContainerList.length; i++) { if ($scope.ContainerList[i].id === containerid) { // Basic Information $scope.ContainerList[i].status = containerInfo.status; $scope.ContainerList[i].created = new Date(containerInfo.created); $scope.ContainerList[i].uptime = containerInfo.uptime; $scope.ContainerList[i].image = containerInfo.image; // Environment Variables - ensure it's properly set if (containerInfo.environment) { console.log("Setting environment:", containerInfo.environment); $scope.ContainerList[i].environment = containerInfo.environment; console.log("Container after env update:", $scope.ContainerList[i]); } else { console.log("No environment in container info"); } // Resource Usage var memoryBytes = containerInfo.memory_usage; $scope.ContainerList[i].memoryUsage = formatBytes(memoryBytes); $scope.ContainerList[i].memoryUsagePercent = (memoryBytes / (1024 * 1024 * 1024)) * 100; $scope.ContainerList[i].cpuUsagePercent = (containerInfo.cpu_usage / 10000000000) * 100; // Network & Ports $scope.ContainerList[i].ports = containerInfo.ports; // Volumes $scope.ContainerList[i].volumes = containerInfo.volumes; break; } } // Get container logs $scope.getcontainerlog(containerid); } else { new PNotify({ title: 'Operation Failed!', text: response.data.error_message, type: 'error' }); } } function cantLoadInitialData(response) { $scope.cyberpanelLoading = true; $('#cyberpanelLoading').hide(); new PNotify({ title: 'Operation Failed!', text: 'Connection disrupted, refresh the page.', type: 'error' }); } }; $scope.getcontainerlog = function (containerid) { $scope.cyberpanelLoading = false; var url = "/docker/getContainerApplog"; var data = { 'name': $('#sitename').html(), 'id': containerid }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { $scope.cyberpanelLoading = true; $scope.conatinerview = false; $('#cyberpanelLoading').hide(); if (response.data.status === 1) { // Find the container in the list and update its logs for (var i = 0; i < $scope.ContainerList.length; i++) { if ($scope.ContainerList[i].id === containerid) { $scope.ContainerList[i].logs = response.data.data[1]; break; } } } else { new PNotify({ title: 'Operation Failed!', text: response.data.error_message, type: 'error' }); } } function cantLoadInitialData(response) { $scope.cyberpanelLoading = true; $('#cyberpanelLoading').hide(); $scope.conatinerview = false; new PNotify({ title: 'Operation Failed!', text: 'Connection disrupted, refresh the page.', type: 'error' }); } }; // Auto-refresh container info every 30 seconds var refreshInterval; $scope.$watch('conatinerview', function(newValue, oldValue) { if (newValue === false) { // When container view is shown refreshInterval = setInterval(function() { if ($scope.cid) { $scope.Lunchcontainer($scope.cid); } }, 30000); // 30 seconds } else { // When container view is hidden if (refreshInterval) { clearInterval(refreshInterval); } } }); // Clean up on controller destruction $scope.$on('$destroy', function() { if (refreshInterval) { clearInterval(refreshInterval); } }); // Initialize $scope.getcontainer(); // Keep your existing functions $scope.recreateappcontainer = function() { /* ... */ }; $scope.refreshStatus = function() { /* ... */ }; $scope.restarthStatus = function() { /* ... */ }; $scope.StopContainerAPP = function() { /* ... */ }; $scope.cAction = function(action) { $scope.cyberpanelLoading = false; $('#cyberpanelLoading').show(); var url = "/docker/"; switch(action) { case 'start': url += "startContainer"; break; case 'stop': url += "stopContainer"; break; case 'restart': url += "restartContainer"; break; default: console.error("Unknown action:", action); return; } var data = { 'name': $('#sitename').html(), 'container_id': $scope.selectedContainer.id }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then( function(response) { $scope.cyberpanelLoading = true; $('#cyberpanelLoading').hide(); if (response.data.status === 1) { new PNotify({ title: 'Success!', text: 'Container ' + action + ' successful.', type: 'success' }); // Update container status after action $scope.selectedContainer.status = action === 'stop' ? 'stopped' : 'running'; // Refresh container info $scope.Lunchcontainer($scope.selectedContainer.id); } else { new PNotify({ title: 'Operation Failed!', text: response.data.error_message || 'An unknown error occurred.', type: 'error' }); } }, function(error) { $scope.cyberpanelLoading = true; $('#cyberpanelLoading').hide(); new PNotify({ title: 'Operation Failed!', text: 'Connection disrupted or server error occurred.', type: 'error' }); console.error("Error during container action:", error); } ); }; // Update the container selection when actions are triggered $scope.setSelectedContainer = function(container) { $scope.selectedContainer = container; }; // Update the button click handlers to set selected container $scope.handleAction = function(action, container) { $scope.setSelectedContainer(container); $scope.cAction(action); }; $scope.openSettings = function(container) { $scope.selectedContainer = container; $('#settings').modal('show'); }; $scope.saveSettings = function() { $scope.cyberpanelLoading = false; $('#cyberpanelLoading').show(); var url = "/docker/updateContainerSettings"; var data = { 'name': $('#sitename').html(), 'id': $scope.selectedContainer.id, 'memoryLimit': $scope.selectedContainer.memoryLimit, 'startOnReboot': $scope.selectedContainer.startOnReboot }; var config = { headers: { 'X-CSRFToken': getCookie('csrftoken') } }; $http.post(url, data, config).then(ListInitialData, cantLoadInitialData); function ListInitialData(response) { $scope.cyberpanelLoading = true; $('#cyberpanelLoading').hide(); if (response.data.status === 1) { new PNotify({ title: 'Success!', text: 'Container settings updated successfully.', type: 'success' }); $('#settings').modal('hide'); // Refresh container info after update $scope.Lunchcontainer($scope.selectedContainer.id); } else { new PNotify({ title: 'Operation Failed!', text: response.data.error_message, type: 'error' }); } } function cantLoadInitialData(response) { $scope.cyberpanelLoading = true; $('#cyberpanelLoading').hide(); new PNotify({ title: 'Operation Failed!', text: 'Connection disrupted, refresh the page.', type: 'error' }); } }; // Add location service to the controller for the n8n URL $scope.location = window.location; // Function to extract n8n version from environment variables $scope.getN8nVersion = function(container) { console.log('getN8nVersion called with container:', container); if (!container || !container.environment) { console.log('No container or environment data'); return 'unknown'; } console.log('Container environment:', container.environment); var version = null; // Try to find NODE_VERSION first version = container.environment.find(function(env) { return env && env.startsWith('NODE_VERSION='); }); if (version) { console.log('Found NODE_VERSION:', version); return version.split('=')[1]; } // Try to find N8N_VERSION version = container.environment.find(function(env) { return env && env.startsWith('N8N_VERSION='); }); if (version) { console.log('Found N8N_VERSION:', version); return version.split('=')[1]; } console.log('No version found in environment'); return 'unknown'; }; });
| ver. 1.4 |
Github
|
.
| PHP 8.2.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings