txydns.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. date_default_timezone_set("GMT");
  3. ############ 请在腾讯云申请“API密钥”,替换下面两个常量
  4. // 去 https://console.cloud.tencent.com/cam/capi 页面申请
  5. define("txyaccessKeyId", "AKIDwlPr7DUpLgpZBb4tlT0MWUHtIVXOJwxm");
  6. define("txyaccessSecrec", "mMkxzoTxOirrfJlFYfbS7g7792jEi5GG");
  7. ######### 类测试
  8. /*
  9. $obj = new TxyDns(txyaccessKeyId, txyaccessSecrec, "yudadan.com");
  10. //显示所有域名
  11. //$obj->DomainList();
  12. //添加域名 TXT 记录
  13. //$obj->RecordCreate("www3","TXT","s");
  14. //显示某个域名所有的 TXT 记录
  15. //$obj->RecordList("www3","TXT");
  16. */
  17. ###### 代码运行
  18. // php txydns.php "simplehttps.com" "txtname" "txtvalue"
  19. $argv[1] = "yudadan.com";
  20. $argv[2] = "www3";
  21. $argv[3] = "ss";
  22. $obj = new TxyDns(txyaccessKeyId, txyaccessSecrec, $argv[1]);
  23. $data = $obj->RecordList($argv[2],"TXT");
  24. if ($data["code"]!="0") {
  25. $obj->error($data["code"], $data["message"]);
  26. }
  27. $records = $data["data"]["records"];
  28. foreach ($records as $k=>$v) {
  29. if ($v["name"] == $argv[2]) {
  30. echo "sss";
  31. $obj->RecordDelete($v["recordId"]);
  32. exit ;
  33. }
  34. }
  35. class TxyDns {
  36. private $accessKeyId = null;
  37. private $accessSecrec = null;
  38. private $DomainName = null;
  39. private $Host = "cns.api.qcloud.com";
  40. private $Path = "/v2/index.php";
  41. public function __construct($accessKeyId, $accessSecrec, $domain="") {
  42. $this->accessKeyId = $accessKeyId;
  43. $this->accessSecrec = $accessSecrec;
  44. $this->DomainName = $domain;
  45. }
  46. public function error($code,$str) {
  47. echo "操作错误:" . $code .":" . $str ;
  48. exit ;
  49. }
  50. public function RecordDelete($recordId) {
  51. $param["domain"] = $this->DomainName ;
  52. $param["recordId"] = $recordId ;
  53. $data = $this->send("RecordDelete", "GET", $param);
  54. return ($this->out($data));
  55. }
  56. public function RecordList($subDomain,$recordType="") {
  57. if ($recordType!="")
  58. $param["recordType"] = $recordType ;
  59. $param["subDomain"] = $subDomain ;
  60. $param["domain"] = $this->DomainName ;
  61. $data = $this->send("RecordList", "GET", $param);
  62. return ($this->out($data));
  63. }
  64. public function RecordCreate($subDomain,$recordType = "TXT",$value) {
  65. $param["recordType"] = $recordType ;
  66. $param["subDomain"] = $subDomain ;
  67. $param["domain"] = $this->DomainName ;
  68. $param["recordLine"]="默认";
  69. $param["value"] = $value;
  70. //print_r($param);
  71. $data = $this->send("RecordCreate", "GET", $param);
  72. return ($this->out($data));
  73. }
  74. public function DomainList() {
  75. $data = $this->send("DomainList", "GET", array());
  76. return ($this->out($data));
  77. }
  78. public function send($action, $reqMethod, $requestParams) {
  79. $params = $this->formatRequestData($action, $requestParams, $reqMethod);
  80. $uri = http_build_query($params);
  81. $url = "https://" . $this->Host . "" . $this->Path . "?" . $uri;
  82. return $this->curl($url);
  83. }
  84. public function formatRequestData($action, $request, $reqMethod) {
  85. $param = $request;
  86. $param["Action"] = ucfirst($action);
  87. //$param["RequestClient"] = $this->sdkVersion;
  88. $param["Nonce"] = rand();
  89. $param["Timestamp"] = time();
  90. //$param["Version"] = $this->apiVersion;
  91. $param["SecretId"] = $this->accessKeyId;
  92. $signStr = $this->formatSignString($this->Host, $this->Path, $param, $reqMethod);
  93. $param["Signature"] = $this->sign($signStr);
  94. return $param;
  95. }
  96. //签名
  97. public function formatSignString($host, $path, $param, $requestMethod) {
  98. $tmpParam = [];
  99. ksort($param);
  100. foreach ($param as $key => $value) {
  101. array_push($tmpParam, str_replace("_", ".", $key) . "=" . $value);
  102. }
  103. $strParam = join("&", $tmpParam);
  104. $signStr = strtoupper($requestMethod) . $host . $path . "?" . $strParam;
  105. return $signStr;
  106. }
  107. public function sign($signStr) {
  108. $signature = base64_encode(hash_hmac("sha1", $signStr, $this->accessSecrec, true));
  109. return $signature;
  110. }
  111. private function curl($url) {
  112. $ch = curl_init();
  113. curl_setopt($ch, CURLOPT_URL, $url);
  114. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  115. $result = curl_exec($ch);
  116. curl_close($ch);
  117. return $result;
  118. }
  119. private function out($msg) {
  120. return json_decode($msg, true);
  121. }
  122. }