← Cloudflare DDoS Protection / ddos-protection / advanced-ddos-systems / api / programmable-flow-protection
Běžná volání API
Následující části obsahují ukázkové požadavky pro běžná volání API. Seznam dostupných koncových bodů API najdete v Endpointy.
Výpis všech programů
Tento příklad načte všechny programy Programmable Flow Protection v účtu.
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/programs" \
--header "Authorization: Bearer <API_TOKEN>"{
"result": [
{
"id": "<PROGRAM_ID>",
"name": "rate-limiter",
"status": "success",
"created_on": "<TIMESTAMP>",
"modified_on": "<TIMESTAMP>"
}
],
"success": true,
"errors": [],
"messages": []
}Nahrání programu
Tento příklad nahraje nový program eBPF napsaný v jazyce C. Zdrojový kód programu se odesílá jako tělo požadavku s Content-Type: text/plain.
Vložte volitelný X-Program-Name k zadání čitelného názvu programu. Pokud ji vynecháte, API vygeneruje jako název programu UUID.
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/programs" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: text/plain" \
--header "X-Program-Name: my-rate-limiter" \
--data-binary "@/path/to/program.c"{
"result": {
"id": "<PROGRAM_ID>",
"name": "my-rate-limiter",
"status": "success",
"created_on": "<TIMESTAMP>",
"modified_on": "<TIMESTAMP>"
},
"success": true,
"errors": [],
"messages": []
}Pokud program neprojde kompilací nebo ověřením, API vrátí podrobnou chybovou zprávu:
{
"result": null,
"success": false,
"errors": [
{
"code": 1001,
"message": "Program verification failed: invalid memory access at line 42"
}
],
"messages": []
}Aktualizace programu
Tento příklad aktualizuje existující program novým zdrojovým kódem. Program lze aktualizovat, i když jej právě používá jedno nebo více pravidel. Pokud nový program neprojde kompilací nebo ověřením, aktualizace selže a aktivní zůstane původní program.
curl --request PATCH \
"https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/programs/{program_id}" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: text/plain" \
--data-binary "@/path/to/updated-program.c"{
"result": {
"id": "<PROGRAM_ID>",
"name": "program",
"status": "success",
"created_on": "<TIMESTAMP>",
"modified_on": "<TIMESTAMP>"
},
"success": true,
"errors": [],
"messages": []
}Smazat program
Tento příklad odstraní program. Program, na který odkazuje aktivní pravidlo, odstranit nelze.
curl --request DELETE \
"https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/programs/{program_id}" \
--header "Authorization: Bearer <API_TOKEN>"{
"result": null,
"success": true,
"errors": [],
"messages": []
}Výpis všech pravidel
Tento příklad načte všechna pravidla Programmable Flow Protection v účtu.
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/rules" \
--header "Authorization: Bearer <API_TOKEN>"{
"result": [
{
"id": "<RULE_ID>",
"program_id": "<PROGRAM_ID>",
"scope": "global",
"name": "global",
"mode": "enabled",
"expression": "",
"created_on": "<TIMESTAMP>",
"modified_on": "<TIMESTAMP>"
}
],
"success": true,
"errors": [],
"messages": []
}Vytvoření pravidla
Tento příklad vytvoří pravidlo Programmable Flow Protection s globálním rozsahem v režimu monitorování.
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/rules" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"program_id": "<PROGRAM_ID>",
"scope": "global",
"name": "global",
"mode": "monitoring"
}'{
"result": {
"id": "<RULE_ID>",
"program_id": "<PROGRAM_ID>",
"scope": "global",
"name": "global",
"mode": "monitoring",
"expression": "",
"created_on": "<TIMESTAMP>",
"modified_on": "<TIMESTAMP>"
},
"success": true,
"errors": [],
"messages": []
}Viz Objekty JSON s popisem polí v těle JSON.
Vytvoření pravidla s regionálním rozsahem
Tento příklad vytvoří pravidlo s rozsahem omezeným na region Western Europe a s filtrem podle výrazu.
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/rules" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"program_id": "<PROGRAM_ID>",
"scope": "region",
"name": "WEUR",
"mode": "enabled",
"expression": "ip.dst in { 192.0.2.0/24 }"
}'{
"result": {
"id": "<RULE_ID>",
"program_id": "<PROGRAM_ID>",
"scope": "region",
"name": "WEUR",
"mode": "enabled",
"expression": "ip.dst in { 192.0.2.0/24 }",
"created_on": "<TIMESTAMP>",
"modified_on": "<TIMESTAMP>"
},
"success": true,
"errors": [],
"messages": []
}Viz Objekty JSON s popisem polí v těle JSON.
Aktualizace pravidla
Tento příklad aktualizuje existující pravidlo. Změnit lze režim, rozsah a výraz, nikoli však program. Chcete-li změnit program, pravidlo odstraňte a vytvořte nové.
curl --request PATCH \
"https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/rules/{rule_id}" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"mode": "enabled"
}'{
"result": {
"id": "<RULE_ID>",
"program_id": "<PROGRAM_ID>",
"scope": "global",
"name": "global",
"mode": "enabled",
"expression": "",
"created_on": "<TIMESTAMP>",
"modified_on": "<TIMESTAMP>"
},
"success": true,
"errors": [],
"messages": []
}Viz Objekty JSON s popisem polí v těle JSON.
Smazat pravidlo
Tento příklad odstraní existující pravidlo.
curl --request DELETE \
"https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/rules/{rule_id}" \
--header "Authorization: Bearer <API_TOKEN>"{
"result": null,
"success": true,
"errors": [],
"messages": []
}Ladění programu pomocí PCAP
Tento příklad spustí program nad souborem PCAP za účelem ladění. Rozhraní API vrátí soubor PCAP s anotacemi, které u každého paketu uvádějí verdikt programu.
Tělo požadavku musí obsahovat soubor PCAP v binárním formátu. Rozhraní API zjistí posun hlavičky IP automaticky podle vstupního souboru PCAP. Automatickou detekci přepíšete volitelným ip_offset parametr dotazu pro určení počtu bajtů, o které je v každém paketu posunuta hlavička IP (například 14 pro ethernetové rámce).
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/programmable_flow_protection/configs/programs/{program_id}/pcap" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/vnd.tcpdump.pcap" \
--data-binary "@/path/to/input.pcap" \
--output output.pcapVýstupní soubor PCAP obsahuje stejné pakety jako vstupní soubor, u každého paketu jsou však doplněny anotace. Anotace Packet Comment může obsahovat:
- Návratová hodnota programu:
CF_EBPF_PASSneboCF_EBPF_DROP Ignored: pokud příchozí paket není UDPAnalytics tag: vlastní značka network analytics, kterou program tomuto paketu přiřadil, pokud nějakou přiřadilChallenge packet: paket s výzvou, který program odeslal zpět klientovi, pokud nějaký vznikl