38 lines
965 B
Go
38 lines
965 B
Go
package config
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"fmt"
|
|
"io"
|
|
)
|
|
|
|
// Forwarder represents a client side listener to forward traffic to the edge
|
|
type Forwarder struct {
|
|
URL string `json:"url"`
|
|
Listener string `json:"listener"`
|
|
}
|
|
|
|
// Tunnel represents a tunnel that should be started
|
|
type Tunnel struct {
|
|
URL string `json:"url"`
|
|
Origin string `json:"origin"`
|
|
ProtocolType string `json:"type"`
|
|
}
|
|
|
|
// Root is the base options to configure the service
|
|
type Root struct {
|
|
OrgKey string `json:"org_key"`
|
|
ConfigType string `json:"type"`
|
|
CheckinInterval int `json:"checkin_interval"`
|
|
Forwarders []Forwarder `json:"forwarders,omitempty"`
|
|
Tunnels []Tunnel `json:"tunnels,omitempty"`
|
|
}
|
|
|
|
// Hash returns the computed values to see if the forwarder values change
|
|
func (f *Forwarder) Hash() string {
|
|
h := md5.New()
|
|
io.WriteString(h, f.URL)
|
|
io.WriteString(h, f.Listener)
|
|
return fmt.Sprintf("%x", h.Sum(nil))
|
|
}
|