git.iko.soy/typeable/oauth2-proxy
on remove-gap-headers help sign in
76 lines 1.7 kB history raw
1package main
3import (
4 "fmt"
5 "math/rand"
6 "os"
7 "os/signal"
8 "runtime"
9 "syscall"
10 "time"
12 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/options"
13 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/logger"
14 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/validation"
17func main() {
18 logger.SetFlags(logger.Lshortfile)
19 flagSet := options.NewFlagSet()
21 config := flagSet.String("config", "", "path to config file")
22 showVersion := flagSet.Bool("version", false, "print version string")
24 err := flagSet.Parse(os.Args[1:])
25 if err != nil {
26 logger.Printf("ERROR: Failed to parse flags: %v", err)
27 os.Exit(1)
28 }
30 if *showVersion {
31 fmt.Printf("oauth2-proxy %s (built with %s)\n", VERSION, runtime.Version())
32 return
33 }
35 legacyOpts := options.NewLegacyOptions()
36 err = options.Load(*config, flagSet, legacyOpts)
37 if err != nil {
38 logger.Errorf("ERROR: Failed to load config: %v", err)
39 os.Exit(1)
40 }
42 opts, err := legacyOpts.ToOptions()
43 if err != nil {
44 logger.Errorf("ERROR: Failed to convert config: %v", err)
45 os.Exit(1)
46 }
48 err = validation.Validate(opts)
49 if err != nil {
50 logger.Printf("%s", err)
51 os.Exit(1)
52 }
54 validator := NewValidator(opts.EmailDomains, opts.AuthenticatedEmailsFile)
55 oauthproxy, err := NewOAuthProxy(opts, validator)
56 if err != nil {
57 logger.Errorf("ERROR: Failed to initialise OAuth2 Proxy: %v", err)
58 os.Exit(1)
59 }
61 rand.Seed(time.Now().UnixNano())
63 s := &Server{
64 Handler: oauthproxy,
65 Opts: opts,
66 stop: make(chan struct{}, 1),
67 }
68 // Observe signals in background goroutine.
69 go func() {
70 sigint := make(chan os.Signal, 1)
71 signal.Notify(sigint, os.Interrupt, syscall.SIGTERM)
72 <-sigint
73 s.stop <- struct{}{} // notify having caught signal
74 }()
75 s.ListenAndServe()