Liaison API Cloudflare PHP

Une traduction de l'article a été préparée avant le début du cours Backend PHP Developer .




Pour les développeurs qui utilisent PHP 7.0 ou supérieur, Cloudflare fournit des liants API PHP. Il prend en charge la dernière quatrième version de l'API Cloudflare. Vous pouvez utiliser ce SDK à plusieurs fins, notamment:

  • Gérez et automatisez les modifications apportées à vos entrées DNS dans Cloudflare.
  • Ajoutez des zones par programme à votre compte.
  • Gestion des versions et gestion des modifications dans les règles de page
  • Bloquez automatiquement les adresses IP et les agents utilisateurs à l'aide du verrouillage de zone et des règles UserAgent.
  • Obtenir des plages IP Cloudflare pour automatiser la liste blanche avec un pare-feu

Fonctionnalités prises en charge


Cet article fournit des exemples courants d'utilisation de l'API de liaison PHP Cloudflare; Nous prenons actuellement en charge les points de terminaison et les méthodes d'authentification suivants:

Points de terminaison V4

  • DNS
  • IPs
  • Règles de page
  • Règles de l'agent utilisateur
  • Gestion des utilisateurs (partielle)
  • Verrouillage de zone
  • Zones

Authentification

  • Clés de service utilisateur
  • Clés API

Installation


La liaison API Cloudflare PHP est disponible sur Packagist dans cloudflare / sdk , qui peut être installée à l'aide de Composer en appelant composer require cloudflare / sdk :



De plus, si vous souhaitez lire le code source directement ou contribuer au projet, vous pouvez trouver le code source sur GitHub dans le référentiel cloudflare / cloudflare-php .

Début des travaux


Voici un petit exemple de travail avec l'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;


En exécutant ce script simple sur la ligne de commande, nous obtenons la sortie suivante:



Liste des zones


Voici comment répertorier toutes les zones d'un compte à l'aide du code suivant:

<?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;
}

L'exécution de ce script via la ligne de commande donnera la sortie suivante:



Vider le cache sur tous les sites Web


Voici un autre exemple qui utilise le point de terminaison Purge Cache pour effacer complètement le cache sur chaque site Web de notre compte (notez que vous pouvez effacer les fichiers individuels qui utilisent le cache en utilisant la méthode cachePurge au lieu 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;

}

Vous verrez la sortie suivante suite à l'exécution de ce script sur la ligne de commande:



Création de règles de page


Le SDK peut également être utilisé pour ajouter par programme des règles de page à la zone Cloudflare. Voici un exemple simple d'ajout d'une règle de contournement du cache:

<?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);

Nous pouvons facilement obtenir l'ID de la zone souhaitée à l'aide de la méthode getZoneID de la classe de point de terminaison Zones - cette méthode d'assistance renvoie l'ID par le nom de la zone.

Notez que le SDK utilise l'injection de dépendance pour spécifier le but et la configuration des règles de page. C'est pourquoi nous devons passer des instances des classes PageRulesTargets et PageRuleActions à la méthode createPageRule.

DNS


Le SDK peut également être utilisé pour ajouter des enregistrements par programme. Voici un exemple d'ajout d'un enregistrement 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;
}

En outre, nous pouvons également supprimer, répertorier et afficher les détails des enregistrements DNS à l'aide de ce SDK. Par exemple, créons un script simple pour lister le type et le nom de chaque enregistrement DNS dans notre zone:

<?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;
}

Ce sera la sortie lorsque j'exécuterai ce script pour l'une de mes zones:





En savoir plus sur le cours



All Articles