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