neoseeker / cloudflare
CloudFlare API - PHP
Requires (Dev)
- phpunit/phpunit: < 6
- satooshi/php-coveralls: dev-master
README
Notes about this fork:
We made this fork because we encountered a problem where Cloudflare returns a 404 with errorcode 1000 if you try to run Zone\Firewall\AccessRules->rules(). It's possible this problem is new on CF in 2019.
The problem is that the original code always has a double / in the URL request paths.
Below is the original readme.md:
Note: Please use the official Cloudflare PHP package
https://github.com/cloudflare/cloudflare-php
I will continue to fix bugs but there will be no futher development on this library given Cloudflare have released an official package.
You can read more about the official package here:
- https://blog.cloudflare.com/cloudflare-php-api-binding/
- https://support.cloudflare.com/hc/en-us/articles/115001661191
CloudFlare API - PHP
The documentation for the API can be found at https://api.cloudflare.com, I will try to update this as soon as possible when new features are added to the API. If I miss one please submit a pull request.
If you spot an issue with the package just let me know via issues but please include as much detail as possible, ideally with code examples, environment information etc.
Documentation for this package can be viewed here: https://jamesryanbell.github.io/cloudflare/
Installation
Installation should be done via composer, details of how to install composer can be found at https://getcomposer.org/
$ composer require jamesryanbell/cloudflare
Features
The current feature list includes:
- DNS Records
- Zones
- Web Application Firewall (WAF)
- CloudFlare IPs
- User Administration
- Virtual DNS Management
- Organization Administration
- Railgun administration
- Keyless SSL
- Origin CA
- Traffic Manager [BETA]
- Traffic Control
Usage
In situations where you want to make multiple calls to the API across different services it's easier to create a connection to the api first and then pass that around the other services e.g.
use Cloudflare\Zone\Dns; // Create a connection to the Cloudflare API which you can // then pass into other services, e.g. DNS, later on $client = new Cloudflare\Api('email@example.com', 'API_KEY'); // Create a new DNS record $dns = new Cloudflare\Zone\Dns($client); $dns->create('12345678901234567890', 'A', 'name.com', '127.0.0.1', 120);
If you are just performing a single action then you can connect to the API directly when you instantiate the class e.g.
use Cloudflare\Zone\Dns; // Create a connection to the Cloudflare API which you can // then pass into other services, e.g. DNS, later on $dns = new Cloudflare\Zone\Dns('email@example.com', 'API_KEY'); $dns->create('12345678901234567890', 'TXT', 'name.com', '127.0.0.1', 120);
PageRules
use Cloudflare\Zone\Pagerules; // Define your targets // Currently you can only specify one URL per page rule but this implementation matches the API // so I am leaving it for now in the assumption they are planning to add multiple targets. $targets = [ [ 'target' => 'url', 'constraint' => [ 'operator' => 'matches', 'value' => 'http://example.co.uk/*' ] ] ]; // Define your actions // Each action is held within it's own array. $actions = [ [ 'id' => 'always_online', 'value' => 'on' ] ]; $pagerules = new Cloudflare\Zone\Pagerules('email@example.com', 'API_KEY'); $pagerules->create($zoneId, $targets, $actions);
License
MIT