sebdesign/artisan-cloudflare

Laravel artisan commands for Cloudflare

v2.7.0 2024-04-10 09:24 UTC

README

Latest Version on Packagist Software License Build Status Quality Score Scrutinizer Coverage StyleCI

Laravel artisan commands for interacting with the CloudFlare API.

artisan-cloudflare.png

Installation

You can install the package via composer. This package requires Laravel 5.5 or higher.

composer require sebdesign/artisan-cloudflare

Since version 5.5, Laravel uses package auto-discovery, so doesn't require you to manually add the ServiceProvider. If you don't use auto-discovery or you are using an older version, add the service provider in config/app.php.

<?php

'providers' => [
    Sebdesign\ArtisanCloudflare\ServiceProvider::class,
],

Configuration

Publish the config file in config/cloudflare.php.

To authenticate with an API key set CLOUDFLARE_KEY and CLOUDFLARE_EMAIL in the .env.

Otherwise you can use an API token by setting the CLOUDFLARE_TOKEN in the .env.

php artisan vendor:publish --provider="Sebdesign\ArtisanCloudflare\ServiceProvider"

The following options are available:

<?php

return [
    /**
     * API token generated from the User Profile 'My Profile > Api Tokens > API Tokens' page.
     * create token > Edit zone DNS > "Permissions" Zone:Cache Purge:Purge
     */
    'token' => env('CLOUDFLARE_TOKEN'),

    /**
     * Global API Key on the "My Profile > Api Tokens > API Keys" page.
     */
    'key' => env('CLOUDFLARE_KEY'),

    /**
     * Email address associated with your account.
     */
    'email' => env('CLOUDFLARE_EMAIL'),

    /**
     * Array of zones.
     *
     * Each zone must have its identifier as a key. The value is an
     * associated array with *optional* arrays of files and/or tags.
     *
     * you can find your zoneId under 'Account Home > site > Api'.
     *
     * E.g.
     *
     * '023e105f4ecef8ad9ca31a8372d0c353' => [
     *      'files' => [
     *          'http://example.com/css/app.css',
     *      ],
     *      'tags' => [
     *          'styles',
     *          'scripts',
     *      ],
     *      'hosts' => [
     *          'www.example.com',
     *          'images.example.com',
     *      ],
     * ],
     */
    'zones' => [
        //
    ],
];

Usage

Purge command

Read more about Purging cached resources from Cloudflare on the support article.

Execute the cloudflare:cache:purge command in your console or integrate it in your deployment workflow.

Purge all the zones with their files and tags.

php artisan cloudflare:cache:purge

Purge a single zone.

If the zone exists in the config, then its files and tags will be purged. Otherwise everything will be purged from the given zone.

php artisan cloudflare:cache:purge 023e105f4ecef8ad9ca31a8372d0c353

Purge individual files from all the zones.

php artisan cloudflare:cache:purge --file="http://example.com/css/app.css" --file="http://example.com/img/logo.svg"

Purge individual tags from all the zones.

Purging tags is available for Enterprise accounts only.

php artisan cloudflare:cache:purge --tag=styles --tag=scripts

Purge individual hosts from all the zones.

Purging hosts is available for Enterprise accounts only.

php artisan cloudflare:cache:purge --host=www.example.com --host=images.example.com

Purge individual files, tags, and hosts from all the zones.

php artisan cloudflare:cache:purge --file="http://example.com/css/app.css" --tag=scripts --tag=images --host=www.example.com

Purge individual files, tags, and hosts from a single zone.

php artisan cloudflare:cache:purge 023e105f4ecef8ad9ca31a8372d0c353 --file="http://example.com/css/app.css" --tag=scripts --tag=images --host=www.example.com

Block IP command

Block an IP address for all the zones.

php artisan cloudflare:waf:block-ip 6.6.6.6

Block an IP address for a specific zone.

php artisan cloudflare:waf:block-ip 6.6.6.6 023e105f4ecef8ad9ca31a8372d0c353

Block an IP address for all the zones with a custom comment.

php artisan cloudflare:waf:block-ip 6.6.6.6 --notes="By Artisan Cloudflare"

Block an IP address for a specific zone with a custom comment.

php artisan cloudflare:waf:block-ip 6.6.6.6 023e105f4ecef8ad9ca31a8372d0c353 --notes="By Artisan Cloudflare"

Changelog

Please see CHANGELOG for more information on what has changed recently.

Testing

composer test

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email info@sebdesign.eu instead of using the issue tracker.

License

The MIT License (MIT). Please see License File for more information.