add cloudflare ui components

This commit is contained in:
Johannes Zellner
2017-04-26 12:11:54 +02:00
parent cb7fea97af
commit 83ddf0a62c
2 changed files with 33 additions and 8 deletions

View File

@@ -35,6 +35,17 @@
<input type="text" class="form-control" ng-model="dnsCredentials.digitalOceanToken" id="dnsCredentialsDigitalOceanToken" name="digitalOceanToken" ng-disabled="dnsCredentials.busy" ng-required="dnsCredentials.provider === 'digitalocean'">
</div>
<!-- Cloudflare -->
<div class="form-group" ng-class="{ 'has-error': false }" ng-show="dnsCredentials.provider === 'cloudflare'">
<label class="control-label" for="dnsCredentialsCloudflareToken">Cloudflare token</label>
<input type="text" class="form-control" ng-model="dnsCredentials.cloudflareToken" id="dnsCredentialsCloudflareToken" name="cloudflareToken" placeholder="API Token" ng-required="dnsCredentials.provider === 'cloudflare'" ng-disabled="dnsCredentials.busy">
</div>
<div class="form-group" ng-class="{ 'has-error': false }" ng-show="dnsCredentials.provider === 'cloudflare'">
<label class="control-label" for="dnsCredentialsCloudflareEmail">Cloudflare email</label>
<input type="email" class="form-control" ng-model="dnsCredentials.cloudflareEmail" id="dnsCredentialsCloudflareEmail" name="cloudflareEmail" placeholder="Email" ng-required="dnsCredentials.provider === 'cloudflare'" ng-disabled="dnsCredentials.busy">
</div>
<!-- all provider -->
<div class="form-group" ng-class="{ 'has-error': false }">
<label class="control-label" for="dnsCredentialsPassword">Provide your password to confirm this action</label>
<input type="password" class="form-control" ng-model="dnsCredentials.password" id="dnsCredentialsPassword" name="password" ng-disabled="dnsCredentials.busy" required>
@@ -52,6 +63,10 @@
This domain must be hosted on <a href="https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean#step-two%E2%80%94change-your-domain-server" target="_blank">DigitalOcean</a>.
</p>
<p ng-show="dnsCredentials.provider === 'cloudflare'">
This domain must be hosted on <a href="https://www.cloudflare.com" target="_blank">Cloudflare</a>.
</p>
<p ng-show="dnsCredentials.provider === 'wildcard'">
Setup <i>A</i> records for <b>*.{{ dnsCredentials.customDomain || 'example.com' }}</b> and <b>{{ dnsCredentials.customDomain || 'example.com' }}</b> to this server's IP.
</p>

View File

@@ -10,6 +10,7 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio
$scope.dnsProvider = [
{ name: 'AWS Route53', value: 'route53' },
{ name: 'Digital Ocean', value: 'digitalocean' },
{ name: 'Cloudflare', value: 'cloudflare' },
{ name: 'Wildcard', value: 'wildcard' },
{ name: 'Manual (not recommended)', value: 'manual' },
{ name: 'No-op (only for development)', value: 'noop' }
@@ -43,6 +44,8 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio
accessKeyId: '',
secretAccessKey: '',
digitalOceanToken: '',
cloudflareToken: '',
cloudflareEmail: '',
provider: 'route53',
password: ''
};
@@ -115,10 +118,7 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio
var migrateDomain = $scope.dnsCredentials.customDomain !== $scope.config.fqdn;
var data = {
provider: $scope.dnsCredentials.provider,
accessKeyId: $scope.dnsCredentials.accessKeyId,
secretAccessKey: $scope.dnsCredentials.secretAccessKey,
token: $scope.dnsCredentials.digitalOceanToken
provider: $scope.dnsCredentials.provider
};
// special case the wildcard provider
@@ -127,6 +127,16 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio
data.wildcard = true;
}
if (data.provider === 'route53') {
data.accessKeyId = $scope.dnsCredentials.accessKeyId;
data.secretAccessKey = $scope.dnsCredentials.secretAccessKey;
} else if (data.provider === 'digitalocean') {
data.token = $scope.dnsCredentials.digitalOceanToken;
} else if (data.provider === 'cloudflare') {
data.token = $scope.dnsCredentials.cloudflareToken;
data.email = $scope.dnsCredentials.cloudflareEmail;
}
var func;
if (migrateDomain) {
data.domain = $scope.dnsCredentials.customDomain;
@@ -141,10 +151,6 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio
} else {
$scope.dnsCredentials.success = true;
$scope.dnsConfig.accessKeyId = $scope.dnsCredentials.accessKeyId;
$scope.dnsConfig.secretAccessKey = $scope.dnsCredentials.secretAccessKey;
$scope.dnsConfig.token = $scope.dnsCredentials.digitalOceanToken;
$('#dnsCredentialsModal').modal('hide');
dnsCredentialsReset();
@@ -173,6 +179,8 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio
$scope.dnsCredentials.accessKeyId = '';
$scope.dnsCredentials.secretAccessKey = '';
$scope.dnsCredentials.digitalOceanToken = '';
$scope.dnsCredentials.cloudflareToken = '';
$scope.dnsCredentials.cloudflareEmail = '';
$scope.dnsCredentials.password = '';
$scope.dnsCredentialsForm.$setPristine();
@@ -189,6 +197,8 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio
$scope.dnsCredentials.accessKeyId = $scope.dnsConfig.accessKeyId;
$scope.dnsCredentials.secretAccessKey = $scope.dnsConfig.secretAccessKey;
$scope.dnsCredentials.digitalOceanToken = $scope.dnsConfig.provider === 'digitalocean' ? $scope.dnsConfig.token : '';
$scope.dnsCredentials.cloudflareToken = $scope.dnsConfig.provider === 'cloudflare' ? $scope.dnsConfig.token : '';
$scope.dnsCredentials.cloudflareEmail = $scope.dnsConfig.email;
$scope.dnsCredentials.provider = $scope.dnsConfig.provider === 'caas' ? 'route53' : $scope.dnsConfig.provider;
$scope.dnsCredentials.provider = ($scope.dnsCredentials.provider === 'manual' && $scope.dnsConfig.wildcard) ? 'wildcard' : $scope.dnsCredentials.provider;