diff --git a/webadmin/src/index.html b/webadmin/src/index.html index c84a57573..249c9301f 100644 --- a/webadmin/src/index.html +++ b/webadmin/src/index.html @@ -147,6 +147,7 @@
  • Account
  • Graphs
  • Support
  • +
  • DNS & Certs
  • Settings
  • Logout
  • diff --git a/webadmin/src/js/index.js b/webadmin/src/js/index.js index 7a120317e..f4ad1d7ed 100644 --- a/webadmin/src/js/index.js +++ b/webadmin/src/js/index.js @@ -31,6 +31,9 @@ app.config(['$routeProvider', function ($routeProvider) { }).when('/graphs', { controller: 'GraphsController', templateUrl: 'views/graphs.html' + }).when('/certs', { + controller: 'CertsController', + templateUrl: 'views/certs.html' }).when('/settings', { controller: 'SettingsController', templateUrl: 'views/settings.html' diff --git a/webadmin/src/views/certs.html b/webadmin/src/views/certs.html new file mode 100644 index 000000000..0874913f3 --- /dev/null +++ b/webadmin/src/views/certs.html @@ -0,0 +1,125 @@ +
    +
    +

    DNS & Certs

    +
    +
    + +
    +
    +

    SSL Certificates

    +
    +
    + +
    +
    +
    +
    +
    + +

    This certificate has to be wildcard certificates and will be used for all apps, which were not configured to use a specific certificate.

    +
    {{ defaultCert.error }}
    +
    Upload successful
    +
    +
    + + + + + +
    +
    +
    +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +

    This certificate will be used for this Settings application.

    +
    {{ adminCert.error }}
    +
    Upload successful
    +
    +
    + + + + + +
    +
    +
    +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +

    DNS Credentials

    +
    +
    + +
    +
    +
    +

    Currently only Amazon Route53 is supported. Let us know if you require a different DNS provider here.

    + + + + + + + + + + + + + + +
    Access Key Id{{ dnsConfig.accessKeyId }}
    Secret Access Keyhidden
    Done    
    + +
    +

    The security credentials have to be valid for full Route53 access.

    +
    +
    +
    {{ dnsCredentials.error }}
    + +
    + + +
    +
    + + +
    + + +
    +
    +
    +
    +
    +
    diff --git a/webadmin/src/views/certs.js b/webadmin/src/views/certs.js new file mode 100644 index 000000000..5b2b49c44 --- /dev/null +++ b/webadmin/src/views/certs.js @@ -0,0 +1,145 @@ +'use strict'; + +angular.module('Application').controller('CertsController', ['$scope', '$location', 'Client', function ($scope, $location, Client) { + Client.onReady(function () { if (!Client.getUserInfo().admin) $location.path('/'); }); + + $scope.defaultCert = { + error: null, + success: false, + busy: false, + certificateFile: null, + certificateFileName: '', + keyFile: null, + keyFileName: '' + }; + + $scope.adminCert = { + error: null, + success: false, + busy: false, + certificateFile: null, + certificateFileName: '', + keyFile: null, + keyFileName: '' + }; + + $scope.dnsCredentials = { + error: null, + success: false, + busy: false, + formVisible: false, + accessKeyId: '', + secretAccessKey: '', + provider: 'route53' + }; + + function readFileLocally(obj, file, fileName) { + return function (event) { + $scope.$apply(function () { + obj[file] = null; + obj[fileName] = event.target.files[0].name; + + var reader = new FileReader(); + reader.onload = function (result) { + if (!result.target || !result.target.result) return console.error('Unable to read local file'); + obj[file] = result.target.result; + }; + reader.readAsText(event.target.files[0]); + }); + }; + } + + document.getElementById('defaultCertFileInput').onchange = readFileLocally($scope.defaultCert, 'certificateFile', 'certificateFileName'); + document.getElementById('defaultKeyFileInput').onchange = readFileLocally($scope.defaultCert, 'keyFile', 'keyFileName'); + document.getElementById('adminCertFileInput').onchange = readFileLocally($scope.adminCert, 'certificateFile', 'certificateFileName'); + document.getElementById('adminKeyFileInput').onchange = readFileLocally($scope.adminCert, 'keyFile', 'keyFileName'); + + $scope.setDefaultCert = function () { + $scope.defaultCert.busy = true; + $scope.defaultCert.error = null; + $scope.defaultCert.success = false; + + Client.setCertificate($scope.defaultCert.certificateFile, $scope.defaultCert.keyFile, function (error) { + if (error) { + $scope.defaultCert.error = error.message; + } else { + $scope.defaultCert.success = true; + $scope.defaultCert.certificateFileName = ''; + $scope.defaultCert.keyFileName = ''; + } + + $scope.defaultCert.busy = false; + }); + }; + + $scope.setAdminCert = function () { + $scope.adminCert.busy = true; + $scope.adminCert.error = null; + $scope.adminCert.success = false; + + Client.setAdminCertificate($scope.adminCert.certificateFile, $scope.adminCert.keyFile, function (error) { + if (error) { + $scope.adminCert.error = error.message; + } else { + $scope.adminCert.success = true; + $scope.adminCert.certificateFileName = ''; + $scope.adminCert.keyFileName = ''; + } + + $scope.adminCert.busy = false; + }); + }; + + $scope.setDnsCredentials = function () { + $scope.dnsCredentials.busy = true; + $scope.dnsCredentials.error = null; + $scope.dnsCredentials.success = false; + + var data = { + provider: $scope.dnsCredentials.provider, + accessKeyId: $scope.dnsCredentials.accessKeyId, + secretAccessKey: $scope.dnsCredentials.secretAccessKey + }; + + Client.setDnsConfig(data, function (error) { + if (error) { + $scope.dnsCredentials.error = error.message; + } else { + $scope.dnsCredentials.success = true; + + $scope.dnsConfig.accessKeyId = $scope.dnsCredentials.accessKeyId; + $scope.dnsConfig.secretAccessKey = $scope.dnsCredentials.secretAccessKey; + + $scope.dnsCredentials.accessKeyId = ''; + $scope.dnsCredentials.secretAccessKey = ''; + + $('#collapseDnsCredentialsForm').collapse('hide'); + $scope.dnsCredentials.formVisible = false; + } + + $scope.dnsCredentials.busy = false; + }); + }; + + $scope.showDnsCredentialsForm = function () { + $scope.dnsCredentials.busy = false; + $scope.dnsCredentials.success = false; + $scope.dnsCredentials.error = null; + $scope.dnsCredentials.accessKeyId = ''; + $scope.dnsCredentials.secretAccessKey = ''; + $scope.dnsCredentialsForm.$setPristine(); + $scope.dnsCredentialsForm.$setUntouched(); + + $scope.dnsCredentials.formVisible = true; + $('#collapseDnsCredentialsForm').collapse('show'); + $('#dnsCredentialsAccessKeyId').focus(); + }; + + Client.onReady(function () { + Client.getDnsConfig(function (error, result) { + if (error) return console.error(error); + + $scope.dnsConfig = result; + }); + }); +}]); diff --git a/webadmin/src/views/settings.html b/webadmin/src/views/settings.html index 6be7f5fd9..96b1d7838 100644 --- a/webadmin/src/views/settings.html +++ b/webadmin/src/views/settings.html @@ -143,126 +143,6 @@ -
    -
    -

    SSL Certificates

    -
    -
    - -
    -
    -
    -
    -
    - -

    This certificate has to be wildcard certificates and will be used for all apps, which were not configured to use a specific certificate.

    -
    {{ defaultCert.error }}
    -
    Upload successful
    -
    -
    - - - - - -
    -
    -
    -
    - - - - - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    - -

    This certificate will be used for this Settings application.

    -
    {{ adminCert.error }}
    -
    Upload successful
    -
    -
    - - - - - -
    -
    -
    -
    - - - - - -
    -
    - -
    -
    -
    -
    -
    - -
    -
    -

    DNS Credentials

    -
    -
    - -
    -
    -
    -

    Currently only Amazon Route53 is supported. Let us know if you require a different DNS provider here.

    - - - - - - - - - - - - - - -
    Access Key Id{{ dnsConfig.accessKeyId }}
    Secret Access Keyhidden
    Done    
    - -
    -

    The security credentials have to be valid for full Route53 access.

    -
    -
    -
    {{ dnsCredentials.error }}
    - -
    - - -
    -
    - - -
    - - -
    -
    -
    -
    -
    -
    -

    Developer Mode

    diff --git a/webadmin/src/views/settings.js b/webadmin/src/views/settings.js index c9872357d..faf0f2164 100644 --- a/webadmin/src/views/settings.js +++ b/webadmin/src/views/settings.js @@ -84,124 +84,6 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca }] }; - $scope.defaultCert = { - error: null, - success: false, - busy: false, - certificateFile: null, - certificateFileName: '', - keyFile: null, - keyFileName: '' - }; - - $scope.adminCert = { - error: null, - success: false, - busy: false, - certificateFile: null, - certificateFileName: '', - keyFile: null, - keyFileName: '' - }; - - $scope.dnsCredentials = { - error: null, - success: false, - busy: false, - formVisible: false, - accessKeyId: '', - secretAccessKey: '', - provider: 'route53' - }; - - function readFileLocally(obj, file, fileName) { - return function (event) { - $scope.$apply(function () { - obj[file] = null; - obj[fileName] = event.target.files[0].name; - - var reader = new FileReader(); - reader.onload = function (result) { - if (!result.target || !result.target.result) return console.error('Unable to read local file'); - obj[file] = result.target.result; - }; - reader.readAsText(event.target.files[0]); - }); - }; - } - - document.getElementById('defaultCertFileInput').onchange = readFileLocally($scope.defaultCert, 'certificateFile', 'certificateFileName'); - document.getElementById('defaultKeyFileInput').onchange = readFileLocally($scope.defaultCert, 'keyFile', 'keyFileName'); - document.getElementById('adminCertFileInput').onchange = readFileLocally($scope.adminCert, 'certificateFile', 'certificateFileName'); - document.getElementById('adminKeyFileInput').onchange = readFileLocally($scope.adminCert, 'keyFile', 'keyFileName'); - - $scope.setDefaultCert = function () { - $scope.defaultCert.busy = true; - $scope.defaultCert.error = null; - $scope.defaultCert.success = false; - - Client.setCertificate($scope.defaultCert.certificateFile, $scope.defaultCert.keyFile, function (error) { - if (error) { - $scope.defaultCert.error = error.message; - } else { - $scope.defaultCert.success = true; - $scope.defaultCert.certificateFileName = ''; - $scope.defaultCert.keyFileName = ''; - } - - $scope.defaultCert.busy = false; - }); - }; - - $scope.setAdminCert = function () { - $scope.adminCert.busy = true; - $scope.adminCert.error = null; - $scope.adminCert.success = false; - - Client.setAdminCertificate($scope.adminCert.certificateFile, $scope.adminCert.keyFile, function (error) { - if (error) { - $scope.adminCert.error = error.message; - } else { - $scope.adminCert.success = true; - $scope.adminCert.certificateFileName = ''; - $scope.adminCert.keyFileName = ''; - } - - $scope.adminCert.busy = false; - }); - }; - - $scope.setDnsCredentials = function () { - $scope.dnsCredentials.busy = true; - $scope.dnsCredentials.error = null; - $scope.dnsCredentials.success = false; - - var data = { - provider: $scope.dnsCredentials.provider, - accessKeyId: $scope.dnsCredentials.accessKeyId, - secretAccessKey: $scope.dnsCredentials.secretAccessKey - }; - - Client.setDnsConfig(data, function (error) { - if (error) { - $scope.dnsCredentials.error = error.message; - } else { - $scope.dnsCredentials.success = true; - - $scope.dnsConfig.accessKeyId = $scope.dnsCredentials.accessKeyId; - $scope.dnsConfig.secretAccessKey = $scope.dnsCredentials.secretAccessKey; - - $scope.dnsCredentials.accessKeyId = ''; - $scope.dnsCredentials.secretAccessKey = ''; - - $('#collapseDnsCredentialsForm').collapse('hide'); - $scope.dnsCredentials.formVisible = false; - } - - $scope.dnsCredentials.busy = false; - }); - }; - $scope.setPreviewAvatar = function (avatar) { $scope.avatarChange.avatar = avatar; }; @@ -347,20 +229,6 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca }); }; - $scope.showDnsCredentialsForm = function () { - $scope.dnsCredentials.busy = false; - $scope.dnsCredentials.success = false; - $scope.dnsCredentials.error = null; - $scope.dnsCredentials.accessKeyId = ''; - $scope.dnsCredentials.secretAccessKey = ''; - $scope.dnsCredentialsForm.$setPristine(); - $scope.dnsCredentialsForm.$setUntouched(); - - $scope.dnsCredentials.formVisible = true; - $('#collapseDnsCredentialsForm').collapse('show'); - $('#dnsCredentialsAccessKeyId').focus(); - }; - $scope.showChangeDeveloperMode = function () { developerModeChangeReset(); $('#developerModeChangeModal').modal('show'); @@ -396,12 +264,6 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca fetchBackups(); $scope.avatar.url = '//my-' + $scope.config.fqdn + '/api/v1/cloudron/avatar'; - - Client.getDnsConfig(function (error, result) { - if (error) return console.error(error); - - $scope.dnsConfig = result; - }); }); // setup all the dialog focus handling