Exemple #1
0
 /**
  * Purge CDN completely
  * @param $results
  * @return bool
  */
 function purge_all(&$results)
 {
     if (empty($this->_config['authorization_key'])) {
         $results = $this->_get_results(array(), W3TC_CDN_RESULT_HALT, __('Empty Authorization Key.', 'w3-total-cache'));
         return false;
     }
     if (empty($this->_config['alias']) || empty($this->_config['consumerkey']) || empty($this->_config['consumersecret'])) {
         $results = $this->_get_results(array(), W3TC_CDN_RESULT_HALT, __('Malformed Authorization Key.', 'w3-total-cache'));
         return false;
     }
     if (!class_exists('NetDNA')) {
         w3_require_once(W3TC_LIB_NETDNA_DIR . '/NetDNA.php');
     }
     $api = new NetDNA($this->_config['alias'], $this->_config['consumerkey'], $this->_config['consumersecret']);
     $results = array();
     $local_path = $remote_path = '';
     $domain_is_valid = 0;
     $found_domain = false;
     try {
         if ($this->_config['zone_id'] != 0) {
             $zone_id = $this->_config['zone_id'];
         } else {
             $zone_id = $api->get_zone_id(w3_get_home_url());
         }
         if ($zone_id == 0) {
             $zone_id = $api->get_zone_id(w3_get_domain_url());
         }
         if ($zone_id == 0) {
             $zone_id = $api->get_zone_id(str_replace('://', '://www.', w3_get_domain_url()));
         }
         if ($zone_id == 0 || is_null($zone_id)) {
             if (w3_get_domain_url() == w3_get_home_url()) {
                 $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, sprintf(__('No zones match site: %s.', 'w3-total-cache'), trim(w3_get_home_url(), '/')));
             } else {
                 $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, sprintf(__('No zones match site: %s or %s.', 'w3-total-cache'), trim(w3_get_home_url(), '/'), trim(w3_get_domain_url(), '/')));
             }
             return !$this->_is_error($results);
         }
         $pullzone = json_decode($api->get('/zones/pull.json/' . $zone_id));
         try {
             if (preg_match("(200|201)", $pullzone->code)) {
                 $custom_domains_full = json_decode($api->get('/zones/pull/' . $pullzone->data->pullzone->id . '/customdomains.json'));
                 $custom_domains = array();
                 foreach ($custom_domains_full->data->customdomains as $custom_domain_full) {
                     $custom_domains[] = $custom_domain_full->custom_domain;
                 }
                 $local_path = 'all';
                 $remote_path = 'all';
                 $domain_is_valid = 0;
                 $found_domain = false;
                 if ($pullzone->data->pullzone->name . '.' . $this->_config['alias'] . '.' . W3TC_CDN_NETDNA_URL === $this->get_domain($local_path) || in_array($this->get_domain($local_path), $custom_domains)) {
                     try {
                         $params = array('file' => '/' . $local_path);
                         $file_purge = json_decode($api->delete('/zones/pull.json/' . $pullzone->data->pullzone->id . '/cache'));
                         if (preg_match("(200|201)", $file_purge->code)) {
                             $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_OK, __('OK', 'w3-total-cache'));
                         } else {
                             if (preg_match("(401|500)", $file_purge->code)) {
                                 $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, sprintf(__('Failed with error code %s. Please check your alias, consumer key, and private key.', 'w3-total-cache'), $file_purge->code));
                             } else {
                                 $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, __('Failed with error code ', 'w3-total-cache') . $file_purge->code);
                             }
                         }
                         $found_domain = true;
                     } catch (CurlException $e) {
                         $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_HALT, sprintf(__('Unable to purge (%s).', 'w3-total-cache'), $e->getMessage()));
                     }
                 } else {
                     $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, sprintf(__('No registered CNAMEs match %s.', 'w3-total-cache'), $this->get_domain($local_path)));
                     return !$this->_is_error($results);
                 }
             } else {
                 if (preg_match("(401|500)", $pullzone->code)) {
                     $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, sprintf(__('Failed with error code %s. Please check your alias, consumer key, and private key.', 'w3-total-cache'), $pullzone->code));
                 } else {
                     $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, __('Failed with error code ', 'w3-total-cache') . $pullzone->code);
                 }
             }
         } catch (CurlException $e) {
             $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_HALT, sprintf(__('Unable to purge (%s).', 'w3-total-cache'), $e->getMessage()));
         }
     } catch (CurlException $e) {
         $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_HALT, __('Failure to pull zone: ', 'w3-total-cache') . $e->getMessage());
     }
     if ($domain_is_valid > 0 && !$found_domain) {
         $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, __('No zones match custom domain.', 'w3-total-cache'));
     } elseif (!$found_domain) {
         $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, sprintf(__('No zones match site: %s.', 'w3-total-cache'), trim(w3_get_home_url(), '/')));
     }
     return !$this->_is_error($results);
 }
 /**
  * Purge CDN completely
  *
  * @param unknown $results
  * @return bool
  */
 function purge_all(&$results)
 {
     if (empty($this->_config['authorization_key'])) {
         $results = $this->_get_results(array(), W3TC_CDN_RESULT_HALT, __('Empty Authorization Key.', 'w3-total-cache'));
         return false;
     }
     if (empty($this->_config['alias']) || empty($this->_config['consumerkey']) || empty($this->_config['consumersecret'])) {
         $results = $this->_get_results(array(), W3TC_CDN_RESULT_HALT, __('Malformed Authorization Key.', 'w3-total-cache'));
         return false;
     }
     if (!class_exists('NetDNA')) {
         require_once W3TC_LIB_NETDNA_DIR . '/NetDNA.php';
     }
     $api = new \NetDNA($this->_config['alias'], $this->_config['consumerkey'], $this->_config['consumersecret']);
     $results = array();
     try {
         if ($this->_config['zone_id'] != 0) {
             $zone_id = $this->_config['zone_id'];
         } else {
             $zone_id = $api->get_zone_id(get_home_url());
         }
         if ($zone_id == 0) {
             $zone_id = $api->get_zone_id(Util_Environment::home_domain_root_url());
         }
         if ($zone_id == 0) {
             $zone_id = $api->get_zone_id(str_replace('://', '://www.', Util_Environment::home_domain_root_url()));
         }
         if ($zone_id == 0 || is_null($zone_id)) {
             if (Util_Environment::home_domain_root_url() == get_home_url()) {
                 $results[] = $this->_get_result('', '', W3TC_CDN_RESULT_ERROR, sprintf(__('No zones match site: %s.', 'w3-total-cache'), trim(get_home_url(), '/')));
             } else {
                 $results[] = $this->_get_result('', '', W3TC_CDN_RESULT_ERROR, sprintf(__('No zones match site: %s or %s.', 'w3-total-cache'), trim(get_home_url(), '/'), trim(Util_Environment::home_domain_root_url(), '/')));
             }
             return !$this->_is_error($results);
         }
         $file_purge = json_decode($api->delete('/zones/pull.json/' . $zone_id . '/cache'));
         if (preg_match("(200|201)", $file_purge->code)) {
             $results[] = $this->_get_result('', '', W3TC_CDN_RESULT_OK, __('OK', 'w3-total-cache'));
         } else {
             if (preg_match("(401|500)", $file_purge->code)) {
                 $results[] = $this->_get_result('', '', W3TC_CDN_RESULT_ERROR, sprintf(__('Failed with error code %s. Please check your alias, consumer key, and private key.', 'w3-total-cache'), $file_purge->code));
             } else {
                 $results[] = $this->_get_result('', '', W3TC_CDN_RESULT_ERROR, __('Failed with error code ', 'w3-total-cache') . $file_purge->code);
             }
         }
     } catch (W3tcWpHttpException $e) {
         $results[] = $this->_get_result('', '', W3TC_CDN_RESULT_HALT, __('Failure to pull zone: ', 'w3-total-cache') . $e->getMessage());
     }
     return !$this->_is_error($results);
 }
 /**
  * Purge CDN completely
  * @param $results
  * @return bool
  */
 function purge_all(&$results)
 {
     if (empty($this->_config['alias'])) {
         $results = $this->_get_results(array(), W3TC_CDN_RESULT_HALT, 'Empty Alias.');
         return false;
     }
     if (empty($this->_config['consumerkey'])) {
         $results = $this->_get_results(array(), W3TC_CDN_RESULT_HALT, 'Empty Consumer Key.');
         return false;
     }
     if (empty($this->_config['consumersecret'])) {
         $results = $this->_get_results(array(), W3TC_CDN_RESULT_HALT, 'Empty Consumer Secret.');
         return false;
     }
     if (!class_exists('NetDNA')) {
         w3_require_once(W3TC_LIB_NETDNA_DIR . '/NetDNA.php');
     }
     $api = new NetDNA($this->_config['alias'], $this->_config['consumerkey'], $this->_config['consumersecret']);
     $results = array();
     $local_path = $remote_path = '';
     $domain_is_valid = 0;
     $found_domain = false;
     try {
         $customdomains = json_decode($api->get('/zones/pull.json'));
         if (preg_match("(200|201)", $customdomains->code)) {
             $local_path = 'all';
             $remote_path = 'all';
             $domain_is_valid = 0;
             $found_domain = false;
             foreach ($customdomains->data->pullzones as $zone) {
                 if ($zone->name . '.' . $this->_config['alias'] . '.' . W3TC_CDN_NETDNA_URL === $this->_config['domain'][0]) {
                     try {
                         $file_purge = json_decode($api->delete('/zones/pull.json/' . $zone->id . '/cache'));
                         if (preg_match("(200|201)", $customdomains->code)) {
                             $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_OK, 'OK');
                         } else {
                             if (preg_match("(401|500)", $file_purge->code)) {
                                 $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, 'Failed with error code ' . $file_purge->code . '. Please check your alias, consumer key, and private key.');
                             } else {
                                 $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, 'Failed with error code ' . $file_purge->code);
                             }
                         }
                         $found_domain = true;
                     } catch (CurlException $e) {
                         $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_HALT, sprintf('Unable to purge (%s).', $e->getMessage()));
                     }
                 } else {
                     $domain_is_valid++;
                 }
             }
         } else {
             if (preg_match("(401|500)", $customdomains->code)) {
                 $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, 'Failed with error code ' . $customdomains->code . '. Please check your alias, consumer key, and private key.');
             } else {
                 $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, 'Failed with error code ' . $customdomains->code);
             }
         }
     } catch (CurlException $e) {
         $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_HALT, 'Failure to pull list of zones: ' . $e->getMessage());
     }
     if ($domain_is_valid > 0 && !$found_domain) {
         $results[] = $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, 'No zones matching custom domain.');
     }
     return !$this->_is_error($results);
 }
<?php

require_once 'netdnarws-php/NetDNA.php';
$config = json_decode(file_get_contents('./config.json'), true);
$config = $config['cdn'];
$zone_id = $config['zone_id'];
$parts = preg_split('/\\?reload=?/', $_SERVER['REQUEST_URI']);
if (!$parts) {
    header('400 Bad Request');
    echo $_SERVER['REQUEST_URI'] . ' is not a valid URI.';
    exit;
}
$file = $parts[0];
header('Content-Type: text/plain');
echo "Attempting to purge: {$zone_id}: {$file}.\n";
$api = new NetDNA('jquery', $config['consumer_key'], $config['consumer_secret']);
$result = $api->delete('/zones/pull.json/' . $zone_id . '/cache', array('file' => $file));
$result = json_decode($result, true);
if ($result['code'] !== 200) {
    echo 'Error reported: ' . print_r($result, true);
} else {
    echo "Done\n";
}