Browse Source

重大更新

ywdblog 6 years ago
parent
commit
f1291a1358
2 changed files with 236 additions and 243 deletions
  1. 137 141
      php-version/alydns.php
  2. 99 102
      php-version/txydns.php

+ 137 - 141
php-version/alydns.php

@@ -3,41 +3,40 @@
 date_default_timezone_set("GMT");
 
 /*
-$obj = new AliDns("LTAIkLV6coSSKklZ", "YEGDVHQV4oBC6AGQM9BWaHStUtNE5M", "simplehttps.com1");
-$data = $obj->DescribeDomainRecords();
-if ($data["httpcode"]!=200) {
-	echo "aly dns 域名获取失败-" . $data["Code"] . ":" . $data["Message"];
-}
-//显示所有
-//$data = $obj->DescribeDomainRecords();
-
-//增加解析
-//$data= $obj->AddDomainRecord("TXT", "test", "test");
-
-//修改解析
-//$data = $obj->UpdateDomainRecord("3965724468724736","TXT", "test", "test2");
-
-//删除解析
-//$data = $obj->DescribeDomainRecords();
-//$data = $data["DomainRecords"]["Record"];
-//if (is_array($data)) {
-	//foreach ($data as $v) {
-		//if ($v["RR"] == "test") {
-			//$obj->DeleteDomainRecord($v["RecordId"]);
-		//}
-	//}
-//} 
-*/
+  $obj = new AliDns("LTAIkLV6coSSKklZ", "YEGDVHQV4oBC6AGQM9BWaHStUtNE5M", "simplehttps.com1");
+  $data = $obj->DescribeDomainRecords();
+  if ($data["httpcode"]!=200) {
+  echo "aly dns 域名获取失败-" . $data["Code"] . ":" . $data["Message"];
+  }
+  //显示所有
+  //$data = $obj->DescribeDomainRecords();
+
+  //增加解析
+  //$data= $obj->AddDomainRecord("TXT", "test", "test");
+
+  //修改解析
+  //$data = $obj->UpdateDomainRecord("3965724468724736","TXT", "test", "test2");
+
+  //删除解析
+  //$data = $obj->DescribeDomainRecords();
+  //$data = $data["DomainRecords"]["Record"];
+  //if (is_array($data)) {
+  //foreach ($data as $v) {
+  //if ($v["RR"] == "test") {
+  //$obj->DeleteDomainRecord($v["RecordId"]);
+  //}
+  //}
+  //}
+ */
 
 
 /*
-example:
+  example:
 
-php alydns.php add  "simplehttps.com" "dnsv" "dnsk"  APPKEY APPTOKEN
-*/
+  php alydns.php add  "simplehttps.com" "dnsv" "dnsk"  APPKEY APPTOKEN
+ */
 
 ########## 配合 cerbot 运行 
-
 # 第一个参数是 action,代表 (add/clean) 
 # 第二个参数是域名 
 # 第三个参数是主机名(第三个参数+第二个参数组合起来就是要添加的 TXT 记录)
@@ -45,124 +44,124 @@ php alydns.php add  "simplehttps.com" "dnsv" "dnsk"  APPKEY APPTOKEN
 # 第五个参数是 APPKEY
 # 第六个参数是 APPTOKEN
 
-echo "域名 API 调用开始\n" ;
+echo "域名 API 调用开始\n";
 
 print_r($argv);
-if  (count($argv)<7) {
-	echo "参数有误\n";
-	exit;
+if (count($argv) < 7) {
+    echo "参数有误\n";
+    exit;
 }
 echo $argv[1] . "-" . $argv[2] . "-" . $argv[3] . "-" . $argv[4] . "-" . $argv[5] . "-" . $argv[6] . "\n";
 
 $domainarray = AliDns::getDomain($argv[2]);
-$selfdomain = ($domainarray[0]=="")?$argv[3]:$argv[3] . "." . $domainarray[0];
+$selfdomain = ($domainarray[0] == "") ? $argv[3] : $argv[3] . "." . $domainarray[0];
 
 $obj = new AliDns($argv[5], $argv[6], $domainarray[1]);
 
 switch ($argv[1]) {
-	case "clean":
-		$data = $obj->DescribeDomainRecords();
-		$data = $data["DomainRecords"]["Record"];
-		if (is_array($data)) {
-      			foreach ($data as $v) {
-	           	if ($v["RR"] == $selfdomain) {
-               		$data = $obj->DeleteDomainRecord($v["RecordId"]);
-				if ($data["httpcode"]!=200) {
-			        echo "aly dns 域名删除失败-" . $data["Code"] . ":" . $data["Message"];
-				exit;
-				}
-        	   	}
-      		}
-} 
-	break;
-
-case "add":
-	$data = $obj->AddDomainRecord("TXT", $selfdomain,$argv[4]);
-
-	if ($data["httpcode"]!=200) {
-        echo "aly dns 域名增加失败-" . $data["Code"] . ":" . $data["Message"];
-	exit;
-	}
-break;
+    case "clean":
+        $data = $obj->DescribeDomainRecords();
+        $data = $data["DomainRecords"]["Record"];
+        if (is_array($data)) {
+            foreach ($data as $v) {
+                if ($v["RR"] == $selfdomain) {
+                    $data = $obj->DeleteDomainRecord($v["RecordId"]);
+                    if ($data["httpcode"] != 200) {
+                        echo "aly dns 域名删除失败-" . $data["Code"] . ":" . $data["Message"];
+                        exit;
+                    }
+                }
+            }
+        }
+        break;
+
+    case "add":
+        $data = $obj->AddDomainRecord("TXT", $selfdomain, $argv[4]);
+
+        if ($data["httpcode"] != 200) {
+            echo "aly dns 域名增加失败-" . $data["Code"] . ":" . $data["Message"];
+            exit;
+        }
+        break;
 }
 
-echo "域名 API 调用结束\n" ;
+echo "域名 API 调用结束\n";
 
 ############ Class 定义
 
 class AliDns {
+
     private $accessKeyId = null;
     private $accessSecrec = null;
     private $DomainName = null;
 
-
     public function __construct($accessKeyId, $accessSecrec, $domain) {
         $this->accessKeyId = $accessKeyId;
         $this->accessSecrec = $accessSecrec;
         $this->DomainName = $domain;
     }
+
     /*
-	根据域名返回主机名和二级域名
-    */
+      根据域名返回主机名和二级域名
+     */
+
     public static function getDomain($domain) {
-	
-	//https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains	
-    	//常见根域名
-    	$arr[]=".co.jp";
-    	$arr[]=".com.tw";
-    	$arr[]=".net";
-    	$arr[]=".com";
-    	$arr[]=".com.cn";
-    	$arr[]=".org";
-    	$arr[]=".cn";
-    	$arr[]=".gov";
-    	$arr[]=".net.cn";
-    	$arr[]=".io";
-    	$arr[]=".top";
-    	$arr[]=".me";
-    	$arr[]=".int";
-    	$arr[]=".edu";
-    	$arr[]=".link";
-	$arr[]=".uk";
-	$arr[]=".hk";
-
-    	//二级域名
-    	$seconddomain ="";
-    	//子域名
-    	$selfdomain = "";
-    	//根域名
-    	$rootdomain = "";
-    	foreach ($arr as $k=>$v) {
-        	$pos = stripos($domain,$v);
-        	if ($pos) {
-            	$rootdomain = substr($domain,$pos);
-            	$s = explode(".",substr($domain,0,$pos));
-            	$seconddomain =  $s[count($s)-1] . $rootdomain;
-            	for ($i=0;$i<count($s)-1;$i++)
-                    	$selfdomain .= $s[$i];
-            	break;
-        	}	
-    	}
-    	//echo $seconddomain ;exit;
-    	if ($rootdomain=="") {
-        	$seconddomain = $domain;
-        	$selfdomain = "";
-    	}
-    	return array($selfdomain,$seconddomain);
 
+        //https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains	
+        //常见根域名
+        $arr[] = ".co.jp";
+        $arr[] = ".com.tw";
+        $arr[] = ".net";
+        $arr[] = ".com";
+        $arr[] = ".com.cn";
+        $arr[] = ".org";
+        $arr[] = ".cn";
+        $arr[] = ".gov";
+        $arr[] = ".net.cn";
+        $arr[] = ".io";
+        $arr[] = ".top";
+        $arr[] = ".me";
+        $arr[] = ".int";
+        $arr[] = ".edu";
+        $arr[] = ".link";
+        $arr[] = ".uk";
+        $arr[] = ".hk";
+
+        //二级域名
+        $seconddomain = "";
+        //子域名
+        $selfdomain = "";
+        //根域名
+        $rootdomain = "";
+        foreach ($arr as $k => $v) {
+            $pos = stripos($domain, $v);
+            if ($pos) {
+                $rootdomain = substr($domain, $pos);
+                $s = explode(".", substr($domain, 0, $pos));
+                $seconddomain = $s[count($s) - 1] . $rootdomain;
+                for ($i = 0; $i < count($s) - 1; $i++)
+                    $selfdomain .= $s[$i];
+                break;
+            }
+        }
+        //echo $seconddomain ;exit;
+        if ($rootdomain == "") {
+            $seconddomain = $domain;
+            $selfdomain = "";
+        }
+        return array($selfdomain, $seconddomain);
     }
 
     public function DescribeDomainRecords() {
         $requestParams = array(
-             "Action" => "DescribeDomainRecords"
+            "Action" => "DescribeDomainRecords"
         );
         $val = $this->send($requestParams);
-     
- return $this->out($val);
-    }
 
+        return $this->out($val);
+    }
 
-    public function UpdateDomainRecord($id, $type, $rr,$value){
+    public function UpdateDomainRecord($id, $type, $rr, $value) {
         $requestParams = array(
             "Action" => "UpdateDomainRecord",
             "RecordId" => $id,
@@ -173,8 +172,9 @@ class AliDns {
         $val = $this->send($requestParams);
         return $this->out($val);
     }
+
     public function DeleteDomainRecord($id) {
-	$requestParams = array(
+        $requestParams = array(
             "Action" => "DeleteDomainRecord",
             "RecordId" => $id,
         );
@@ -192,49 +192,45 @@ class AliDns {
         );
         $val = $this->send($requestParams);
         return $this->out($val);
-
     }
 
     private function send($requestParams) {
         $publicParams = array(
-        "DomainName" => $this->DomainName,
-        "Format" => "JSON",
-        "Version" => "2015-01-09",
-        "AccessKeyId" => $this->accessKeyId,
-        "Timestamp" => date("Y-m-d\TH:i:s\Z"),
-        "SignatureMethod" => "HMAC-SHA1",
-        "SignatureVersion" => "1.0",
-        "SignatureNonce" => substr(md5(rand(1, 99999999)), rand(1, 9), 14),
+            "DomainName" => $this->DomainName,
+            "Format" => "JSON",
+            "Version" => "2015-01-09",
+            "AccessKeyId" => $this->accessKeyId,
+            "Timestamp" => date("Y-m-d\TH:i:s\Z"),
+            "SignatureMethod" => "HMAC-SHA1",
+            "SignatureVersion" => "1.0",
+            "SignatureNonce" => substr(md5(rand(1, 99999999)), rand(1, 9), 14),
         );
 
         $params = array_merge($publicParams, $requestParams);
         $params['Signature'] = $this->sign($params, $this->accessSecrec);
         $uri = http_build_query($params);
-        $url = 'http://alidns.aliyuncs.com/?'.$uri;
+        $url = 'http://alidns.aliyuncs.com/?' . $uri;
         return $this->curl($url);
     }
 
-
-
     private function sign($params, $accessSecrec, $method = "GET") {
         ksort($params);
-        $stringToSign = strtoupper($method).'&'.$this->percentEncode('/').'&';
+        $stringToSign = strtoupper($method) . '&' . $this->percentEncode('/') . '&';
 
         $tmp = "";
-        foreach($params as $key => $val){
-            $tmp .= '&'.$this->percentEncode($key).'='.$this->percentEncode($val);
+        foreach ($params as $key => $val) {
+            $tmp .= '&' . $this->percentEncode($key) . '=' . $this->percentEncode($val);
         }
         $tmp = trim($tmp, '&');
-        $stringToSign = $stringToSign.$this->percentEncode($tmp);
+        $stringToSign = $stringToSign . $this->percentEncode($tmp);
 
-        $key = $accessSecrec.'&';
+        $key = $accessSecrec . '&';
         $hmac = hash_hmac("sha1", $stringToSign, $key, true);
 
         return base64_encode($hmac);
     }
 
-
-    private function percentEncode($value = null){
+    private function percentEncode($value = null) {
         $en = urlencode($value);
         $en = str_replace("+", "%20", $en);
         $en = str_replace("*", "%2A", $en);
@@ -244,23 +240,23 @@ class AliDns {
 
     private function curl($url) {
         $ch = curl_init();
-        curl_setopt($ch, CURLOPT_URL, $url );
-        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
-   //curl_setopt($ch, CURLOPT_HEADER, 1); 
+        curl_setopt($ch, CURLOPT_URL, $url);
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+        //curl_setopt($ch, CURLOPT_HEADER, 1); 
 //curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
-        $result = curl_exec ($ch);
+        $result = curl_exec($ch);
         $info = curl_getinfo($ch);
-	
-	curl_close($ch);
-        return array($info["http_code"],$result);
+
+        curl_close($ch);
+        return array($info["http_code"], $result);
     }
 
     private function out($arr) {
 
-	$t = json_decode($arr[1], true);
-	$t["httpcode"] = $arr[0];
+        $t = json_decode($arr[1], true);
+        $t["httpcode"] = $arr[0];
 
         return $t;
     }
-}
 
+}

+ 99 - 102
php-version/txydns.php

@@ -2,40 +2,38 @@
 
 date_default_timezone_set("GMT");
 
-//去 https://console.cloud.tencent.com/cam/capi 页面申请 
 
 /*
   $obj = new TxyDns(txyaccessKeyId, APPKEY, APPTOKEN);
   //显示所有域名
   $data = $obj->DomainList();
   if ($data["code"]!=0) {
-	echo $data["message"] . "\n";	
-  } 
-//可以增加同名的二条
+  echo $data["message"] . "\n";
+  }
+  //可以增加同名的二条
   $data = $obj->RecordCreate("www3","TXT",rand(10,1000));
   $data = $obj->RecordCreate("www3","TXT",rand(10,1000));
   $data = $obj->RecordCreate("www3.www3","TXT",rand(10,1000));
 
   if ($data["code"]!=0) {
-	echo $data["message"] . "\n";	
-  }  
-
-//查看一个主机的所有txt 记录
-$data = $obj->RecordList("www3.www3","TXT");
-
-$data = $obj->RecordList("www3","TXT");
-$records = $data["data"]["records"];
-foreach ($records as $k=>$v) {
- //根据ID修改记录
- $data = $obj->RecordModify("www3", "TXT", rand(1000,2000), $v["id"]);
-//根据ID删除记录 
-$obj->RecordDelete($v["id"]);
-}
-*/
+  echo $data["message"] . "\n";
+  }
+
+  //查看一个主机的所有txt 记录
+  $data = $obj->RecordList("www3.www3","TXT");
+
+  $data = $obj->RecordList("www3","TXT");
+  $records = $data["data"]["records"];
+  foreach ($records as $k=>$v) {
+  //根据ID修改记录
+  $data = $obj->RecordModify("www3", "TXT", rand(1000,2000), $v["id"]);
+  //根据ID删除记录
+  $obj->RecordDelete($v["id"]);
+  }
+ */
 
 ###### 代码运行
 //php txydns.php add "www.yudadan.com" "k1" "v1"  AKIDwlPr7DUpLgpZBb4tlT0MWUHtIVXOJwxm mMkxzoTxOirrfJlFYfbS7g7792jEi5GG
-
 # 第一个参数是 action,代表 (add/clean) 
 # 第二个参数是域名 
 # 第三个参数是主机名(第三个参数+第二个参数组合起来就是要添加的 TXT 记录)
@@ -43,51 +41,50 @@ $obj->RecordDelete($v["id"]);
 # 第五个参数是 APPKEY
 # 第六个参数是 APPTOKEN
 
-echo "域名 API 调用开始\n" ;
+echo "域名 API 调用开始\n";
 
 
-if  (count($argv)<7) {
-        echo "参数有误\n";
-        exit;
+if (count($argv) < 7) {
+    echo "参数有误\n";
+    exit;
 }
 
 echo $argv[1] . "-" . $argv[2] . "-" . $argv[3] . "-" . $argv[4] . "-" . $argv[5] . "-" . $argv[6] . "\n";
 
 $domainarray = TxyDns::getDomain($argv[2]);
-$selfdomain = ($domainarray[0]=="")?$argv[3]:$argv[3] . "." . $domainarray[0];
+$selfdomain = ($domainarray[0] == "") ? $argv[3] : $argv[3] . "." . $domainarray[0];
 $obj = new TxyDns($argv[5], $argv[6], $domainarray[1]);
 
 switch ($argv[1]) {
-        case "clean":
-		$data = $obj->RecordList($selfdomain , "TXT");
-		if ($data["code"]!=0) {
-			echo "txy dns 记录获取失败-" . $data["message"] . "\n";
-			exit;
-		}
-		$records = $data["data"]["records"];
-		foreach ( $records as $k=>$v) {
-			
-        		$data = $obj->RecordDelete($v["id"]);
-			
-		if ($data["code"]!=0) {
-			echo "txy dns 记录删除失败-" . $data["message"] . "\n";
-			exit;
-		}
-		}
-		
-	break;
-	
-	case "add":
-	$data = $obj->RecordCreate($selfdomain, "TXT", $argv[4]);
-	     if ($data["code"]!=0) {
-                        echo "txy dns 记录添加失败-" . $data["message"] . "\n";
-                        exit;
-                }
-	break;
+    case "clean":
+        $data = $obj->RecordList($selfdomain, "TXT");
+        if ($data["code"] != 0) {
+            echo "txy dns 记录获取失败-" . $data["message"] . "\n";
+            exit;
+        }
+        $records = $data["data"]["records"];
+        foreach ($records as $k => $v) {
+
+            $data = $obj->RecordDelete($v["id"]);
+
+            if ($data["code"] != 0) {
+                echo "txy dns 记录删除失败-" . $data["message"] . "\n";
+                exit;
+            }
+        }
 
+        break;
+
+    case "add":
+        $data = $obj->RecordCreate($selfdomain, "TXT", $argv[4]);
+        if ($data["code"] != 0) {
+            echo "txy dns 记录添加失败-" . $data["message"] . "\n";
+            exit;
+        }
+        break;
 }
 
-echo "域名 API 调用成功结束\n" ;
+echo "域名 API 调用成功结束\n";
 
 ####### 基于腾讯云 DNS API 实现的 PHP 类,参考 https://cloud.tencent.com/document/product/302/4032
 
@@ -104,59 +101,59 @@ class TxyDns {
         $this->accessSecrec = $accessSecrec;
         $this->DomainName = $domain;
     }
-    
+
     /*
-	根据域名返回主机名和二级域名
-    */
+      根据域名返回主机名和二级域名
+     */
+
     public static function getDomain($domain) {
-	
-	//常见根域名 【https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains】
-    // 【http://www.seobythesea.com/2006/01/googles-most-popular-and-least-popular-top-level-domains/】
-	
-    $arr[]=".uk";
-    $arr[]=".hk";
-	$arr[]=".net";
-	$arr[]=".com";
-    $arr[]=".edu";
-    $arr[]=".mil";
-	$arr[]=".com.cn";
-	$arr[]=".org";
-	$arr[]=".cn";
-	$arr[]=".gov";
-	$arr[]=".net.cn";
-	$arr[]=".io";
-    $arr[]=".co.jp";
-    $arr[]=".com.tw";
-    $arr[]=".info";
-        $arr[]=".io";
-        $arr[]=".top";
-        $arr[]=".me";
-        $arr[]=".int";
-        $arr[]=".edu";
-	//二级域名
-	$seconddomain ="";
-	//子域名
-	$selfdomain = "";
-	//根域名
-	$rootdomain = "";
-	foreach ($arr as $k=>$v) {
-        	$pos = stripos($domain,$v);
-        	if ($pos) {
-                	$rootdomain = substr($domain,$pos);
-                	$s = explode(".",substr($domain,0,$pos));
-                	$seconddomain =  $s[count($s)-1] . $rootdomain;
-                	for ($i=0;$i<count($s)-1;$i++)
-                        	$selfdomain .= $s[$i];
-                	break;
-        	}	
-	}
-	//echo $seconddomain ;exit;
-	if ($rootdomain=="") {
-        	$seconddomain = $domain;
-        	$selfdomain = "";
-	}
-	return array($selfdomain,$seconddomain);
 
+        //常见根域名 【https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains】
+        // 【http://www.seobythesea.com/2006/01/googles-most-popular-and-least-popular-top-level-domains/】
+
+        $arr[] = ".uk";
+        $arr[] = ".hk";
+        $arr[] = ".net";
+        $arr[] = ".com";
+        $arr[] = ".edu";
+        $arr[] = ".mil";
+        $arr[] = ".com.cn";
+        $arr[] = ".org";
+        $arr[] = ".cn";
+        $arr[] = ".gov";
+        $arr[] = ".net.cn";
+        $arr[] = ".io";
+        $arr[] = ".co.jp";
+        $arr[] = ".com.tw";
+        $arr[] = ".info";
+        $arr[] = ".io";
+        $arr[] = ".top";
+        $arr[] = ".me";
+        $arr[] = ".int";
+        $arr[] = ".edu";
+        //二级域名
+        $seconddomain = "";
+        //子域名
+        $selfdomain = "";
+        //根域名
+        $rootdomain = "";
+        foreach ($arr as $k => $v) {
+            $pos = stripos($domain, $v);
+            if ($pos) {
+                $rootdomain = substr($domain, $pos);
+                $s = explode(".", substr($domain, 0, $pos));
+                $seconddomain = $s[count($s) - 1] . $rootdomain;
+                for ($i = 0; $i < count($s) - 1; $i++)
+                    $selfdomain .= $s[$i];
+                break;
+            }
+        }
+        //echo $seconddomain ;exit;
+        if ($rootdomain == "") {
+            $seconddomain = $domain;
+            $selfdomain = "";
+        }
+        return array($selfdomain, $seconddomain);
     }
 
     public function error($code, $str) {