cloudflarecontroller

package
v0.0.23 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 20, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const ControllerIdentifier = "strrl.dev/cloudflare-tunnel-ingress-controller"
View Source
const LegacyCommentFormat = "managed by strrl.dev/cloudflare-tunnel-ingress-controller, tunnel [%s]"

LegacyCommentFormat is the old comment-based ownership format. Used for migration: records with this comment are recognized as managed by this controller.

View Source
const ManagedRecordTXTPrefix = "_ctic_managed"
View Source
const WellKnownTunnelDomainFormat = "%s.cfargotunnel.com"

Variables

This section is empty.

Functions

func GetTunnelIdFromTunnelName

func GetTunnelIdFromTunnelName(ctx context.Context, logger logr.Logger, cfClient *cloudflare.API, tunnelName string, accountId string) (string, error)

Types

type DNSCommentTemplateData added in v0.0.23

type DNSCommentTemplateData struct {
	TunnelName string // Name of the Cloudflare Tunnel
	TunnelId   string // ID of the Cloudflare Tunnel
	Hostname   string // DNS record hostname (e.g. "app.example.com")
}

DNSCommentTemplateData contains the variables available in the DNS comment template. See https://developers.cloudflare.com/dns/manage-dns-records/reference/record-attributes/ for comment length limits per Cloudflare plan (Free: 100, Pro/Business/Enterprise: 500 chars).

type DNSOperationCreate

type DNSOperationCreate struct {
	Hostname string
	Type     string
	Content  string
}

type DNSOperationDelete

type DNSOperationDelete struct {
	OldRecord cloudflare.DNSRecord
}

type DNSOperationUpdate

type DNSOperationUpdate struct {
	OldRecord cloudflare.DNSRecord
	Type      string
	Content   string
}

type Domain added in v0.0.13

type Domain struct {
	Name string
}

func (Domain) IsSubDomainOf added in v0.0.13

func (d Domain) IsSubDomainOf(target Domain) bool

type ManagedRecordTXTContent added in v0.0.22

type ManagedRecordTXTContent struct {
	Controller string `json:"controller"`
	Tunnel     string `json:"tunnel"`
}

type TunnelClient

type TunnelClient struct {
	// contains filtered or unexported fields
}

func BootstrapTunnelClientWithTunnelName

func BootstrapTunnelClientWithTunnelName(ctx context.Context, logger logr.Logger, cfClient *cloudflare.API, accountId string, tunnelName string, dnsCommentTemplate string) (*TunnelClient, error)

func NewTunnelClient

func NewTunnelClient(logger logr.Logger, cfClient *cloudflare.API, accountId string, tunnelId string, tunnelName string, dnsCommentTemplate string) *TunnelClient

func (*TunnelClient) FetchTunnelToken

func (t *TunnelClient) FetchTunnelToken(ctx context.Context) (string, error)

func (*TunnelClient) PutExposures

func (t *TunnelClient) PutExposures(ctx context.Context, exposures []exposure.Exposure) error

func (*TunnelClient) TunnelDomain added in v0.0.10

func (t *TunnelClient) TunnelDomain() string

type TunnelClientInterface added in v0.0.13

type TunnelClientInterface interface {
	PutExposures(ctx context.Context, exposures []exposure.Exposure) error
	TunnelDomain() string
	FetchTunnelToken(ctx context.Context) (string, error)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL