Account
++
Sessions
--
You are logged into {{ activeClients.length + 1 }} app(s), including this session.
- --
Active Apps:
-{{ client.name }} - {{client.activeTokens.length}} time(s)
-- - -
Sessions
+You are logged into {{ activeClients.length + 1 }} app(s), including this session.
+ ++
Active Apps:
+{{ client.name }} - {{client.activeTokens.length}} time(s)
++ + +
Domain & Certificates
-Domain
-To use a custom domain, configure your domain to use Route53. Moving to a custom domain will retain all your apps and data and will take around 15 minutes.
- -| Domain name | -{{ config.fqdn }} | -
| DNS provider | -{{ dnsConfig.provider }} | -
|
- - No DNS provider is configured. All DNS records need to be setup manually. - To avoid manual setup for each installed app, set a DNS API provider. - |
- |
|
- - Wildcard DNS provider is configured. Always ensure there is a wildcard DNS record for this server's IP. - |
- |
|
- - No DNS provider configured. All DNS records need to be setup manually and all DNS checks are skipped. - |
- |
| Access key id | -{{ dnsConfig.accessKeyId || 'unset' }} | -
| Secret access key | -hidden | -
| DigitalOcean token | -hidden | -
| - | |
| - | - |
SSL Certificates
-Domain & Certificates
+Domain
+To use a custom domain, configure your domain to use Route53. Moving to a custom domain will retain all your apps and data and will take around 15 minutes.
+ +| Domain name | +{{ config.fqdn }} | +
| DNS provider | +{{ dnsConfig.provider }} | +
|
+ + No DNS provider is configured. All DNS records need to be setup manually. + To avoid manual setup for each installed app, set a DNS API provider. + |
+ |
|
+ + Wildcard DNS provider is configured. Always ensure there is a wildcard DNS record for this server's IP. + |
+ |
|
+ + No DNS provider configured. All DNS records need to be setup manually and all DNS checks are skipped. + |
+ |
| Access key id | +{{ dnsConfig.accessKeyId || 'unset' }} | +
| Secret access key | +hidden | +
| DigitalOcean token | +hidden | +
| + | |
| + | + |
SSL Certificates
+IMAP and SMTP Server
-IMAP and SMTP Server
+-
-
Incoming Mail (IMAP)
Server: my.{{config.fqdn}}
Port: 993 (TLS)
Outgoing Mail (SMTP)
Server: my.{{config.fqdn}}
Port: 587 (STARTTLS)
ManageSieve
Server: my.{{config.fqdn}}
Port: 4190 (TLS)
All the servers require your Cloudron credentials for authentication.
-+
+
Incoming Mail (IMAP)
Server: my.{{config.fqdn}}
Port: 993 (TLS)
Outgoing Mail (SMTP)
Server: my.{{config.fqdn}}
Port: 587 (STARTTLS)
ManageSieve
Server: my.{{config.fqdn}}
Port: 4190 (TLS)
All the servers require your Cloudron credentials for authentication.
Outbound Mail Relay
-Outbound Mail Relay
++
-
Catch-all
-Catch-all
+DNS Records
-DNS Records
++
-
- - {{ record.name }} record - -
-Domain: {{ expectedDnsRecords[record.value].domain }}
-Record type: {{ expectedDnsRecords[record.value].type }}
-Expected value: {{ expectedDnsRecords[record.value].expected }}
-Current value: {{ expectedDnsRecords[record.value].value ? expectedDnsRecords[record.value].value : '[not set]' }}
-- - - Outbound SMTP - - -
-{{ relay.value }}
-+ + {{ record.name }} record + +
+Domain: {{ expectedDnsRecords[record.value].domain }}
+Record type: {{ expectedDnsRecords[record.value].type }}
+Expected value: {{ expectedDnsRecords[record.value].expected }}
+Current value: {{ expectedDnsRecords[record.value].value ? expectedDnsRecords[record.value].value : '[not set]' }}
+ + + Outbound SMTP + + +
+{{ relay.value }}
+Memory
diff --git a/webadmin/src/views/logs.html b/webadmin/src/views/logs.html index 34fe8720a..498813449 100644 --- a/webadmin/src/views/logs.html +++ b/webadmin/src/views/logs.html @@ -1,24 +1,16 @@ diff --git a/webadmin/src/views/logs.js b/webadmin/src/views/logs.js index 0c76e40ed..84d029e30 100644 --- a/webadmin/src/views/logs.js +++ b/webadmin/src/views/logs.js @@ -1,6 +1,7 @@ 'use strict'; /* global moment */ +/* global Terminal */ angular.module('Application').controller('LogsController', ['$scope', '$location', 'Client', function ($scope, $location, Client) { Client.onReady(function () { if (!Client.getUserInfo().admin) $location.path('/'); }); @@ -11,7 +12,9 @@ angular.module('Application').controller('LogsController', ['$scope', '$location $scope.logs = []; $scope.selected = ''; $scope.activeEventSource = null; + $scope.terminal = null; $scope.lines = 10; + $scope.terminalVisible = false; function ab2str(buf) { return String.fromCharCode.apply(null, new Uint16Array(buf)); @@ -29,21 +32,30 @@ angular.module('Application').controller('LogsController', ['$scope', '$location $scope.selected = $scope.logs[0]; }; - $scope.$watch('selected', function (newVal) { - if (!newVal) return; - + function reset() { // close the old event source so we wont receive any new logs if ($scope.activeEventSource) { $scope.activeEventSource.close(); $scope.activeEventSource = null; } - var func = newVal.type === 'platform' ? Client.getPlatformLogs : Client.getAppLogs; - func(newVal.value, true, $scope.lines, function handleLogs(error, result) { - if (error) return console.error(error); + var logViewer = $('.logs-and-term-container'); + logViewer.empty(); - var logViewer = $('.log-line-container'); - logViewer.empty(); + if ($scope.terminal) { + $scope.terminal.destroy(); + $scope.terminal = null; + } + } + + $scope.showLogs = function () { + $scope.terminalVisible = false; + + reset(); + + var func = $scope.selected.type === 'platform' ? Client.getPlatformLogs : Client.getAppLogs; + func($scope.selected.value, true, $scope.lines, function handleLogs(error, result) { + if (error) return console.error(error); $scope.activeEventSource = result; result.onmessage = function handleMessage(message) { @@ -56,17 +68,44 @@ angular.module('Application').controller('LogsController', ['$scope', '$location } // check if we want to auto scroll (this is before the appending, as that skews the check) - var tmp = document.querySelector('.log-line-container'); + var tmp = $('.logs-and-term-container'); var autoScroll = tmp.scrollTop > (tmp.scrollTopMax - 24); var logLine = $('Settings
-About
-Plans
-Cloudron.io Account
--
-
Backups
-- -
-
-
{{ createBackup.message }}
-Updates
-Configure the update schedule for the platform and the apps
-
{{ autoUpdate.error }}
Settings
+About
+Plans
+Cloudron.io Account
++
+
Backups
++ +
+
+
{{ createBackup.message }}
+Updates
+Configure the update schedule for the platform and the apps
+
{{ autoUpdate.error }}
Support
-Documentation and Chat
-Support
+- For any other questions, chat with us live at chat.cloudron.io. -
Documentation and Chat
+Feedback
-+ For any other questions, chat with us live at chat.cloudron.io. +
-
- -
Feedback
+Remote Support
-+
+ +
-
- Do not enable this option before contacting us first at chat.cloudron.io. -
-
- -
Remote Support
++
+ Do not enable this option before contacting us first at chat.cloudron.io. +
+
+ +
Access Tokens
-These tokens can be used to access the Cloudron API.
--
Active Tokens
--
- {{ token.accessToken }} -
-- -
OAuth Apps
-- - -
- {{client.name}} on {{client.location}}{{ config.isCustomDomain ? '.' : '-' }}{{config.fqdn}} -
-- Advanced -
Credentials
--
Scope: {{ client.scope }}
-RedirectURI: {{ client.redirectURI }}
-Client ID: {{ client.id }}
-Client Secret: {{ client.clientSecret }}
- -- -
Tokens
-
-
-
-
-
-
- - -
- {{ token.accessToken }} -
-Access Tokens
+These tokens can be used to access the Cloudron API.
++
Active Tokens
++
+ {{ token.accessToken }} +
++ +
OAuth Apps
++ {{client.name}} on {{client.location}}{{ config.isCustomDomain ? '.' : '-' }}{{config.fqdn}} +
++ Advanced +
Credentials
++
Scope: {{ client.scope }}
+RedirectURI: {{ client.redirectURI }}
+Client ID: {{ client.id }}
+Client Secret: {{ client.clientSecret }}
+ ++ +
Tokens
+
+
+
+
+
+
+ + +
+ {{ token.accessToken }} +
+Users
-Users
+-
-
- -
| - | User | - -Actions | -||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| - - | -- {{ user.username }} {{ user.email }} - | -- {{ user.alternateEmail || user.email }} - | - +
| + | User | + +Actions | +|
|---|---|---|---|
| + + | ++ {{ user.username }} {{ user.email }} + | ++ {{ user.alternateEmail || user.email }} + | + - -- - - - | -
+
-
Groups
-Groups
+-
-
-
| Name | -Actions | -
|---|---|
| - {{ group.name }} - | -- - | -
+
+
+
| Name | +Actions | +
|---|---|
| + {{ group.name }} + | ++ + | +