Skip to content

Commit 93160e9

Browse files
committed
feat: use V3 /connect for enrollment-flow gateways, add CallConnectGateway
Enrollment-flow gateways now use POST /api/v3/gateways/connect for cert refresh instead of POST /api/v2/gateways. Identity-based gateways continue using V2. Added UseV3Connect flag to GatewayConfig.
1 parent 625ec1c commit 93160e9

4 files changed

Lines changed: 39 additions & 4 deletions

File tree

packages/api/api.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -896,6 +896,26 @@ func CallGetRelays(httpClient *resty.Client) (GetRelaysResponse, error) {
896896
return resBody, nil
897897
}
898898

899+
func CallConnectGateway(httpClient *resty.Client, request ConnectGatewayRequest) (RegisterGatewayResponse, error) {
900+
var resBody RegisterGatewayResponse
901+
response, err := httpClient.
902+
R().
903+
SetResult(&resBody).
904+
SetHeader("User-Agent", USER_AGENT).
905+
SetBody(request).
906+
Post(fmt.Sprintf("%v/v3/gateways/connect", config.INFISICAL_URL))
907+
908+
if err != nil {
909+
return RegisterGatewayResponse{}, NewGenericRequestError(operationCallRegisterGateway, err)
910+
}
911+
912+
if response.IsError() {
913+
return RegisterGatewayResponse{}, NewAPIErrorWithResponse(operationCallRegisterGateway, response, nil)
914+
}
915+
916+
return resBody, nil
917+
}
918+
899919
func CallRegisterGateway(httpClient *resty.Client, request RegisterGatewayRequest) (RegisterGatewayResponse, error) {
900920
var resBody RegisterGatewayResponse
901921
response, err := httpClient.

packages/api/model.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -790,6 +790,10 @@ type RegisterGatewayRequest struct {
790790
Name string `json:"name,omitempty"`
791791
}
792792

793+
type ConnectGatewayRequest struct {
794+
RelayName string `json:"relayName,omitempty"`
795+
}
796+
793797
type EnrollGatewayRequest struct {
794798
Token string `json:"token"`
795799
RelayName string `json:"relayName,omitempty"`

packages/cmd/gateway.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,7 @@ var gatewayStartCmd = &cobra.Command{
373373
Name: gatewayName,
374374
RelayName: relayName,
375375
ReconnectDelay: 10 * time.Second,
376+
UseV3Connect: runningWithStoredToken,
376377
})
377378

378379
if err != nil {

packages/gateway-v2/gateway.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ type GatewayConfig struct {
8282
IdentityToken string
8383
SSHPort int
8484
ReconnectDelay time.Duration
85+
UseV3Connect bool // Use V3 /connect endpoint instead of V2 /gateways for cert refresh
8586
}
8687

8788
type pamSessionEntry struct {
@@ -505,10 +506,19 @@ func (g *Gateway) handleConnection(client *ssh.Client) error {
505506
}
506507

507508
func (g *Gateway) registerGateway() error {
508-
certResp, err := api.CallRegisterGateway(g.httpClient, api.RegisterGatewayRequest{
509-
RelayName: g.config.RelayName,
510-
Name: g.config.Name,
511-
})
509+
var certResp api.RegisterGatewayResponse
510+
var err error
511+
512+
if g.config.UseV3Connect {
513+
certResp, err = api.CallConnectGateway(g.httpClient, api.ConnectGatewayRequest{
514+
RelayName: g.config.RelayName,
515+
})
516+
} else {
517+
certResp, err = api.CallRegisterGateway(g.httpClient, api.RegisterGatewayRequest{
518+
RelayName: g.config.RelayName,
519+
Name: g.config.Name,
520+
})
521+
}
512522
if err != nil {
513523
return fmt.Errorf("failed to register gateway: %v", err)
514524
}

0 commit comments

Comments
 (0)