caddy_edgeone_ip

package module
v0.0.0-...-f1d8ddc Latest Latest
Warning

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

Go to latest
Published: Oct 26, 2025 License: MIT Imports: 19 Imported by: 0

README

trusted_proxy Module for Caddy

This module fetches EdgeOne IP addresses using their API.

Example config

Add the following configuration under the appropriate server block in the global options:

trusted_proxies edgeone {
    zone_id xxx
    secret_id xxx
    secret_key xxx
    interval 168h
    timeout 15s
}

You can also use the caddy-combine-ip-ranges module to combine multiple IP sources:

trusted_proxies combine {
    static private_ranges
    cloudflare {
        interval 72h
        timeout 5s
    }
    edgeone {
        zone_id xxx
        secret_id xxx
        secret_key xxx
        interval 168h
        timeout 5s
    }
}

Configuration Options

zone_id, secret_id, and secret_key are only required when Origin Protection is enabled in your EdgeOne configuration.

Name Description Type Default
zone_id EdgeOne zone ID (required only if Origin Protection is enabled) string none
secret_id Tencent Cloud API Secret ID (used only if Origin Protection is enabled) string none
secret_key Tencent Cloud API Secret Key (used only if Origin Protection is enabled) string none
area Geographic region: global, mainland-china, or overseas string all regions
version IP version: v4, v6, or empty for both string both
interval How often to refresh EdgeOne IP ranges duration 1h
timeout Max time to wait for a response from the EdgeOne API duration no timeout

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Addresses

type Addresses struct {
	IPv4 []string `json:"IPv4,omitempty"`
	IPv6 []string `json:"IPv6,omitempty"`
}

type CurrentOriginACL

type CurrentOriginACL struct {
	EntireAddresses Addresses `json:"EntireAddresses,omitempty"`
	Version         string    `json:"Version,omitempty"`
	ActiveTime      string    `json:"ActiveTime,omitempty"`
	IsPlaned        string    `json:"IsPlaned,omitempty"`
}

type DescribeOriginACLRequest

type DescribeOriginACLRequest struct {
	ZoneId string `json:"ZoneId,omitempty"`
}

func (*DescribeOriginACLRequest) ToJsonString

func (r *DescribeOriginACLRequest) ToJsonString() string

type DescribeOriginACLResponse

type DescribeOriginACLResponse struct {
	Response struct {
		Error         *Error        `json:"Error,omitempty"`
		OriginACLInfo OriginACLInfo `json:"OriginACLInfo,omitempty"`
		RequestId     string        `json:"RequestId,omitempty"`
	}
}

func (*DescribeOriginACLResponse) FromJsonString

func (r *DescribeOriginACLResponse) FromJsonString(s []byte) error

func (*DescribeOriginACLResponse) ToJsonString

func (r *DescribeOriginACLResponse) ToJsonString() string

type EdgeOneIPRange

type EdgeOneIPRange struct {
	ZoneId    string `json:"zone_id,omitempty"`
	SecretId  string `json:"secret_id,omitempty"`
	SecretKey string `json:"secret_key,omitempty"`

	Area string `json:"area,omitempty"`

	Version  string         `json:"version,omitempty"`
	Interval caddy.Duration `json:"interval,omitempty"`
	Timeout  caddy.Duration `json:"timeout,omitempty"`
	// contains filtered or unexported fields
}

func (EdgeOneIPRange) CaddyModule

func (EdgeOneIPRange) CaddyModule() caddy.ModuleInfo

func (*EdgeOneIPRange) GetIPRanges

func (s *EdgeOneIPRange) GetIPRanges(_ *http.Request) []netip.Prefix

func (*EdgeOneIPRange) OriginACLPrefixes

func (s *EdgeOneIPRange) OriginACLPrefixes(ctx context.Context) ([]netip.Prefix, error)

func (*EdgeOneIPRange) OriginPrefixes

func (s *EdgeOneIPRange) OriginPrefixes(ctx context.Context) ([]netip.Prefix, error)

func (*EdgeOneIPRange) Provision

func (s *EdgeOneIPRange) Provision(ctx caddy.Context) error

func (*EdgeOneIPRange) UnmarshalCaddyfile

func (m *EdgeOneIPRange) UnmarshalCaddyfile(d *caddyfile.Dispenser) error

UnmarshalCaddyfile implements caddyfile.Unmarshaler.

edgeone {
   interval val
   timeout val
}

type Error

type Error struct {
	Code    string
	Message string
}

type NextOriginACL

type NextOriginACL struct {
	Version           string    `json:"Version,omitempty"`
	PlannedActiveTime string    `json:"PlannedActiveTime,omitempty"`
	EntireAddresses   Addresses `json:"EntireAddresses,omitempty"`
	AddedAddresses    Addresses `json:"AddedAddresses,omitempty"`
	RemovedAddresses  Addresses `json:"RemovedAddresses,omitempty"`
	NoChangeAddresses Addresses `json:"NoChangeAddresses,omitempty"`
}

type OriginACLInfo

type OriginACLInfo struct {
	L7Hosts          []string         `json:"L7Hosts,omitempty"`
	L4ProxyIds       []string         `json:"L4ProxyIds,omitempty"`
	CurrentOriginACL CurrentOriginACL `json:"CurrentOriginACL,omitempty"`
	NextOriginACL    NextOriginACL    `json:"NextOriginACL,omitempty"`
	Status           string           `json:"Status,omitempty"`
}

Jump to

Keyboard shortcuts

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