diff --git a/webadmin/src/views/certs.html b/webadmin/src/views/certs.html
index 974ea9fe5..25e23b0d7 100644
--- a/webadmin/src/views/certs.html
+++ b/webadmin/src/views/certs.html
@@ -31,8 +31,13 @@
diff --git a/webadmin/src/views/certs.js b/webadmin/src/views/certs.js
index c386c9fa6..29d8deeaf 100644
--- a/webadmin/src/views/certs.js
+++ b/webadmin/src/views/certs.js
@@ -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;