Newer
Older
EnvoyControlPlane / internal / pkg / server / server.go
@Yangyang Xie Yangyang Xie 11 days ago 927 bytes refactor code
// internal/server/server.go
package server

import (
	"context"
	"fmt"
	"net/http"

	internallog "envoy-control-plane/internal/log"
	"envoy-control-plane/internal/pkg/api"
)

// RunRESTServer starts the REST API server with appropriate middleware.
func RunRESTServer(ctx context.Context, mux *http.ServeMux, restPort uint, webrootPath string, enableCertIssuance bool) error {
	log := internallog.LogFromContext(ctx)

	corsHandler := api.CORS(mux)

	restAddr := fmt.Sprintf(":%d", restPort)
	log.Infof("starting REST API server on %s", restAddr)

	if enableCertIssuance {
		log.Infof("ACME challenge path configured: %s/ -> %s", api.ACME_CALLENGE_WEB_PATH, webrootPath)
	}

	if err := http.ListenAndServe(restAddr, corsHandler); err != nil {
		return fmt.Errorf("REST server error: %w", err)
	}
	return nil
}

// NOTE: The function to start the gRPC xDS server (internal.RunServer) remains in your existing 'internal' package.