Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/danielpigott/cloudflare-cli
CLI for interacting with Cloudflare
https://github.com/danielpigott/cloudflare-cli
cli cloudflare javascript
Last synced: 13 days ago
JSON representation
CLI for interacting with Cloudflare
- Host: GitHub
- URL: https://github.com/danielpigott/cloudflare-cli
- Owner: danielpigott
- License: mit
- Created: 2014-02-14T02:40:37.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-04-15T17:39:26.000Z (over 1 year ago)
- Last Synced: 2024-04-27T04:35:19.437Z (7 months ago)
- Topics: cli, cloudflare, javascript
- Language: JavaScript
- Size: 802 KB
- Stars: 201
- Watchers: 7
- Forks: 38
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- License: LICENSE-MIT
Awesome Lists containing this project
- awesome-cloudflare - CLI Tool - CLI tool for interacting with Cloudflare. (DNS)
- awesome - danielpigott/cloudflare-cli - CLI for interacting with Cloudflare (JavaScript)
- awesome-cloudflare - CLI Tool - CLI tool for interacting with Cloudflare. (DNS)
README
cloudflare-cli
==============
[![npm version](https://badge.fury.io/js/cloudflare-cli.svg)](https://badge.fury.io/js/cloudflare-cli)
[![CircleCI](https://circleci.com/gh/danielpigott/cloudflare-cli.svg?style=svg)](https://circleci.com/gh/danielpigott/cloudflare-cli)CLI for interacting with Cloudflare
## Installation
You can install using NPM or using DockerInstall via npm
```bash
npm install -g cloudflare-cli
```Install from Dockerhub
```bash
docker pull dpig/cloudflare-cli:latest
# Running a command
docker run --rm -it dpig/cloudflare-cli -h
```Build Dockerfile locally
```bash
git clone https://github.com/danielpigott/cloudflare-cli.git\
docker build -t cloudflare-cli .
# Running a command
docker run --rm -it cloudflare-cli -h
```## Setup
You can setup a yaml config file with default parameters e.g. token and email.
By default cfcli will look for ".cfcli.yml" in your home directory (you can also pass in a config file with -c)### Cloudflare API Keys and Tokens
Cloudflare has two API client methods: [API Tokens](https://developers.cloudflare.com/api/tokens) and [API Keys](https://developers.cloudflare.com/api/keys) (Legacy) (See below screenshot)
* **API Tokens** can be setup with specific permissions and do _not_ use an email address. Recommended by Cloudflare
* **API Keys** are the legacy method, do not have specific permissions and require the corresponding user's email address to be provided.In the `cfcli` setup, if you _exclude_ an email address, then the `cfcli` tool will assume you are using an **API Token** instead of an **API Key**.
![doc/cloudflare_api_tokens_and_keys.png](doc/cloudflare_api_tokens_and_keys.png)
### Configuration Example
If you have only one cloudflare account you can set it up as below:```yaml
defaults:
token:
email: #Only required if using legacy API Key
domain:
```If you have multiple cloudflare accounts, and you can set up accounts as below:
```yaml
defaults:
account: work
accounts:
work:
token:
email:
domain:
play:
token:
email:
domain:
adventure:
token:
domain:
```You can then use `-u play` to interact with the second cloudflare account.
If the `email` option is excluded, then the request will be made using what is assumed to be an **API Token** vs. an **API Key.**
```yaml
defaults:
account: adventure
accounts:
adventure:
token:
domain:
```### Environment Variables
* Environment variables take precedence over the configuration file.
* If the `CF_API_EMAIL` variable is excluded, then the request will be made using what is assumed to be an **API Token** vs. an **API Key.**```
CF_API_KEY # maps to token
CF_API_EMAIL # maps to email
CF_API_DOMAIN # maps to domain
```## Usage
```
NAME
cfcli - Interact with cloudflare from the command lineSYNOPSIS
cfcli [options] command [parameters]OPTIONS:
-c --config Path to yml file with config defaults (defaults to ~/.cfcli.yml
-e --email Email of your cloudflare account
-k --token Token for your cloudflare account
-u --account Choose one of your named cloudflare accounts from .cfcli.yml
-d --domain Domain to operate on
-a --activate Activate cloudflare after creating record (for addrecord)
-f --format Format when printing records (csv,json or table)
-t --type Type of record (for dns record functions)
-p --priority Set priority when adding a record (MX or SRV)
-q --query Comma separated filters to use when finding a record
-l --ttl Set ttl on add or edit (120 - 86400 seconds, or 1 for auto)
-h --help Display helpCOMMANDS:
add
Add a DNS record. Use -a to activate cf after creation
always-use-https on|off
Toggle Always Use HTTPS mode on/off
devmode on|off
Toggle development mode on/off
disable [content]
Disable cloudflare caching for given record and optionally specific value
edit
Edit a DNS record.
enable [content]
Enable cloudflare caching for given record and optionally specific value
find [content]
Find a record with given name and optionally specific value
ls
List dns records for the domain
purge [urls]
Purge file at given urls (space separated) or all files if no url given
rm [content]
Remove record with given name and optionally specific value
zone-add
Add a zone for given name
zones
List domains in your cloudflare account
```### Examples
Add a new A record (mail) and activate cloudflare (-a)
```
cfcli -a -t A add mail 8.8.8.8
```Edit a record (mail) and set the TTL
```
cfcli --ttl 120 edit mail 8.8.8.8
```Add an SRV record (then 3 numbers are priority, weight and port respectively)
```
cfcli -t SRV add _sip._tcp.example.com 1 1 1 example.com
```Find all records matching the content value test.com
```
cfcli find -q content:test.com
```Remove all records with the name test
```
cfcli rm test
```Remove record with name test, type of A and value 1.1.1.1
```
cfcli rm test -q content:1.1.1.1,type:A
```Enable cloudflare for any records that match test
```
cfcli enable test
```Enable cloudflare for a record test with the value test.com
```
cfcli enable test test.com
```Export domain records for test.com to csv
```
cfcli -d test.com -f csv listrecords > test.csv
```Purge a given files from cache
```
cfcli -d test.com purge http://test.com/script.js http://test.com/styles.css
```Enable dev mode for test.com domain
```
cfcli -d test.com devmode on
```Add the zone test.com
```
cfcli zone-add test.com
```### Testing
In order to run the tests you will need to set valid values for the
`CF_API_EMAIL` and `CF_API_KEY` environment variables.Running the tests will add a zone _(cloudflaretest.com)_, add and remove records against that domain and then remove the zone.
The tests can be run with the following command
```bash
yarn test
```