aboutsummaryrefslogtreecommitdiff
path: root/setup/config
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2023-02-14 12:47:47 +0100
committerGitHub <noreply@github.com>2023-02-14 12:47:47 +0100
commit11d9b9db0e96c51c1430d451d23cf5ae9f36e4ee (patch)
treea0837bfa69051295b76140e3940a45fc61854cab /setup/config
parentcc59879faa57cac043cf5f1585773b301994bebf (diff)
Remove polylith/API mode (#2967)
This removes most of the code used for polylith/API mode. This removes the `/api` internal endpoints entirely. Binary size change roughly 5%: ``` 51437560 Feb 13 10:15 dendrite-monolith-server # old 48759008 Feb 13 10:15 dendrite-monolith-server # new ```
Diffstat (limited to 'setup/config')
-rw-r--r--setup/config/config.go112
-rw-r--r--setup/config/config_appservice.go15
-rw-r--r--setup/config/config_clientapi.go16
-rw-r--r--setup/config/config_federationapi.go23
-rw-r--r--setup/config/config_global.go34
-rw-r--r--setup/config/config_jetstream.go9
-rw-r--r--setup/config/config_keyserver.go16
-rw-r--r--setup/config/config_mediaapi.go20
-rw-r--r--setup/config/config_mscs.go10
-rw-r--r--setup/config/config_relayapi.go19
-rw-r--r--setup/config/config_roomserver.go16
-rw-r--r--setup/config/config_syncapi.go23
-rw-r--r--setup/config/config_test.go50
-rw-r--r--setup/config/config_userapi.go16
14 files changed, 56 insertions, 323 deletions
diff --git a/setup/config/config.go b/setup/config/config.go
index 2b38cd51..84876616 100644
--- a/setup/config/config.go
+++ b/setup/config/config.go
@@ -79,8 +79,6 @@ type Dendrite struct {
// Any information derived from the configuration options for later use.
Derived Derived `yaml:"-"`
-
- IsMonolith bool `yaml:"-"`
}
// TODO: Kill Derived
@@ -114,15 +112,6 @@ type Derived struct {
// servers from creating RoomIDs in exclusive application service namespaces
}
-type InternalAPIOptions struct {
- Listen HTTPAddress `yaml:"listen"`
- Connect HTTPAddress `yaml:"connect"`
-}
-
-type ExternalAPIOptions struct {
- Listen HTTPAddress `yaml:"listen"`
-}
-
// A Path on the filesystem.
type Path string
@@ -191,7 +180,7 @@ type ConfigErrors []string
// Load a yaml config file for a server run as multiple processes or as a monolith.
// Checks the config to ensure that it is valid.
-func Load(configPath string, monolith bool) (*Dendrite, error) {
+func Load(configPath string) (*Dendrite, error) {
configData, err := os.ReadFile(configPath)
if err != nil {
return nil, err
@@ -202,28 +191,26 @@ func Load(configPath string, monolith bool) (*Dendrite, error) {
}
// Pass the current working directory and os.ReadFile so that they can
// be mocked in the tests
- return loadConfig(basePath, configData, os.ReadFile, monolith)
+ return loadConfig(basePath, configData, os.ReadFile)
}
func loadConfig(
basePath string,
configData []byte,
readFile func(string) ([]byte, error),
- monolithic bool,
) (*Dendrite, error) {
var c Dendrite
c.Defaults(DefaultOpts{
- Generate: false,
- Monolithic: monolithic,
+ Generate: false,
+ SingleDatabase: true,
})
- c.IsMonolith = monolithic
var err error
if err = yaml.Unmarshal(configData, &c); err != nil {
return nil, err
}
- if err = c.check(monolithic); err != nil {
+ if err = c.check(); err != nil {
return nil, err
}
@@ -333,8 +320,8 @@ func (config *Dendrite) Derive() error {
}
type DefaultOpts struct {
- Generate bool
- Monolithic bool
+ Generate bool
+ SingleDatabase bool
}
// SetDefaults sets default config values if they are not explicitly set.
@@ -355,9 +342,9 @@ func (c *Dendrite) Defaults(opts DefaultOpts) {
c.Wiring()
}
-func (c *Dendrite) Verify(configErrs *ConfigErrors, isMonolith bool) {
+func (c *Dendrite) Verify(configErrs *ConfigErrors) {
type verifiable interface {
- Verify(configErrs *ConfigErrors, isMonolith bool)
+ Verify(configErrs *ConfigErrors)
}
for _, c := range []verifiable{
&c.Global, &c.ClientAPI, &c.FederationAPI,
@@ -365,7 +352,7 @@ func (c *Dendrite) Verify(configErrs *ConfigErrors, isMonolith bool) {
&c.SyncAPI, &c.UserAPI,
&c.AppServiceAPI, &c.RelayAPI, &c.MSCs,
} {
- c.Verify(configErrs, isMonolith)
+ c.Verify(configErrs)
}
}
@@ -415,14 +402,6 @@ func checkNotEmpty(configErrs *ConfigErrors, key, value string) {
}
}
-// checkNotZero verifies the given value is not zero in the configuration.
-// If it is, adds an error to the list.
-func checkNotZero(configErrs *ConfigErrors, key string, value int64) {
- if value == 0 {
- configErrs.Add(fmt.Sprintf("missing config key %q", key))
- }
-}
-
// checkPositive verifies the given value is positive (zero included)
// in the configuration. If it is not, adds an error to the list.
func checkPositive(configErrs *ConfigErrors, key string, value int64) {
@@ -431,26 +410,6 @@ func checkPositive(configErrs *ConfigErrors, key string, value int64) {
}
}
-// checkURL verifies that the parameter is a valid URL
-func checkURL(configErrs *ConfigErrors, key, value string) {
- if value == "" {
- configErrs.Add(fmt.Sprintf("missing config key %q", key))
- return
- }
- url, err := url.Parse(value)
- if err != nil {
- configErrs.Add(fmt.Sprintf("config key %q contains invalid URL (%s)", key, err.Error()))
- return
- }
- switch url.Scheme {
- case "http":
- case "https":
- default:
- configErrs.Add(fmt.Sprintf("config key %q URL should be http:// or https://", key))
- return
- }
-}
-
// checkLogging verifies the parameters logging.* are valid.
func (config *Dendrite) checkLogging(configErrs *ConfigErrors) {
for _, logrusHook := range config.Logging {
@@ -461,7 +420,7 @@ func (config *Dendrite) checkLogging(configErrs *ConfigErrors) {
// check returns an error type containing all errors found within the config
// file.
-func (config *Dendrite) check(_ bool) error { // monolithic
+func (config *Dendrite) check() error { // monolithic
var configErrs ConfigErrors
if config.Version != Version {
@@ -528,58 +487,13 @@ func readKeyPEM(path string, data []byte, enforceKeyIDFormat bool) (gomatrixserv
}
}
-// AppServiceURL returns a HTTP URL for where the appservice component is listening.
-func (config *Dendrite) AppServiceURL() string {
- // Hard code the appservice server to talk HTTP for now.
- // If we support HTTPS we need to think of a practical way to do certificate validation.
- // People setting up servers shouldn't need to get a certificate valid for the public
- // internet for an internal API.
- return string(config.AppServiceAPI.InternalAPI.Connect)
-}
-
-// FederationAPIURL returns an HTTP URL for where the federation API is listening.
-func (config *Dendrite) FederationAPIURL() string {
- // Hard code the federationapi to talk HTTP for now.
- // If we support HTTPS we need to think of a practical way to do certificate validation.
- // People setting up servers shouldn't need to get a certificate valid for the public
- // internet for an internal API.
- return string(config.FederationAPI.InternalAPI.Connect)
-}
-
-// RoomServerURL returns an HTTP URL for where the roomserver is listening.
-func (config *Dendrite) RoomServerURL() string {
- // Hard code the roomserver to talk HTTP for now.
- // If we support HTTPS we need to think of a practical way to do certificate validation.
- // People setting up servers shouldn't need to get a certificate valid for the public
- // internet for an internal API.
- return string(config.RoomServer.InternalAPI.Connect)
-}
-
-// UserAPIURL returns an HTTP URL for where the userapi is listening.
-func (config *Dendrite) UserAPIURL() string {
- // Hard code the userapi to talk HTTP for now.
- // If we support HTTPS we need to think of a practical way to do certificate validation.
- // People setting up servers shouldn't need to get a certificate valid for the public
- // internet for an internal API.
- return string(config.UserAPI.InternalAPI.Connect)
-}
-
-// KeyServerURL returns an HTTP URL for where the key server is listening.
-func (config *Dendrite) KeyServerURL() string {
- // Hard code the key server to talk HTTP for now.
- // If we support HTTPS we need to think of a practical way to do certificate validation.
- // People setting up servers shouldn't need to get a certificate valid for the public
- // internet for an internal API.
- return string(config.KeyServer.InternalAPI.Connect)
-}
-
// SetupTracing configures the opentracing using the supplied configuration.
-func (config *Dendrite) SetupTracing(serviceName string) (closer io.Closer, err error) {
+func (config *Dendrite) SetupTracing() (closer io.Closer, err error) {
if !config.Tracing.Enabled {
return io.NopCloser(bytes.NewReader([]byte{})), nil
}
return config.Tracing.Jaeger.InitGlobalTracer(
- serviceName,
+ "Dendrite",
jaegerconfig.Logger(logrusLogger{logrus.StandardLogger()}),
jaegerconfig.Metrics(jaegermetrics.NullFactory),
)
diff --git a/setup/config/config_appservice.go b/setup/config/config_appservice.go
index bd21826f..37e20a97 100644
--- a/setup/config/config_appservice.go
+++ b/setup/config/config_appservice.go
@@ -22,15 +22,13 @@ import (
"strings"
log "github.com/sirupsen/logrus"
- yaml "gopkg.in/yaml.v2"
+ "gopkg.in/yaml.v2"
)
type AppServiceAPI struct {
Matrix *Global `yaml:"-"`
Derived *Derived `yaml:"-"` // TODO: Nuke Derived from orbit
- InternalAPI InternalAPIOptions `yaml:"internal_api,omitempty"`
-
// DisableTLSValidation disables the validation of X.509 TLS certs
// on appservice endpoints. This is not recommended in production!
DisableTLSValidation bool `yaml:"disable_tls_validation"`
@@ -39,18 +37,9 @@ type AppServiceAPI struct {
}
func (c *AppServiceAPI) Defaults(opts DefaultOpts) {
- if !opts.Monolithic {
- c.InternalAPI.Listen = "http://localhost:7777"
- c.InternalAPI.Connect = "http://localhost:7777"
- }
}
-func (c *AppServiceAPI) Verify(configErrs *ConfigErrors, isMonolith bool) {
- if isMonolith { // polylith required configs below
- return
- }
- checkURL(configErrs, "app_service_api.internal_api.listen", string(c.InternalAPI.Listen))
- checkURL(configErrs, "app_service_api.internal_api.connect", string(c.InternalAPI.Connect))
+func (c *AppServiceAPI) Verify(configErrs *ConfigErrors) {
}
// ApplicationServiceNamespace is the namespace that a specific application
diff --git a/setup/config/config_clientapi.go b/setup/config/config_clientapi.go
index 1deba6bb..b6c74a75 100644
--- a/setup/config/config_clientapi.go
+++ b/setup/config/config_clientapi.go
@@ -9,9 +9,6 @@ type ClientAPI struct {
Matrix *Global `yaml:"-"`
Derived *Derived `yaml:"-"` // TODO: Nuke Derived from orbit
- InternalAPI InternalAPIOptions `yaml:"internal_api,omitempty"`
- ExternalAPI ExternalAPIOptions `yaml:"external_api,omitempty"`
-
// If set disables new users from registering (except via shared
// secrets)
RegistrationDisabled bool `yaml:"registration_disabled"`
@@ -58,11 +55,6 @@ type ClientAPI struct {
}
func (c *ClientAPI) Defaults(opts DefaultOpts) {
- if !opts.Monolithic {
- c.InternalAPI.Listen = "http://localhost:7771"
- c.InternalAPI.Connect = "http://localhost:7771"
- c.ExternalAPI.Listen = "http://[::]:8071"
- }
c.RegistrationSharedSecret = ""
c.RecaptchaPublicKey = ""
c.RecaptchaPrivateKey = ""
@@ -74,7 +66,7 @@ func (c *ClientAPI) Defaults(opts DefaultOpts) {
c.RateLimiting.Defaults()
}
-func (c *ClientAPI) Verify(configErrs *ConfigErrors, isMonolith bool) {
+func (c *ClientAPI) Verify(configErrs *ConfigErrors) {
c.TURN.Verify(configErrs)
c.RateLimiting.Verify(configErrs)
if c.RecaptchaEnabled {
@@ -108,12 +100,6 @@ func (c *ClientAPI) Verify(configErrs *ConfigErrors, isMonolith bool) {
)
}
}
- if isMonolith { // polylith required configs below
- return
- }
- checkURL(configErrs, "client_api.internal_api.listen", string(c.InternalAPI.Listen))
- checkURL(configErrs, "client_api.internal_api.connect", string(c.InternalAPI.Connect))
- checkURL(configErrs, "client_api.external_api.listen", string(c.ExternalAPI.Listen))
}
type TURN struct {
diff --git a/setup/config/config_federationapi.go b/setup/config/config_federationapi.go
index cd7d9056..8c1540b5 100644
--- a/setup/config/config_federationapi.go
+++ b/setup/config/config_federationapi.go
@@ -1,13 +1,12 @@
package config
-import "github.com/matrix-org/gomatrixserverlib"
+import (
+ "github.com/matrix-org/gomatrixserverlib"
+)
type FederationAPI struct {
Matrix *Global `yaml:"-"`
- InternalAPI InternalAPIOptions `yaml:"internal_api,omitempty"`
- ExternalAPI ExternalAPIOptions `yaml:"external_api,omitempty"`
-
// The database stores information used by the federation destination queues to
// send transactions to remote servers.
Database DatabaseOptions `yaml:"database,omitempty"`
@@ -42,12 +41,6 @@ type FederationAPI struct {
}
func (c *FederationAPI) Defaults(opts DefaultOpts) {
- if !opts.Monolithic {
- c.InternalAPI.Listen = "http://localhost:7772"
- c.InternalAPI.Connect = "http://localhost:7772"
- c.ExternalAPI.Listen = "http://[::]:8072"
- c.Database.Defaults(10)
- }
c.FederationMaxRetries = 16
c.P2PFederationRetriesUntilAssumedOffline = 1
c.DisableTLSValidation = false
@@ -68,22 +61,16 @@ func (c *FederationAPI) Defaults(opts DefaultOpts) {
},
},
}
- if !opts.Monolithic {
+ if !opts.SingleDatabase {
c.Database.ConnectionString = "file:federationapi.db"
}
}
}
-func (c *FederationAPI) Verify(configErrs *ConfigErrors, isMonolith bool) {
- if isMonolith { // polylith required configs below
- return
- }
+func (c *FederationAPI) Verify(configErrs *ConfigErrors) {
if c.Matrix.DatabaseOptions.ConnectionString == "" {
checkNotEmpty(configErrs, "federation_api.database.connection_string", string(c.Database.ConnectionString))
}
- checkURL(configErrs, "federation_api.external_api.listen", string(c.ExternalAPI.Listen))
- checkURL(configErrs, "federation_api.internal_api.listen", string(c.InternalAPI.Listen))
- checkURL(configErrs, "federation_api.internal_api.connect", string(c.InternalAPI.Connect))
}
// The config for setting a proxy to use for server->server requests
diff --git a/setup/config/config_global.go b/setup/config/config_global.go
index 804eb1a2..ed980afa 100644
--- a/setup/config/config_global.go
+++ b/setup/config/config_global.go
@@ -38,7 +38,6 @@ type Global struct {
// component does not specify any database options of its own, then this pool of
// connections will be used instead. This way we don't have to manage connection
// counts on a per-component basis, but can instead do it for the entire monolith.
- // In a polylith deployment, this will be ignored.
DatabaseOptions DatabaseOptions `yaml:"database,omitempty"`
// The server name to delegate server-server communications to, with optional port
@@ -93,7 +92,7 @@ func (c *Global) Defaults(opts DefaultOpts) {
}
}
c.KeyValidityPeriod = time.Hour * 24 * 7
- if opts.Monolithic {
+ if opts.SingleDatabase {
c.DatabaseOptions.Defaults(90)
}
c.JetStream.Defaults(opts)
@@ -105,7 +104,7 @@ func (c *Global) Defaults(opts DefaultOpts) {
c.Cache.Defaults()
}
-func (c *Global) Verify(configErrs *ConfigErrors, isMonolith bool) {
+func (c *Global) Verify(configErrs *ConfigErrors) {
checkNotEmpty(configErrs, "global.server_name", string(c.ServerName))
checkNotEmpty(configErrs, "global.private_key", string(c.PrivateKeyPath))
@@ -113,13 +112,13 @@ func (c *Global) Verify(configErrs *ConfigErrors, isMonolith bool) {
v.Verify(configErrs)
}
- c.JetStream.Verify(configErrs, isMonolith)
- c.Metrics.Verify(configErrs, isMonolith)
- c.Sentry.Verify(configErrs, isMonolith)
- c.DNSCache.Verify(configErrs, isMonolith)
- c.ServerNotices.Verify(configErrs, isMonolith)
- c.ReportStats.Verify(configErrs, isMonolith)
- c.Cache.Verify(configErrs, isMonolith)
+ c.JetStream.Verify(configErrs)
+ c.Metrics.Verify(configErrs)
+ c.Sentry.Verify(configErrs)
+ c.DNSCache.Verify(configErrs)
+ c.ServerNotices.Verify(configErrs)
+ c.ReportStats.Verify(configErrs)
+ c.Cache.Verify(configErrs)
}
func (c *Global) IsLocalServerName(serverName gomatrixserverlib.ServerName) bool {
@@ -267,7 +266,7 @@ func (c *Metrics) Defaults(opts DefaultOpts) {
}
}
-func (c *Metrics) Verify(configErrs *ConfigErrors, isMonolith bool) {
+func (c *Metrics) Verify(configErrs *ConfigErrors) {
}
// ServerNotices defines the configuration used for sending server notices
@@ -293,7 +292,7 @@ func (c *ServerNotices) Defaults(opts DefaultOpts) {
}
}
-func (c *ServerNotices) Verify(errors *ConfigErrors, isMonolith bool) {}
+func (c *ServerNotices) Verify(errors *ConfigErrors) {}
type Cache struct {
EstimatedMaxSize DataUnit `yaml:"max_size_estimated"`
@@ -305,7 +304,7 @@ func (c *Cache) Defaults() {
c.MaxAge = time.Hour
}
-func (c *Cache) Verify(errors *ConfigErrors, isMonolith bool) {
+func (c *Cache) Verify(errors *ConfigErrors) {
checkPositive(errors, "max_size_estimated", int64(c.EstimatedMaxSize))
}
@@ -323,7 +322,7 @@ func (c *ReportStats) Defaults() {
c.Endpoint = "https://matrix.org/report-usage-stats/push"
}
-func (c *ReportStats) Verify(configErrs *ConfigErrors, isMonolith bool) {
+func (c *ReportStats) Verify(configErrs *ConfigErrors) {
if c.Enabled {
checkNotEmpty(configErrs, "global.report_stats.endpoint", c.Endpoint)
}
@@ -344,7 +343,7 @@ func (c *Sentry) Defaults() {
c.Enabled = false
}
-func (c *Sentry) Verify(configErrs *ConfigErrors, isMonolith bool) {
+func (c *Sentry) Verify(configErrs *ConfigErrors) {
}
type DatabaseOptions struct {
@@ -364,8 +363,7 @@ func (c *DatabaseOptions) Defaults(conns int) {
c.ConnMaxLifetimeSeconds = -1
}
-func (c *DatabaseOptions) Verify(configErrs *ConfigErrors, isMonolith bool) {
-}
+func (c *DatabaseOptions) Verify(configErrs *ConfigErrors) {}
// MaxIdleConns returns maximum idle connections to the DB
func (c DatabaseOptions) MaxIdleConns() int {
@@ -397,7 +395,7 @@ func (c *DNSCacheOptions) Defaults() {
c.CacheLifetime = time.Minute * 5
}
-func (c *DNSCacheOptions) Verify(configErrs *ConfigErrors, isMonolith bool) {
+func (c *DNSCacheOptions) Verify(configErrs *ConfigErrors) {
checkPositive(configErrs, "cache_size", int64(c.CacheSize))
checkPositive(configErrs, "cache_lifetime", int64(c.CacheLifetime))
}
diff --git a/setup/config/config_jetstream.go b/setup/config/config_jetstream.go
index ef8bf014..b8abed25 100644
--- a/setup/config/config_jetstream.go
+++ b/setup/config/config_jetstream.go
@@ -41,11 +41,4 @@ func (c *JetStream) Defaults(opts DefaultOpts) {
}
}
-func (c *JetStream) Verify(configErrs *ConfigErrors, isMonolith bool) {
- if isMonolith { // polylith required configs below
- return
- }
- // If we are running in a polylith deployment then we need at least
- // one NATS JetStream server to talk to.
- checkNotZero(configErrs, "global.jetstream.addresses", int64(len(c.Addresses)))
-}
+func (c *JetStream) Verify(configErrs *ConfigErrors) {}
diff --git a/setup/config/config_keyserver.go b/setup/config/config_keyserver.go
index dca9ca9f..64710d95 100644
--- a/setup/config/config_keyserver.go
+++ b/setup/config/config_keyserver.go
@@ -3,31 +3,19 @@ package config
type KeyServer struct {
Matrix *Global `yaml:"-"`
- InternalAPI InternalAPIOptions `yaml:"internal_api,omitempty"`
-
Database DatabaseOptions `yaml:"database,omitempty"`
}
func (c *KeyServer) Defaults(opts DefaultOpts) {
- if !opts.Monolithic {
- c.InternalAPI.Listen = "http://localhost:7779"
- c.InternalAPI.Connect = "http://localhost:7779"
- c.Database.Defaults(10)
- }
if opts.Generate {
- if !opts.Monolithic {
+ if !opts.SingleDatabase {
c.Database.ConnectionString = "file:keyserver.db"
}
}
}
-func (c *KeyServer) Verify(configErrs *ConfigErrors, isMonolith bool) {
- if isMonolith { // polylith required configs below
- return
- }
+func (c *KeyServer) Verify(configErrs *ConfigErrors) {
if c.Matrix.DatabaseOptions.ConnectionString == "" {
checkNotEmpty(configErrs, "key_server.database.connection_string", string(c.Database.ConnectionString))
}
- checkURL(configErrs, "key_server.internal_api.listen", string(c.InternalAPI.Listen))
- checkURL(configErrs, "key_server.internal_api.connect", string(c.InternalAPI.Connect))
}
diff --git a/setup/config/config_mediaapi.go b/setup/config/config_mediaapi.go
index 53a8219e..030bc375 100644
--- a/setup/config/config_mediaapi.go
+++ b/setup/config/config_mediaapi.go
@@ -7,9 +7,6 @@ import (
type MediaAPI struct {
Matrix *Global `yaml:"-"`
- InternalAPI InternalAPIOptions `yaml:"internal_api,omitempty"`
- ExternalAPI ExternalAPIOptions `yaml:"external_api,omitempty"`
-
// The MediaAPI database stores information about files uploaded and downloaded
// by local users. It is only accessed by the MediaAPI.
Database DatabaseOptions `yaml:"database,omitempty"`
@@ -39,12 +36,6 @@ type MediaAPI struct {
var DefaultMaxFileSizeBytes = FileSizeBytes(10485760)
func (c *MediaAPI) Defaults(opts DefaultOpts) {
- if !opts.Monolithic {
- c.InternalAPI.Listen = "http://localhost:7774"
- c.InternalAPI.Connect = "http://localhost:7774"
- c.ExternalAPI.Listen = "http://[::]:8074"
- c.Database.Defaults(5)
- }
c.MaxFileSizeBytes = DefaultMaxFileSizeBytes
c.MaxThumbnailGenerators = 10
if opts.Generate {
@@ -65,14 +56,14 @@ func (c *MediaAPI) Defaults(opts DefaultOpts) {
ResizeMethod: "scale",
},
}
- if !opts.Monolithic {
+ if !opts.SingleDatabase {
c.Database.ConnectionString = "file:mediaapi.db"
}
c.BasePath = "./media_store"
}
}
-func (c *MediaAPI) Verify(configErrs *ConfigErrors, isMonolith bool) {
+func (c *MediaAPI) Verify(configErrs *ConfigErrors) {
checkNotEmpty(configErrs, "media_api.base_path", string(c.BasePath))
checkPositive(configErrs, "media_api.max_file_size_bytes", int64(c.MaxFileSizeBytes))
checkPositive(configErrs, "media_api.max_thumbnail_generators", int64(c.MaxThumbnailGenerators))
@@ -81,13 +72,8 @@ func (c *MediaAPI) Verify(configErrs *ConfigErrors, isMonolith bool) {
checkPositive(configErrs, fmt.Sprintf("media_api.thumbnail_sizes[%d].width", i), int64(size.Width))
checkPositive(configErrs, fmt.Sprintf("media_api.thumbnail_sizes[%d].height", i), int64(size.Height))
}
- if isMonolith { // polylith required configs below
- return
- }
+
if c.Matrix.DatabaseOptions.ConnectionString == "" {
checkNotEmpty(configErrs, "media_api.database.connection_string", string(c.Database.ConnectionString))
}
- checkURL(configErrs, "media_api.internal_api.listen", string(c.InternalAPI.Listen))
- checkURL(configErrs, "media_api.internal_api.connect", string(c.InternalAPI.Connect))
- checkURL(configErrs, "media_api.external_api.listen", string(c.ExternalAPI.Listen))
}
diff --git a/setup/config/config_mscs.go b/setup/config/config_mscs.go
index 6d5ff39a..21d4b4da 100644
--- a/setup/config/config_mscs.go
+++ b/setup/config/config_mscs.go
@@ -14,11 +14,8 @@ type MSCs struct {
}
func (c *MSCs) Defaults(opts DefaultOpts) {
- if !opts.Monolithic {
- c.Database.Defaults(5)
- }
if opts.Generate {
- if !opts.Monolithic {
+ if !opts.SingleDatabase {
c.Database.ConnectionString = "file:mscs.db"
}
}
@@ -34,10 +31,7 @@ func (c *MSCs) Enabled(msc string) bool {
return false
}
-func (c *MSCs) Verify(configErrs *ConfigErrors, isMonolith bool) {
- if isMonolith { // polylith required configs below
- return
- }
+func (c *MSCs) Verify(configErrs *ConfigErrors) {
if c.Matrix.DatabaseOptions.ConnectionString == "" {
checkNotEmpty(configErrs, "mscs.database.connection_string", string(c.Database.ConnectionString))
}
diff --git a/setup/config/config_relayapi.go b/setup/config/config_relayapi.go
index 5a6b093d..ba7b7808 100644
--- a/setup/config/config_relayapi.go
+++ b/setup/config/config_relayapi.go
@@ -17,36 +17,21 @@ package config
type RelayAPI struct {
Matrix *Global `yaml:"-"`
- InternalAPI InternalAPIOptions `yaml:"internal_api,omitempty"`
- ExternalAPI ExternalAPIOptions `yaml:"external_api,omitempty"`
-
// The database stores information used by the relay queue to
// forward transactions to remote servers.
Database DatabaseOptions `yaml:"database,omitempty"`
}
func (c *RelayAPI) Defaults(opts DefaultOpts) {
- if !opts.Monolithic {
- c.InternalAPI.Listen = "http://localhost:7775"
- c.InternalAPI.Connect = "http://localhost:7775"
- c.ExternalAPI.Listen = "http://[::]:8075"
- c.Database.Defaults(10)
- }
if opts.Generate {
- if !opts.Monolithic {
+ if !opts.SingleDatabase {
c.Database.ConnectionString = "file:relayapi.db"
}
}
}
-func (c *RelayAPI) Verify(configErrs *ConfigErrors, isMonolith bool) {
- if isMonolith { // polylith required configs below
- return
- }
+func (c *RelayAPI) Verify(configErrs *ConfigErrors) {
if c.Matrix.DatabaseOptions.ConnectionString == "" {
checkNotEmpty(configErrs, "relay_api.database.connection_string", string(c.Database.ConnectionString))
}
- checkURL(configErrs, "relay_api.external_api.listen", string(c.ExternalAPI.Listen))
- checkURL(configErrs, "relay_api.internal_api.listen", string(c.InternalAPI.Listen))
- checkURL(configErrs, "relay_api.internal_api.connect", string(c.InternalAPI.Connect))
}
diff --git a/setup/config/config_roomserver.go b/setup/config/config_roomserver.go
index 5e3b7f2e..319c2419 100644
--- a/setup/config/config_roomserver.go
+++ b/setup/config/config_roomserver.go
@@ -3,31 +3,19 @@ package config
type RoomServer struct {
Matrix *Global `yaml:"-"`
- InternalAPI InternalAPIOptions `yaml:"internal_api,omitempty"`
-
Database DatabaseOptions `yaml:"database,omitempty"`
}
func (c *RoomServer) Defaults(opts DefaultOpts) {
- if !opts.Monolithic {
- c.InternalAPI.Listen = "http://localhost:7770"
- c.InternalAPI.Connect = "http://localhost:7770"
- c.Database.Defaults(20)
- }
if opts.Generate {
- if !opts.Monolithic {
+ if !opts.SingleDatabase {
c.Database.ConnectionString = "file:roomserver.db"
}
}
}
-func (c *RoomServer) Verify(configErrs *ConfigErrors, isMonolith bool) {
- if isMonolith { // polylith required configs below
- return
- }
+func (c *RoomServer) Verify(configErrs *ConfigErrors) {
if c.Matrix.DatabaseOptions.ConnectionString == "" {
checkNotEmpty(configErrs, "room_server.database.connection_string", string(c.Database.ConnectionString))
}
- checkURL(configErrs, "room_server.internal_api.listen", string(c.InternalAPI.Listen))
- checkURL(configErrs, "room_server.internal_ap.connect", string(c.InternalAPI.Connect))
}
diff --git a/setup/config/config_syncapi.go b/setup/config/config_syncapi.go
index a87da373..756f4cfb 100644
--- a/setup/config/config_syncapi.go
+++ b/setup/config/config_syncapi.go
@@ -3,9 +3,6 @@ package config
type SyncAPI struct {
Matrix *Global `yaml:"-"`
- InternalAPI InternalAPIOptions `yaml:"internal_api,omitempty"`
- ExternalAPI ExternalAPIOptions `yaml:"external_api,omitempty"`
-
Database DatabaseOptions `yaml:"database,omitempty"`
RealIPHeader string `yaml:"real_ip_header"`
@@ -14,31 +11,19 @@ type SyncAPI struct {
}
func (c *SyncAPI) Defaults(opts DefaultOpts) {
- if !opts.Monolithic {
- c.InternalAPI.Listen = "http://localhost:7773"
- c.InternalAPI.Connect = "http://localhost:7773"
- c.ExternalAPI.Listen = "http://localhost:8073"
- c.Database.Defaults(20)
- }
c.Fulltext.Defaults(opts)
if opts.Generate {
- if !opts.Monolithic {
+ if !opts.SingleDatabase {
c.Database.ConnectionString = "file:syncapi.db"
}
}
}
-func (c *SyncAPI) Verify(configErrs *ConfigErrors, isMonolith bool) {
- c.Fulltext.Verify(configErrs, isMonolith)
- if isMonolith { // polylith required configs below
- return
- }
+func (c *SyncAPI) Verify(configErrs *ConfigErrors) {
+ c.Fulltext.Verify(configErrs)
if c.Matrix.DatabaseOptions.ConnectionString == "" {
checkNotEmpty(configErrs, "sync_api.database", string(c.Database.ConnectionString))
}
- checkURL(configErrs, "sync_api.internal_api.listen", string(c.InternalAPI.Listen))
- checkURL(configErrs, "sync_api.internal_api.connect", string(c.InternalAPI.Connect))
- checkURL(configErrs, "sync_api.external_api.listen", string(c.ExternalAPI.Listen))
}
type Fulltext struct {
@@ -54,7 +39,7 @@ func (f *Fulltext) Defaults(opts DefaultOpts) {
f.Language = "en"
}
-func (f *Fulltext) Verify(configErrs *ConfigErrors, isMonolith bool) {
+func (f *Fulltext) Verify(configErrs *ConfigErrors) {
if !f.Enabled {
return
}
diff --git a/setup/config/config_test.go b/setup/config/config_test.go
index ffbf4c3c..79407f30 100644
--- a/setup/config/config_test.go
+++ b/setup/config/config_test.go
@@ -30,14 +30,13 @@ func TestLoadConfigRelative(t *testing.T) {
"/my/config/dir/matrix_key.pem": testKey,
"/my/config/dir/tls_cert.pem": testCert,
}.readFile,
- false,
)
if err != nil {
t.Error("failed to load config:", err)
}
configErrors := &ConfigErrors{}
- cfg.Verify(configErrors, false)
+ cfg.Verify(configErrors)
if len(*configErrors) > 0 {
for _, err := range *configErrors {
logrus.Errorf("Configuration error: %s", err)
@@ -81,9 +80,6 @@ global:
jetstream:
addresses: ["test"]
app_service_api:
- internal_api:
- listen: http://localhost:7777
- connect: http://localhost:7777
database:
connection_string: file:appservice.db
max_open_conns: 100
@@ -91,11 +87,6 @@ app_service_api:
conn_max_lifetime: -1
config_files: []
client_api:
- internal_api:
- listen: http://localhost:7771
- connect: http://localhost:7771
- external_api:
- listen: http://[::]:8071
registration_disabled: true
registration_shared_secret: ""
enable_registration_captcha: false
@@ -109,38 +100,16 @@ client_api:
turn_shared_secret: ""
turn_username: ""
turn_password: ""
-current_state_server:
- internal_api:
- listen: http://localhost:7782
- connect: http://localhost:7782
- database:
- connection_string: file:currentstate.db
- max_open_conns: 100
- max_idle_conns: 2
- conn_max_lifetime: -1
federation_api:
- internal_api:
- listen: http://localhost:7772
- connect: http://localhost:7772
- external_api:
- listen: http://[::]:8072
database:
connection_string: file:federationapi.db
key_server:
- internal_api:
- listen: http://localhost:7779
- connect: http://localhost:7779
database:
connection_string: file:keyserver.db
max_open_conns: 100
max_idle_conns: 2
conn_max_lifetime: -1
media_api:
- internal_api:
- listen: http://localhost:7774
- connect: http://localhost:7774
- external_api:
- listen: http://[::]:8074
database:
connection_string: file:mediaapi.db
max_open_conns: 100
@@ -161,18 +130,12 @@ media_api:
height: 480
method: scale
room_server:
- internal_api:
- listen: http://localhost:7770
- connect: http://localhost:7770
database:
connection_string: file:roomserver.db
max_open_conns: 100
max_idle_conns: 2
conn_max_lifetime: -1
server_key_api:
- internal_api:
- listen: http://localhost:7780
- connect: http://localhost:7780
database:
connection_string: file:serverkeyapi.db
max_open_conns: 100
@@ -186,18 +149,12 @@ server_key_api:
- key_id: ed25519:a_RXGa
public_key: l8Hft5qXKn1vfHrg3p4+W8gELQVo8N13JkluMfmn2sQ
sync_api:
- internal_api:
- listen: http://localhost:7773
- connect: http://localhost:7773
database:
connection_string: file:syncapi.db
max_open_conns: 100
max_idle_conns: 2
conn_max_lifetime: -1
user_api:
- internal_api:
- listen: http://localhost:7781
- connect: http://localhost:7781
account_database:
connection_string: file:userapi_accounts.db
max_open_conns: 100
@@ -209,11 +166,6 @@ user_api:
max_idle_conns: 2
conn_max_lifetime: -1
relay_api:
- internal_api:
- listen: http://localhost:7775
- connect: http://localhost:7775
- external_api:
- listen: http://[::]:8075
database:
connection_string: file:relayapi.db
mscs:
diff --git a/setup/config/config_userapi.go b/setup/config/config_userapi.go
index f8ad41d9..e64a3910 100644
--- a/setup/config/config_userapi.go
+++ b/setup/config/config_userapi.go
@@ -5,8 +5,6 @@ import "golang.org/x/crypto/bcrypt"
type UserAPI struct {
Matrix *Global `yaml:"-"`
- InternalAPI InternalAPIOptions `yaml:"internal_api,omitempty"`
-
// The cost when hashing passwords.
BCryptCost int `yaml:"bcrypt_cost"`
@@ -28,28 +26,18 @@ type UserAPI struct {
const DefaultOpenIDTokenLifetimeMS = 3600000 // 60 minutes
func (c *UserAPI) Defaults(opts DefaultOpts) {
- if !opts.Monolithic {
- c.InternalAPI.Listen = "http://localhost:7781"
- c.InternalAPI.Connect = "http://localhost:7781"
- c.AccountDatabase.Defaults(10)
- }
c.BCryptCost = bcrypt.DefaultCost
c.OpenIDTokenLifetimeMS = DefaultOpenIDTokenLifetimeMS
if opts.Generate {
- if !opts.Monolithic {
+ if !opts.SingleDatabase {
c.AccountDatabase.ConnectionString = "file:userapi_accounts.db"
}
}
}
-func (c *UserAPI) Verify(configErrs *ConfigErrors, isMonolith bool) {
+func (c *UserAPI) Verify(configErrs *ConfigErrors) {
checkPositive(configErrs, "user_api.openid_token_lifetime_ms", c.OpenIDTokenLifetimeMS)
- if isMonolith { // polylith required configs below
- return
- }
if c.Matrix.DatabaseOptions.ConnectionString == "" {
checkNotEmpty(configErrs, "user_api.account_database.connection_string", string(c.AccountDatabase.ConnectionString))
}
- checkURL(configErrs, "user_api.internal_api.listen", string(c.InternalAPI.Listen))
- checkURL(configErrs, "user_api.internal_api.connect", string(c.InternalAPI.Connect))
}