|
@@ -1,46 +1,57 @@
|
|
|
<?php
|
|
|
+
|
|
|
date_default_timezone_set("GMT");
|
|
|
|
|
|
############ 请在腾讯云申请“API密钥”,替换下面两个常量
|
|
|
-// 去 https://console.cloud.tencent.com/cam/capi 页面申请
|
|
|
+//去 https://console.cloud.tencent.com/cam/capi 页面申请
|
|
|
define("txyaccessKeyId", "AKIDwlPr7DUpLgpZBb4tlT0MWUHtIVXOJwxm");
|
|
|
define("txyaccessSecrec", "mMkxzoTxOirrfJlFYfbS7g7792jEi5GG");
|
|
|
|
|
|
######### 类测试
|
|
|
|
|
|
/*
|
|
|
-$obj = new TxyDns(txyaccessKeyId, txyaccessSecrec, "yudadan.com");
|
|
|
-//显示所有域名
|
|
|
-//$obj->DomainList();
|
|
|
-//添加域名 TXT 记录
|
|
|
-//$obj->RecordCreate("www3","TXT","s");
|
|
|
-//显示某个域名所有的 TXT 记录
|
|
|
-//$obj->RecordList("www3","TXT");
|
|
|
-*/
|
|
|
+ $obj = new TxyDns(txyaccessKeyId, txyaccessSecrec, "yudadan.com");
|
|
|
+ //显示所有域名
|
|
|
+ //$obj->DomainList();
|
|
|
+ //添加域名 TXT 记录
|
|
|
+ //$obj->RecordCreate("www3","TXT","s");
|
|
|
+ //显示某个域名所有的 TXT 记录
|
|
|
+ //$obj->RecordList("www3","TXT");
|
|
|
+ */
|
|
|
|
|
|
###### 代码运行
|
|
|
// php txydns.php "simplehttps.com" "txtname" "txtvalue"
|
|
|
-$argv[1] = "yudadan.com";
|
|
|
-$argv[2] = "www3";
|
|
|
-$argv[3] = "ss";
|
|
|
+//$argv[1] = "simplehttps.com";
|
|
|
+//$argv[2] = "www3";
|
|
|
+//$argv[3] = "ssssss";
|
|
|
|
|
|
$obj = new TxyDns(txyaccessKeyId, txyaccessSecrec, $argv[1]);
|
|
|
-$data = $obj->RecordList($argv[2],"TXT");
|
|
|
-if ($data["code"]!="0") {
|
|
|
+$data = $obj->RecordList($argv[2], "TXT");
|
|
|
+if ($data["code"] != "0") {
|
|
|
$obj->error($data["code"], $data["message"]);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
$records = $data["data"]["records"];
|
|
|
-foreach ($records as $k=>$v) {
|
|
|
+foreach ($records as $k => $v) {
|
|
|
+ // 如果存在记录,则直接修改。
|
|
|
if ($v["name"] == $argv[2]) {
|
|
|
- echo "sss";
|
|
|
-
|
|
|
-
|
|
|
- $obj->RecordDelete($v["recordId"]);
|
|
|
- exit ;
|
|
|
+ $data = $obj->RecordModify($argv[2], "TXT", $argv[3], $v["id"]);
|
|
|
+ if ($data["code"] != "0") {
|
|
|
+ $obj->error($data["code"], $data["message"]);
|
|
|
+ }
|
|
|
+ //$obj->RecordDelete($v["id"]);
|
|
|
+ exit;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+//如果不存在,就增加 TXT 记录
|
|
|
+$data = $obj->RecordCreate($argv[2], "TXT", $argv[3]);
|
|
|
+if ($data["code"] != "0") {
|
|
|
+ //失败,则记录日志
|
|
|
+ $obj->error($data["code"], $data["message"]);
|
|
|
+}
|
|
|
+
|
|
|
+####### 基于腾讯云 DNS API 实现的 PHP 类,参考 https://cloud.tencent.com/document/product/302/4032
|
|
|
+
|
|
|
class TxyDns {
|
|
|
|
|
|
private $accessKeyId = null;
|
|
@@ -49,56 +60,66 @@ class TxyDns {
|
|
|
private $Host = "cns.api.qcloud.com";
|
|
|
private $Path = "/v2/index.php";
|
|
|
|
|
|
- public function __construct($accessKeyId, $accessSecrec, $domain="") {
|
|
|
+ public function __construct($accessKeyId, $accessSecrec, $domain = "") {
|
|
|
$this->accessKeyId = $accessKeyId;
|
|
|
$this->accessSecrec = $accessSecrec;
|
|
|
$this->DomainName = $domain;
|
|
|
}
|
|
|
-
|
|
|
- public function error($code,$str) {
|
|
|
- echo "操作错误:" . $code .":" . $str ;
|
|
|
- exit ;
|
|
|
+
|
|
|
+ public function error($code, $str) {
|
|
|
+ echo "操作错误:" . $code . ":" . $str;
|
|
|
+ exit;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
public function RecordDelete($recordId) {
|
|
|
- $param["domain"] = $this->DomainName ;
|
|
|
- $param["recordId"] = $recordId ;
|
|
|
-
|
|
|
+ $param["domain"] = $this->DomainName;
|
|
|
+ $param["recordId"] = $recordId;
|
|
|
+
|
|
|
$data = $this->send("RecordDelete", "GET", $param);
|
|
|
return ($this->out($data));
|
|
|
}
|
|
|
-
|
|
|
- public function RecordList($subDomain,$recordType="") {
|
|
|
-
|
|
|
- if ($recordType!="")
|
|
|
- $param["recordType"] = $recordType ;
|
|
|
- $param["subDomain"] = $subDomain ;
|
|
|
- $param["domain"] = $this->DomainName ;
|
|
|
-
|
|
|
+
|
|
|
+ public function RecordList($subDomain, $recordType = "") {
|
|
|
+
|
|
|
+ if ($recordType != "")
|
|
|
+ $param["recordType"] = $recordType;
|
|
|
+ $param["subDomain"] = $subDomain;
|
|
|
+ $param["domain"] = $this->DomainName;
|
|
|
+
|
|
|
$data = $this->send("RecordList", "GET", $param);
|
|
|
return ($this->out($data));
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
- public function RecordCreate($subDomain,$recordType = "TXT",$value) {
|
|
|
- $param["recordType"] = $recordType ;
|
|
|
- $param["subDomain"] = $subDomain ;
|
|
|
- $param["domain"] = $this->DomainName ;
|
|
|
- $param["recordLine"]="默认";
|
|
|
+
|
|
|
+ public function RecordModify($subDomain, $recordType = "TXT", $value, $recordId) {
|
|
|
+ $param["recordType"] = $recordType;
|
|
|
+ $param["subDomain"] = $subDomain;
|
|
|
+ $param["recordId"] = $recordId;
|
|
|
+ $param["domain"] = $this->DomainName;
|
|
|
+ $param["recordLine"] = "默认";
|
|
|
$param["value"] = $value;
|
|
|
- //print_r($param);
|
|
|
-
|
|
|
+
|
|
|
+ $data = $this->send("RecordModify", "GET", $param);
|
|
|
+ return ($this->out($data));
|
|
|
+ }
|
|
|
+
|
|
|
+ public function RecordCreate($subDomain, $recordType = "TXT", $value) {
|
|
|
+ $param["recordType"] = $recordType;
|
|
|
+ $param["subDomain"] = $subDomain;
|
|
|
+ $param["domain"] = $this->DomainName;
|
|
|
+ $param["recordLine"] = "默认";
|
|
|
+ $param["value"] = $value;
|
|
|
+
|
|
|
$data = $this->send("RecordCreate", "GET", $param);
|
|
|
return ($this->out($data));
|
|
|
-
|
|
|
}
|
|
|
+
|
|
|
public function DomainList() {
|
|
|
-
|
|
|
+
|
|
|
$data = $this->send("DomainList", "GET", array());
|
|
|
return ($this->out($data));
|
|
|
}
|
|
|
|
|
|
- public function send($action, $reqMethod, $requestParams) {
|
|
|
+ private function send($action, $reqMethod, $requestParams) {
|
|
|
|
|
|
$params = $this->formatRequestData($action, $requestParams, $reqMethod);
|
|
|
|
|
@@ -107,7 +128,7 @@ class TxyDns {
|
|
|
return $this->curl($url);
|
|
|
}
|
|
|
|
|
|
- public function formatRequestData($action, $request, $reqMethod) {
|
|
|
+ private function formatRequestData($action, $request, $reqMethod) {
|
|
|
$param = $request;
|
|
|
$param["Action"] = ucfirst($action);
|
|
|
//$param["RequestClient"] = $this->sdkVersion;
|
|
@@ -123,7 +144,7 @@ class TxyDns {
|
|
|
}
|
|
|
|
|
|
//签名
|
|
|
- public function formatSignString($host, $path, $param, $requestMethod) {
|
|
|
+ private function formatSignString($host, $path, $param, $requestMethod) {
|
|
|
$tmpParam = [];
|
|
|
ksort($param);
|
|
|
foreach ($param as $key => $value) {
|
|
@@ -134,7 +155,7 @@ class TxyDns {
|
|
|
return $signStr;
|
|
|
}
|
|
|
|
|
|
- public function sign($signStr) {
|
|
|
+ private function sign($signStr) {
|
|
|
|
|
|
$signature = base64_encode(hash_hmac("sha1", $signStr, $this->accessSecrec, true));
|
|
|
return $signature;
|
|
@@ -154,11 +175,3 @@ class TxyDns {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|