diff --git a/src/js/client.js b/src/js/client.js index 706604e00..67f4ac72c 100644 --- a/src/js/client.js +++ b/src/js/client.js @@ -3061,7 +3061,7 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout // ---------------------------------------------- // Eventlog helpers // ---------------------------------------------- - Client.prototype.eventLogDetails = function (eventLog) { + Client.prototype.eventLogDetails = function (eventLog, redactAppDescriptor) { var ACTION_ACTIVATE = 'cloudron.activate'; var ACTION_PROVISION = 'cloudron.provision'; var ACTION_RESTORE = 'cloudron.restore'; @@ -3136,8 +3136,12 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout var errorMessage = data.errorMessage; var details, app; - function appName(app) { - return (app.label || app.fqdn || app.location) + ' (' + app.manifest.title + ')'; + function appName(pre, app) { + if (redactAppDescriptor) return ''; + + pre = pre ? (pre + ' ') : ''; + + return pre + (app.label || app.fqdn || app.location) + ' (' + app.manifest.title + ') '; } switch (eventLog.action) { @@ -3159,81 +3163,81 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout }; if ('accessRestriction' in data) { // since it can be null - return 'Access restriction of ' + appName(app) + ' was changed'; + return 'Access restriction ' + appName('of', app) + ' was changed'; } else if ('operators' in data) { - return 'Operators of ' + appName(app) + ' was changed'; + return 'Operators ' + appName('of', app) + ' was changed'; } else if (data.label) { - return 'Label of ' + appName(app) + ' was set to ' + q(data.label); + return 'Label ' + appName('of', app) + ' was set to ' + q(data.label); } else if (data.tags) { - return 'Tags of ' + appName(app) + ' was set to ' + q(data.tags.join(',')); + return 'Tags ' + appName('of', app) + ' was set to ' + q(data.tags.join(',')); } else if (data.icon) { - return 'Icon of ' + appName(app) + ' was changed'; + return 'Icon ' + appName('of', app) + ' was changed'; } else if (data.memoryLimit) { - return 'Memory limit of ' + appName(app) + ' was set to ' + data.memoryLimit; + return 'Memory limit ' + appName('of', app) + ' was set to ' + data.memoryLimit; } else if (data.cpuShares) { - return 'CPU shares of ' + appName(app) + ' was set to ' + Math.round((data.cpuShares * 100)/1024) + '%'; + return 'CPU shares ' + appName('of', app) + ' was set to ' + Math.round((data.cpuShares * 100)/1024) + '%'; } else if (data.env) { - return 'Env vars of ' + appName(app) + ' was changed'; + return 'Env vars ' + appName('of', app) + ' was changed'; } else if ('debugMode' in data) { // since it can be null if (data.debugMode) { - return appName(app) + ' was placed in repair mode'; + return appName('', app) + ' was placed in repair mode'; } else { - return appName(app) + ' was taken out of repair mode'; + return appName('', app) + ' was taken out of repair mode'; } } else if ('enableBackup' in data) { - return 'Automatic backups of ' + appName(app) + ' was ' + (data.enableBackup ? 'enabled' : 'disabled'); + return 'Automatic backups ' + appName('of', app) + ' were ' + (data.enableBackup ? 'enabled' : 'disabled'); } else if ('enableAutomaticUpdate' in data) { - return 'Automatic updates of ' + appName(app) + ' was ' + (data.enableAutomaticUpdate ? 'enabled' : 'disabled'); + return 'Automatic updates ' + appName('of', app) + ' were ' + (data.enableAutomaticUpdate ? 'enabled' : 'disabled'); } else if ('reverseProxyConfig' in data) { - return 'Reverse proxy configuration of ' + appName(app) + ' was updated'; + return 'Reverse proxy configuration ' + appName('of', app) + ' was updated'; } else if ('cert' in data) { if (data.cert) { - return 'Custom certificate was set for ' + appName(app); + return 'Custom certificate was set ' + appName('for', app); } else { - return 'Certificate of ' + appName(app) + ' was reset'; + return 'Certificate ' + appName('of', app) + ' was reset'; } } else if (data.location) { if (data.fqdn !== data.app.fqdn) { - return 'Location of ' + appName(app) + ' was changed to ' + data.fqdn; + return 'Location ' + appName('of', app) + ' was changed to ' + data.fqdn; } else if (!angular.equals(data.alternateDomains, data.app.alternateDomains)) { var altFqdns = data.alternateDomains.map(function (a) { return a.fqdn; }); - return 'Alternate domains of ' + appName(app) + ' was ' + (altFqdns.length ? 'set to ' + altFqdns.join(', ') : 'reset'); + return 'Alternate domains ' + appName('of', app) + ' was ' + (altFqdns.length ? 'set to ' + altFqdns.join(', ') : 'reset'); } else if (!angular.equals(data.aliasDomains, data.app.aliasDomains)) { var aliasDomains = data.aliasDomains.map(function (a) { return a.fqdn; }); - return 'Alias domains of ' + appName(app) + ' was ' + (aliasDomains.length ? 'set to ' + aliasDomains.join(', ') : 'reset'); + return 'Alias domains ' + appName('of', app) + ' was ' + (aliasDomains.length ? 'set to ' + aliasDomains.join(', ') : 'reset'); } else if (!angular.equals(data.portBindings, data.app.portBindings)) { - return 'Port bindings of ' + appName(app) + ' was changed'; + return 'Port bindings ' + appName('of', app) + ' was changed'; } } else if ('dataDir' in data) { if (data.dataDir) { - return 'Data directory of ' + appName(app) + ' was set ' + data.dataDir; + return 'Data directory ' + appName('of', app) + ' was set ' + data.dataDir; } else { - return 'Data directory of ' + appName(app) + ' was reset'; + return 'Data directory ' + appName('of', app) + ' was reset'; } } else if ('icon' in data) { if (data.icon) { - return 'Icon of ' + appName(app) + ' was set'; + return 'Icon ' + appName('of', app) + ' was set'; } else { - return 'Icon of ' + appName(app) + ' was reset'; + return 'Icon ' + appName('of', app) + ' was reset'; } } else if (('mailboxName' in data) && data.mailboxName !== data.app.mailboxName) { if (data.mailboxName) { - return 'Mailbox of ' + appName(app) + ' was set to ' + q(data.mailboxName); + return 'Mailbox ' + appName('of', app) + ' was set to ' + q(data.mailboxName); } else { - return 'Mailbox of ' + appName(app) + ' was reset'; + return 'Mailbox ' + appName('of', app) + ' was reset'; } } - return appName(app) + ' was re-configured'; + return appName('', app) + 'was re-configured'; } case ACTION_APP_INSTALL: if (!data.app) return ''; - return data.app.manifest.title + ' (package v' + data.app.manifest.version + ') was installed at ' + appName(data.app); + return data.app.manifest.title + ' (package v' + data.app.manifest.version + ') was installed ' + appName('at', data.app); case ACTION_APP_RESTORE: if (!data.app) return ''; - details = appName(data.app) + ' was restored'; + details = appName('', data.app) + 'was restored'; // older versions (<3.5) did not have these fields if (data.fromManifest) details += ' from version ' + data.fromManifest.version; if (data.toManifest) details += ' to version ' + data.toManifest.version; @@ -3242,40 +3246,40 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout case ACTION_APP_IMPORT: if (!data.app) return ''; - details = appName(data.app) + ' was imported'; + details = appName('', data.app) + 'was imported'; if (data.toManifest) details += ' to version ' + data.toManifest.version; if (data.backupId) details += ' using backup ' + data.backupId; return details; case ACTION_APP_UNINSTALL: if (!data.app) return ''; - return appName(data.app) + ' (package v' + data.app.manifest.version + ') was uninstalled'; + return appName('', data.app) + ' (package v' + data.app.manifest.version + ') was uninstalled'; case ACTION_APP_UPDATE: if (!data.app) return ''; - return 'Update of ' + appName(data.app) + ' started from v' + data.fromManifest.version + ' to v' + data.toManifest.version; + return 'Update ' + appName('of', data.app) + ' started from v' + data.fromManifest.version + ' to v' + data.toManifest.version; case ACTION_APP_UPDATE_FINISH: if (!data.app) return ''; - return appName(data.app) + ' was updated to v' + data.app.manifest.version; + return appName('', data.app) + 'was updated to v' + data.app.manifest.version; case ACTION_APP_BACKUP: if (!data.app) return ''; - return 'Backup of ' + appName(data.app) + ' started'; + return 'Backup ' + appName('of', data.app) + ' started'; case ACTION_APP_BACKUP_FINISH: if (!data.app) return ''; if (data.errorMessage) { - return 'Backup of ' + appName(data.app) + ' failed: ' + data.errorMessage; + return 'Backup ' + appName('of', data.app) + ' failed: ' + data.errorMessage; } else { - return 'Backup of ' + appName(data.app) + ' succeeded with backup id ' + data.backupId; + return 'Backup ' + appName('of', data.app) + ' succeeded with backup id ' + data.backupId; } case ACTION_APP_CLONE: - return appName(data.newApp) + ' was cloned from ' + appName(data.oldApp) + ' using backup ' + data.backupId + ' with v' + data.oldApp.manifest.version; + return appName('', data.newApp, 'was') + ' cloned ' + appName('from', data.oldApp) + ' using backup ' + data.backupId + ' with v' + data.oldApp.manifest.version; case ACTION_APP_REPAIR: - return 'App ' + appName(data.app) + ' was re-configured'; // re-configure of email apps is more common? + return 'App ' + appName('', data.app) + 'was re-configured'; // re-configure of email apps is more common? case ACTION_APP_LOGIN: { app = this.getCachedAppSync(data.appId); @@ -3285,27 +3289,27 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout case ACTION_APP_OOM: if (!data.app) return ''; - return appName(data.app) + ' ran out of memory'; + return appName('', data.app) + ' ran out of memory'; case ACTION_APP_DOWN: if (!data.app) return ''; - return appName(data.app) + ' is down'; + return appName('', data.app) + ' is down'; case ACTION_APP_UP: if (!data.app) return ''; - return appName(data.app) + ' is back online'; + return appName('', data.app) + ' is back online'; case ACTION_APP_START: if (!data.app) return ''; - return appName(data.app) + ' was started'; + return appName('', data.app) + ' was started'; case ACTION_APP_STOP: if (!data.app) return ''; - return appName(data.app) + ' was stopped'; + return appName('', data.app) + ' was stopped'; case ACTION_APP_RESTART: if (!data.app) return ''; - return appName(data.app) + ' was restarted'; + return appName('', data.app) + ' was restarted'; case ACTION_BACKUP_START: return 'Backup started'; diff --git a/src/views/app.js b/src/views/app.js index 48f2b47a1..0cbb375bb 100644 --- a/src/views/app.js +++ b/src/views/app.js @@ -937,7 +937,7 @@ angular.module('Application').controller('AppController', ['$scope', '$location' $scope.eventlog.eventLogs = []; result.forEach(function (e) { - $scope.eventlog.eventLogs.push({ raw: e, details: Client.eventLogDetails(e), source: Client.eventLogSource(e) }); + $scope.eventlog.eventLogs.push({ raw: e, details: Client.eventLogDetails(e, true /* redact app descriptor */), source: Client.eventLogSource(e) }); }); $scope.eventlog.busy = false;