mirror of
https://github.com/openziti/zrok.git
synced 2025-08-13 09:47:37 +02:00
share public; share reserved (#922)
This commit is contained in:
@ -18,15 +18,16 @@ type SharePrivateRequest struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type SharePublicRequest struct {
|
type SharePublicRequest struct {
|
||||||
Target string
|
Target string
|
||||||
BasicAuth []string
|
BasicAuth []string
|
||||||
FrontendSelection []string
|
FrontendSelection []string
|
||||||
BackendMode string
|
BackendMode string
|
||||||
Insecure bool
|
Insecure bool
|
||||||
OauthProvider string
|
OauthProvider string
|
||||||
OauthCheckInterval string
|
OauthEmailAddressPatterns []string
|
||||||
Closed bool
|
OauthCheckInterval string
|
||||||
AccessGrants []string
|
Closed bool
|
||||||
|
AccessGrants []string
|
||||||
}
|
}
|
||||||
|
|
||||||
type ShareReservedRequest struct {
|
type ShareReservedRequest struct {
|
||||||
@ -35,6 +36,14 @@ type ShareReservedRequest struct {
|
|||||||
Insecure bool
|
Insecure bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ShareReservedResponse struct {
|
||||||
|
Token string
|
||||||
|
BackendMode string
|
||||||
|
ShareMode string
|
||||||
|
FrontendEndpoints []string
|
||||||
|
Target string
|
||||||
|
}
|
||||||
|
|
||||||
type share struct {
|
type share struct {
|
||||||
token string
|
token string
|
||||||
frontendEndpoints []string
|
frontendEndpoints []string
|
||||||
|
@ -13,14 +13,14 @@ import (
|
|||||||
"os"
|
"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()
|
root, err := environment.LoadRoot()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return "", nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if !root.IsEnabled() {
|
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}
|
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,
|
shareMode: sdk.PublicShareMode,
|
||||||
backendMode: sdk.BackendMode(req.BackendMode),
|
backendMode: sdk.BackendMode(req.BackendMode),
|
||||||
sub: subordinate.NewMessageHandler(),
|
sub: subordinate.NewMessageHandler(),
|
||||||
agent: i.agent,
|
agent: a,
|
||||||
}
|
}
|
||||||
shr.sub.MessageHandler = func(msg subordinate.Message) {
|
shr.sub.MessageHandler = func(msg subordinate.Message) {
|
||||||
logrus.Info(msg)
|
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...)
|
shr.process, err = proctree.StartChild(shr.sub.Tail, shrCmd...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return "", nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
<-shr.sub.BootComplete
|
<-shr.sub.BootComplete
|
||||||
|
|
||||||
if bootErr == nil {
|
if bootErr == nil {
|
||||||
go shr.monitor()
|
go shr.monitor()
|
||||||
i.agent.addShare <- shr
|
a.addShare <- shr
|
||||||
return &agentGrpc.SharePublicResponse{
|
return shr.token, shr.frontendEndpoints, nil
|
||||||
Token: shr.token,
|
|
||||||
FrontendEndpoints: shr.frontendEndpoints,
|
|
||||||
}, nil
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if err := proctree.WaitChild(shr.process); err != nil {
|
if err := proctree.WaitChild(shr.process); err != nil {
|
||||||
logrus.Errorf("error joining: %v", err)
|
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"
|
"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()
|
root, err := environment.LoadRoot()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -26,7 +26,7 @@ func (i *agentGrpcImpl) ShareReserved(_ context.Context, req *agentGrpc.ShareRes
|
|||||||
shr := &share{
|
shr := &share{
|
||||||
reserved: true,
|
reserved: true,
|
||||||
sub: subordinate.NewMessageHandler(),
|
sub: subordinate.NewMessageHandler(),
|
||||||
agent: i.agent,
|
agent: a,
|
||||||
}
|
}
|
||||||
shr.sub.MessageHandler = func(msg subordinate.Message) {
|
shr.sub.MessageHandler = func(msg subordinate.Message) {
|
||||||
logrus.Info(msg)
|
logrus.Info(msg)
|
||||||
@ -60,8 +60,8 @@ func (i *agentGrpcImpl) ShareReserved(_ context.Context, req *agentGrpc.ShareRes
|
|||||||
|
|
||||||
if bootErr == nil {
|
if bootErr == nil {
|
||||||
go shr.monitor()
|
go shr.monitor()
|
||||||
i.agent.addShare <- shr
|
a.addShare <- shr
|
||||||
return &agentGrpc.ShareReservedResponse{
|
return &ShareReservedResponse{
|
||||||
Token: shr.token,
|
Token: shr.token,
|
||||||
BackendMode: string(shr.backendMode),
|
BackendMode: string(shr.backendMode),
|
||||||
ShareMode: string(shr.shareMode),
|
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)
|
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