yoake/config/config.go
2022-11-07 05:45:02 -05:00

76 lines
1.1 KiB
Go

package config
import (
"github.com/jinzhu/configor"
"github.com/labstack/echo/v4/middleware"
)
type C struct {
Hosts map[string]string
Listen struct {
Addr string
Ssl struct {
Use bool
Cert string
Key string
}
}
WebRoot struct {
SiteName string
Root string
SessionKey string
SessionDir string
Secure *middleware.SecureConfig
Log *struct {
Filter []string
Indent bool
}
}
Upstream struct {
Vault struct {
API string
UI string
}
}
Twilio struct {
AccountSid string
AuthToken string
SkipVerify bool
}
Auth struct {
ValidMinutes int
Method struct {
UserPass struct {
}
Yubikey struct {
ClientId string
ClientKey string
Keys []struct {
Name string
PublicId string
Role string
}
}
}
}
}
var parsedC C
var c C
func Config() C {
return c
}
func MockConfig(freshEnv bool, wrapper func(deployedC *C)) {
if freshEnv {
c = parsedC
}
wrapper(&c)
}
func ParseConfig(files ...string) {
configor.Load(&parsedC, files...)
c = parsedC
}