diff --git a/src/js/client.js b/src/js/client.js index 46adbe614..6bf513e1e 100644 --- a/src/js/client.js +++ b/src/js/client.js @@ -2071,12 +2071,13 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout }); }; - Client.prototype.addDomain = function (domain, zoneName, provider, config, fallbackCertificate, tlsConfig, callback) { + Client.prototype.addDomain = function (domain, zoneName, provider, config, fallbackCertificate, tlsConfig, wellKnown, callback) { var data = { domain: domain, provider: provider, config: config, - tlsConfig: tlsConfig + tlsConfig: tlsConfig, + wellKnown: wellKnown }; if (zoneName) data.zoneName = zoneName; var that = this; @@ -2092,11 +2093,12 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout }); }; - Client.prototype.updateDomain = function (domain, zoneName, provider, config, fallbackCertificate, tlsConfig, callback) { + Client.prototype.updateDomain = function (domain, zoneName, provider, config, fallbackCertificate, tlsConfig, wellKnown, callback) { var data = { provider: provider, config: config, - tlsConfig: tlsConfig + tlsConfig: tlsConfig, + wellKnown: wellKnown }; if (zoneName) data.zoneName = zoneName; var that = this; diff --git a/src/views/domains.html b/src/views/domains.html index 015e4abc6..5a2a22446 100644 --- a/src/views/domains.html +++ b/src/views/domains.html @@ -136,6 +136,16 @@ {{ 'domains.domainDialog.advancedAction' | tr }}
+
+ + +
+ +
+ + +
+
diff --git a/src/views/domains.js b/src/views/domains.js index a0b3f3584..315c7104d 100644 --- a/src/views/domains.js +++ b/src/views/domains.js @@ -149,6 +149,9 @@ angular.module('Application').controller('DomainsController', ['$scope', '$locat provider: 'route53', zoneName: '', + mastodonHostname: '', + matrixHostname: '', + tlsConfig: { provider: 'letsencrypt-prod-wildcard' }, @@ -212,6 +215,21 @@ angular.module('Application').controller('DomainsController', ['$scope', '$locat if (domain.tlsConfig.wildcard) $scope.domainConfigure.tlsConfig.provider += '-wildcard'; } $scope.domainConfigure.zoneName = domain.zoneName; + + + $scope.domainConfigure.matrixHostname = ''; + $scope.domainConfigure.mastodonHostname = ''; + + try { + if (domain.wellKnown && domain.wellKnown['matrix']) { + $scope.domainConfigure.matrixHostname = JSON.parse(domain.wellKnown['matrix'])['m.server']; + } + if (domain.wellKnown && domain.wellKnown['host-meta']) { + $scope.domainConfigure.mastodonHostname = domain.wellKnown['host-meta'].match(new RegExp('template="https://(.*?)/'))[1]; + } + } catch (e) { + console.error(e); + } } else { $scope.domainConfigure.adding = true; } @@ -285,10 +303,21 @@ angular.module('Application').controller('DomainsController', ['$scope', '$locat tlsConfig.wildcard = true; } + var wellKnown = {}; + if ($scope.domainConfigure.matrixHostname) { + wellKnown['matrix'] = JSON.stringify({ 'm.server': $scope.domainConfigure.matrixHostname }); + } + if ($scope.domainConfigure.mastodonHostname) { + wellKnown['host-meta'] = '\n' + + '\n' + + '\n' + + ''; + } + // choose the right api, since we reuse this for adding and configuring domains var func; - if ($scope.domainConfigure.adding) func = Client.addDomain.bind(Client, $scope.domainConfigure.newDomain, $scope.domainConfigure.zoneName, provider, data, fallbackCertificate, tlsConfig); - else func = Client.updateDomain.bind(Client, $scope.domainConfigure.domain.domain, $scope.domainConfigure.zoneName, provider, data, fallbackCertificate, tlsConfig); + if ($scope.domainConfigure.adding) func = Client.addDomain.bind(Client, $scope.domainConfigure.newDomain, $scope.domainConfigure.zoneName, provider, data, fallbackCertificate, tlsConfig, wellKnown); + else func = Client.updateDomain.bind(Client, $scope.domainConfigure.domain.domain, $scope.domainConfigure.zoneName, provider, data, fallbackCertificate, tlsConfig, wellKnown); func(function (error) { $scope.domainConfigure.busy = false;