mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2026-02-12 09:36:49 +01:00
Implement Banned IPs management system: Add functionality to list, add, remove, and delete banned IPs. Update UI components for managing banned IPs, including a new tab in the firewall section and enhanced user notifications. Refactor existing code for better organization and maintainability.
This commit is contained in:
@@ -2495,4 +2495,259 @@ app.controller('manageImages', function ($scope, $http) {
|
||||
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
// Container List Controller
|
||||
app.controller('listContainers', function ($scope, $http, $timeout, $window) {
|
||||
$scope.containers = [];
|
||||
$scope.loading = false;
|
||||
$scope.updateContainerName = '';
|
||||
$scope.currentImage = '';
|
||||
$scope.newImage = '';
|
||||
$scope.newTag = 'latest';
|
||||
|
||||
// Load containers list
|
||||
$scope.loadContainers = function() {
|
||||
$scope.loading = true;
|
||||
var url = '/docker/listContainers';
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
$http.post(url, {}, config).then(function(response) {
|
||||
$scope.loading = false;
|
||||
if (response.data.status === 1) {
|
||||
$scope.containers = response.data.containers || [];
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Error Loading Containers',
|
||||
text: response.data.error_message || 'Failed to load containers',
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, function(error) {
|
||||
$scope.loading = false;
|
||||
new PNotify({
|
||||
title: 'Connection Error',
|
||||
text: 'Could not connect to server',
|
||||
type: 'error'
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// Initialize containers on page load
|
||||
$scope.loadContainers();
|
||||
|
||||
// Open update container modal
|
||||
$scope.openUpdateModal = function(container) {
|
||||
$scope.updateContainerName = container.name;
|
||||
$scope.currentImage = container.image;
|
||||
$scope.newImage = '';
|
||||
$scope.newTag = 'latest';
|
||||
$('#updateContainer').modal('show');
|
||||
};
|
||||
|
||||
// Perform container update
|
||||
$scope.performUpdate = function() {
|
||||
if (!$scope.newImage && !$scope.newTag) {
|
||||
new PNotify({
|
||||
title: 'Missing Information',
|
||||
text: 'Please enter a new image name or tag',
|
||||
type: 'error'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// If no new image specified, use current image with new tag
|
||||
var imageToUse = $scope.newImage || $scope.currentImage.split(':')[0];
|
||||
var tagToUse = $scope.newTag || 'latest';
|
||||
|
||||
var data = {
|
||||
containerName: $scope.updateContainerName,
|
||||
newImage: imageToUse,
|
||||
newTag: tagToUse
|
||||
};
|
||||
|
||||
var url = '/docker/updateContainer';
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
// Show loading
|
||||
$('#updateContainer').modal('hide');
|
||||
new PNotify({
|
||||
title: 'Updating Container',
|
||||
text: 'Please wait while the container is being updated...',
|
||||
type: 'info',
|
||||
hide: false
|
||||
});
|
||||
|
||||
$http.post(url, data, config).then(function(response) {
|
||||
if (response.data.updateContainerStatus === 1) {
|
||||
new PNotify({
|
||||
title: 'Container Updated Successfully',
|
||||
text: response.data.message || 'Container has been updated successfully',
|
||||
type: 'success'
|
||||
});
|
||||
// Reload containers list
|
||||
$scope.loadContainers();
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Update Failed',
|
||||
text: response.data.error_message || 'Failed to update container',
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, function(error) {
|
||||
new PNotify({
|
||||
title: 'Update Failed',
|
||||
text: 'Could not connect to server',
|
||||
type: 'error'
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// Container actions
|
||||
$scope.startContainer = function(containerName) {
|
||||
var data = { containerName: containerName };
|
||||
var url = '/docker/startContainer';
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
$http.post(url, data, config).then(function(response) {
|
||||
if (response.data.startContainerStatus === 1) {
|
||||
new PNotify({
|
||||
title: 'Container Started',
|
||||
text: 'Container has been started successfully',
|
||||
type: 'success'
|
||||
});
|
||||
$scope.loadContainers();
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Start Failed',
|
||||
text: response.data.error_message || 'Failed to start container',
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$scope.stopContainer = function(containerName) {
|
||||
var data = { containerName: containerName };
|
||||
var url = '/docker/stopContainer';
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
$http.post(url, data, config).then(function(response) {
|
||||
if (response.data.stopContainerStatus === 1) {
|
||||
new PNotify({
|
||||
title: 'Container Stopped',
|
||||
text: 'Container has been stopped successfully',
|
||||
type: 'success'
|
||||
});
|
||||
$scope.loadContainers();
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Stop Failed',
|
||||
text: response.data.error_message || 'Failed to stop container',
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$scope.restartContainer = function(containerName) {
|
||||
var data = { containerName: containerName };
|
||||
var url = '/docker/restartContainer';
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
$http.post(url, data, config).then(function(response) {
|
||||
if (response.data.restartContainerStatus === 1) {
|
||||
new PNotify({
|
||||
title: 'Container Restarted',
|
||||
text: 'Container has been restarted successfully',
|
||||
type: 'success'
|
||||
});
|
||||
$scope.loadContainers();
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Restart Failed',
|
||||
text: response.data.error_message || 'Failed to restart container',
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$scope.deleteContainerWithData = function(containerName) {
|
||||
if (confirm('Are you sure you want to delete this container and all its data? This action cannot be undone.')) {
|
||||
var data = { containerName: containerName };
|
||||
var url = '/docker/deleteContainerWithData';
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
$http.post(url, data, config).then(function(response) {
|
||||
if (response.data.deleteContainerWithDataStatus === 1) {
|
||||
new PNotify({
|
||||
title: 'Container Deleted',
|
||||
text: 'Container and all data have been deleted successfully',
|
||||
type: 'success'
|
||||
});
|
||||
$scope.loadContainers();
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Delete Failed',
|
||||
text: response.data.error_message || 'Failed to delete container',
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$scope.deleteContainerKeepData = function(containerName) {
|
||||
if (confirm('Are you sure you want to delete this container but keep the data? The container will be removed but volumes will be preserved.')) {
|
||||
var data = { containerName: containerName };
|
||||
var url = '/docker/deleteContainerKeepData';
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
$http.post(url, data, config).then(function(response) {
|
||||
if (response.data.deleteContainerKeepDataStatus === 1) {
|
||||
new PNotify({
|
||||
title: 'Container Deleted',
|
||||
text: 'Container has been deleted but data has been preserved',
|
||||
type: 'success'
|
||||
});
|
||||
$scope.loadContainers();
|
||||
} else {
|
||||
new PNotify({
|
||||
title: 'Delete Failed',
|
||||
text: response.data.error_message || 'Failed to delete container',
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
});
|
||||
Reference in New Issue
Block a user