From 757f68b054d35387e12210f6be3c55c99ce36fd0 Mon Sep 17 00:00:00 2001 From: Safwan Luban <81353028+Toothless5143@users.noreply.github.com> Date: Sun, 22 Mar 2026 18:01:33 +0600 Subject: [PATCH 1/3] fix: expand token regex to support newer cfut_ format tokens Cloudflare's newer API tokens use the cfut_ prefix and are 53 characters long, exceeding the previous 50 character limit in the regex validator. Expanding the upper bound to 100 to accommodate current and future token formats. --- cloudflare.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cloudflare.go b/cloudflare.go index 10b159b..072837e 100644 --- a/cloudflare.go +++ b/cloudflare.go @@ -23,8 +23,8 @@ import ( "github.com/libdns/cloudflare" ) -// cloudflareTokenRegexp matches Cloudflare tokens consisting of 35 to 50 alphanumeric characters, dashes, or underscores. -var cloudflareTokenRegexp = regexp.MustCompile(`^[A-Za-z0-9_-]{35,50}$`) +// cloudflareTokenRegexp matches Cloudflare tokens consisting of 35 to 100 alphanumeric characters, dashes, or underscores. +var cloudflareTokenRegexp = regexp.MustCompile(`^[A-Za-z0-9_-]{35,100}$`) // Provider wraps the provider implementation as a Caddy module. type Provider struct{ *cloudflare.Provider } From 24a06d73626beb823f3e7074c36e7b5f66ec98f1 Mon Sep 17 00:00:00 2001 From: Safwan Luban <81353028+Toothless5143@users.noreply.github.com> Date: Sun, 22 Mar 2026 18:11:05 +0600 Subject: [PATCH 2/3] fix: expand token regex to support newer cfut_ format tokens Cloudflare's newer API tokens use the cfut_ prefix and are 53 characters long, exceeding the previous 50 character limit. Expanding upper bound to 70 to accommodate current and future token formats. --- cloudflare.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cloudflare.go b/cloudflare.go index 072837e..e23044e 100644 --- a/cloudflare.go +++ b/cloudflare.go @@ -23,8 +23,8 @@ import ( "github.com/libdns/cloudflare" ) -// cloudflareTokenRegexp matches Cloudflare tokens consisting of 35 to 100 alphanumeric characters, dashes, or underscores. -var cloudflareTokenRegexp = regexp.MustCompile(`^[A-Za-z0-9_-]{35,100}$`) +// cloudflareTokenRegexp matches Cloudflare tokens consisting of 35 to 70 alphanumeric characters, dashes, or underscores. +var cloudflareTokenRegexp = regexp.MustCompile(`^[A-Za-z0-9_-]{35,70}$`) // Provider wraps the provider implementation as a Caddy module. type Provider struct{ *cloudflare.Provider } From 3544756b8a65ed44c6ac6a4e3ce7be84b76a8049 Mon Sep 17 00:00:00 2001 From: Safwan Luban <81353028+Toothless5143@users.noreply.github.com> Date: Sun, 22 Mar 2026 18:34:14 +0600 Subject: [PATCH 3/3] fix: expand token regex to support newer cfut_ format tokens Cloudflare now issues tokens with cfut_ prefix that are 53 characters, exceeding the previous 50 character limit. Expanding upper bound to 70. Added cfut_ prefixed token to TestValidToken. --- cloudflare_test.go | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/cloudflare_test.go b/cloudflare_test.go index e9d81e2..1b69049 100644 --- a/cloudflare_test.go +++ b/cloudflare_test.go @@ -163,17 +163,23 @@ func TestInvalidTokens(t *testing.T) { } func TestValidToken(t *testing.T) { - goodToken := "Sqqty8-Vn0iOP29rvqYgwKz_xqGQ4y5JhuVL1-qU" - config := fmt.Sprintf(`cloudflare %s`, goodToken) - dispenser := caddyfile.NewTestDispenser(config) - p := Provider{&cloudflare.Provider{}} + goodTokens := []string{ + "Sqqty8-Vn0iOP29rvqYgwKz_xqGQ4y5JhuVL1-qU", + "cfut_o05zJzvjuYIAytVYUGhzuGlGnuxbKDINWqnVk6mP560d0f24", + } - err := p.UnmarshalCaddyfile(dispenser) - if err != nil { - t.Errorf( - "Expected valid token '%s', but validation failed: %v", - goodToken, - err, - ) + for _, goodToken := range goodTokens { + config := fmt.Sprintf(`cloudflare %s`, goodToken) + dispenser := caddyfile.NewTestDispenser(config) + p := Provider{&cloudflare.Provider{}} + + err := p.UnmarshalCaddyfile(dispenser) + if err != nil { + t.Errorf( + "Expected valid token '%s', but validation failed: %v", + goodToken, + err, + ) + } } }