6
6
"os"
7
7
"time"
8
8
9
- "github.com/kelseyhightower/envconfig"
10
-
11
9
"github.com/buzzfeed/sso/internal/pkg/httpserver"
12
10
"github.com/buzzfeed/sso/internal/pkg/logging"
13
11
"github.com/buzzfeed/sso/internal/proxy"
@@ -21,45 +19,61 @@ func init() {
21
19
func main () {
22
20
logger := logging .NewLogEntry ()
23
21
24
- opts := proxy .NewOptions ()
25
- err := envconfig .Process ("" , opts )
22
+ config , err := proxy .LoadConfig ()
23
+ if err != nil {
24
+ logger .Error (err , "error loading in config from env vars" )
25
+ os .Exit (1 )
26
+ }
27
+
28
+ err = config .Validate ()
26
29
if err != nil {
27
- logger .Error (err , "error parsing env vars into options " )
30
+ logger .Error (err , "error validating config " )
28
31
os .Exit (1 )
29
32
}
30
33
31
- err = opts .Validate ()
34
+ sc := config .MetricsConfig .StatsdConfig
35
+ statsdClient , err := proxy .NewStatsdClient (sc .Host , sc .Port )
32
36
if err != nil {
33
- logger .Error (err , "error validating options " )
37
+ logger .Error (err , "error creating statsd client " )
34
38
os .Exit (1 )
35
39
}
36
40
37
41
// we setup a runtime collector to emit stats
38
42
go func () {
39
- c := collector .New (opts . StatsdClient , 30 * time .Second )
43
+ c := collector .New (statsdClient , 30 * time .Second )
40
44
c .Run ()
41
45
}()
42
46
43
- ssoProxy , err := proxy .New (opts )
47
+ err = proxy .SetUpstreamConfigs (
48
+ & config .UpstreamConfigs ,
49
+ config .SessionConfig ,
50
+ config .ServerConfig ,
51
+ )
52
+ if err != nil {
53
+ logger .Error (err , "error setting upstream configs" )
54
+ os .Exit (1 )
55
+ }
56
+
57
+ ssoProxy , err := proxy .New (config , statsdClient )
44
58
if err != nil {
45
59
logger .Error (err , "error creating sso proxy" )
46
60
os .Exit (1 )
47
61
}
48
62
49
63
loggingHandler := proxy .NewLoggingHandler (os .Stdout ,
50
64
ssoProxy ,
51
- opts . RequestLogging ,
52
- opts . StatsdClient ,
65
+ config . LoggingConfig ,
66
+ statsdClient ,
53
67
)
54
68
55
69
s := & http.Server {
56
- Addr : fmt .Sprintf (":%d" , opts .Port ),
57
- ReadTimeout : opts . TCPReadTimeout ,
58
- WriteTimeout : opts . TCPWriteTimeout ,
70
+ Addr : fmt .Sprintf (":%d" , config . ServerConfig .Port ),
71
+ ReadTimeout : config . ServerConfig . TimeoutConfig . Read ,
72
+ WriteTimeout : config . ServerConfig . TimeoutConfig . Write ,
59
73
Handler : loggingHandler ,
60
74
}
61
75
62
- if err := httpserver .Run (s , opts . ShutdownTimeout , logger ); err != nil {
76
+ if err := httpserver .Run (s , config . ServerConfig . TimeoutConfig . Shutdown , logger ); err != nil {
63
77
logger .WithError (err ).Fatal ("error running server" )
64
78
}
65
79
}
0 commit comments