in cmd/interceptor/main.go [52:158]
func main() {
zapLogger, err := zap.NewProduction()
if err != nil {
log.Fatalf("Failed to initialize logger: %s", err)
}
logger := zapLogger.Sugar()
logBuildInfo(logger)
var conf *config
if conf, err = initEnv(); err != nil {
logger.Fatalf("failed to init env: %v", err)
}
clusterConfig := ctrl.GetConfigOrDie()
scheme := runtime.NewScheme()
utilruntime.Must(codebaseApiV1.AddToScheme(scheme))
utilruntime.Must(corev1.AddToScheme(scheme))
utilruntime.Must(triggersApi.AddToScheme(scheme))
client, err := ctrlClient.New(clusterConfig, ctrlClient.Options{Scheme: scheme})
if err != nil {
logger.Fatalf("Failed to get client: %v", err)
}
secretService := interceptor.NewSecretService(client)
ctx := context.Background()
certData, err := secretService.CreateCertsSecret(ctx, conf.Namespace, conf.InterceptorName)
if err != nil {
logger.Fatalf("Failed to create certs secret: %v", err)
}
logger.Infof("The secret %s was populated with certs ", interceptor.SecretCertsName)
if err = secretService.UpdateCABundle(ctx, conf.Namespace, conf.InterceptorName, certData.CaCert); err != nil {
logger.Fatalf("Failed to update cABundle: %v", err)
}
logger.Infof("Interceptor %s caBundle updated successfully", conf.InterceptorName)
mux := http.NewServeMux()
mux.Handle(
"/",
&edpInterceptorHandler{
EDPInterceptor: interceptor.NewEDPInterceptor(
client,
github.NewEventProcessor(client, &github.EventProcessorOptions{Logger: logger}),
gitlab.NewEventProcessor(client, logger),
gerrit.NewEventProcessor(client, logger),
bitbucket.NewEventProcessor(client, &bitbucket.EventProcessorOptions{Logger: logger}),
logger,
),
Logger: logger,
},
)
mux.HandleFunc("/ready", readinessHandler)
tlsData := &tls.Config{
MinVersion: tls.VersionTLS13,
GetCertificate: func(*tls.ClientHelloInfo) (*tls.Certificate, error) {
cert, err := tls.X509KeyPair(certData.ServerCert, certData.ServerKey)
if err != nil {
return nil, err
}
return &cert, nil
},
}
srv := &http.Server{
Addr: fmt.Sprintf(":%d", httpsPort),
ReadTimeout: readTimeout,
WriteTimeout: writeTimeout,
IdleTimeout: idleTimeout,
Handler: mux,
TLSConfig: tlsData,
}
go func() {
if err := srv.ListenAndServeTLS("", ""); err != nil && !errors.Is(err, http.ErrServerClosed) {
logger.Fatalf("Server failed: %v", err)
}
}()
logger.Infof("Listen and serve on port %d", httpsPort)
done := make(chan os.Signal, 1)
signal.Notify(done, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
<-done
logger.Info("Server stopped")
ctx, cancel := context.WithTimeout(context.Background(), shutDownTimeout)
defer cancel()
if err := srv.Shutdown(ctx); err != nil {
logger.Fatalf("Server shutdown failed: %+v", err)
}
logger.Info("Server exited properly")
}