bind address wiring (#834)

This commit is contained in:
Michael Quigley 2025-02-05 11:35:45 -05:00
parent 66ad6005be
commit 9d22528a90
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62
4 changed files with 26 additions and 3 deletions

View File

@ -129,10 +129,12 @@ func (cmd *accessPrivateCommand) accessLocal(args []string, root env_core.Root)
bindAddress := cmd.bindAddress
if cmd.autoMode {
if accessResp.Payload.BackendMode == "udpTunnel" {
cmd.shutdown(accessResp.Payload.FrontendToken, root.Environment().ZitiIdentity, shrToken, zrok, auth)
cmd.error(errors.New("auto-addressing is not compatible with the 'udpTunnel' backend mode"))
}
autoAddress, err := util.AutoListenerAddress("tcp", cmd.autoAddress, cmd.autoStartPort, cmd.autoEndPort)
if err != nil {
cmd.shutdown(accessResp.Payload.FrontendToken, root.Environment().ZitiIdentity, shrToken, zrok, auth)
cmd.error(err)
}
bindAddress = autoAddress
@ -143,6 +145,7 @@ func (cmd *accessPrivateCommand) accessLocal(args []string, root env_core.Root)
upReq.Body.BindAddress = bindAddress
_, err = zrok.Share.UpdateAccess(upReq, auth)
if err != nil {
cmd.shutdown(accessResp.Payload.FrontendToken, root.Environment().ZitiIdentity, shrToken, zrok, auth)
cmd.error(err)
}
@ -156,6 +159,7 @@ func (cmd *accessPrivateCommand) accessLocal(args []string, root env_core.Root)
endpointUrl, err := url.Parse(protocol + bindAddress)
if err != nil {
cmd.shutdown(accessResp.Payload.FrontendToken, root.Environment().ZitiIdentity, shrToken, zrok, auth)
cmd.error(err)
}
@ -169,10 +173,12 @@ func (cmd *accessPrivateCommand) accessLocal(args []string, root env_core.Root)
RequestsChan: requests,
})
if err != nil {
cmd.shutdown(accessResp.Payload.FrontendToken, root.Environment().ZitiIdentity, shrToken, zrok, auth)
cmd.error(err)
}
go func() {
if err := fe.Run(); err != nil {
cmd.shutdown(accessResp.Payload.FrontendToken, root.Environment().ZitiIdentity, shrToken, zrok, auth)
cmd.error(err)
}
}()
@ -186,10 +192,12 @@ func (cmd *accessPrivateCommand) accessLocal(args []string, root env_core.Root)
IdleTime: time.Minute,
})
if err != nil {
cmd.shutdown(accessResp.Payload.FrontendToken, root.Environment().ZitiIdentity, shrToken, zrok, auth)
cmd.error(err)
}
go func() {
if err := fe.Run(); err != nil {
cmd.shutdown(accessResp.Payload.FrontendToken, root.Environment().ZitiIdentity, shrToken, zrok, auth)
cmd.error(err)
}
}()
@ -202,10 +210,12 @@ func (cmd *accessPrivateCommand) accessLocal(args []string, root env_core.Root)
RequestsChan: requests,
})
if err != nil {
cmd.shutdown(accessResp.Payload.FrontendToken, root.Environment().ZitiIdentity, shrToken, zrok, auth)
cmd.error(err)
}
go func() {
if err := fe.Run(); err != nil {
cmd.shutdown(accessResp.Payload.FrontendToken, root.Environment().ZitiIdentity, shrToken, zrok, auth)
cmd.error(err)
}
}()
@ -220,10 +230,12 @@ func (cmd *accessPrivateCommand) accessLocal(args []string, root env_core.Root)
RequestsChan: requests,
})
if err != nil {
cmd.shutdown(accessResp.Payload.FrontendToken, root.Environment().ZitiIdentity, shrToken, zrok, auth)
cmd.error(err)
}
go func() {
if err := fe.Run(); err != nil {
cmd.shutdown(accessResp.Payload.FrontendToken, root.Environment().ZitiIdentity, shrToken, zrok, auth)
cmd.error(err)
}
}()
@ -236,10 +248,12 @@ func (cmd *accessPrivateCommand) accessLocal(args []string, root env_core.Root)
cfg.RequestsChan = requests
fe, err := proxy.NewFrontend(cfg)
if err != nil {
cmd.shutdown(accessResp.Payload.FrontendToken, root.Environment().ZitiIdentity, shrToken, zrok, auth)
cmd.error(err)
}
go func() {
if err := fe.Run(); err != nil {
cmd.shutdown(accessResp.Payload.FrontendToken, root.Environment().ZitiIdentity, shrToken, zrok, auth)
cmd.error(err)
}
}()
@ -325,10 +339,10 @@ func (cmd *accessPrivateCommand) error(err error) {
panic(err)
}
func (cmd *accessPrivateCommand) shutdown(frontendName, envZId, shrToken string, zrok *rest_client_zrok.Zrok, auth runtime.ClientAuthInfoWriter) {
func (cmd *accessPrivateCommand) shutdown(frontendToken, envZId, shrToken string, zrok *rest_client_zrok.Zrok, auth runtime.ClientAuthInfoWriter) {
logrus.Infof("shutting down '%v'", shrToken)
req := share.NewUnaccessParams()
req.Body.FrontendToken = frontendName
req.Body.FrontendToken = frontendToken
req.Body.ShareToken = shrToken
req.Body.EnvZID = envZId
if _, err := zrok.Share.Unaccess(req, auth); err == nil {

View File

@ -92,6 +92,12 @@ func (h *overviewHandler) Handle(_ metadata.OverviewParams, principal *rest_mode
CreatedAt: fe.CreatedAt.UnixMilli(),
UpdatedAt: fe.UpdatedAt.UnixMilli(),
}
if fe.BindAddress != nil {
envFe.BindAddress = *fe.BindAddress
}
if fe.Description != nil {
envFe.Description = *fe.Description
}
if fe.PrivateShareId != nil {
feShr, err := str.GetShare(*fe.PrivateShareId, trx)
if err != nil {
@ -99,6 +105,7 @@ func (h *overviewHandler) Handle(_ metadata.OverviewParams, principal *rest_mode
return metadata.NewOverviewInternalServerError()
}
envFe.ShareToken = feShr.Token
envFe.BackendMode = feShr.BackendMode
}
ear.Frontends = append(ear.Frontends, envFe)
}

View File

@ -17,7 +17,7 @@ const AccessNode = ({ data }) => {
{shareHandle}
<Grid2 container sx={{ flexGrow: 1, p: 1 }} alignItems="center">
<Grid2 display="flex"><AccessIcon sx={{ fontSize: 15, mr: 0.5 }}/></Grid2>
<Grid2 display="flex">{data.label}</Grid2>
<Grid2 display="flex">{data.bindAddress}</Grid2>
</Grid2>
</>
);

View File

@ -83,6 +83,8 @@ export const mergeGraph = (oldVov: Graph, u: User, limited: boolean, newOv: Over
label: fe.frontendToken!,
feId: fe.id,
target: fe.shareToken,
bindAddress: fe.bindAddress,
backendMode: fe.backendMode,
envZId: fe.zId,
},
type: "access",