mirror of
https://codeberg.org/Codeberg/pages-server.git
synced 2025-04-24 13:56:57 +00:00
77 lines
1.8 KiB
Go
77 lines
1.8 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path"
|
|
|
|
"github.com/pelletier/go-toml/v2"
|
|
"github.com/rs/zerolog/log"
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
var ALWAYS_BLACKLISTED_PATHS = []string{
|
|
"/.well-known/acme-challenge/",
|
|
}
|
|
|
|
func ReadConfig(ctx *cli.Context) (*Config, error) {
|
|
// if config is not given as argument return empty config
|
|
if !ctx.IsSet("config-file") {
|
|
return &Config{}, nil
|
|
}
|
|
|
|
configFile := path.Clean(ctx.String("config-file"))
|
|
|
|
log.Debug().Str("config-file", configFile).Msg("reading config file")
|
|
content, err := os.ReadFile(configFile)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
config := &Config{}
|
|
err = toml.Unmarshal(content, config)
|
|
return config, err
|
|
}
|
|
|
|
func MergeConfig(ctx *cli.Context, config *Config) {
|
|
if ctx.IsSet("log-level") {
|
|
config.LogLevel = ctx.String("log-level")
|
|
}
|
|
|
|
mergeServerConfig(ctx, &config.Server)
|
|
}
|
|
|
|
func mergeServerConfig(ctx *cli.Context, config *ServerConfig) {
|
|
if ctx.IsSet("host") {
|
|
config.Host = ctx.String("host")
|
|
}
|
|
if ctx.IsSet("port") {
|
|
config.Port = uint16(ctx.Uint("port"))
|
|
}
|
|
if ctx.IsSet("http-port") {
|
|
config.HttpPort = uint16(ctx.Uint("http-port"))
|
|
}
|
|
if ctx.IsSet("enable-http-server") {
|
|
config.HttpServerEnabled = ctx.Bool("enable-http-server")
|
|
}
|
|
if ctx.IsSet("pages-domain") {
|
|
config.MainDomain = ctx.String("pages-domain")
|
|
}
|
|
if ctx.IsSet("raw-domain") {
|
|
config.RawDomain = ctx.String("raw-domain")
|
|
}
|
|
if ctx.IsSet("allowed-cors-domains") {
|
|
config.AllowedCorsDomains = ctx.StringSlice("allowed-cors-domains")
|
|
}
|
|
if ctx.IsSet("blacklisted-paths") {
|
|
config.BlacklistedPaths = ctx.StringSlice("blacklisted-paths")
|
|
}
|
|
|
|
// add the paths that should always be blacklisted
|
|
config.BlacklistedPaths = append(config.BlacklistedPaths, ALWAYS_BLACKLISTED_PATHS...)
|
|
}
|
|
|
|
func mergeGiteaConfig(ctx *cli.Context, config *GiteaConfig) {
|
|
if ctx.IsSet("gitea-root") {
|
|
config.Root = ctx.String("gitea-root")
|
|
}
|
|
}
|