monicahq/laravel-cloudflare

Add Cloudflare ip addresses to trusted proxies for Laravel.

Fund package maintenance!
asbiin

1.7.0 2020-09-09 08:46 UTC

README

Add Cloudflare ip addresses to trusted proxies for Laravel.

Latest Version Downloads GitHub Workflow Status Sonar Quality Gate Coverage Status

Installation

Install using composer:

composer require monicahq/laravel-cloudflare

You don't need to add this package to your service providers.

Add the middleware in app/Http/Kernel.php, adding a new line in the middleware array:

\Monicahq\Cloudflare\Http\Middleware\TrustProxies::class

Existing Laravel application

This middleware uses fideloper/proxy as a backend, so you can remove the other TrustProxies line from the middleware array.

Another option is to extend the App\Http\Middleware\TrustProxies class to Monicahq\Cloudflare\Http\Middleware\TrustProxies:

namespace App\Http\Middleware;

use Illuminate\Http\Request;
use Monicahq\Cloudflare\Http\Middleware\TrustProxies as Middleware;

class TrustProxies extends Middleware
{
    ...

If the cloudflare ips are detected, they will be used, and if not the trustproxies one will be.

Refreshing the Cache

This package basically retrieves Cloudflare's IP blocks, and stores them in cache. When request comes, the middleware will get Cloudflare's IP blocks from cache, and load them to trusted proxies.

Thus, you'll need to refresh the cloudflare cache every day

You can use the following command for this:

php artisan cloudflare:reload

Suggestion: add the command in the schedule

Add a new line in app/Console/Kernel.php, in the schedule function:

$schedule->command('cloudflare:reload')->daily();

View current Cloudflare's IP blocks

You can use the following command to see the cached IP blocks.

php artisan cloudflare:view

Option: publish the package config file

If you want, you can publish the package config file to config/laravelcloudflare.php:

php artisan vendor:publish --provider="Monicahq\Cloudflare\TrustedProxyServiceProvider"

This file contains some configurations, but you may not need to change them normally.

Support

This package supports Laravel 5.5 or newer.

Citations

This package was inspired by lukasz-adamski/laravel-cloudflare and forked from ogunkarakus/laravel-cloudflare.

License

Author: Alexis Saettler

This project is part of MonicaHQ.

Copyright (c) 2019-2020.

Licensed under the MIT License. View license.