use ./nulib/cloudflare/mod.nu * export def get-provider-metadata []: nothing -> record { { name: "cloudflare" version: "1.0.0" type: "dns" description: "Cloudflare DNS provider — manages A/AAAA/CNAME/MX/TXT/SRV/CAA records via REST API" capabilities: { server_management: false network_management: false storage_management: false load_balancer: false firewall: false floating_ip: false dns_management: true } api: { type: "rest" base_url: "https://api.cloudflare.com/client/v4" auth_method: "bearer_token" documentation: "https://developers.cloudflare.com/api/" version: "v4" } } } # DNS interface — dispatched by mw_dns_zone_get export def dns_zone_get [zone: string]: nothing -> record { cf_zone_info $zone } # DNS interface — dispatched by mw_dns_record_list export def dns_record_list [zone: string]: nothing -> list { cf_records_list $zone } # DNS interface — dispatched by mw_dns_record_create export def dns_record_create [rec: record]: nothing -> record { cf_record_create $rec.zone $rec } # DNS interface — dispatched by mw_dns_record_update export def dns_record_update [record_id: string, rec: record]: nothing -> record { cf_record_update $rec.zone $record_id $rec } # DNS interface — dispatched by mw_dns_record_delete export def dns_record_delete [record_id: string, zone: string]: nothing -> nothing { cf_record_delete $zone $record_id } # DNS interface — dispatched by mw_dns_record_upsert export def dns_record_upsert [rec: record]: nothing -> record { cf_record_upsert $rec.zone $rec } # Registrar interface — Cloudflare Registrar API (requires CF_ACCOUNT_ID) export def registrar_list_domains [filter: record]: nothing -> list { cf_registrar_list_domains $filter } export def registrar_domain_info [domain: string]: nothing -> record { cf_registrar_domain_info $domain } export def registrar_get_nameservers [domain: string]: nothing -> list { cf_registrar_get_nameservers $domain } # Cloudflare-registered domains use Cloudflare nameservers; delegation is via zone NS settings. export def registrar_set_nameservers [domain: string, ns: list] { error make --unspanned { msg: $"Cloudflare Registrar: nameserver delegation for ($domain) must be changed via zone settings or by transferring the domain" } } # Stub compute functions (not implemented — Cloudflare is DNS-only) export def query_servers [find?: string, cols?: string]: nothing -> list { [] } export def server_info [server: string, check: bool, find?: string, cols?: string]: nothing -> record { {} } export def server_exists [server: string, error_exit: bool]: nothing -> bool { false } export def server_is_running [server: string, error_exit: bool]: nothing -> bool { false } export def check_server_requirements [settings: record, server: record, check: bool]: nothing -> bool { false } export def delete_server [settings: record, server: record, keep_storage: bool, error_exit: bool]: nothing -> bool { false } export def get_ip [settings: record, server: string, ip_type: string, error_exit: bool]: nothing -> string { "" }