mirror of
https://github.com/openziti/zrok.git
synced 2024-11-22 16:13:47 +01:00
84 lines
1.9 KiB
Go
84 lines
1.9 KiB
Go
package agent
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/michaelquigley/pfxlog"
|
|
"github.com/openziti/zrok/agent/proctree"
|
|
"github.com/openziti/zrok/cmd/zrok/subordinate"
|
|
"github.com/openziti/zrok/sdk/golang/sdk"
|
|
"time"
|
|
)
|
|
|
|
type share struct {
|
|
token string
|
|
frontendEndpoints []string
|
|
target string
|
|
basicAuth []string
|
|
frontendSelection []string
|
|
shareMode sdk.ShareMode
|
|
backendMode sdk.BackendMode
|
|
reserved bool
|
|
insecure bool
|
|
oauthProvider string
|
|
oauthEmailAddressPatterns []string
|
|
oauthCheckInterval time.Duration
|
|
closed bool
|
|
accessGrants []string
|
|
|
|
process *proctree.Child
|
|
sub *subordinate.MessageHandler
|
|
|
|
agent *Agent
|
|
}
|
|
|
|
func (s *share) monitor() {
|
|
if err := proctree.WaitChild(s.process); err != nil {
|
|
pfxlog.ChannelLogger(s.token).Error(err)
|
|
}
|
|
s.agent.rmShare <- s
|
|
}
|
|
|
|
func (s *share) bootHandler(msgType string, msg subordinate.Message) error {
|
|
switch msgType {
|
|
case subordinate.BootMessage:
|
|
if v, found := msg["token"]; found {
|
|
if str, ok := v.(string); ok {
|
|
s.token = str
|
|
}
|
|
}
|
|
if v, found := msg["backend_mode"]; found {
|
|
if str, ok := v.(string); ok {
|
|
s.backendMode = sdk.BackendMode(str)
|
|
}
|
|
}
|
|
if v, found := msg["share_mode"]; found {
|
|
if str, ok := v.(string); ok {
|
|
s.shareMode = sdk.ShareMode(str)
|
|
}
|
|
}
|
|
if v, found := msg["frontend_endpoints"]; found {
|
|
if vArr, ok := v.([]interface{}); ok {
|
|
for _, v := range vArr {
|
|
if str, ok := v.(string); ok {
|
|
s.frontendEndpoints = append(s.frontendEndpoints, str)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if v, found := msg["target"]; found {
|
|
if str, ok := v.(string); ok {
|
|
s.target = str
|
|
}
|
|
}
|
|
|
|
case subordinate.ErrorMessage:
|
|
if v, found := msg[subordinate.ErrorMessage]; found {
|
|
if str, ok := v.(string); ok {
|
|
return errors.New(str)
|
|
}
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|