gproxy: load default config file for debug and listen statements
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
		| @ -5,6 +5,10 @@ postgresql: | |||||||
|   user: authentik |   user: authentik | ||||||
|   password: 'env://POSTGRES_PASSWORD' |   password: 'env://POSTGRES_PASSWORD' | ||||||
|  |  | ||||||
|  | web: | ||||||
|  |   listen: 0.0.0.0:9000 | ||||||
|  |   listen_tls: 0.0.0.0:9443 | ||||||
|  |  | ||||||
| redis: | redis: | ||||||
|   host: localhost |   host: localhost | ||||||
|   password: '' |   password: '' | ||||||
|  | |||||||
| @ -10,7 +10,10 @@ import ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| func main() { | func main() { | ||||||
|  | 	log.SetLevel(log.DebugLevel) | ||||||
| 	config.DefaultConfig() | 	config.DefaultConfig() | ||||||
|  | 	config.LoadConfig("./authentik/lib/default.yml") | ||||||
|  | 	config.LoadConfig("./local.env.yml") | ||||||
| 	config.ConfigureLogger() | 	config.ConfigureLogger() | ||||||
|  |  | ||||||
| 	rl := log.WithField("logger", "authentik.g") | 	rl := log.WithField("logger", "authentik.g") | ||||||
|  | |||||||
							
								
								
									
										3
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								go.mod
									
									
									
									
									
								
							| @ -6,5 +6,8 @@ require ( | |||||||
| 	github.com/getsentry/sentry-go v0.10.0 // indirect | 	github.com/getsentry/sentry-go v0.10.0 // indirect | ||||||
| 	github.com/gorilla/handlers v1.5.1 // indirect | 	github.com/gorilla/handlers v1.5.1 // indirect | ||||||
| 	github.com/gorilla/mux v1.8.0 // indirect | 	github.com/gorilla/mux v1.8.0 // indirect | ||||||
|  | 	github.com/imdario/mergo v0.3.12 // indirect | ||||||
|  | 	github.com/pkg/errors v0.8.1 // indirect | ||||||
| 	github.com/sirupsen/logrus v1.8.1 | 	github.com/sirupsen/logrus v1.8.1 | ||||||
|  | 	gopkg.in/yaml.v2 v2.3.0 // indirect | ||||||
| ) | ) | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.sum
									
									
									
									
									
								
							| @ -52,6 +52,8 @@ github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad | |||||||
| github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= | github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= | ||||||
| github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= | github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= | ||||||
| github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= | github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= | ||||||
|  | github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= | ||||||
|  | github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= | ||||||
| github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= | github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= | ||||||
| github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= | github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= | ||||||
| github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= | github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= | ||||||
| @ -100,6 +102,7 @@ github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+ | |||||||
| github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= | github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= | ||||||
| github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= | github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= | ||||||
| github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= | github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= | ||||||
|  | github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= | ||||||
| github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||||
| @ -180,5 +183,8 @@ gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= | |||||||
| gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= | gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= | ||||||
| gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= | gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= | ||||||
| gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
|  | gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= | ||||||
| gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
|  | gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= | ||||||
|  | gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
|  | |||||||
| @ -1,14 +1,20 @@ | |||||||
| package config | package config | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	"io/ioutil" | ||||||
|  | 	"os" | ||||||
|  |  | ||||||
|  | 	"github.com/imdario/mergo" | ||||||
|  | 	"github.com/pkg/errors" | ||||||
| 	log "github.com/sirupsen/logrus" | 	log "github.com/sirupsen/logrus" | ||||||
|  | 	"gopkg.in/yaml.v2" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var G Config | var G Config | ||||||
|  |  | ||||||
| func DefaultConfig() { | func DefaultConfig() { | ||||||
| 	G = Config{ | 	G = Config{ | ||||||
| 		Debug: true, | 		Debug: false, | ||||||
| 		Web: WebConfig{ | 		Web: WebConfig{ | ||||||
| 			Listen:    "localhost:9000", | 			Listen:    "localhost:9000", | ||||||
| 			ListenTLS: "localhost:9443", | 			ListenTLS: "localhost:9443", | ||||||
| @ -16,15 +22,30 @@ func DefaultConfig() { | |||||||
| 		Paths: PathsConfig{ | 		Paths: PathsConfig{ | ||||||
| 			Media: "./media", | 			Media: "./media", | ||||||
| 		}, | 		}, | ||||||
| 		Log: LogConfig{ | 		LogLevel: "info", | ||||||
| 			Level:  "trace", |  | ||||||
| 			Format: "json", |  | ||||||
| 		}, |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func LoadConfig(path string) error { | ||||||
|  | 	raw, err := ioutil.ReadFile(path) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return errors.Wrap(err, "Failed to load config file") | ||||||
|  | 	} | ||||||
|  | 	rawExpanded := os.ExpandEnv(string(raw)) | ||||||
|  | 	nc := Config{} | ||||||
|  | 	err = yaml.Unmarshal([]byte(rawExpanded), &nc) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return errors.Wrap(err, "Failed to parse YAML") | ||||||
|  | 	} | ||||||
|  | 	if err := mergo.Merge(&G, nc, mergo.WithOverride); err != nil { | ||||||
|  | 		return errors.Wrap(err, "failed to overlay config") | ||||||
|  | 	} | ||||||
|  | 	log.WithField("path", path).Debug("Loaded config") | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
| func ConfigureLogger() { | func ConfigureLogger() { | ||||||
| 	switch G.Log.Level { | 	switch G.LogLevel { | ||||||
| 	case "trace": | 	case "trace": | ||||||
| 		log.SetLevel(log.TraceLevel) | 		log.SetLevel(log.TraceLevel) | ||||||
| 	case "debug": | 	case "debug": | ||||||
| @ -39,15 +60,14 @@ func ConfigureLogger() { | |||||||
| 		log.SetLevel(log.DebugLevel) | 		log.SetLevel(log.DebugLevel) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	switch G.Log.Format { | 	if G.Debug { | ||||||
| 	case "json": | 		log.SetFormatter(&log.TextFormatter{}) | ||||||
|  | 	} else { | ||||||
| 		log.SetFormatter(&log.JSONFormatter{ | 		log.SetFormatter(&log.JSONFormatter{ | ||||||
| 			FieldMap: log.FieldMap{ | 			FieldMap: log.FieldMap{ | ||||||
| 				log.FieldKeyMsg:  "event", | 				log.FieldKeyMsg:  "event", | ||||||
| 				log.FieldKeyTime: "timestamp", | 				log.FieldKeyTime: "timestamp", | ||||||
| 			}, | 			}, | ||||||
| 		}) | 		}) | ||||||
| 	default: |  | ||||||
| 		log.SetFormatter(&log.TextFormatter{}) |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,22 +1,17 @@ | |||||||
| package config | package config | ||||||
|  |  | ||||||
| type Config struct { | type Config struct { | ||||||
| 	Debug bool | 	Debug    bool        `yaml:"debug"` | ||||||
| 	Web   WebConfig | 	Web      WebConfig   `yaml:"web"` | ||||||
| 	Paths PathsConfig | 	Paths    PathsConfig `yaml:"paths"` | ||||||
| 	Log   LogConfig | 	LogLevel string      `yaml:"log_level"` | ||||||
| } | } | ||||||
|  |  | ||||||
| type WebConfig struct { | type WebConfig struct { | ||||||
| 	Listen    string | 	Listen    string `yaml:"listen"` | ||||||
| 	ListenTLS string | 	ListenTLS string `yaml:"listen_tls"` | ||||||
| } | } | ||||||
|  |  | ||||||
| type PathsConfig struct { | type PathsConfig struct { | ||||||
| 	Media string | 	Media string `yaml:"media"` | ||||||
| } |  | ||||||
|  |  | ||||||
| type LogConfig struct { |  | ||||||
| 	Level  string |  | ||||||
| 	Format string |  | ||||||
| } | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Jens Langhammer
					Jens Langhammer