123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package connection
- import (
- "io"
- "net/http"
- "strconv"
- "strings"
- "time"
- "github.com/cloudflare/cloudflared/tunnelrpc/pogs"
- "github.com/google/uuid"
- )
- const LogFieldConnIndex = "connIndex"
- type Config struct {
- OriginClient OriginClient
- GracePeriod time.Duration
- ReplaceExisting bool
- }
- type NamedTunnelConfig struct {
- Credentials Credentials
- Client pogs.ClientInfo
- }
- // Credentials are stored in the credentials file and contain all info needed to run a tunnel.
- type Credentials struct {
- AccountTag string
- TunnelSecret []byte
- TunnelID uuid.UUID
- TunnelName string
- }
- func (c *Credentials) Auth() pogs.TunnelAuth {
- return pogs.TunnelAuth{
- AccountTag: c.AccountTag,
- TunnelSecret: c.TunnelSecret,
- }
- }
- type ClassicTunnelConfig struct {
- Hostname string
- OriginCert []byte
- // feature-flag to use new edge reconnect tokens
- UseReconnectToken bool
- }
- func (c *ClassicTunnelConfig) IsTrialZone() bool {
- return c.Hostname == ""
- }
- type OriginClient interface {
- Proxy(w ResponseWriter, req *http.Request, isWebsocket bool) error
- }
- type ResponseWriter interface {
- WriteRespHeaders(*http.Response) error
- WriteErrorResponse()
- io.ReadWriter
- }
- type ConnectedFuse interface {
- Connected()
- IsConnected() bool
- }
- func IsServerSentEvent(headers http.Header) bool {
- if contentType := headers.Get("content-type"); contentType != "" {
- return strings.HasPrefix(strings.ToLower(contentType), "text/event-stream")
- }
- return false
- }
- func uint8ToString(input uint8) string {
- return strconv.FormatUint(uint64(input), 10)
- }
|