func main()

in src/proxy-ext-processor/main.go [28:121]


func main() {
	ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt)
	defer cancel()

	var err error
	flag.Parse()
	log.SetFormatter(&log.TextFormatter{
		DisableQuote:  true,
		FullTimestamp: true,
	})
	log.SetReportCaller(true)
	log.SetLevel(log.InfoLevel)

	jsonFile, err := os.Open(*configFile)
	if err != nil {
		log.Panicf("failed to open config file: %v", err)
	}

	defer func() {
		err = jsonFile.Close()
		if err != nil {
			log.Errorf("failed to close config file: %v", err)
		}
	}()

	byteValue, err := io.ReadAll(jsonFile)
	if err != nil {
		log.Panicf("failed to read config file: %v", err)
	}

	config := configuration.Settings{}
	err = json.Unmarshal(byteValue, &config)
	if err != nil {
		log.Panicf("failed to unmarshal config file: %v", err)
	}

	tp, err := initTraceProvider(ctx, config.Otlp)
	if err != nil {
		log.Panicf("failed to setup tracing: %v", err)
	}
	defer func() {
		if err = tp.Shutdown(ctx); err != nil {
			log.Errorf("failed to shutdown TracerProvider: %v", err)
		}
	}()

	tracer := tp.Tracer("ccr-proxy-ext-processor")
	ctx, mainSpan := tracer.Start(ctx, "main")
	defer mainSpan.End()

	defer filter.RecordSpanError(ctx, &err)

	if config.Host == "" {
		config.Host = "127.0.0.1"
	}
	if config.Port == 0 {
		config.Port = 8281
	}

	token := config.Local.PolicyEngine.BundleServiceCredentialsToken
	config.Local.PolicyEngine.BundleServiceCredentialsToken = "****"
	log.Infof("Configuration options: %+v", config)
	config.Local.PolicyEngine.BundleServiceCredentialsToken = token

	address := fmt.Sprintf("%s:%d", config.Host, config.Port)
	lis, err := net.Listen("tcp", address)
	if err != nil {
		log.Panicf("failed to listen: %v", err)
	}

	var ff filter.HttpFilterFactory
	switch config.Filter {
	case "opa":
		fallthrough
	default:
		ff, err = opa.NewHttpFilterFactory(ctx, tracer, config.Local.PolicyEngine)
		if err != nil {
			log.Panicf("failed to create filter factory: %v", err)
		}
	}

	// This service receives gRPC requests for which we add otel instrumentation here.
	grpcServer := grpc.NewServer(
		grpc.UnaryInterceptor(otelgrpc.UnaryServerInterceptor()),
		grpc.StreamInterceptor(otelgrpc.StreamServerInterceptor()),
	)
	pb.RegisterExternalProcessorServer(grpcServer, filter.NewExternalProcessorServer(tracer, ff))

	log.Infof("Listening on %s", address)
	err = grpcServer.Serve(lis)
	if err != nil {
		log.Panicf("failed start gRPC server: %v", err)
	}
}