Allowing to select a service account key as a file for gcdns

This commit is contained in:
Aleksandr Bogdanov
2017-09-12 19:25:54 +02:00
parent ec93d564e9
commit 90cf4f0784
2 changed files with 24 additions and 6 deletions

View File

@@ -31,8 +31,13 @@
<!-- Google Cloud DNS -->
<div class="form-group" ng-class="{ 'has-error': false }" ng-show="dnsCredentials.provider === 'gcdns'">
<label class="control-label" for="dnsCredentialsGcdnsKey">Service Account Key</label>
<input type="text" class="form-control" ng-model="dnsCredentials.gcdnsKey" id="dnsCredentialsGcdnsKey" name="dnsCredentialsGcdnsKey" ng-disabled="dnsCredentials.busy" ng-minlength="16" ng-required="dnsCredentials.provider === 'gcdns'">
<div class="input-group">
<input type="file" id="gcdnsKeyFileInput" style="display:none"/>
<input type="text" class="form-control" placeholder="Service Account Key" ng-model="dnsCredentials.gcdnsKey.keyFileName" id="gcdnsKeyInput" name="cert" onclick="getElementById('gcdnsKeyFileInput').click();" style="cursor: pointer;" ng-disabled="dnsCredentials.busy" required>
<span class="input-group-addon">
<i class="fa fa-upload" onclick="getElementById('gcdnsKeyFileInput').click();"></i>
</span>
</div>
</div>
<!-- DigitalOcean -->

View File

@@ -44,7 +44,7 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio
customDomain: '',
accessKeyId: '',
secretAccessKey: '',
gcdnsKey: '',
gcdnsKey: {keyFileName: "", content: ""},
digitalOceanToken: '',
cloudflareToken: '',
cloudflareEmail: '',
@@ -73,6 +73,8 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio
document.getElementById('adminCertFileInput').onchange = readFileLocally($scope.adminCert, 'certificateFile', 'certificateFileName');
document.getElementById('adminKeyFileInput').onchange = readFileLocally($scope.adminCert, 'keyFile', 'keyFileName');
document.getElementById('gcdnsKeyFileInput').onchange = readFileLocally($scope.dnsCredentials.gcdnsKey, 'content', 'keyFileName');
$scope.setDefaultCert = function () {
$scope.defaultCert.busy = true;
$scope.defaultCert.error = null;
@@ -133,7 +135,8 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio
data.accessKeyId = $scope.dnsCredentials.accessKeyId;
data.secretAccessKey = $scope.dnsCredentials.secretAccessKey;
} else if (data.provider === 'gcdns'){
var serviceAccountKey = JSON.parse($scope.dnsCredentials.gcdnsKey);
var serviceAccountKey = JSON.parse($scope.dnsCredentials.gcdnsKey.content);
if(!serviceAccountKey) {
$scope.dnsCredentials.error = "Cannot parse Google Service Account Key";
$scope.dnsCredentials.busy = false;
@@ -192,7 +195,8 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio
$scope.dnsCredentials.customDomain = '';
$scope.dnsCredentials.accessKeyId = '';
$scope.dnsCredentials.secretAccessKey = '';
$scope.dnsCredentials.gcdnsKey = '';
$scope.dnsCredentials.gcdnsKey.keyFileName = '';
$scope.dnsCredentials.gcdnsKey.content = '';
$scope.dnsCredentials.digitalOceanToken = '';
$scope.dnsCredentials.cloudflareToken = '';
$scope.dnsCredentials.cloudflareEmail = '';
@@ -211,7 +215,16 @@ angular.module('Application').controller('CertsController', ['$scope', '$locatio
$scope.dnsCredentials.customDomain = $scope.config.isCustomDomain ? $scope.config.fqdn : '';
$scope.dnsCredentials.accessKeyId = $scope.dnsConfig.accessKeyId;
$scope.dnsCredentials.secretAccessKey = $scope.dnsConfig.secretAccessKey;
$scope.dnsCredentials.gcdnsKey = $scope.dnsConfig.provider === 'gcdns' ? JSON.stringify({"project_id": $scope.dnsConfig.projectId, "credentials": $scope.dnsConfig.credentials}) : '';
$scope.dnsCredentials.gcdnsKey.keyFileName = '';
$scope.dnsCredentials.gcdnsKey.content = '';
if($scope.dnsConfig.provider === 'gcdns'){
$scope.dnsCredentials.gcdnsKey.keyFileName = "";
$scope.dnsCredentials.gcdnsKey.content = JSON.stringify({
"project_id": $scope.dnsConfig.projectId,
"credentials": $scope.dnsConfig.credentials
});
}
$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;