Exemple #1
0
 /**
  * Tests CF
  *
  * @param string $error
  * @return boolean
  */
 function test(&$error)
 {
     /**
      * Test S3 first
      */
     if (!parent::test($error)) {
         return false;
     }
     /**
      * Search active CF distribution
      */
     $dists = @$this->_s3->listDistributions();
     if (!$dists) {
         $error = 'Unable to list distributions.';
         return false;
     }
     $search = sprintf('%s.s3.amazonaws.com', $this->_config['bucket']);
     $dist = false;
     if ($dists) {
         foreach ((array) $dists as $_dist) {
             if (isset($_dist['origin']) && $_dist['origin'] == $search) {
                 $dist = $_dist;
                 break;
             }
         }
     }
     if (!$dist) {
         $error = sprintf('Distribution for bucket "%s" not found.', $this->_config['bucket']);
         return false;
     }
     if (!$dist['enabled']) {
         $error = sprintf('Distribution for bucket "%s" is disabled.', $this->_config['bucket']);
         return false;
     }
     if ($this->_config['cname'] != '') {
         $cnames = isset($dist['cnames']) ? (array) $dist['cnames'] : array();
         if (!in_array($this->_config['cname'], $cnames)) {
             $error = sprintf('Domain name %s is not in distribution CNAME list.', $this->_config['cname']);
             return false;
         }
     } elseif ($this->_config['id'] != '') {
         $domain = $this->get_domain();
         if ($domain != $dist['domain']) {
             $error = sprintf('Distribution domain name mismatch (%s != %s).', $domain, $dist['domain']);
             return false;
         }
     }
     return true;
 }
Exemple #2
0
 /**
  * Tests CF
  *
  * @param string $error
  * @return boolean
  */
 function test(&$error)
 {
     if ($this->type == W3TC_CDN_CF_TYPE_S3) {
         if (!parent::test($error)) {
             return false;
         }
     } elseif ($this->type == W3TC_CDN_CF_TYPE_CUSTOM) {
         if (!$this->_init($error)) {
             return false;
         }
     }
     /**
      * Search active CF distribution
      */
     $this->_set_error_handler();
     $dists = @$this->_s3->listDistributions();
     $this->_restore_error_handler();
     if ($dists === false) {
         $error = sprintf('Unable to list distributions (%s).', $this->_get_last_error());
         return false;
     }
     if (!count($dists)) {
         $error = 'No distributions found.';
         return false;
     }
     $dist = false;
     $origin = $this->_get_origin();
     foreach ((array) $dists as $_dist) {
         if (isset($_dist['origin']) && $_dist['origin'] == $origin) {
             $dist = $_dist;
             break;
         }
     }
     if (!$dist) {
         $error = sprintf('Distribution for origin "%s" not found.', $origin);
         return false;
     }
     if (!$dist['enabled']) {
         $error = sprintf('Distribution for origin "%s" is disabled.', $origin);
         return false;
     }
     if (!empty($this->_config['cname'])) {
         $domains = (array) $this->_config['cname'];
         $cnames = isset($dist['cnames']) ? (array) $dist['cnames'] : array();
         foreach ($domains as $domain) {
             $_domains = array_map('trim', explode(',', $domain));
             foreach ($_domains as $_domain) {
                 if (!in_array($_domain, $cnames)) {
                     $error = sprintf('Domain name %s is not in distribution CNAME list.', $_domain);
                     return false;
                 }
             }
         }
     } elseif (!empty($this->_config['id'])) {
         $domain = $this->get_domain();
         if ($domain != $dist['domain']) {
             $error = sprintf('Distribution domain name mismatch (%s != %s).', $domain, $dist['domain']);
             return false;
         }
     }
     return true;
 }