上一篇文章 取得在 Cloudflare 中的 DNS Records ,我們拿到了 Cloudflare 的 Zone Id , API Token 也成功取得了 DNS Record 記錄們,接下來我們要來自己新增/刪除/修改他們
1. 新增紀錄 ,目標我要新增一個 A 紀錄為 demo1 ,讓我的sample.com 擁有一個 demo1.sample.com 指向 163.13.202.22 ,官方網站給的案例是
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
curl -X POST "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records" \ | |
-H "X-Auth-Email: user@example.com" \ | |
-H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \ | |
-H "Content-Type: application/json" \ | |
--data '{"type":"A","name":"example.com","content":"127.0.0.1","ttl":120,"priority":10,"proxied":false}' |
這時候我們必須要傳一個物件進去,這邊我準備好了
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class AddDNSRequest | |
{ | |
public string type { get; set; } | |
public string name { get; set; } | |
public string content { get; set; } | |
public int ttl { get; set; } | |
public int priority { get; set; } | |
public bool proxied { get; set; } | |
} |
這時候就是呼叫的 C# Code ,回應的 JSON 我放在註解裡面
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
HttpClient clientGetZones = new HttpClient(); | |
clientGetZones.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); | |
//clientGetZones.DefaultRequestHeaders.Add("Authorization", " Bearer [API TOKEN]"); | |
clientGetZones.DefaultRequestHeaders.Add("Authorization", " Bearer abcdedghijklmnopQRSTUV_ABCD_ggggPqCD"); | |
//var url1 = "https://api.cloudflare.com/client/v4/zones/[ZONE_ID]/dns_records"; | |
var url1 = "https://api.cloudflare.com/client/v4/zones/2836714271b942af9386532b00b5579c/dns_records"; | |
HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, url1); | |
var req = new AddDNSRequest(); | |
req.name = "demo1"; | |
req.proxied = true; | |
req.type = "A"; | |
req.content = "163.13.202.22"; | |
requestMessage.Content = new StringContent(JsonConvert.SerializeObject(req), Encoding.UTF8, "application/json"); | |
HttpResponseMessage response = clientGetZones.SendAsync(requestMessage).GetAwaiter().GetResult(); | |
var res = response.Content.ReadAsStringAsync().Result.ToString(); | |
ltlResult.Text = JsonConvert.SerializeObject(res); | |
//result | |
//{"id":"52991924ec82a967d45caab25cbf6a90","zone_id":"2836714271b942af9386532b00b5579c","zone_name":"sample.com","name":"demo1.sample.com","type":"A","content":"163.13.202.22","proxiable":true,"proxied":true,"ttl":1,"locked":false,"meta":{"auto_added":false,"managed_by_apps":false,"managed_by_argo_tunnel":false,"source":"primary"},"created_on":"2020-10-28T01:46:39.057696Z","modified_on":"2020-10-28T01:46:39.057696Z"},"success":true,"errors":[],"messages":[]}" |
Reference :
https://api.cloudflare.com/#dns-records-for-a-zone-create-dns-record
2. 承襲第一點,我要修改 demo1 的紀錄 將指向改到 163.13.202.11 ,每一紀錄都會有獨立編號ID,可以針對該ID修傳遞物件跟第一個一樣,但是要用 HTTP PUT
官方案例 curl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
curl -X PUT "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59" \ | |
-H "X-Auth-Email: user@example.com" \ | |
-H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \ | |
-H "Content-Type: application/json" \ | |
--data '{"type":"A","name":"example.com","content":"127.0.0.1","ttl":120,"proxied":false}' |
C# Code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
HttpClient clientGetZones = new HttpClient(); | |
clientGetZones.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); | |
//clientGetZones.DefaultRequestHeaders.Add("Authorization", " Bearer [API TOKEN]"); | |
clientGetZones.DefaultRequestHeaders.Add("Authorization", " Bearer abcdedghijklmnopQRSTUV_ABCD_ggggPqCD"); | |
//var url1 = "https://api.cloudflare.com/client/v4/zones/[ZONE ID]/dns_records/[RECORD ID]"; | |
var url1 = "https://api.cloudflare.com/client/v4/zones/2836714271b942af9386532b00b5579c/dns_records/52991924ec82a967d45caab25cbf6a90"; | |
HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Put, url1); | |
var req = new AddDNSRequest(); | |
req.name = "demo1"; | |
req.proxied = true; | |
req.type = "A"; | |
req.content = "163.13.202.11"; | |
requestMessage.Content = new StringContent(JsonConvert.SerializeObject(req), Encoding.UTF8, "application/json"); | |
HttpResponseMessage response = clientGetZones.SendAsync(requestMessage).GetAwaiter().GetResult(); | |
var res = response.Content.ReadAsStringAsync().Result.ToString(); | |
ltlResult.Text = JsonConvert.SerializeObject(res); |
reference : https://api.cloudflare.com/#dns-records-for-a-zone-update-dns-record
3. 承襲第一點,或是上篇文章 取得在 Cloudflare 中的 DNS Records 每一個紀錄都有一個獨立編號ID ,可以針對該 ID 進行刪除,官方的 curl sample
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
curl -X DELETE "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59" \ | |
-H "X-Auth-Email: user@example.com" \ | |
-H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \ | |
-H "Content-Type: application/json" |
C# Code ,回應的 JSON 我放在註解裡面,稍微注意的是他是要用 HTTP DELETE
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
HttpClient clientGetZones = new HttpClient(); | |
clientGetZones.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); | |
//clientGetZones.DefaultRequestHeaders.Add("Authorization", " Bearer [API TOKEN]"); | |
clientGetZones.DefaultRequestHeaders.Add("Authorization", " Bearer abcdedghijklmnopQRSTUV_ABCD_ggggPqCD"); | |
//var url1 = "https://api.cloudflare.com/client/v4/zones/[ZONE ID]/dns_records/[RECORD ID]"; | |
var url1 = "https://api.cloudflare.com/client/v4/zones/2836714271b942af9386532b00b5579c/dns_records/52991924ec82a967d45caab25cbf6a90"; | |
var res = clientGetZones.DeleteAsync(url1).Result.Content.ReadAsStringAsync().Result; | |
ltlResult.Text = JsonConvert.SerializeObject(res); | |
//Result: | |
//"{"result":{"id":"52991924ec82a967d45caab25cbf6a90"},"success":true,"errors":[],"messages":[]}" |
Reference : https://api.cloudflare.com/#dns-records-for-a-zone-delete-dns-record
基本上大概就是這樣,本來想用 nuget 上面套件的,但是想說看文件的時間不如自己動手,就玩一下吧,有時間我在裝起來好了。
---
請你暫時把你的勇氣給我 在夢想快消失的時候 讓我的 Code 用力的穿過天空 為愛我的人做一秒英雄 如果這篇文章有幫助到您,簡單留個言,或是幫我按個讚,讓我有寫下去的動力...