diff --git a/src/js/setupdns.js b/src/js/setupdns.js index e46fd56a0..403636020 100644 --- a/src/js/setupdns.js +++ b/src/js/setupdns.js @@ -85,6 +85,7 @@ app.controller('SetupDNSController', ['$scope', '$http', '$timeout', 'Client', f { name: 'Gandi LiveDNS', value: 'gandi' }, { name: 'GoDaddy', value: 'godaddy' }, { name: 'Google Cloud DNS', value: 'gcdns' }, + { name: 'Hetzner', value: 'hetzner' }, { name: 'Linode', value: 'linode' }, { name: 'Name.com', value: 'namecom' }, { name: 'Namecheap', value: 'namecheap' }, @@ -108,6 +109,7 @@ app.controller('SetupDNSController', ['$scope', '$http', '$timeout', 'Client', f godaddyApiKey: '', godaddyApiSecret: '', linodeToken: '', + hetznerToken: '', vultrToken: '', nameComUsername: '', nameComToken: '', @@ -193,6 +195,8 @@ app.controller('SetupDNSController', ['$scope', '$http', '$timeout', 'Client', f config.tokenType = $scope.dnsCredentials.cloudflareTokenType; } else if (provider === 'linode') { config.token = $scope.dnsCredentials.linodeToken; + } else if (provider === 'hetzner') { + config.token = $scope.dnsCredentials.hetznerToken; } else if (provider === 'vultr') { config.token = $scope.dnsCredentials.vultrToken; } else if (provider === 'namecom') { diff --git a/src/setupdns.html b/src/setupdns.html index 738346cf6..8068ada3e 100644 --- a/src/setupdns.html +++ b/src/setupdns.html @@ -211,6 +211,12 @@

+ +

+ + +

+

diff --git a/src/translation/en.json b/src/translation/en.json index 48c35c556..15a8ec943 100644 --- a/src/translation/en.json +++ b/src/translation/en.json @@ -990,7 +990,8 @@ "netcupApiPassword": "API Password", "vultrToken": "Vultr Token", "wellKnownDescription": "The values will be used by Cloudron to respond to /.well-known/ URLs. Note that an app must be available on the bare domain {{ domain }} for this to work. See the docs for more information.", - "jitsiHostname": "Jitsi Location" + "jitsiHostname": "Jitsi Location", + "hetznerToken": "Hetzner Token" }, "removeDialog": { "title": "Really remove {{ domain }}?", diff --git a/src/translation/nl.json b/src/translation/nl.json index b62c3de76..e1d8fbaeb 100644 --- a/src/translation/nl.json +++ b/src/translation/nl.json @@ -184,7 +184,8 @@ "invitationTooltip": "Gebruiker uitnodigen", "setGhostTooltip": "Nabootsen", "mailmanagerTooltip": "Deze gebruiker kan gebruikers en mailboxen beheren", - "count": "Totaal gebruikers: {{ count }}" + "count": "Totaal gebruikers: {{ count }}", + "makeLocalTooltip": "Maak gebruiker lokaal" }, "groups": { "title": "Groepen", @@ -376,6 +377,12 @@ "all": "Alle gebruikers", "active": "Actieve gebruikers", "inactive": "Inactieve gebruikers" + }, + "makeLocalDialog": { + "title": "Maak deze gebruiker lokaal", + "description": "De gebruiker wordt hiermee gemigreerd van de externe gebruikerslijst naar die van Cloudron.", + "warning": "Een wachtwoord herstel wordt geïnitieerd om een lokaal wachtwoord in te stellen voor deze gebruiker.", + "submitAction": "Maak lokaal" } }, "profile": { diff --git a/src/translation/ru.json b/src/translation/ru.json index 3e32476fb..4d75a55bd 100644 --- a/src/translation/ru.json +++ b/src/translation/ru.json @@ -376,6 +376,9 @@ "all": "Все пользователи", "active": "Активные пользователи", "inactive": "Неактивные пользователи" + }, + "makeLocalDialog": { + "title": "Установить этого пользователя локально" } }, "profile": { diff --git a/src/views/domains.html b/src/views/domains.html index e4b7d7e0f..f83e0424a 100644 --- a/src/views/domains.html +++ b/src/views/domains.html @@ -123,6 +123,12 @@ + +

+ + +
+
diff --git a/src/views/domains.js b/src/views/domains.js index 129f9f808..4509ccedf 100644 --- a/src/views/domains.js +++ b/src/views/domains.js @@ -37,6 +37,7 @@ angular.module('Application').controller('DomainsController', ['$scope', '$locat { name: 'Gandi LiveDNS', value: 'gandi' }, { name: 'GoDaddy', value: 'godaddy' }, { name: 'Google Cloud DNS', value: 'gcdns' }, + { name: 'Hetzner', value: 'hetzner' }, { name: 'Linode', value: 'linode' }, { name: 'Name.com', value: 'namecom' }, { name: 'Namecheap', value: 'namecheap' }, @@ -53,6 +54,7 @@ angular.module('Application').controller('DomainsController', ['$scope', '$locat case 'cloudflare': return 'Cloudflare'; case 'digitalocean': return 'DigitalOcean'; case 'gandi': return 'Gandi LiveDNS'; + case 'hetzner': return 'Hetzner DNS'; case 'linode': return 'Linode'; case 'namecom': return 'Name.com'; case 'namecheap': return 'Namecheap'; @@ -234,6 +236,7 @@ angular.module('Application').controller('DomainsController', ['$scope', '$locat cloudflareEmail: '', cloudflareTokenType: 'GlobalApiKey', linodeToken: '', + hetznerToken: '', vultrToken: '', nameComToken: '', nameComUsername: '', @@ -287,6 +290,7 @@ angular.module('Application').controller('DomainsController', ['$scope', '$locat } $scope.domainConfigure.digitalOceanToken = domain.provider === 'digitalocean' ? domain.config.token : ''; $scope.domainConfigure.linodeToken = domain.provider === 'linode' ? domain.config.token : ''; + $scope.domainConfigure.hetznerToken = domain.provider === 'hetzner' ? domain.config.token : ''; $scope.domainConfigure.vultrToken = domain.provider === 'vultr' ? domain.config.token : ''; $scope.domainConfigure.gandiApiKey = domain.provider === 'gandi' ? domain.config.token : ''; $scope.domainConfigure.cloudflareToken = domain.provider === 'cloudflare' ? domain.config.token : ''; @@ -352,6 +356,8 @@ angular.module('Application').controller('DomainsController', ['$scope', '$locat data.token = $scope.domainConfigure.digitalOceanToken; } else if (provider === 'linode') { data.token = $scope.domainConfigure.linodeToken; + } else if (provider === 'hetzner') { + data.token = $scope.domainConfigure.hetznerToken; } else if (provider === 'vultr') { data.token = $scope.domainConfigure.vultrToken; } else if (provider === 'gandi') {