Commit:    6bd35e15225c5086589b09b1d30b60874c3f3a12
Author:    Hannes Magnusson <[email protected]>         Mon, 4 May 2015 00:09:17 
+0000
Parents:   92648c56c140ffb899c353618830d1991f197006
Branches:  master

Link:       
http://git.php.net/?p=web/master.git;a=commitdiff;h=6bd35e15225c5086589b09b1d30b60874c3f3a12

Log:
Enable EasyDNS GeoDNS testing for www.php.net

Changed paths:
  M  scripts/mirror-test


Diff:
diff --git a/scripts/mirror-test b/scripts/mirror-test
index d5345a4..76678d5 100755
--- a/scripts/mirror-test
+++ b/scripts/mirror-test
@@ -25,8 +25,14 @@ function lap() {
        $then = $now;
        return $ret;
 }
+function isGeoDebug() {
+       return getenv("PHPGEODEV");
+}
+function isDebug() {
+       return getenv("PHPWEBDEV") || file_exists(".DEV");
+}
 function p($msg) {
-       if (getenv("PHPWEBDEV") || file_exists(".DEV")) {
+       if (isDebug()) {
                echo $msg;
        }
 }
@@ -263,6 +269,7 @@ WHERE id = :id
        $stmt->execute($params);
        p("\n");
 }
+
 function UPDATE($mirror, $info) {
        global $pdo;
 
@@ -297,22 +304,132 @@ WHERE id = :id
        $stmt->execute($params);
 }
 
+function GEOLS() {
+       p(GEOLS. "\n");
+       $json = file_get_contents(GEOLS);
+
+       if ($json) {
+               return json_decode($json, true);
+       }
+
+       return array();
+}
+
+function GEORM($id) {
+sleep(1);
+
+       $opts = array(
+               "user_agent"    => "PHP.net Mirror Site check",
+               "timeout"       => 15,
+               "ignore_errors" => "1",
+               "method"        => "DELETE",
+       );
+
+       $ctx = stream_context_create(array("http" => $opts));
+       $retval = file_get_contents(sprintf(GEORM, $id), false, $ctx);
+
+       p($retval);
+       p("Removed $id\n");
+}
+
+function GEOADD($cname, $country) {
+sleep(1);
+       $countries = include __DIR__ . "/countries.inc";
+
+       if (!isset($countries[$country])) {
+               p("Can't find country code for $country\n");
+               return;
+       }
+
+       $data = array(
+               "domain"     => ZONE,
+               "host"       => "@",
+               "ttl"        => 0,
+               "geozone_id" => $countries[$country],
+               "prio"       => 0,
+               "type"       => "CNAME",
+               "rdata"      => $cname,
+       );
+       $opts = array(
+               "user_agent"    => "PHP.net Mirror Site check",
+               "timeout"       => 15,
+               "ignore_errors" => "1",
+               "method"        => "PUT",
+               "header"        => "Content-type: text/x-javascript",
+               "content"       => $t = json_encode($data),
+       );
+       $ctx = stream_context_create(array("http" => $opts));
+       $retval = file_get_contents(GEOADD, false, $ctx);
+       p("Adding $cname => " . GEOADD . ": $t\n");
+       p($retval);
+}
+
+function geoDNS($HOSTS) {
+       $GEOLIST = GEOLS();
+       if (!$GEOLIST) {
+               p("Not updating EasyDNS GeoDNS, couldn't get the list!\n");
+       }
+
+       /* Remove disabled hosts */
+       $GEO = array();
+       foreach($GEOLIST["data"] as $k => $entry) {
+               /* Only deal with records we have declared as GEO */
+               if (empty($entry["geozone_id"])) {
+                       p("No GEOZONE_ID set for {$entry["rdata"]}\n");
+                       continue;
+               }
+
+               if (empty($HOSTS[$entry["rdata"]])) {
+                       unset($HOSTS[$entry["rdata"]]);
+                       p("{$entry["rdata"]} not a current host\n");
+                       GEORM($entry["id"]);
+               } else {
+                       p("{$entry["rdata"]} is current host\n");
+                       $GEO[$entry["rdata"]] = $entry["id"];
+               }
+       }
+
+       p("Now using mirror-check\n");
+       foreach($HOSTS as $cname => $country) {
+               if (isset($GEO[$cname]) && $country) {
+                       /* CNAME listed in GEO zone and is enabled in our 
system */
+                       continue;
+               }
+               
+               if ($country) {
+                       /* CNAME enabled in our system, make new zone record 
for it */
+                       GEOADD($cname, $country);
+                       continue;
+               } elseif (isset($GEO[$cname])) {
+                       /* CNAME disabled in our system, remove the zone record 
for it */
+                       GEORM($GEO[$cname]);
+               } else {
+                       /* CNAME disabled in our system, and no zone record for 
it */
+                       continue;
+               }
+               
+       }
+}
 
 $pdo = new PDO("mysql:host=localhost;dbname=phpmasterdb", "nobody", "");
 
 
 // Get mirror information for all mirrors (except our special mirrors, such as 
www and docs)
-$query = "SELECT id, cc, hostname, cname, maintainer, load_balanced, ocmt FROM 
mirrors WHERE mirrortype = 1
+$query = "SELECT mirrors.id, cc, hostname, cname, maintainer, load_balanced, 
ocmt, country.alpha2 FROM mirrors,country WHERE mirrortype = 1
 -- AND hostname IN('us1.php.net', 'us2.php.net', 'ca3.php.net', 'ua1.php.net', 
'uk3.php.net')
+AND mirrors.cc=country.id
 ORDER BY hostname";
 $stmt = $pdo->prepare($query);
 $stmt->execute();
 
 
+$HOSTS = array();
 while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        p($row["hostname"]);
+       $HOSTS[$row["cname"]."."] = false;
 
 
+if(isGeoDebug()) {
        $filename = "/manual/noalias.txt";
        $content = fetch($row["hostname"], $filename);
        if ($content != "manual-noalias") {
@@ -382,6 +499,7 @@ while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        }
 
 
+}
        $content = fetch($row["hostname"], "/mirror-info", $row["hostname"], 
$headers);
        if (!HTTPCODE($headers, "200 OK")) {
                FAIL($row, "/mirror-info", "Expected 200 OK -- got:\n\t" . 
join("\n\t", $headers));
@@ -389,7 +507,19 @@ while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        }
        if ($info = MIRRORINFO($row, $content)) {
                UPDATE($row, $info);
+               $HOSTS[$row["cname"]."."] = $row["alpha2"];
        }
        p("\n");
 }
 
+if ($creds = getenv("EASYDNS_CREDENTIALS")) {
+       $GEOROOT = "https://{$creds}@sandbox.rest.easydns.net";;
+       define("ZONE", "www.php.net");
+       define("GEOLS",  "$GEOROOT/zones/records/all/" . ZONE . "?format=json");
+       define("GEORM",  "$GEOROOT/zones/records/" . ZONE . "/%s?format=json");
+       define("GEOADD", "$GEOROOT/zones/records/add/" . ZONE . 
"/CNAME?format=json");
+       geoDNS($HOSTS);
+} else {
+       p("Not updating EasyDNS GeoDNS, No credentials provided");
+}
+


--
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to