Need help with cloudflare-go?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

cloudflare
512 Stars 231 Forks BSD 3-Clause "New" or "Revised" License 579 Commits 9 Opened issues

Description

Go library for the Cloudflare v4 API

Services available

!
?

Need anything else?

Contributors list

cloudflare-go

GoDoc Test Go Report Card

Note: This library is under active development as we expand it to cover our (expanding!) API. Consider the public API of this package a little unstable as we work towards a v1.0.

A Go library for interacting with Cloudflare's API v4. This library allows you to:

  • Manage and automate changes to your DNS records within Cloudflare
  • Manage and automate changes to your zones (domains) on Cloudflare, including adding new zones to your account
  • List and modify the status of WAF (Web Application Firewall) rules for your zones
  • Fetch Cloudflare's IP ranges for automating your firewall whitelisting

A command-line client, flarectl, is also available as part of this project.

Features

The current feature list includes:

  • [x] Cache purging
  • [x] Cloudflare IPs
  • [x] Custom hostnames
  • [x] DNS Records
  • [x] Firewall (partial)
  • [ ] Keyless SSL
  • [x] Load Balancing
  • [x] Logpush Jobs
  • [ ] Organization Administration
  • [x] Origin CA
  • [x] Railgun administration
  • [x] Rate Limiting
  • [x] User Administration (partial)
  • [x] Virtual DNS Management
  • [x] Web Application Firewall (WAF)
  • [x] Zone Lockdown and User-Agent Block rules
  • [x] Zones
  • [x] Workers KV

Pull Requests are welcome, but please open an issue (or comment in an existing issue) to discuss any non-trivial changes before submitting code.

Installation

You need a working Go environment.

go get github.com/cloudflare/cloudflare-go

Getting Started

package main

import ( "fmt" "log" "os"

"github.com/cloudflare/cloudflare-go"

)

func main() { // Construct a new API object api, err := cloudflare.New(os.Getenv("CF_API_KEY"), os.Getenv("CF_API_EMAIL")) if err != nil { log.Fatal(err) }

// Fetch user details on the account
u, err := api.UserDetails()
if err != nil {
    log.Fatal(err)
}
// Print user details
fmt.Println(u)

// Fetch the zone ID
id, err := api.ZoneIDByName("example.com") // Assuming example.com exists in your Cloudflare account already
if err != nil {
    log.Fatal(err)
}

// Fetch zone details
zone, err := api.ZoneDetails(id)
if err != nil {
    log.Fatal(err)
}
// Print zone details
fmt.Println(zone)

}

Also refer to the API documentation for how to use this package in-depth.

License

BSD licensed. See the LICENSE file for details.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.