Ligação à API do Cloudflare PHP

Uma tradução do artigo foi preparada antes do início do curso Backend PHP Developer .




Para os desenvolvedores que usam o PHP 7.0 ou superior, o Cloudflare fornece binders da API do PHP. Ele suporta a quarta versão mais recente da API Cloudflare. Você pode usar esse SDK para vários propósitos, incluindo:

  • Gerencie e automatize as alterações nas entradas de DNS no Cloudflare.
  • Adicione programaticamente zonas à sua conta.
  • Controle de versão e gerenciamento de alterações nas regras da página
  • Bloqueie automaticamente endereços IP e agentes do usuário usando o bloqueio de zona e as regras do UserAgent.
  • Obter faixas de IP do Cloudflare para automatizar a lista de permissões com um firewall

Recursos suportados


Este artigo fornece alguns exemplos comuns de uso da API de vinculação do Cloudflare PHP; Atualmente, oferecemos suporte aos seguintes pontos de extremidade e métodos de autenticação:

Pontos de extremidade V4

  • DNS
  • IPs
  • Regras da página
  • Regras do agente do usuário
  • Gerenciamento de usuários (parcial)
  • Bloqueio de zona
  • Zonas

Autenticação

  • Chaves de serviço do usuário
  • Chaves de API

Instalação


A ligação à API do Cloudflare PHP está disponível no Packagist no cloudflare / sdk , que pode ser instalado usando o Composer chamando compositor e requer cloudflare / sdk :



Além disso, se você quiser ler o código-fonte diretamente ou contribuir com o projeto, poderá encontrar o código-fonte em GitHub no repositório cloudflare / cloudflare-php .

Início do trabalho


Aqui está um pequeno exemplo de trabalho com a 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;


Ao executar esse script simples na linha de comando, obtemos a seguinte saída:



Zonas de listagem


Veja como listar todas as zonas em uma conta usando o seguinte 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;
}

A execução desse script pela linha de comando fornecerá a seguinte saída:



Limpar cache em todos os sites


Aqui está outro exemplo que usa o ponto de extremidade Purge Cache para limpar completamente o cache em cada site da nossa conta (observe que você pode limpar arquivos individuais que usam o cache usando o método cachePurge em vez 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;

}

Você verá a seguinte saída como resultado da execução deste script na linha de comando:



Criando regras de página


O SDK também pode ser usado para adicionar programaticamente regras de página à zona do Cloudflare. Aqui está um exemplo simples de adição de uma regra de desvio de 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);

Podemos obter facilmente o ID da zona desejada usando o método getZoneID da classe de endpoint Zones - esse método auxiliar retorna o ID pelo nome da zona.

Observe que o SDK usa injeção de dependência para especificar o objetivo e a configuração das regras da página. É por isso que precisamos passar instâncias das classes PageRulesTargets e PageRuleActions para o método createPageRule.

DNS


O SDK também pode ser usado para adicionar programaticamente registros. Aqui está um exemplo de adição de um 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;
}

Além disso, também podemos excluir, listar e visualizar os detalhes dos registros DNS usando este SDK. Por exemplo, vamos criar um script simples para listar o tipo e o nome de cada registro DNS em nossa 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;
}

Essa será a saída quando eu executar esse script para uma das minhas zonas:





Saiba mais sobre o curso



All Articles