aboutsummaryrefslogtreecommitdiff
path: root/setup
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2021-03-05 10:40:27 +0000
committerGitHub <noreply@github.com>2021-03-05 10:40:27 +0000
commit1ad96e2e2df9dc1f5fa7d31522babd6a64ca517f (patch)
tree166e2051273fc89f50d6efac1c40a12cd7c077a7 /setup
parent9557ccada4efe50d0f370019ad0b9f017fc7ebcf (diff)
Tweak AS registration check and AS component HTTP clients (#1785)
* Tweak AS registration check * Check appservice usernames using correct function * Update sytest-whitelist * Use gomatrixserverlib.Client since that allows us to disable TLS validation using the config * Add appservice-specific client and ability to control TLS validation for appservices only * Set timeout on appservice client * Review comments * Remove dead code * Enforce LoginTypeApplicationService after all * Check correct auth type field
Diffstat (limited to 'setup')
-rw-r--r--setup/base.go16
-rw-r--r--setup/config/config_appservice.go4
2 files changed, 20 insertions, 0 deletions
diff --git a/setup/base.go b/setup/base.go
index e9aa2a45..f8a45409 100644
--- a/setup/base.go
+++ b/setup/base.go
@@ -290,6 +290,22 @@ func (b *BaseDendrite) CreateClient() *gomatrixserverlib.Client {
return client
}
+// CreateAppserviceClient creates a new client for application services.
+// It has a specific timeout and obeys TLS validation from the appservice
+// config rather than the federation config.
+func (b *BaseDendrite) CreateAppserviceClient() *gomatrixserverlib.Client {
+ opts := []gomatrixserverlib.ClientOption{
+ gomatrixserverlib.WithSkipVerify(b.Cfg.AppServiceAPI.DisableTLSValidation),
+ gomatrixserverlib.WithTimeout(time.Second * 60),
+ }
+ if b.Cfg.Global.DNSCache.Enabled {
+ opts = append(opts, gomatrixserverlib.WithDNSCache(b.DNSCache))
+ }
+ client := gomatrixserverlib.NewClient(opts...)
+ client.SetUserAgent(fmt.Sprintf("Dendrite/%s", internal.VersionString()))
+ return client
+}
+
// CreateFederationClient creates a new federation client. Should only be called
// once per component.
func (b *BaseDendrite) CreateFederationClient() *gomatrixserverlib.FederationClient {
diff --git a/setup/config/config_appservice.go b/setup/config/config_appservice.go
index a042691d..a6f77abf 100644
--- a/setup/config/config_appservice.go
+++ b/setup/config/config_appservice.go
@@ -33,6 +33,10 @@ type AppServiceAPI struct {
Database DatabaseOptions `yaml:"database"`
+ // DisableTLSValidation disables the validation of X.509 TLS certs
+ // on appservice endpoints. This is not recommended in production!
+ DisableTLSValidation bool `yaml:"disable_tls_validation"`
+
ConfigFiles []string `yaml:"config_files"`
}