2018-01-22 13:01:38 -08:00
|
|
|
'use strict';
|
|
|
|
|
|
2021-09-14 12:17:17 +02:00
|
|
|
/* global angular */
|
|
|
|
|
/* global $ */
|
2019-01-22 10:54:03 +01:00
|
|
|
|
2021-06-15 11:17:55 -07:00
|
|
|
angular.module('Application').controller('EventLogController', ['$scope', '$location', '$translate', 'Client', function ($scope, $location, $translate, Client) {
|
2020-02-24 12:56:13 +01:00
|
|
|
Client.onReady(function () { if (!Client.getUserInfo().isAtLeastAdmin) $location.path('/'); });
|
2018-05-01 11:44:47 -07:00
|
|
|
|
2018-01-22 13:01:38 -08:00
|
|
|
$scope.config = Client.getConfig();
|
|
|
|
|
|
|
|
|
|
$scope.busy = false;
|
2020-10-09 12:31:25 +02:00
|
|
|
$scope.busyRefresh = false;
|
2018-03-02 10:50:05 +01:00
|
|
|
$scope.eventLogs = [];
|
|
|
|
|
$scope.activeEventLog = null;
|
2018-01-22 13:01:38 -08:00
|
|
|
|
|
|
|
|
// TODO sync this with the eventlog filter
|
|
|
|
|
$scope.actions = [
|
2018-02-20 11:13:51 -08:00
|
|
|
{ name: '-- All app events --', value: 'app.' },
|
|
|
|
|
{ name: '-- All user events --', value: 'user.' },
|
2021-09-30 11:06:27 -07:00
|
|
|
{ name: 'app.backup', value: 'app.backup' },
|
|
|
|
|
{ name: 'app.backup.finish', value: 'app.backup.finish' },
|
2018-01-22 13:01:38 -08:00
|
|
|
{ name: 'app.configure', value: 'app.configure' },
|
|
|
|
|
{ name: 'app.install', value: 'app.install' },
|
|
|
|
|
{ name: 'app.restore', value: 'app.restore' },
|
|
|
|
|
{ name: 'app.uninstall', value: 'app.uninstall' },
|
|
|
|
|
{ name: 'app.update', value: 'app.update' },
|
2019-09-26 20:13:24 -07:00
|
|
|
{ name: 'app.update.finish', value: 'app.update.finish' },
|
2018-01-22 13:01:38 -08:00
|
|
|
{ name: 'app.login', value: 'app.login' },
|
2019-01-17 15:49:53 +01:00
|
|
|
{ name: 'app.oom', value: 'app.oom' },
|
2019-02-11 12:34:06 -08:00
|
|
|
{ name: 'app.down', value: 'app.down' },
|
2019-02-11 13:03:12 -08:00
|
|
|
{ name: 'app.up', value: 'app.up' },
|
2020-03-19 17:05:50 -07:00
|
|
|
{ name: 'app.start', value: 'app.start' },
|
|
|
|
|
{ name: 'app.stop', value: 'app.stop' },
|
|
|
|
|
{ name: 'app.restart', value: 'app.restart' },
|
2019-01-14 09:29:00 -08:00
|
|
|
{ name: 'backup.cleanup', value: 'backup.cleanup.start' },
|
|
|
|
|
{ name: 'backup.cleanup.finish', value: 'backup.cleanup.finish' },
|
2018-01-22 13:01:38 -08:00
|
|
|
{ name: 'backup.finish', value: 'backup.finish' },
|
|
|
|
|
{ name: 'backup.start', value: 'backup.start' },
|
2024-12-02 12:11:14 +01:00
|
|
|
{ name: 'branding.avatar', value: 'branding.avatar' },
|
|
|
|
|
{ name: 'branding.footer', value: 'branding.footer' },
|
|
|
|
|
{ name: 'branding.name', value: 'branding.name' },
|
2018-11-14 20:37:58 -08:00
|
|
|
{ name: 'certificate.new', value: 'certificate.new' },
|
2018-01-22 13:01:38 -08:00
|
|
|
{ name: 'certificate.renew', value: 'certificate.renew' },
|
2022-02-24 19:55:26 -08:00
|
|
|
{ name: 'certificate.cleanup', value: 'certificate.cleanup' },
|
2018-02-20 11:13:51 -08:00
|
|
|
{ name: 'cloudron.activate', value: 'cloudron.activate' },
|
2018-11-10 01:34:50 -08:00
|
|
|
{ name: 'cloudron.provision', value: 'cloudron.provision' },
|
|
|
|
|
{ name: 'cloudron.restore', value: 'cloudron.restore' },
|
2018-01-22 13:01:38 -08:00
|
|
|
{ name: 'cloudron.start', value: 'cloudron.start' },
|
|
|
|
|
{ name: 'cloudron.update', value: 'cloudron.update' },
|
2019-09-26 20:13:24 -07:00
|
|
|
{ name: 'cloudron.update.finish', value: 'cloudron.update.finish' },
|
2019-02-04 20:24:23 -08:00
|
|
|
{ name: 'dashboard.domain.update', value: 'dashboard.domain.update' },
|
2024-01-13 12:18:14 +01:00
|
|
|
{ name: 'directoryserver.configure', value: 'directoryserver.configure' },
|
2019-01-14 09:29:00 -08:00
|
|
|
{ name: 'dyndns.update', value: 'dyndns.update' },
|
2018-11-10 01:09:06 -08:00
|
|
|
{ name: 'domain.add', value: 'domain.add' },
|
|
|
|
|
{ name: 'domain.update', value: 'domain.update' },
|
|
|
|
|
{ name: 'domain.remove', value: 'domain.remove' },
|
2024-01-13 13:02:43 +01:00
|
|
|
{ name: 'externalldap.configure', value: 'externalldap.configure' },
|
2024-12-04 09:48:25 +01:00
|
|
|
{ name: 'group.add', value: 'group.add' },
|
|
|
|
|
{ name: 'group.update', value: 'group.update' },
|
|
|
|
|
{ name: 'group.remove', value: 'group.remove' },
|
2020-09-09 22:31:57 -07:00
|
|
|
{ name: 'mail.location', value: 'mail.location' },
|
2018-11-10 00:32:37 -08:00
|
|
|
{ name: 'mail.enabled', value: 'mail.enabled' },
|
|
|
|
|
{ name: 'mail.box.add', value: 'mail.box.add' },
|
2020-01-24 16:59:12 -08:00
|
|
|
{ name: 'mail.box.update', value: 'mail.box.update' },
|
2018-11-10 00:32:37 -08:00
|
|
|
{ name: 'mail.box.remove', value: 'mail.box.remove' },
|
|
|
|
|
{ name: 'mail.list.add', value: 'mail.list.add' },
|
2020-01-24 16:59:12 -08:00
|
|
|
{ name: 'mail.list.update', value: 'mail.list.update' },
|
2018-11-10 00:32:37 -08:00
|
|
|
{ name: 'mail.list.remove', value: 'mail.list.remove' },
|
2021-09-24 10:27:14 -07:00
|
|
|
{ name: 'service.configure', value: 'service.configure' },
|
|
|
|
|
{ name: 'service.rebuild', value: 'service.rebuild' },
|
|
|
|
|
{ name: 'service.restart', value: 'service.restart' },
|
2019-12-16 14:12:59 -08:00
|
|
|
{ name: 'support.ticket', value: 'support.ticket' },
|
|
|
|
|
{ name: 'support.ssh', value: 'support.ssh' },
|
2018-01-22 13:01:38 -08:00
|
|
|
{ name: 'user.add', value: 'user.add' },
|
|
|
|
|
{ name: 'user.login', value: 'user.login' },
|
2022-07-29 20:39:40 +02:00
|
|
|
{ name: 'user.login.ghost', value: 'user.login.ghost' },
|
2021-01-06 21:59:17 -08:00
|
|
|
{ name: 'user.logout', value: 'user.logout' },
|
2018-01-22 13:01:38 -08:00
|
|
|
{ name: 'user.remove', value: 'user.remove' },
|
2018-07-05 13:54:05 -07:00
|
|
|
{ name: 'user.transfer', value: 'user.transfer' },
|
2019-01-19 15:53:49 +01:00
|
|
|
{ name: 'user.update', value: 'user.update' },
|
2024-06-12 10:46:23 +02:00
|
|
|
{ name: 'userdirectory.profileconfig.update', value: 'userdirectory.profileconfig.update '},
|
2020-10-28 16:14:32 -07:00
|
|
|
{ name: 'volume.add', value: 'volume.add' },
|
|
|
|
|
{ name: 'volume.update', value: 'volume.update' },
|
|
|
|
|
{ name: 'volume.remove', value: 'volume.update' },
|
2018-01-22 13:01:38 -08:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
$scope.pageItemCount = [
|
2020-11-05 13:13:57 +01:00
|
|
|
{ name: $translate.instant('main.pagination.perPageSelector', { n: 20 }), value: 20 },
|
|
|
|
|
{ name: $translate.instant('main.pagination.perPageSelector', { n: 50 }), value: 50 },
|
|
|
|
|
{ name: $translate.instant('main.pagination.perPageSelector', { n: 100 }), value: 100 }
|
2018-01-22 13:01:38 -08:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
$scope.currentPage = 1;
|
|
|
|
|
$scope.pageItems = $scope.pageItemCount[0];
|
|
|
|
|
$scope.action = '';
|
2018-03-05 11:15:25 +01:00
|
|
|
$scope.selectedActions = [];
|
2018-01-22 13:01:38 -08:00
|
|
|
$scope.search = '';
|
|
|
|
|
|
2020-10-09 12:31:25 +02:00
|
|
|
function fetchEventLogs(background, callback) {
|
|
|
|
|
callback = callback || function (error) { if (error) console.error(error); };
|
|
|
|
|
background = background || false;
|
|
|
|
|
|
|
|
|
|
if (!background) $scope.busy = true;
|
|
|
|
|
|
2018-03-05 11:15:25 +01:00
|
|
|
var actions = $scope.selectedActions.map(function (a) { return a.value; }).join(', ');
|
2018-01-22 13:01:38 -08:00
|
|
|
|
2018-06-07 23:04:26 +02:00
|
|
|
Client.getEventLogs(actions, $scope.search || null, $scope.currentPage, $scope.pageItems.value, function (error, result) {
|
2018-01-22 13:01:38 -08:00
|
|
|
$scope.busy = false;
|
|
|
|
|
|
2020-10-09 12:31:25 +02:00
|
|
|
if (error) return callback(error);
|
2018-01-22 13:01:38 -08:00
|
|
|
|
2019-09-26 21:26:56 -07:00
|
|
|
$scope.eventLogs = [];
|
|
|
|
|
result.forEach(function (e) {
|
2021-09-14 12:17:17 +02:00
|
|
|
$scope.eventLogs.push({ raw: e, details: Client.eventLogDetails(e), source: Client.eventLogSource(e) });
|
2019-09-26 21:26:56 -07:00
|
|
|
});
|
2020-10-09 12:31:25 +02:00
|
|
|
|
|
|
|
|
callback();
|
2018-01-22 13:01:38 -08:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-09 12:31:25 +02:00
|
|
|
$scope.refresh = function () {
|
|
|
|
|
$scope.busyRefresh = true;
|
|
|
|
|
|
|
|
|
|
fetchEventLogs(true, function () {
|
|
|
|
|
$scope.busyRefresh = false;
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2018-01-22 13:01:38 -08:00
|
|
|
$scope.showNextPage = function () {
|
|
|
|
|
$scope.currentPage++;
|
|
|
|
|
fetchEventLogs();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
$scope.showPrevPage = function () {
|
|
|
|
|
if ($scope.currentPage > 1) $scope.currentPage--;
|
|
|
|
|
else $scope.currentPage = 1;
|
|
|
|
|
|
|
|
|
|
fetchEventLogs();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
$scope.updateFilter = function (fresh) {
|
|
|
|
|
if (fresh) $scope.currentPage = 1;
|
|
|
|
|
fetchEventLogs();
|
|
|
|
|
};
|
|
|
|
|
|
2018-03-02 10:50:05 +01:00
|
|
|
$scope.showEventLogDetails = function (eventLog) {
|
|
|
|
|
if ($scope.activeEventLog === eventLog) $scope.activeEventLog = null;
|
|
|
|
|
else $scope.activeEventLog = eventLog;
|
|
|
|
|
};
|
|
|
|
|
|
2018-01-22 13:01:38 -08:00
|
|
|
Client.onReady(function () {
|
2024-03-14 16:06:38 +01:00
|
|
|
$scope.search = $location.search().search || ''; // sent from the backups view when app is deleted
|
2018-01-22 13:01:38 -08:00
|
|
|
fetchEventLogs();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$('.modal-backdrop').remove();
|
|
|
|
|
}]);
|