diff --git a/src/js/index.js b/src/js/index.js
index 18633d20a..b4836b2ba 100644
--- a/src/js/index.js
+++ b/src/js/index.js
@@ -528,283 +528,6 @@ app.filter('postInstallMessage', function () {
};
});
-
-// keep this in sync with eventlog.js and CLI tool
-var ACTION_ACTIVATE = 'cloudron.activate';
-var ACTION_PROVISION = 'cloudron.provision';
-var ACTION_RESTORE = 'cloudron.restore';
-var ACTION_APP_CLONE = 'app.clone';
-var ACTION_APP_CONFIGURE = 'app.configure';
-var ACTION_APP_INSTALL = 'app.install';
-var ACTION_APP_RESTORE = 'app.restore';
-var ACTION_APP_UNINSTALL = 'app.uninstall';
-var ACTION_APP_UPDATE = 'app.update';
-var ACTION_APP_UPDATE_FINISH = 'app.update.finish';
-var ACTION_APP_LOGIN = 'app.login';
-var ACTION_APP_OOM = 'app.oom';
-var ACTION_APP_UP = 'app.up';
-var ACTION_APP_DOWN = 'app.down';
-
-var ACTION_BACKUP_FINISH = 'backup.finish';
-var ACTION_BACKUP_START = 'backup.start';
-var ACTION_BACKUP_CLEANUP_START = 'backup.cleanup.start';
-var ACTION_BACKUP_CLEANUP_FINISH = 'backup.cleanup.finish';
-var ACTION_CERTIFICATE_NEW = 'certificate.new';
-var ACTION_CERTIFICATE_RENEWAL = 'certificate.renew';
-
-var ACTION_DASHBOARD_DOMAIN_UPDATE = 'dashboard.domain.update';
-
-var ACTION_DOMAIN_ADD = 'domain.add';
-var ACTION_DOMAIN_UPDATE = 'domain.update';
-var ACTION_DOMAIN_REMOVE = 'domain.remove';
-
-var ACTION_START = 'cloudron.start';
-var ACTION_UPDATE = 'cloudron.update';
-var ACTION_UPDATE_FINISH = 'cloudron.update.finish';
-var ACTION_USER_ADD = 'user.add';
-var ACTION_USER_LOGIN = 'user.login';
-var ACTION_USER_REMOVE = 'user.remove';
-var ACTION_USER_UPDATE = 'user.update';
-var ACTION_USER_TRANSFER = 'user.transfer';
-
-var ACTION_MAIL_ENABLED = 'mail.enabled';
-var ACTION_MAIL_DISABLED = 'mail.disabled';
-var ACTION_MAIL_MAILBOX_ADD = 'mail.box.add';
-var ACTION_MAIL_MAILBOX_REMOVE = 'mail.box.remove';
-var ACTION_MAIL_LIST_ADD = 'mail.list.add';
-var ACTION_MAIL_LIST_REMOVE = 'mail.list.remove';
-
-var ACTION_DYNDNS_UPDATE = 'dyndns.update';
-
-var ACTION_SYSTEM_CRASH = 'system.crash';
-
-app.filter('eventLogSource', ['Client', function (Client) {
- return function(eventLog) {
- var source = eventLog.source;
- var line = '';
-
- line = source.username || source.userId || source.authType || 'system';
- if (source.appId) {
- var app = Client.getCachedAppSync(source.appId);
- line += ' - ' + (app ? app.fqdn : source.appId);
- } else if (source.ip) {
- line += ' - ' + source.ip;
- }
-
- return line;
- };
-}]);
-
-app.filter('eventLogDetails', function() {
- // NOTE: if you change this, the CLI tool (cloudron machine eventlog) probably needs fixing as well
- return function(eventLog) {
- var data = eventLog.data;
- var errorMessage = data.errorMessage;
- var details;
-
- switch (eventLog.action) {
- case ACTION_ACTIVATE:
- return 'Cloudron was activated';
-
- case ACTION_PROVISION:
- return 'Cloudron was setup';
-
- case ACTION_RESTORE:
- return 'Cloudron was restored using backup ' + data.backupId;
-
- case ACTION_APP_CONFIGURE:
- if (!data.app) return '';
-
- var q = function (x) {
- return '"' + x + '"';
- };
- var name = (data.app.label || data.app.fqdn || data.app.location) + ' (' + data.app.manifest.title + ')';
-
- if ('accessRestriction' in data) { // since it can be null
- return 'Access restriction of ' + name + ' was changed';
- } else if (data.label) {
- return 'Label of ' + name + ' was set to ' + q(data.label);
- } else if (data.tags) {
- return 'Tags of ' + name + ' was set to ' + q(data.tags.join(','));
- } else if (data.icon) {
- return 'Icon of ' + name + ' was changed';
- } else if (data.memoryLimit) {
- return 'Memory limit of ' + name + ' was set to ' + data.memoryLimit;
- } else if (data.env) {
- return 'Env vars of ' + name + ' was changed';
- } else if ('debugMode' in data) { // since it can be null
- if (data.debugMode) {
- return name + ' was placed in repair mode';
- } else {
- return name + ' was taken out of repair mode';
- }
- } else if ('mailboxName' in data) {
- if (data.mailboxName) {
- return 'Mailbox of ' + name + ' was set to ' + q(data.mailboxName);
- } else {
- return 'Mailbox of ' + name + ' was reset';
- }
- } else if ('enableBackup' in data) {
- return 'Automatic backups of ' + name + ' was ' + (data.enableBackup ? 'enabled' : 'disabled');
- } else if ('enableAutomaticUpdate' in data) {
- return 'Automatic updates of ' + name + ' was ' + (data.enableAutomaticUpdate ? 'enabled' : 'disabled');
- } else if ('robotsTxt' in data) {
- if (data.robotsTxt) {
- return 'robots.txt of ' + name + ' was set';
- } else {
- return 'robots.txt of ' + name + ' was reset';
- }
- } else if ('cert' in data) {
- if (data.cert) {
- return 'Custom certificate was set for ' + name;
- } else {
- return 'Certificate of ' + name + ' was reset';
- }
- } else if (data.location) {
- if (data.location !== data.app.location || data.domain !== data.app.domain) {
- return 'Location of ' + name + ' was changed to ' + data.location + '.' + data.domain;
- } else if (!angular.equals(data.alternateDomains, data.app.alternateDomains)) {
- return 'Alternate domains of ' + name + ' was set to ' + q(data.alternateDomains.join(','));
- } else if (!angular.equals(data.portBindings, data.app.portBindings)) {
- return 'Port bindings of ' + name + ' was changed';
- }
- } else if ('dataDir' in data) {
- if (data.dataDir) {
- return 'Data directory of ' + name + ' was set ' + data.dataDir;
- } else {
- return 'Data directory of ' + name + ' was reset';
- }
- }
-
- return data.app.manifest.title + ' was re-configured at ' + (data.app.fqdn || data.app.location);
-
- case ACTION_APP_INSTALL:
- if (!data.app) return '';
- return data.app.manifest.title + ' (package v' + data.app.manifest.version + ') was installed at ' + (data.app.fqdn || data.app.location);
-
- case ACTION_APP_RESTORE:
- if (!data.app) return '';
- details = data.app.manifest.title + ' was restored at ' + (data.app.fqdn || data.app.location);
- // 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;
- if (data.backupId) details += ' using backup ' + data.backupId;
- return details;
-
- case ACTION_APP_UNINSTALL:
- if (!data.app) return '';
- return data.app.manifest.title + ' (package v' + data.app.manifest.version + ') was uninstalled at ' + (data.app.fqdn || data.app.location);
-
- case ACTION_APP_UPDATE:
- if (!data.app) return '';
- return 'Update of ' + data.app.manifest.title + ' at ' + (data.app.fqdn || data.app.location) + ' started from v' + data.fromManifest.version + ' to v' + data.toManifest.version;
-
- case ACTION_APP_UPDATE_FINISH:
- if (!data.app) return '';
- return data.app.manifest.title + ' at ' + (data.app.fqdn || data.app.location) + ' was updated to v' + data.app.manifest.version;
-
- case ACTION_APP_CLONE:
- return data.newApp.manifest.title + ' at ' + (data.newApp.fqdn || data.newApp.location) + ' was cloned from ' + (data.oldApp.fqdn || data.oldApp.location) + ' using backup ' + data.backupId + ' with v' + data.oldApp.manifest.version;
-
- case ACTION_APP_LOGIN:
- return 'App ' + data.appId + ' logged in';
-
- case ACTION_APP_OOM:
- return data.app.manifest.title + ' ran out of memory';
-
- case ACTION_APP_DOWN:
- return data.app.manifest.title + ' is down';
-
- case ACTION_APP_UP:
- return data.app.manifest.title + ' is back online';
-
- case ACTION_BACKUP_START:
- return 'Backup started';
-
- case ACTION_BACKUP_FINISH:
- if (!errorMessage) {
- return 'Backup created with Id ' + data.backupId;
- } else {
- return 'Backup errored with error: ' + errorMessage;
- }
-
- case ACTION_BACKUP_CLEANUP_START:
- return 'Backup cleaner started';
-
- case ACTION_BACKUP_CLEANUP_FINISH:
- return data.errorMessage ? 'Backup cleaner errored: ' + data.errorMessage : 'Backup cleaner removed ' + data.removedBoxBackups.length + ' backups';
-
- case ACTION_CERTIFICATE_NEW:
- return 'Certificate install for ' + data.domain + (errorMessage ? ' failed' : ' succeeded');
-
- case ACTION_CERTIFICATE_RENEWAL:
- return 'Certificate renewal for ' + data.domain + (errorMessage ? ' failed' : ' succeeded');
-
- case ACTION_DASHBOARD_DOMAIN_UPDATE:
- return 'Dashboard domain set to ' + data.fqdn;
-
- case ACTION_DOMAIN_ADD:
- return 'Domain ' + data.domain + ' with ' + data.provider + ' provider was added';
-
- case ACTION_DOMAIN_UPDATE:
- return 'Domain ' + data.domain + ' with ' + data.provider + ' provider was updated';
-
- case ACTION_DOMAIN_REMOVE:
- return 'Domain ' + data.domain + ' was removed';
-
- case ACTION_MAIL_ENABLED:
- return 'Cloudron Mail was enabled for domain ' + data.domain;
-
- case ACTION_MAIL_DISABLED:
- return 'Cloudron Mail was disabled for domain ' + data.domain;
-
- case ACTION_MAIL_MAILBOX_ADD:
- return 'Mailbox with name ' + data.name + ' was added in domain ' + data.domain;
-
- case ACTION_MAIL_MAILBOX_REMOVE:
- return 'Mailbox with name ' + data.name + ' was removed in domain ' + data.domain;
-
- case ACTION_MAIL_LIST_ADD:
- return 'Mail list with name ' + data.name + ' was added in domain ' + data.domain;
-
- case ACTION_MAIL_LIST_REMOVE:
- return 'Mail list with name ' + data.name + ' was added in domain ' + data.domain;
-
- case ACTION_START:
- return 'Cloudron started with version ' + data.version;
-
- case ACTION_UPDATE:
- return 'Cloudron update to version ' + data.boxUpdateInfo.version + ' was started';
-
- case ACTION_UPDATE_FINISH:
- return 'Cloudron updated to version ' + data.newVersion;
-
- case ACTION_USER_ADD:
- return data.email + (data.user.username ? ' (' + data.user.username + ')' : '') + ' was added';
-
- case ACTION_USER_UPDATE:
- return (data.user ? (data.user.email + (data.user.username ? ' (' + data.user.username + ')' : '')) : data.userId) + ' was updated';
-
- case ACTION_USER_REMOVE:
- return (data.user ? (data.user.email + (data.user.username ? ' (' + data.user.username + ')' : '')) : data.userId) + ' was removed';
-
- case ACTION_USER_TRANSFER:
- return 'Apps of ' + data.oldOwnerId + ' was transferred to ' + data.newOwnerId;
-
- case ACTION_USER_LOGIN:
- return (data.user ? (data.user.email + (data.user.username ? ' (' + data.user.username + ')' : '')) : data.userId) + ' logged in';
-
- case ACTION_DYNDNS_UPDATE:
- return 'DNS was updated from ' + data.fromIp + ' to ' + data.toIp;
-
- case ACTION_SYSTEM_CRASH:
- return 'A system process crashed';
-
- default: return eventLog.action;
- }
- };
-});
-
// custom directive for dynamic names in forms
// See http://stackoverflow.com/questions/23616578/issue-registering-form-control-with-interpolated-name#answer-23617401
app.directive('laterName', function () { // (2)
diff --git a/src/views/activity.html b/src/views/activity.html
index b9f0a4c92..0f49da335 100644
--- a/src/views/activity.html
+++ b/src/views/activity.html
@@ -36,12 +36,12 @@
- | {{ eventLog.creationTime | prettyDate }} |
- {{ eventLog | eventLogSource }} |
- |
+ {{ eventLog.raw.creationTime | prettyDate }} |
+ {{ eventLog.source }} |
+ |
- {{ eventLog.data | json }} |
+ {{ eventLog.raw.data | json }} |
diff --git a/src/views/activity.js b/src/views/activity.js
index 1e497dbdb..5ccb51d79 100644
--- a/src/views/activity.js
+++ b/src/views/activity.js
@@ -69,6 +69,276 @@ angular.module('Application').controller('ActivityController', ['$scope', '$loca
$scope.selectedActions = [];
$scope.search = '';
+ function eventLogDetails(eventLog) {
+ var ACTION_ACTIVATE = 'cloudron.activate';
+ var ACTION_PROVISION = 'cloudron.provision';
+ var ACTION_RESTORE = 'cloudron.restore';
+ var ACTION_APP_CLONE = 'app.clone';
+ var ACTION_APP_CONFIGURE = 'app.configure';
+ var ACTION_APP_INSTALL = 'app.install';
+ var ACTION_APP_RESTORE = 'app.restore';
+ var ACTION_APP_UNINSTALL = 'app.uninstall';
+ var ACTION_APP_UPDATE = 'app.update';
+ var ACTION_APP_UPDATE_FINISH = 'app.update.finish';
+ var ACTION_APP_LOGIN = 'app.login';
+ var ACTION_APP_OOM = 'app.oom';
+ var ACTION_APP_UP = 'app.up';
+ var ACTION_APP_DOWN = 'app.down';
+
+ var ACTION_BACKUP_FINISH = 'backup.finish';
+ var ACTION_BACKUP_START = 'backup.start';
+ var ACTION_BACKUP_CLEANUP_START = 'backup.cleanup.start';
+ var ACTION_BACKUP_CLEANUP_FINISH = 'backup.cleanup.finish';
+ var ACTION_CERTIFICATE_NEW = 'certificate.new';
+ var ACTION_CERTIFICATE_RENEWAL = 'certificate.renew';
+
+ var ACTION_DASHBOARD_DOMAIN_UPDATE = 'dashboard.domain.update';
+
+ var ACTION_DOMAIN_ADD = 'domain.add';
+ var ACTION_DOMAIN_UPDATE = 'domain.update';
+ var ACTION_DOMAIN_REMOVE = 'domain.remove';
+
+ var ACTION_START = 'cloudron.start';
+ var ACTION_UPDATE = 'cloudron.update';
+ var ACTION_UPDATE_FINISH = 'cloudron.update.finish';
+ var ACTION_USER_ADD = 'user.add';
+ var ACTION_USER_LOGIN = 'user.login';
+ var ACTION_USER_REMOVE = 'user.remove';
+ var ACTION_USER_UPDATE = 'user.update';
+ var ACTION_USER_TRANSFER = 'user.transfer';
+
+ var ACTION_MAIL_ENABLED = 'mail.enabled';
+ var ACTION_MAIL_DISABLED = 'mail.disabled';
+ var ACTION_MAIL_MAILBOX_ADD = 'mail.box.add';
+ var ACTION_MAIL_MAILBOX_REMOVE = 'mail.box.remove';
+ var ACTION_MAIL_LIST_ADD = 'mail.list.add';
+ var ACTION_MAIL_LIST_REMOVE = 'mail.list.remove';
+
+ var ACTION_DYNDNS_UPDATE = 'dyndns.update';
+
+ var ACTION_SYSTEM_CRASH = 'system.crash';
+
+ var data = eventLog.data;
+ var errorMessage = data.errorMessage;
+ var details;
+
+ switch (eventLog.action) {
+ case ACTION_ACTIVATE:
+ return 'Cloudron was activated';
+
+ case ACTION_PROVISION:
+ return 'Cloudron was setup';
+
+ case ACTION_RESTORE:
+ return 'Cloudron was restored using backup ' + data.backupId;
+
+ case ACTION_APP_CONFIGURE:
+ if (!data.app) return '';
+
+ var q = function (x) {
+ return '"' + x + '"';
+ };
+ var name = (data.app.label || data.app.fqdn || data.app.location) + ' (' + data.app.manifest.title + ')';
+
+ if ('accessRestriction' in data) { // since it can be null
+ return 'Access restriction of ' + name + ' was changed';
+ } else if (data.label) {
+ return 'Label of ' + name + ' was set to ' + q(data.label);
+ } else if (data.tags) {
+ return 'Tags of ' + name + ' was set to ' + q(data.tags.join(','));
+ } else if (data.icon) {
+ return 'Icon of ' + name + ' was changed';
+ } else if (data.memoryLimit) {
+ return 'Memory limit of ' + name + ' was set to ' + data.memoryLimit;
+ } else if (data.env) {
+ return 'Env vars of ' + name + ' was changed';
+ } else if ('debugMode' in data) { // since it can be null
+ if (data.debugMode) {
+ return name + ' was placed in repair mode';
+ } else {
+ return name + ' was taken out of repair mode';
+ }
+ } else if ('mailboxName' in data) {
+ if (data.mailboxName) {
+ return 'Mailbox of ' + name + ' was set to ' + q(data.mailboxName);
+ } else {
+ return 'Mailbox of ' + name + ' was reset';
+ }
+ } else if ('enableBackup' in data) {
+ return 'Automatic backups of ' + name + ' was ' + (data.enableBackup ? 'enabled' : 'disabled');
+ } else if ('enableAutomaticUpdate' in data) {
+ return 'Automatic updates of ' + name + ' was ' + (data.enableAutomaticUpdate ? 'enabled' : 'disabled');
+ } else if ('robotsTxt' in data) {
+ if (data.robotsTxt) {
+ return 'robots.txt of ' + name + ' was set';
+ } else {
+ return 'robots.txt of ' + name + ' was reset';
+ }
+ } else if ('cert' in data) {
+ if (data.cert) {
+ return 'Custom certificate was set for ' + name;
+ } else {
+ return 'Certificate of ' + name + ' was reset';
+ }
+ } else if (data.location) {
+ if (data.location !== data.app.location || data.domain !== data.app.domain) {
+ return 'Location of ' + name + ' was changed to ' + data.location + '.' + data.domain;
+ } else if (!angular.equals(data.alternateDomains, data.app.alternateDomains)) {
+ return 'Alternate domains of ' + name + ' was set to ' + q(data.alternateDomains.join(','));
+ } else if (!angular.equals(data.portBindings, data.app.portBindings)) {
+ return 'Port bindings of ' + name + ' was changed';
+ }
+ } else if ('dataDir' in data) {
+ if (data.dataDir) {
+ return 'Data directory of ' + name + ' was set ' + data.dataDir;
+ } else {
+ return 'Data directory of ' + name + ' was reset';
+ }
+ }
+
+ return data.app.manifest.title + ' was re-configured at ' + (data.app.fqdn || data.app.location);
+
+ case ACTION_APP_INSTALL:
+ if (!data.app) return '';
+ return data.app.manifest.title + ' (package v' + data.app.manifest.version + ') was installed at ' + (data.app.fqdn || data.app.location);
+
+ case ACTION_APP_RESTORE:
+ if (!data.app) return '';
+ details = data.app.manifest.title + ' was restored at ' + (data.app.fqdn || data.app.location);
+ // 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;
+ if (data.backupId) details += ' using backup ' + data.backupId;
+ return details;
+
+ case ACTION_APP_UNINSTALL:
+ if (!data.app) return '';
+ return data.app.manifest.title + ' (package v' + data.app.manifest.version + ') was uninstalled at ' + (data.app.fqdn || data.app.location);
+
+ case ACTION_APP_UPDATE:
+ if (!data.app) return '';
+ return 'Update of ' + data.app.manifest.title + ' at ' + (data.app.fqdn || data.app.location) + ' started from v' + data.fromManifest.version + ' to v' + data.toManifest.version;
+
+ case ACTION_APP_UPDATE_FINISH:
+ if (!data.app) return '';
+ return data.app.manifest.title + ' at ' + (data.app.fqdn || data.app.location) + ' was updated to v' + data.app.manifest.version;
+
+ case ACTION_APP_CLONE:
+ return data.newApp.manifest.title + ' at ' + (data.newApp.fqdn || data.newApp.location) + ' was cloned from ' + (data.oldApp.fqdn || data.oldApp.location) + ' using backup ' + data.backupId + ' with v' + data.oldApp.manifest.version;
+
+ case ACTION_APP_LOGIN:
+ return 'App ' + data.appId + ' logged in';
+
+ case ACTION_APP_OOM:
+ return data.app.manifest.title + ' ran out of memory';
+
+ case ACTION_APP_DOWN:
+ return data.app.manifest.title + ' is down';
+
+ case ACTION_APP_UP:
+ return data.app.manifest.title + ' is back online';
+
+ case ACTION_BACKUP_START:
+ return 'Backup started';
+
+ case ACTION_BACKUP_FINISH:
+ if (!errorMessage) {
+ return 'Backup created with Id ' + data.backupId;
+ } else {
+ return 'Backup errored with error: ' + errorMessage;
+ }
+
+ case ACTION_BACKUP_CLEANUP_START:
+ return 'Backup cleaner started';
+
+ case ACTION_BACKUP_CLEANUP_FINISH:
+ return data.errorMessage ? 'Backup cleaner errored: ' + data.errorMessage : 'Backup cleaner removed ' + data.removedBoxBackups.length + ' backups';
+
+ case ACTION_CERTIFICATE_NEW:
+ return 'Certificate install for ' + data.domain + (errorMessage ? ' failed' : ' succeeded');
+
+ case ACTION_CERTIFICATE_RENEWAL:
+ return 'Certificate renewal for ' + data.domain + (errorMessage ? ' failed' : ' succeeded');
+
+ case ACTION_DASHBOARD_DOMAIN_UPDATE:
+ return 'Dashboard domain set to ' + data.fqdn;
+
+ case ACTION_DOMAIN_ADD:
+ return 'Domain ' + data.domain + ' with ' + data.provider + ' provider was added';
+
+ case ACTION_DOMAIN_UPDATE:
+ return 'Domain ' + data.domain + ' with ' + data.provider + ' provider was updated';
+
+ case ACTION_DOMAIN_REMOVE:
+ return 'Domain ' + data.domain + ' was removed';
+
+ case ACTION_MAIL_ENABLED:
+ return 'Cloudron Mail was enabled for domain ' + data.domain;
+
+ case ACTION_MAIL_DISABLED:
+ return 'Cloudron Mail was disabled for domain ' + data.domain;
+
+ case ACTION_MAIL_MAILBOX_ADD:
+ return 'Mailbox with name ' + data.name + ' was added in domain ' + data.domain;
+
+ case ACTION_MAIL_MAILBOX_REMOVE:
+ return 'Mailbox with name ' + data.name + ' was removed in domain ' + data.domain;
+
+ case ACTION_MAIL_LIST_ADD:
+ return 'Mail list with name ' + data.name + ' was added in domain ' + data.domain;
+
+ case ACTION_MAIL_LIST_REMOVE:
+ return 'Mail list with name ' + data.name + ' was added in domain ' + data.domain;
+
+ case ACTION_START:
+ return 'Cloudron started with version ' + data.version;
+
+ case ACTION_UPDATE:
+ return 'Cloudron update to version ' + data.boxUpdateInfo.version + ' was started';
+
+ case ACTION_UPDATE_FINISH:
+ return 'Cloudron updated to version ' + data.newVersion;
+
+ case ACTION_USER_ADD:
+ return data.email + (data.user.username ? ' (' + data.user.username + ')' : '') + ' was added';
+
+ case ACTION_USER_UPDATE:
+ return (data.user ? (data.user.email + (data.user.username ? ' (' + data.user.username + ')' : '')) : data.userId) + ' was updated';
+
+ case ACTION_USER_REMOVE:
+ return (data.user ? (data.user.email + (data.user.username ? ' (' + data.user.username + ')' : '')) : data.userId) + ' was removed';
+
+ case ACTION_USER_TRANSFER:
+ return 'Apps of ' + data.oldOwnerId + ' was transferred to ' + data.newOwnerId;
+
+ case ACTION_USER_LOGIN:
+ return (data.user ? (data.user.email + (data.user.username ? ' (' + data.user.username + ')' : '')) : data.userId) + ' logged in';
+
+ case ACTION_DYNDNS_UPDATE:
+ return 'DNS was updated from ' + data.fromIp + ' to ' + data.toIp;
+
+ case ACTION_SYSTEM_CRASH:
+ return 'A system process crashed';
+
+ default: return eventLog.action;
+ }
+ }
+
+ function eventLogSource(eventLog) {
+ var source = eventLog.source;
+ var line = '';
+
+ line = source.username || source.userId || source.authType || 'system';
+ if (source.appId) {
+ var app = Client.getCachedAppSync(source.appId);
+ line += ' - ' + (app ? app.fqdn : source.appId);
+ } else if (source.ip) {
+ line += ' - ' + source.ip;
+ }
+
+ return line;
+ };
+
function fetchEventLogs() {
$scope.busy = true;
var actions = $scope.selectedActions.map(function (a) { return a.value; }).join(', ');
@@ -78,7 +348,10 @@ angular.module('Application').controller('ActivityController', ['$scope', '$loca
if (error) return console.error(error);
- $scope.eventLogs = result;
+ $scope.eventLogs = [];
+ result.forEach(function (e) {
+ $scope.eventLogs.push({ raw: e, details: eventLogDetails(e), source: eventLogSource(e) });
+ });
});
}