From 3cb4d4b1ab3559d51438d1ebf0f1d3e7d4d63dcc Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Tue, 18 Apr 2017 15:34:32 -0700 Subject: [PATCH] Add UI to download logs Part of #304 --- webadmin/src/js/client.js | 14 +++++++++++--- webadmin/src/views/support.html | 20 ++++++++++++++++++++ webadmin/src/views/support.js | 19 +++++++++++++++++++ 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/webadmin/src/js/client.js b/webadmin/src/js/client.js index 406ccad7e..6e0c591f6 100644 --- a/webadmin/src/js/client.js +++ b/webadmin/src/js/client.js @@ -396,6 +396,14 @@ angular.module('Application').service('Client', ['$http', 'md5', 'Notification', }).error(defaultErrorHandler(callback)); }; + Client.prototype.makeURL = function (url) { + if (url.indexOf('?') === -1) { + return this.apiOrigin + url + '?access_token=' + token; + } else { + return this.apiOrigin + url + '&access_token=' + token; + } + }; + Client.prototype.setBackupConfig = function (backupConfig, callback) { post('/api/v1/settings/backup_config', backupConfig).success(function(data, status) { if (status !== 200) return callback(new ClientError(status, data)); @@ -541,10 +549,10 @@ angular.module('Application').service('Client', ['$http', 'md5', 'Notification', }).error(defaultErrorHandler(callback)); }; - Client.prototype.getAppBackups = function (callback) { - get('/api/v1/backups').success(function (data, status) { + Client.prototype.getAppLogs = function (appId, callback) { + get('/api/v1/apps/' + appId + '/logs').success(function (data, status) { if (status !== 200 || typeof data !== 'object') return callback(new ClientError(status, data)); - callback(null, data.backups); + callback(null); }).error(defaultErrorHandler(callback)); }; diff --git a/webadmin/src/views/support.html b/webadmin/src/views/support.html index b44a9b936..023b3c824 100644 --- a/webadmin/src/views/support.html +++ b/webadmin/src/views/support.html @@ -24,6 +24,26 @@
+
+
+
+
+

Logs

+
+
+ +
+ Download +
+
+
+
+
+ +
+
diff --git a/webadmin/src/views/support.js b/webadmin/src/views/support.js index 4e2da77b8..0a91adf1b 100644 --- a/webadmin/src/views/support.js +++ b/webadmin/src/views/support.js @@ -13,6 +13,11 @@ angular.module('Application').controller('SupportController', ['$scope', '$locat description: '' }; + $scope.logs = { + types: null, + selectedUrl: '' // index into types + }; + $scope.sshSupportEnabled = false; function resetFeedback() { @@ -58,6 +63,18 @@ angular.module('Application').controller('SupportController', ['$scope', '$locat } }; + $scope.populateLogTypes = function () { + $scope.logs.types = [ + { id: 'system', name: 'System', url: Client.makeURL('/api/v1/cloudron/logs?unit=all') }, + { id: 'box', name: 'Box', url: Client.makeURL('/api/v1/cloudron/logs?unit=box') }, + { id: 'mail', name: 'Mail', url: Client.makeURL('/api/v1/cloudron/logs?unit=mail') } + ]; + + Client.getInstalledApps().forEach(function (app) { + $scope.logs.types.push({ id: app.id, name: app.fqdn, url: Client.makeURL('/api/v1/apps/' + app.id + '/logs') }); + }); + }; + Client.onReady(function () { Client.getAuthorizedKeys(function (error, keys) { if (error) return console.error(error); @@ -66,5 +83,7 @@ angular.module('Application').controller('SupportController', ['$scope', '$locat }); }); + Client.onReady($scope.populateLogTypes); + $('.modal-backdrop').remove(); }]);