Files
cloudron-box/webadmin/src/js/setupdns.js

91 lines
2.8 KiB
JavaScript
Raw Normal View History

2017-01-05 11:02:43 +01:00
'use strict';
// create main application module
var app = angular.module('Application', ['angular-md5', 'ui-notification', 'ngTld']);
2017-01-05 11:02:43 +01:00
app.controller('SetupDNSController', ['$scope', '$http', 'Client', 'ngTld', function ($scope, $http, Client, ngTld) {
2017-01-05 11:02:43 +01:00
$scope.initialized = false;
$scope.busy = false;
$scope.error = null;
$scope.provider = '';
$scope.showDNSSetup = false;
2017-01-28 18:27:22 -08:00
// keep in sync with certs.js
2017-01-05 11:02:43 +01:00
$scope.dnsProvider = [
{ name: 'AWS Route53', value: 'route53' },
2017-01-05 12:08:52 +01:00
{ name: 'Digital Ocean', value: 'digitalocean' },
{ name: 'Wildcard', value: 'wildcard' },
2017-01-10 12:34:28 +01:00
{ name: 'Manual (not recommended)', value: 'manual' },
2017-01-05 12:08:52 +01:00
{ name: 'No-op (only for development)', value: 'noop' }
2017-01-05 11:02:43 +01:00
];
$scope.dnsCredentials = {
error: null,
busy: false,
domain: '',
accessKeyId: '',
secretAccessKey: '',
digitalOceanToken: '',
provider: 'route53'
};
2017-01-05 12:31:37 +01:00
$scope.setDnsCredentials = function () {
$scope.dnsCredentials.busy = true;
2017-01-05 11:02:43 +01:00
var data = {
domain: $scope.dnsCredentials.domain,
provider: $scope.dnsCredentials.provider,
accessKeyId: $scope.dnsCredentials.accessKeyId,
secretAccessKey: $scope.dnsCredentials.secretAccessKey,
token: $scope.dnsCredentials.digitalOceanToken
};
// special case the wildcard provider
if (data.provider === 'wildcard') {
data.provider = 'manual';
data.wildcard = true;
}
2017-01-05 11:53:45 +01:00
Client.setupDnsConfig(data, function (error) {
2017-01-05 11:02:43 +01:00
if (error) {
2017-01-05 12:31:37 +01:00
$scope.dnsCredentials.busy = false;
2017-01-05 11:02:43 +01:00
$scope.dnsCredentials.error = error.message;
return;
}
waitForDnsSetup();
});
};
function waitForDnsSetup() {
$scope.busy = true;
Client.getStatus(function (error, status) {
if (!error && status.adminFqdn && status.configState.dns && status.configState.tls) {
2017-01-10 23:35:15 +01:00
window.location.href = 'https://' + status.adminFqdn + '/setup.html';
}
setTimeout(waitForDnsSetup, 5000);
2017-01-05 11:02:43 +01:00
});
}
2017-01-05 11:02:43 +01:00
Client.getStatus(function (error, status) {
if (error) {
window.location.href = '/error.html';
return;
}
// domain is currently like a lock flag
if (status.adminFqdn) return waitForDnsSetup();
2017-01-05 11:02:43 +01:00
2017-01-05 16:32:34 +01:00
if (status.provider === 'digitalocean') $scope.dnsCredentials.provider = 'digitalocean';
if (status.provider === 'ami') {
// remove route53 on ami
$scope.dnsProvider.shift();
$scope.dnsCredentials.provider = 'wildcard';
}
2017-01-05 16:32:34 +01:00
2017-01-05 11:02:43 +01:00
$scope.provider = status.provider;
$scope.initialized = true;
});
}]);