mirror of
https://github.com/openziti/zrok.git
synced 2025-08-12 17:27:29 +02:00
share public; share reserved (#922)
This commit is contained in:
@ -18,15 +18,16 @@ type SharePrivateRequest struct {
|
||||
}
|
||||
|
||||
type SharePublicRequest struct {
|
||||
Target string
|
||||
BasicAuth []string
|
||||
FrontendSelection []string
|
||||
BackendMode string
|
||||
Insecure bool
|
||||
OauthProvider string
|
||||
OauthCheckInterval string
|
||||
Closed bool
|
||||
AccessGrants []string
|
||||
Target string
|
||||
BasicAuth []string
|
||||
FrontendSelection []string
|
||||
BackendMode string
|
||||
Insecure bool
|
||||
OauthProvider string
|
||||
OauthEmailAddressPatterns []string
|
||||
OauthCheckInterval string
|
||||
Closed bool
|
||||
AccessGrants []string
|
||||
}
|
||||
|
||||
type ShareReservedRequest struct {
|
||||
@ -35,6 +36,14 @@ type ShareReservedRequest struct {
|
||||
Insecure bool
|
||||
}
|
||||
|
||||
type ShareReservedResponse struct {
|
||||
Token string
|
||||
BackendMode string
|
||||
ShareMode string
|
||||
FrontendEndpoints []string
|
||||
Target string
|
||||
}
|
||||
|
||||
type share struct {
|
||||
token string
|
||||
frontendEndpoints []string
|
||||
|
@ -13,14 +13,14 @@ import (
|
||||
"os"
|
||||
)
|
||||
|
||||
func (i *agentGrpcImpl) SharePublic(_ context.Context, req *agentGrpc.SharePublicRequest) (*agentGrpc.SharePublicResponse, error) {
|
||||
func (a *Agent) SharePublic(req *SharePublicRequest) (shareToken string, frontendEndpoint []string, err error) {
|
||||
root, err := environment.LoadRoot()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return "", nil, err
|
||||
}
|
||||
|
||||
if !root.IsEnabled() {
|
||||
return nil, errors.New("unable to load environment; did you 'zrok enable'?")
|
||||
return "", nil, errors.New("unable to load environment; did you 'zrok enable'?")
|
||||
}
|
||||
|
||||
shrCmd := []string{os.Args[0], "share", "public", "--subordinate", "-b", req.BackendMode}
|
||||
@ -28,7 +28,7 @@ func (i *agentGrpcImpl) SharePublic(_ context.Context, req *agentGrpc.SharePubli
|
||||
shareMode: sdk.PublicShareMode,
|
||||
backendMode: sdk.BackendMode(req.BackendMode),
|
||||
sub: subordinate.NewMessageHandler(),
|
||||
agent: i.agent,
|
||||
agent: a,
|
||||
}
|
||||
shr.sub.MessageHandler = func(msg subordinate.Message) {
|
||||
logrus.Info(msg)
|
||||
@ -87,23 +87,39 @@ func (i *agentGrpcImpl) SharePublic(_ context.Context, req *agentGrpc.SharePubli
|
||||
|
||||
shr.process, err = proctree.StartChild(shr.sub.Tail, shrCmd...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return "", nil, err
|
||||
}
|
||||
|
||||
<-shr.sub.BootComplete
|
||||
|
||||
if bootErr == nil {
|
||||
go shr.monitor()
|
||||
i.agent.addShare <- shr
|
||||
return &agentGrpc.SharePublicResponse{
|
||||
Token: shr.token,
|
||||
FrontendEndpoints: shr.frontendEndpoints,
|
||||
}, nil
|
||||
a.addShare <- shr
|
||||
return shr.token, shr.frontendEndpoints, nil
|
||||
|
||||
} else {
|
||||
if err := proctree.WaitChild(shr.process); err != nil {
|
||||
logrus.Errorf("error joining: %v", err)
|
||||
}
|
||||
return nil, fmt.Errorf("unable to start share: %v", bootErr)
|
||||
return "", nil, fmt.Errorf("unable to start share: %v", bootErr)
|
||||
}
|
||||
}
|
||||
|
||||
func (i *agentGrpcImpl) SharePublic(_ context.Context, req *agentGrpc.SharePublicRequest) (*agentGrpc.SharePublicResponse, error) {
|
||||
if shareToken, frontendEndpoints, err := i.agent.SharePublic(&SharePublicRequest{
|
||||
Target: req.Target,
|
||||
BasicAuth: req.BasicAuth,
|
||||
FrontendSelection: req.FrontendSelection,
|
||||
BackendMode: req.BackendMode,
|
||||
Insecure: req.Insecure,
|
||||
OauthProvider: req.OauthProvider,
|
||||
OauthEmailAddressPatterns: req.OauthEmailAddressPatterns,
|
||||
OauthCheckInterval: req.OauthCheckInterval,
|
||||
Closed: req.Closed,
|
||||
AccessGrants: req.AccessGrants,
|
||||
}); err == nil {
|
||||
return &agentGrpc.SharePublicResponse{Token: shareToken, FrontendEndpoints: frontendEndpoints}, nil
|
||||
} else {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ import (
|
||||
"os"
|
||||
)
|
||||
|
||||
func (i *agentGrpcImpl) ShareReserved(_ context.Context, req *agentGrpc.ShareReservedRequest) (*agentGrpc.ShareReservedResponse, error) {
|
||||
func (a *Agent) ShareReserved(req *ShareReservedRequest) (*ShareReservedResponse, error) {
|
||||
root, err := environment.LoadRoot()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -26,7 +26,7 @@ func (i *agentGrpcImpl) ShareReserved(_ context.Context, req *agentGrpc.ShareRes
|
||||
shr := &share{
|
||||
reserved: true,
|
||||
sub: subordinate.NewMessageHandler(),
|
||||
agent: i.agent,
|
||||
agent: a,
|
||||
}
|
||||
shr.sub.MessageHandler = func(msg subordinate.Message) {
|
||||
logrus.Info(msg)
|
||||
@ -60,8 +60,8 @@ func (i *agentGrpcImpl) ShareReserved(_ context.Context, req *agentGrpc.ShareRes
|
||||
|
||||
if bootErr == nil {
|
||||
go shr.monitor()
|
||||
i.agent.addShare <- shr
|
||||
return &agentGrpc.ShareReservedResponse{
|
||||
a.addShare <- shr
|
||||
return &ShareReservedResponse{
|
||||
Token: shr.token,
|
||||
BackendMode: string(shr.backendMode),
|
||||
ShareMode: string(shr.shareMode),
|
||||
@ -76,3 +76,21 @@ func (i *agentGrpcImpl) ShareReserved(_ context.Context, req *agentGrpc.ShareRes
|
||||
return nil, fmt.Errorf("unable to start share: %v", bootErr)
|
||||
}
|
||||
}
|
||||
|
||||
func (i *agentGrpcImpl) ShareReserved(_ context.Context, req *agentGrpc.ShareReservedRequest) (*agentGrpc.ShareReservedResponse, error) {
|
||||
if resp, err := i.agent.ShareReserved(&ShareReservedRequest{
|
||||
Token: req.Token,
|
||||
OverrideEndpoint: req.OverrideEndpoint,
|
||||
Insecure: req.Insecure,
|
||||
}); err == nil {
|
||||
return &agentGrpc.ShareReservedResponse{
|
||||
Token: resp.Token,
|
||||
BackendMode: resp.BackendMode,
|
||||
ShareMode: resp.ShareMode,
|
||||
FrontendEndpoints: resp.FrontendEndpoints,
|
||||
Target: resp.Target,
|
||||
}, nil
|
||||
} else {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user