Enlace de API PHP de Cloudflare

Se preparó una traducción del artículo antes del inicio del curso Backend PHP Developer .




Para aquellos desarrolladores que usan PHP 7.0 o superior, Cloudflare proporciona carpetas de API PHP. Es compatible con la última cuarta versión de la API de Cloudflare. Puede usar este SDK para una serie de propósitos, que incluyen:

  • Administre y automatice los cambios en sus entradas de DNS en Cloudflare.
  • Agregue zonas a su cuenta mediante programación.
  • Control de versiones y gestión de cambios en las reglas de la página
  • Bloquee automáticamente las direcciones IP y los agentes de usuario utilizando Zone Lockdown y UserAgent Rules.
  • Obtener rangos de IP de Cloudflare para automatizar la lista blanca con un firewall

Funciones soportadas


Este artículo proporciona algunos ejemplos comunes del uso de la API de enlace PHP de Cloudflare; Actualmente admitimos los siguientes puntos finales y métodos de autenticación: puntos finales

V4

  • DNS
  • IPs
  • Reglas de página
  • Reglas de agente de usuario
  • Gestión de usuarios (parcial)
  • Zona de bloqueo
  • Zonas

Autenticación

  • Claves de servicio al usuario
  • Claves API

Instalación


Cloudflare PHP API vinculante está disponible en Packagist en cloudflare / sdk , que se puede instalar usando Composer llamando a composer requiere cloudflare / sdk :



Además, si desea leer el código fuente directamente o contribuir al proyecto, puede encontrar el código fuente en GitHub en repositorio cloudflare / cloudflare-php .

Comienzo de trabajo


Aquí hay un pequeño ejemplo de trabajo con la API

<?php

require_once('vendor/autoload.php');

$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$user = new \Cloudflare\API\Endpoints\User($adapter);

echo 'Your user ID is: ' . $user->getUserID() . PHP_EOL;


Al ejecutar este script simple en la línea de comando, obtenemos el siguiente resultado:



Listado de zonas


A continuación, le mostramos cómo enumerar todas las zonas de una cuenta con el siguiente código:

<?php

require_once('vendor/autoload.php');

$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);

$zones = new \Cloudflare\API\Endpoints\Zones($adapter);
foreach ($zones->listZones()->result as $zone) {
   echo $zone->name.' ('.$zone->plan->name.')'.PHP_EOL;
}

Ejecutar este script a través de la línea de comando dará el siguiente resultado:



Borrar caché en todos los sitios web


Aquí hay otro ejemplo que usa el punto final de Purge Cache para borrar completamente el caché en cada sitio web de nuestra cuenta (tenga en cuenta que puede borrar archivos individuales que usan el caché utilizando el método cachePurge en lugar de cachePurgeEverything):

<?php

require_once('vendor/autoload.php');

$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);

$zones = new \Cloudflare\API\Endpoints\Zones($adapter);
foreach ($zones->listZones()->result as $zone) {
   echo "Cache purge for " . $zone->name . ": ";
   echo $zones->cachePurgeEverything($zone->id) == true ? "successful" : "failed";
   echo PHP_EOL;

}

Verá el siguiente resultado como resultado de ejecutar este script en la línea de comando:



Crear reglas de página


El SDK también se puede utilizar para agregar Reglas de página mediante programación a Cloudflare Zone. Aquí hay un ejemplo simple de agregar una regla de omisión de caché:

<?php

require_once('vendor/autoload.php');

$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$zones = new \Cloudflare\API\Endpoints\Zones($adapter);

$zoneID = $zones->getZoneID("junade.com");

$pageRulesTarget = new \Cloudflare\API\Configurations\PageRulesTargets('https://junade.com/noCache/*');

$pageRulesConfig = new \Cloudflare\API\Configurations\PageRulesActions();
$pageRulesConfig->setCacheLevel('bypass');

$pageRules = new \Cloudflare\API\Endpoints\PageRules($adapter);
$pageRules->createPageRule($zoneID, $pageRulesTarget, $pageRulesConfig, true, 6);

Podemos obtener fácilmente la ID de la zona deseada utilizando el método getZoneID de la clase de punto final Zonas; este método auxiliar devuelve la ID por el nombre de la zona.

Tenga en cuenta que el SDK utiliza la inyección de dependencia para especificar el propósito y la configuración de las reglas de la página. Es por eso que necesitamos pasar instancias de las clases PageRulesTargets y PageRuleActions al método createPageRule.

DNS


El SDK también se puede usar para agregar registros mediante programación. Aquí hay un ejemplo de cómo agregar un registro DNS:

<?php

require_once('vendor/autoload.php');

$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$zones = new \Cloudflare\API\Endpoints\Zones($adapter);

$zoneID = $zones->getZoneID("junade.com");

$dns = new \Cloudflare\API\Endpoints\DNS($adapter);
if ($dns->addRecord($zoneID, "A", 'example', '8.8.8.8', 0, true) === true) {
   echo "DNS record created.". PHP_EOL;
}

Además, también podemos eliminar, enumerar y ver los detalles de los registros DNS utilizando este SDK. Por ejemplo, creemos un script simple para enumerar el tipo y el nombre de cada registro DNS en nuestra zona:

<?php

require_once('vendor/autoload.php');

$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$zones = new \Cloudflare\API\Endpoints\Zones($adapter);

$zoneID = $zones->getZoneID("icyapril.com");

$dns = new \Cloudflare\API\Endpoints\DNS($adapter);
foreach ($dns->listRecords($zoneID)->result as $record) {
   echo $record->type." ".$record->name.PHP_EOL;
}

Este será el resultado cuando ejecute este script para una de mis zonas:





Aprende más sobre el curso



All Articles