domain.go

37 lines
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
package internal

import (
	"congo.gg/dev/models"
)

// SetupDomain registers a domain as a system route.
// System routes tell autocert to issue TLS certs and identify
// the app's own domain. Safe to call multiple times.
func SetupDomain(domain string) error {
	if domain == "" {
		return nil
	}

	existing, _ := models.Domains.First("WHERE Host = ?", domain)
	if existing != nil {
		return nil
	}

	_, err := models.Domains.Insert(&models.Domain{
		Host:   domain,
		Target: "congo-dev",
		Port:   5000,
		Active: true,
		System: true,
	})
	return err
}

// SystemDomain returns the primary system domain, if one exists.
func SystemDomain() string {
	d, _ := models.Domains.First("WHERE System = 1 AND Active = 1")
	if d != nil {
		return d.Host
	}
	return ""
}