diff --git a/build/zitadel/generate-grpc.sh b/build/zitadel/generate-grpc.sh index 891125cb6..865952fb6 100755 --- a/build/zitadel/generate-grpc.sh +++ b/build/zitadel/generate-grpc.sh @@ -96,4 +96,16 @@ protoc \ --validate_out=lang=go:${GOPATH}/src \ ${PROTO_PATH}/session/v2alpha/session_service.proto +protoc \ + -I=/proto/include \ + --grpc-gateway_out ${GOPATH}/src \ + --grpc-gateway_opt logtostderr=true \ + --grpc-gateway_opt allow_delete_body=true \ + --openapiv2_out ${OPENAPI_PATH} \ + --openapiv2_opt logtostderr=true \ + --openapiv2_opt allow_delete_body=true \ + --zitadel_out=${GOPATH}/src \ + --validate_out=lang=go:${GOPATH}/src \ + ${PROTO_PATH}/settings/v2alpha/settings_service.proto + echo "done generating grpc" diff --git a/cmd/start/start.go b/cmd/start/start.go index 4ae1e15b0..0d2d97369 100644 --- a/cmd/start/start.go +++ b/cmd/start/start.go @@ -6,7 +6,6 @@ import ( _ "embed" "fmt" "math" - "net" "net/http" "os" "os/signal" @@ -22,7 +21,6 @@ import ( "github.com/zitadel/saml/pkg/provider" "golang.org/x/net/http2" "golang.org/x/net/http2/h2c" - "golang.org/x/sys/unix" "github.com/zitadel/zitadel/cmd/key" cmd_tls "github.com/zitadel/zitadel/cmd/tls" @@ -35,6 +33,7 @@ import ( "github.com/zitadel/zitadel/internal/api/grpc/auth" "github.com/zitadel/zitadel/internal/api/grpc/management" "github.com/zitadel/zitadel/internal/api/grpc/session/v2" + "github.com/zitadel/zitadel/internal/api/grpc/settings/v2" "github.com/zitadel/zitadel/internal/api/grpc/system" "github.com/zitadel/zitadel/internal/api/grpc/user/v2" http_util "github.com/zitadel/zitadel/internal/api/http" @@ -339,6 +338,9 @@ func startAPIs( if err := apis.RegisterService(ctx, session.CreateServer(commands, queries, permissionCheck)); err != nil { return err } + if err := apis.RegisterService(ctx, settings.CreateServer(commands, queries, config.ExternalSecure)); err != nil { + return err + } instanceInterceptor := middleware.InstanceInterceptor(queries, config.HTTP1HostHeader, login.IgnoreInstanceEndpoints...) assetsCache := middleware.AssetsCacheInterceptor(config.AssetStorage.Cache.MaxAge, config.AssetStorage.Cache.SharedMaxAge) apis.RegisterHandlerOnPrefix(assets.HandlerPrefix, assets.NewHandler(commands, verifier, config.InternalAuthZ, id.SonyFlakeGenerator(), store, queries, middleware.CallDurationHandler, instanceInterceptor.Handler, assetsCache.Handler, limitingAccessInterceptor.Handle)) @@ -392,20 +394,11 @@ func startAPIs( return nil } -func reusePort(network, address string, conn syscall.RawConn) error { - return conn.Control(func(descriptor uintptr) { - err := syscall.SetsockoptInt(int(descriptor), syscall.SOL_SOCKET, unix.SO_REUSEPORT, 1) - if err != nil { - panic(err) - } - }) -} - func listen(ctx context.Context, router *mux.Router, port uint16, tlsConfig *tls.Config, shutdown <-chan os.Signal) error { http2Server := &http2.Server{} http1Server := &http.Server{Handler: h2c.NewHandler(router, http2Server), TLSConfig: tlsConfig} - lc := &net.ListenConfig{Control: reusePort} + lc := listenConfig() lis, err := lc.Listen(ctx, "tcp", fmt.Sprintf(":%d", port)) if err != nil { return fmt.Errorf("tcp listener on %d failed: %w", port, err) diff --git a/cmd/start/start_port.go b/cmd/start/start_port.go new file mode 100644 index 000000000..bb60fea25 --- /dev/null +++ b/cmd/start/start_port.go @@ -0,0 +1,11 @@ +//go:build !integration + +package start + +import ( + "net" +) + +func listenConfig() *net.ListenConfig { + return &net.ListenConfig{} +} diff --git a/cmd/start/start_port_integration.go b/cmd/start/start_port_integration.go new file mode 100644 index 000000000..1c5763d6e --- /dev/null +++ b/cmd/start/start_port_integration.go @@ -0,0 +1,25 @@ +//go:build integration + +package start + +import ( + "net" + "syscall" + + "golang.org/x/sys/unix" +) + +func listenConfig() *net.ListenConfig { + return &net.ListenConfig{ + Control: reusePort, + } +} + +func reusePort(network, address string, conn syscall.RawConn) error { + return conn.Control(func(descriptor uintptr) { + err := syscall.SetsockoptInt(int(descriptor), syscall.SOL_SOCKET, unix.SO_REUSEPORT, 1) + if err != nil { + panic(err) + } + }) +} diff --git a/console/src/app/modules/app-radio/app-auth-method-radio/app-auth-method-radio.component.html b/console/src/app/modules/app-radio/app-auth-method-radio/app-auth-method-radio.component.html index 5ab289448..08b278854 100644 --- a/console/src/app/modules/app-radio/app-auth-method-radio/app-auth-method-radio.component.html +++ b/console/src/app/modules/app-radio/app-auth-method-radio/app-auth-method-radio.component.html @@ -30,19 +30,23 @@
{{ 'APP.OIDC.REDIRECTTITLE' | translate }}
@@ -431,7 +429,13 @@ -