57 lines
1.6 KiB
Go
57 lines
1.6 KiB
Go
package config
|
|
|
|
import "strings"
|
|
|
|
// This file contains domain related derived configuration values.
|
|
|
|
// HTTPSEnabled returns if the distillery has HTTPS enabled, and false otherwise.
|
|
func (cfg Config) HTTPSEnabled() bool {
|
|
return cfg.CertbotEmail != ""
|
|
}
|
|
|
|
// IfHttps returns value when the distillery has https enabled, and the empty string otherwise.
|
|
func (cfg Config) IfHttps(value string) string {
|
|
if !cfg.HTTPSEnabled() {
|
|
return ""
|
|
}
|
|
return value
|
|
}
|
|
|
|
// DefaultHost returns the default hostname for the distillery.
|
|
//
|
|
// This consists of the [DefaultDomain] as well as [ExtraDomains].
|
|
// Domain names are concatinated with commas.
|
|
func (cfg Config) DefaultHost() string {
|
|
var builder strings.Builder
|
|
|
|
builder.WriteString(cfg.DefaultDomain)
|
|
for _, domain := range cfg.SelfExtraDomains {
|
|
builder.WriteRune(',')
|
|
builder.WriteString(domain)
|
|
}
|
|
|
|
return builder.String()
|
|
}
|
|
|
|
// DefaultSSLHost returns the default hostname for the ssl version of the distillery.
|
|
//
|
|
// This is exactly [DefaultHost] when SSL is enabled, and the empty string otherwise.
|
|
func (cfg Config) DefaultSSLHost() string {
|
|
return cfg.IfHttps(cfg.DefaultHost())
|
|
}
|
|
|
|
// SlugFromHost returns the slug belonging to the appropriate host.
|
|
func (cfg Config) SlugFromHost(host string) (slug string) {
|
|
// extract an ':port' that happens to be in the host.
|
|
domain, _, _ := strings.Cut(host, ":")
|
|
|
|
// check all the possible domain endings
|
|
for _, suffix := range append([]string{cfg.DefaultDomain}, cfg.SelfExtraDomains...) {
|
|
if strings.HasSuffix(domain, "."+suffix) {
|
|
return domain[:len(domain)-len(suffix)-1]
|
|
}
|
|
}
|
|
|
|
// no domain found!
|
|
return ""
|
|
}
|