in main.go [58:128]
func main() {
kingpin.Parse()
log.SetLevel(log.InfoLevel)
if *debug {
log.SetLevel(log.DebugLevel)
}
sessionConfig := aws.Config{}
if v := os.Getenv("AWS_STS_REGIONAL_ENDPOINTS"); len(v) == 0 {
sessionConfig.STSRegionalEndpoint = endpoints.RegionalSTSEndpoint
}
session, err := session.NewSession(&sessionConfig)
if err != nil {
log.Fatal(err)
}
if *regionOverride != "" {
session.Config.Region = regionOverride
}
// For STS regional endpoint to be effective config's region must be set.
if *session.Config.Region == "" {
defaultRegion := "us-east-1"
session.Config.Region = &defaultRegion
}
if *disableSSLVerification {
log.Warn("Peer SSL Certificate validation is DISABLED")
http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
}
var credentials *credentials.Credentials
if *roleArn != "" {
credentials = stscreds.NewCredentials(session, *roleArn, func(p *stscreds.AssumeRoleProvider) {
p.RoleSessionName = roleSessionName()
})
} else {
credentials = session.Config.Credentials
}
signer := v4.NewSigner(credentials, func(s *v4.Signer) {
if *logSinging || *debug {
s.Logger = awsLoggerAdapter{}
s.Debug = aws.LogDebugWithSigning
}
})
client := &http.Client{
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
},
}
log.WithFields(log.Fields{"StripHeaders": *strip}).Infof("Stripping headers %s", *strip)
log.WithFields(log.Fields{"port": *port}).Infof("Listening on %s", *port)
log.Fatal(
http.ListenAndServe(*port, &handler.Handler{
ProxyClient: &handler.ProxyClient{
Signer: signer,
Client: client,
StripRequestHeaders: *strip,
SigningNameOverride: *signingNameOverride,
HostOverride: *hostOverride,
RegionOverride: *regionOverride,
LogFailedRequest: *logFailedResponse,
},
}),
)
}