apache
wp-content
mu-plugins
plugins
themes
upgrade-temp-backup
plugins
activitypub
companion-auto-update
menu-icons
w3-total-cache
extension-example
inc
ini
languages
lib
pub
vendor
wp-content
Base_Page_Settings.php
BrowserCache_ConfigLabels.php
BrowserCache_Core.php
BrowserCache_Environment.php
BrowserCache_Environment_Apache.php
BrowserCache_Environment_LiteSpeed.php
BrowserCache_Environment_Nginx.php
BrowserCache_Page.php
BrowserCache_Page_View_QuickReference.php
BrowserCache_Page_View_SectionSecurity.php
BrowserCache_Plugin.php
BrowserCache_Plugin_Admin.php
Cache.php
CacheFlush.php
CacheFlush_Locally.php
CacheGroups_Plugin_Admin.php
CacheGroups_Plugin_Admin_View.js
CacheGroups_Plugin_Admin_View.php
Cache_Apc.php
Cache_Apcu.php
Cache_Base.php
Cache_Eaccelerator.php
Cache_File.php
Cache_File_Cleaner.php
Cache_File_Cleaner_Generic.php
Cache_File_Cleaner_Generic_HardDelete.php
Cache_File_Generic.php
Cache_Memcache.php
Cache_Memcached.php
Cache_Memcached_Stats.php
Cache_Nginx_Memcached.php
Cache_Redis.php
Cache_Wincache.php
Cache_Xcache.php
CdnEngine.php
CdnEngine_Azure.php
CdnEngine_Base.php
CdnEngine_CloudFront.php
CdnEngine_Ftp.php
CdnEngine_GoogleDrive.php
CdnEngine_Mirror.php
CdnEngine_Mirror_Akamai.php
CdnEngine_Mirror_Att.php
CdnEngine_Mirror_BunnyCdn.php
CdnEngine_Mirror_CloudFront.php
CdnEngine_Mirror_Cotendo.php
CdnEngine_Mirror_Edgecast.php
CdnEngine_Mirror_Highwinds.php
CdnEngine_Mirror_LimeLight.php
CdnEngine_Mirror_RackSpaceCdn.php
CdnEngine_Mirror_StackPath.php
CdnEngine_Mirror_StackPath2.php
CdnEngine_RackSpaceCloudFiles.php
CdnEngine_S3.php
CdnEngine_S3_Compatible.php
Cdn_AdminActions.php
Cdn_AdminNotes.php
Cdn_BunnyCdn_Api.php
Cdn_BunnyCdn_Page.php
Cdn_BunnyCdn_Page_View.js
Cdn_BunnyCdn_Page_View.php
Cdn_BunnyCdn_Page_View_Purge_Urls.php
Cdn_BunnyCdn_Popup.php
Cdn_BunnyCdn_Popup_View_Configured.php
Cdn_BunnyCdn_Popup_View_Deauthorize.php
Cdn_BunnyCdn_Popup_View_Deauthorized.php
Cdn_BunnyCdn_Popup_View_Intro.php
Cdn_BunnyCdn_Popup_View_Pull_Zones.php
Cdn_BunnyCdn_Widget.php
Cdn_BunnyCdn_Widget_View.css
Cdn_BunnyCdn_Widget_View_Authorized.php
Cdn_BunnyCdn_Widget_View_Unauthorized.php
Cdn_CacheFlush.php
Cdn_ConfigLabels.php
Cdn_Core.php
Cdn_Core_Admin.php
Cdn_Environment.php
Cdn_Environment_LiteSpeed.php
Cdn_Environment_Nginx.php
Cdn_GeneralPage_View.php
Cdn_GoogleDrive_AdminActions.php
Cdn_GoogleDrive_Page.php
Cdn_GoogleDrive_Page_View.js
Cdn_GoogleDrive_Page_View.php
Cdn_GoogleDrive_Popup_AuthReturn.php
Cdn_GoogleDrive_Popup_AuthReturn_View.php
Cdn_Highwinds_Api.php
Cdn_Highwinds_Page.php
Cdn_Highwinds_Page_View.js
Cdn_Highwinds_Page_View.php
Cdn_Highwinds_Popup.php
Cdn_Highwinds_Popup_View_ConfigureCnamesForm.php
Cdn_Highwinds_Popup_View_Intro.php
Cdn_Highwinds_Popup_View_SelectHost.php
Cdn_Highwinds_Widget.php
Cdn_Highwinds_Widget_View.css
Cdn_Highwinds_Widget_View.js
Cdn_Highwinds_Widget_View.php
Cdn_Highwinds_Widget_View_NotConfigured.php
Cdn_LimeLight_Page.php
Cdn_LimeLight_Page_View.js
Cdn_LimeLight_Page_View.php
Cdn_LimeLight_Popup.php
Cdn_LimeLight_Popup_View_Intro.php
Cdn_LimeLight_Popup_View_Success.php
Cdn_Page.php
Cdn_Page_View_Fsd_HeaderActions.php
Cdn_Plugin.php
Cdn_Plugin_Admin.php
Cdn_RackSpaceCdn_AdminActions.php
Cdn_RackSpaceCdn_Page.php
Cdn_RackSpaceCdn_Page_View.js
Cdn_RackSpaceCdn_Page_View.php
Cdn_RackSpaceCdn_Popup.php
Cdn_RackSpaceCdn_Popup_View_ConfigureDomains.php
Cdn_RackSpaceCdn_Popup_View_Intro.php
Cdn_RackSpaceCdn_Popup_View_Regions.php
Cdn_RackSpaceCdn_Popup_View_Service_Actualize.php
Cdn_RackSpaceCdn_Popup_View_Service_Create.php
Cdn_RackSpaceCdn_Popup_View_Service_Created.php
Cdn_RackSpaceCdn_Popup_View_Services.php
Cdn_RackSpaceCloudFiles_Page.php
Cdn_RackSpaceCloudFiles_Page_View.js
Cdn_RackSpaceCloudFiles_Page_View.php
Cdn_RackSpaceCloudFiles_Popup.php
Cdn_RackSpaceCloudFiles_Popup_View_Containers.php
Cdn_RackSpaceCloudFiles_Popup_View_Intro.php
Cdn_RackSpaceCloudFiles_Popup_View_Regions.php
Cdn_RackSpace_Api_CaCert-example.pem
Cdn_RackSpace_Api_Cdn.php
Cdn_RackSpace_Api_CloudFiles.php
Cdn_RackSpace_Api_CloudFilesCdn.php
Cdn_RackSpace_Api_Tokens.php
Cdn_StackPath2_Api.php
Cdn_StackPath2_Page.php
Cdn_StackPath2_Page_View.js
Cdn_StackPath2_Page_View.php
Cdn_StackPath2_Popup.php
Cdn_StackPath2_Popup_View_Intro.php
Cdn_StackPath2_Popup_View_Sites.php
Cdn_StackPath2_Popup_View_Stacks.php
Cdn_StackPath2_Popup_View_Success.php
Cdn_StackPath2_Widget.php
Cdn_StackPath2_Widget_View.css
Cdn_StackPath2_Widget_View.js
Cdn_StackPath2_Widget_View_Authorized.php
Cdn_StackPath2_Widget_View_Unauthorized.php
Cdn_StackPath_Api.php
Cdn_StackPath_Page.php
Cdn_StackPath_Page_View.js
Cdn_StackPath_Page_View.php
Cdn_StackPath_Popup.php
Cdn_StackPath_Popup_View_Intro.php
Cdn_StackPath_Popup_View_Success.php
Cdn_StackPath_Popup_View_Zone.php
Cdn_StackPath_Popup_View_Zones.php
Cdn_StackPath_Widget.php
Cdn_StackPath_Widget_View.css
Cdn_StackPath_Widget_View.js
Cdn_StackPath_Widget_View_Authorized.php
Cdn_StackPath_Widget_View_Unauthorized.php
Cdn_Util.php
Cdnfsd_BunnyCdn_Engine.php
Cdnfsd_BunnyCdn_Page.php
Cdnfsd_BunnyCdn_Page_View.js
Cdnfsd_BunnyCdn_Page_View.php
Cdnfsd_BunnyCdn_Popup.php
Cdnfsd_BunnyCdn_Popup_View_Configured.php
Cdnfsd_BunnyCdn_Popup_View_Deauthorize.php
Cdnfsd_BunnyCdn_Popup_View_Deauthorized.php
Cdnfsd_BunnyCdn_Popup_View_Intro.php
Cdnfsd_BunnyCdn_Popup_View_Pull_Zones.php
Cdnfsd_CacheFlush.php
Cdnfsd_CloudFront_Engine.php
Cdnfsd_CloudFront_Page.php
Cdnfsd_CloudFront_Page_View.js
Cdnfsd_CloudFront_Page_View.php
Cdnfsd_CloudFront_Popup.php
Cdnfsd_CloudFront_Popup_View_Distribution.php
Cdnfsd_CloudFront_Popup_View_Distributions.php
Cdnfsd_CloudFront_Popup_View_Intro.php
Cdnfsd_CloudFront_Popup_View_Success.php
Cdnfsd_Core.php
Cdnfsd_GeneralPage_View.php
Cdnfsd_LimeLight_Api.php
Cdnfsd_LimeLight_Engine.php
Cdnfsd_LimeLight_Page.php
Cdnfsd_LimeLight_Page_View.js
Cdnfsd_LimeLight_Page_View.php
Cdnfsd_LimeLight_Popup.php
Cdnfsd_LimeLight_Popup_View_Intro.php
Cdnfsd_LimeLight_Popup_View_Success.php
Cdnfsd_Plugin.php
Cdnfsd_Plugin_Admin.php
Cdnfsd_StackPath2_Engine.php
Cdnfsd_StackPath2_Page.php
Cdnfsd_StackPath2_Page_View.js
Cdnfsd_StackPath2_Page_View.php
Cdnfsd_StackPath2_Popup.php
Cdnfsd_StackPath2_Popup_View_Intro.php
Cdnfsd_StackPath2_Popup_View_Sites.php
Cdnfsd_StackPath2_Popup_View_Stacks.php
Cdnfsd_StackPath2_Popup_View_Success.php
Cdnfsd_StackPath_Engine.php
Cdnfsd_StackPath_Page.php
Cdnfsd_StackPath_Page_View.js
Cdnfsd_StackPath_Page_View.php
Cdnfsd_StackPath_Popup.php
Cdnfsd_StackPath_Popup_View_Intro.php
Cdnfsd_StackPath_Popup_View_Success.php
Cdnfsd_StackPath_Popup_View_Zone.php
Cdnfsd_StackPath_Popup_View_Zones.php
Cdnfsd_TransparentCDN_Engine.php
Cdnfsd_TransparentCDN_Page.php
Cdnfsd_TransparentCDN_Page_View.js
Cdnfsd_TransparentCDN_Page_View.php
Cdnfsd_Util.php
Cli.php
Config.php
ConfigCache.php
ConfigCompiler.php
ConfigDbStorage.php
ConfigKeys.php
ConfigState.php
ConfigStateNote.php
ConfigUtil.php
DbCache_ConfigLabels.php
DbCache_Core.php
DbCache_Environment.php
DbCache_Page.php
DbCache_Plugin.php
DbCache_Plugin_Admin.php
DbCache_Wpdb.php
DbCache_WpdbBase.php
DbCache_WpdbInjection.php
DbCache_WpdbInjection_QueryCaching.php
DbCache_WpdbLegacy.php
DbCache_WpdbNew.php
Dispatcher.php
Enterprise_CacheFlush_MakeSnsEvent.php
Enterprise_Dbcache_WpdbInjection_Cluster.php
Enterprise_SnsBase.php
Enterprise_SnsServer.php
Extension_Amp_Page_View.php
Extension_Amp_Plugin.php
Extension_Amp_Plugin_Admin.php
Extension_CloudFlare_AdminActions.php
Extension_CloudFlare_Api.php
Extension_CloudFlare_Cdn_Page_View.php
Extension_CloudFlare_GeneralPage_View.php
Extension_CloudFlare_Page.php
Extension_CloudFlare_Page_View.js
Extension_CloudFlare_Page_View.php
Extension_CloudFlare_Plugin.php
Extension_CloudFlare_Plugin_Admin.php
Extension_CloudFlare_Popup.php
Extension_CloudFlare_Popup_View_Intro.php
Extension_CloudFlare_Popup_View_Zones.php
Extension_CloudFlare_SettingsForUi.php
Extension_CloudFlare_View_Dashboard.js
Extension_CloudFlare_Widget.php
Extension_CloudFlare_Widget_Logo.png
Extension_CloudFlare_Widget_View.css
Extension_CloudFlare_Widget_View.php
Extension_FragmentCache_Api.php
Extension_FragmentCache_Core.php
Extension_FragmentCache_Environment.php
Extension_FragmentCache_GeneralPage.php
Extension_FragmentCache_GeneralPage_View.php
Extension_FragmentCache_Page.php
Extension_FragmentCache_Page_View.php
Extension_FragmentCache_Plugin.php
Extension_FragmentCache_Plugin_Admin.php
Extension_FragmentCache_WpObjectCache.php
Extension_Genesis_Page.php
Extension_Genesis_Page_View.php
Extension_Genesis_Plugin.php
Extension_Genesis_Plugin_Admin.php
Extension_ImageService_Api.php
Extension_ImageService_Cron.php
Extension_ImageService_Environment.php
Extension_ImageService_Page_View.php
Extension_ImageService_Plugin.php
Extension_ImageService_Plugin_Admin.css
Extension_ImageService_Plugin_Admin.js
Extension_ImageService_Plugin_Admin.php
Extension_NewRelic_AdminActions.php
Extension_NewRelic_AdminNotes.php
Extension_NewRelic_Api.php
Extension_NewRelic_Core.php
Extension_NewRelic_GeneralPage.php
Extension_NewRelic_GeneralPage_View.php
Extension_NewRelic_Page.php
Extension_NewRelic_Page_View_Apm.php
Extension_NewRelic_Plugin.php
Extension_NewRelic_Plugin_Admin.php
Extension_NewRelic_Popup.php
Extension_NewRelic_Popup_View.js
Extension_NewRelic_Popup_View_Intro.php
Extension_NewRelic_Popup_View_ListApplications.php
Extension_NewRelic_Service.php
Extension_NewRelic_Widget.php
Extension_NewRelic_Widget_View.css
Extension_NewRelic_Widget_View.js
Extension_NewRelic_Widget_View_Apm.php
Extension_NewRelic_Widget_View_Browser.php
Extension_NewRelic_Widget_View_NotConfigured.php
Extension_Swarmify_AdminActions.php
Extension_Swarmify_Core.php
Extension_Swarmify_Page.php
Extension_Swarmify_Page_View.php
Extension_Swarmify_Plugin.php
Extension_Swarmify_Plugin_Admin.php
Extension_Swarmify_Widget.php
Extension_Swarmify_Widget_View.css
Extension_Swarmify_Widget_View_NotConfigured.php
Extension_WordPressSeo_Plugin.php
Extension_WordPressSeo_Plugin_Admin.php
Extension_Wpml_Plugin.php
Extension_Wpml_Plugin_Admin.php
Extensions_AdminActions.php
Extensions_Page.php
Extensions_Plugin_Admin.php
Extensions_Util.php
FeatureShowcase_Plugin_Admin.php
FeatureShowcase_Plugin_Admin_View.php
Generic_AdminActions_Config.php
Generic_AdminActions_Default.php
Generic_AdminActions_Flush.php
Generic_AdminActions_Test.php
Generic_AdminNotes.php
Generic_ConfigLabels.php
Generic_Environment.php
Generic_Faq.php
Generic_GeneralPage_View_ShowEdge.js
Generic_GeneralPage_View_ShowSupportUs.js
Generic_Page_About.php
Generic_Page_Dashboard.php
Generic_Page_Dashboard_View.css
Generic_Page_General.php
Generic_Page_Install.php
Generic_Page_PurgeLog.php
Generic_Page_PurgeLog_View.php
Generic_Plugin.php
Generic_Plugin_Admin.php
Generic_Plugin_AdminCompatibility.php
Generic_Plugin_AdminNotifications.php
Generic_Plugin_AdminRowActions.php
Generic_Plugin_Admin_View_Faq.php
Generic_Plugin_WidgetForum.php
Generic_Plugin_WidgetNews.php
Generic_WidgetBoldGrid.php
Generic_WidgetBoldGrid_AdminActions.php
Generic_WidgetBoldGrid_Logo.svg
Generic_WidgetBoldGrid_View.js
Generic_WidgetBoldGrid_View.php
Generic_WidgetCommunity.php
Generic_WidgetCommunity_View.php
Generic_WidgetServices.php
Generic_WidgetServices_View.php
Generic_WidgetSpreadTheWord.js
Generic_WidgetSpreadTheWord_Plugin.php
Generic_WidgetSpreadTheWord_View.php
LICENSE
Licensing_AdminActions.php
Licensing_Core.php
Licensing_Plugin_Admin.php
Minify_AutoCss.php
Minify_AutoJs.php
Minify_ConfigLabels.php
Minify_ContentMinifier.php
Minify_Core.php
Minify_Environment.php
Minify_Environment_LiteSpeed.php
Minify_Extract.php
Minify_GeneralPage_View_ShowHelp.js
Minify_GeneralPage_View_ShowHelpForce.js
Minify_HelpPopup_View.php
Minify_MinifiedFileRequestHandler.php
Minify_Page.php
Minify_Plugin.php
Minify_Plugin_Admin.php
Mobile_Base.php
Mobile_Redirect.php
Mobile_Referrer.php
Mobile_UserAgent.php
ModuleStatus.php
ObjectCache_ConfigLabels.php
ObjectCache_Environment.php
ObjectCache_Page.php
ObjectCache_Page_View_PurgeLog.php
ObjectCache_Plugin.php
ObjectCache_Plugin_Admin.php
ObjectCache_WpObjectCache.php
ObjectCache_WpObjectCache_Regular.php
PageSpeed_Api.php
PageSpeed_Data.php
PageSpeed_Instructions.php
PageSpeed_Page.php
PageSpeed_Page_View.css
PageSpeed_Page_View.js
PageSpeed_Page_View.php
PageSpeed_Page_View_FromAPI.php
PageSpeed_Widget.php
PageSpeed_Widget_View.css
PageSpeed_Widget_View.js
PageSpeed_Widget_View.php
PageSpeed_Widget_View_FromApi.php
PgCache_ConfigLabels.php
PgCache_ContentGrabber.php
PgCache_Environment.php
PgCache_Flush.php
PgCache_Page.php
PgCache_Page_View.js
PgCache_Plugin.php
PgCache_Plugin_Admin.php
PgCache_QsExempts.php
Root_AdminActions.php
Root_AdminActivation.php
Root_AdminMenu.php
Root_Environment.php
Root_Loader.php
SetupGuide_Plugin_Admin.php
Support_AdminActions.php
Support_Page.php
Support_Page_View_DoneContent.php
Support_Page_View_PageContent.php
SystemOpCache_AdminActions.php
SystemOpCache_Core.php
SystemOpCache_GeneralPage_View.php
SystemOpCache_Plugin_Admin.php
UsageStatistics_AdminActions.php
UsageStatistics_Core.php
UsageStatistics_GeneralPage.php
UsageStatistics_GeneralPage_View.php
UsageStatistics_Page.php
UsageStatistics_Page_DbRequests_View.php
UsageStatistics_Page_ObjectCacheLog_View.php
UsageStatistics_Page_PageCacheRequests_View.php
UsageStatistics_Page_View.css
UsageStatistics_Page_View.js
UsageStatistics_Page_View.php
UsageStatistics_Page_View_Ad.php
UsageStatistics_Page_View_Disabled.php
UsageStatistics_Page_View_Free.php
UsageStatistics_Page_View_NoDebugMode.php
UsageStatistics_Plugin.php
UsageStatistics_Plugin_Admin.php
UsageStatistics_Source_AccessLog.php
UsageStatistics_Source_DbQueriesLog.php
UsageStatistics_Source_ObjectCacheLog.php
UsageStatistics_Source_PageCacheLog.php
UsageStatistics_Source_Wpdb.php
UsageStatistics_Sources.php
UsageStatistics_Sources_Apc.php
UsageStatistics_Sources_Memcached.php
UsageStatistics_Sources_Redis.php
UsageStatistics_StorageReader.php
UsageStatistics_StorageWriter.php
UsageStatistics_Widget.php
UsageStatistics_Widget_View.js
UsageStatistics_Widget_View.php
UsageStatistics_Widget_View_Disabled.php
UserExperience_DeferScripts_Extension.php
UserExperience_DeferScripts_Mutator.php
UserExperience_DeferScripts_Page_View.php
UserExperience_DeferScripts_Script.js
UserExperience_Emoji_Extension.php
UserExperience_GeneralPage.php
UserExperience_GeneralPage_View.php
UserExperience_LazyLoad_GoogleMaps_GoogleMapsEasy.php
UserExperience_LazyLoad_GoogleMaps_WPGoogleMapPlugin.php
UserExperience_LazyLoad_GoogleMaps_WPGoogleMaps.php
UserExperience_LazyLoad_Mutator.php
UserExperience_LazyLoad_Mutator_Picture.php
UserExperience_LazyLoad_Mutator_Unmutable.php
UserExperience_LazyLoad_Page_View.php
UserExperience_LazyLoad_Plugin.php
UserExperience_OEmbed_Extension.php
UserExperience_Page.php
UserExperience_Page_View.php
UserExperience_Plugin_Admin.php
UserExperience_Plugin_Jquery.php
UserExperience_Preload_Requests_Extension.php
UserExperience_Preload_Requests_Page_View.php
Util_Activation.php
Util_Admin.php
Util_AttachToActions.php
Util_Bus.php
Util_ConfigLabel.php
Util_Content.php
Util_Debug.php
Util_DebugPurgeLog_Reader.php
Util_Environment.php
Util_Environment_Exception.php
Util_Environment_Exceptions.php
Util_File.php
Util_Http.php
Util_Installed.php
Util_Mime.php
Util_PageSpeed.php
Util_PageUrls.php
Util_Request.php
Util_Rule.php
Util_Theme.php
Util_Ui.php
Util_UsageStatistics.php
Util_Widget.php
Util_WpFile.php
Util_WpFile_FilesystemChmodException.php
Util_WpFile_FilesystemCopyException.php
Util_WpFile_FilesystemMkdirException.php
Util_WpFile_FilesystemModifyException.php
Util_WpFile_FilesystemOperationException.php
Util_WpFile_FilesystemRmException.php
Util_WpFile_FilesystemRmdirException.php
Util_WpFile_FilesystemWriteException.php
Util_WpmuBlogmap.php
Varnish_Flush.php
Varnish_Plugin.php
index.html
press.txt
readme.txt
w3-total-cache-api.php
w3-total-cache-old-php.php
w3-total-cache.php
w3tc-config
index.php
.gitignore
htaccess
php.ini
376 lines
8.7 KiB
PHP
376 lines
8.7 KiB
PHP
<?php
|
|
namespace W3TC;
|
|
|
|
|
|
|
|
/**
|
|
* CloudFlare API
|
|
*/
|
|
class Extension_CloudFlare_Api {
|
|
static private $_root_uri = 'https://api.cloudflare.com/client/v4';
|
|
|
|
private $_email;
|
|
private $_key;
|
|
private $_zone_id;
|
|
private $_timelimit_api_request;
|
|
|
|
|
|
|
|
function __construct( $config ) {
|
|
$this->_email = $config['email'];
|
|
$this->_key = $config['key'];
|
|
$this->_zone_id =
|
|
( isset( $config['zone_id'] ) ? $config['zone_id'] : '' );
|
|
|
|
if ( !isset( $config['timelimit_api_request'] ) ||
|
|
$config['timelimit_api_request'] < 1 )
|
|
$this->_timelimit_api_request = 30;
|
|
else
|
|
$this->_timelimit_api_request = $config['timelimit_api_request'];
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Makes external event request
|
|
*
|
|
* @param string $type
|
|
* @param string $value
|
|
* @return array
|
|
*/
|
|
public function external_event( $type, $value ) {
|
|
$url = sprintf( 'https://www.cloudflare.com/ajax/external-event.html?' .
|
|
'u=%s&tkn=%s&evnt_t=%s&evnt_v=%s',
|
|
urlencode( $this->_email ), urlencode( $this->_key ),
|
|
urlencode( $type ), urlencode( $value ) );
|
|
$response = Util_Http::get( $url );
|
|
|
|
if ( !is_wp_error( $response ) ) {
|
|
return json_decode( $response['body'] );
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
|
|
/**
|
|
* Check
|
|
*
|
|
* @throws Util_WpFile_FilesystemOperationException
|
|
* @throws FileOperationException
|
|
*/
|
|
public function get_ip_ranges() {
|
|
$data = array();
|
|
$response = Util_Http::get( 'https://www.cloudflare.com/ips-v4' );
|
|
|
|
if ( !is_wp_error( $response ) ) {
|
|
$ip4_data = $response['body'];
|
|
$ip4_data = explode( "\n", $ip4_data );
|
|
$data['ip4'] = $ip4_data;
|
|
}
|
|
$response = Util_Http::get( 'https://www.cloudflare.com/ips-v6' );
|
|
if ( !is_wp_error( $response ) ) {
|
|
$ip6_data = $response['body'];
|
|
$ip6_data = explode( "\n", $ip6_data );
|
|
$data['ip6'] = $ip6_data;
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
|
|
|
|
public function zones($page = 1) {
|
|
return $this->_wp_remote_request_with_meta( 'GET',
|
|
self::$_root_uri . '/zones?page=' . urlencode($page) );
|
|
}
|
|
|
|
|
|
|
|
public function zone($id) {
|
|
$a = $this->_wp_remote_request( 'GET',
|
|
self::$_root_uri . '/zones/' . $id );
|
|
|
|
return $a;
|
|
}
|
|
|
|
|
|
|
|
public function zone_settings() {
|
|
$a = $this->_wp_remote_request( 'GET',
|
|
self::$_root_uri . '/zones/' . $this->_zone_id . '/settings' );
|
|
|
|
$by_id = array();
|
|
foreach ( $a as $i ) {
|
|
$by_id[$i['id']] = $i;
|
|
}
|
|
|
|
return $by_id;
|
|
}
|
|
|
|
|
|
|
|
public function zone_setting_set( $name, $value ) {
|
|
// Convert numeric values to the integer type.
|
|
if ( is_numeric( $value ) ) {
|
|
$value = intval( $value );
|
|
}
|
|
|
|
return $this->_wp_remote_request( 'PATCH',
|
|
self::$_root_uri . '/zones/' . $this->_zone_id . '/settings/' . $name,
|
|
json_encode( array( 'value' => $value ) ) );
|
|
}
|
|
|
|
/**
|
|
* Prepares the analytics dashboard widget query to be performed via the CF GraphQL API
|
|
*
|
|
* @throws Exception
|
|
* @return array
|
|
*/
|
|
public function analytics_dashboard( $start, $end, $type = 'day' ) {
|
|
$dataset = 'httpRequests1dGroups';
|
|
$datetime_filter = 'date';
|
|
|
|
if($type === 'hour') {
|
|
$dataset = 'httpRequests1hGroups';
|
|
$datetime_filter = 'datetime';
|
|
}
|
|
|
|
return $this->_wp_remote_request_graphql( 'POST',
|
|
self::$_root_uri . '/graphql',
|
|
"{ \"query\": \"query {
|
|
viewer {
|
|
zones(filter: {zoneTag: \\\"" . $this->_zone_id . "\\\"}) {
|
|
" . $dataset . "(
|
|
orderBy: [" . $datetime_filter . "_ASC],
|
|
limit: 100,
|
|
filter: {
|
|
" . $datetime_filter . "_geq: \\\"" . $start . "\\\",
|
|
" . $datetime_filter . "_lt: \\\"" . $end . "\\\"
|
|
}
|
|
) {
|
|
dimensions {
|
|
" . $datetime_filter . "
|
|
}
|
|
sum {
|
|
bytes
|
|
cachedBytes
|
|
cachedRequests
|
|
pageViews
|
|
requests
|
|
threats
|
|
}
|
|
uniq {
|
|
uniques
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}\"}"
|
|
);
|
|
}
|
|
|
|
public function purge() {
|
|
return $this->_wp_remote_request( 'DELETE',
|
|
self::$_root_uri . '/zones/' . $this->_zone_id . '/purge_cache',
|
|
'{"purge_everything":true}' );
|
|
}
|
|
|
|
/**
|
|
* Performs the CF API request
|
|
*
|
|
* @throws Exception
|
|
* @return array
|
|
*/
|
|
private function _wp_remote_request( $method, $url, $body = array() ) {
|
|
if ( empty( $this->_email ) || empty( $this->_key ) ) {
|
|
throw new \Exception('Not authenticated');
|
|
}
|
|
|
|
$headers = $this->_generate_wp_remote_request_headers();
|
|
|
|
$result = wp_remote_request( $url, array(
|
|
'method' => $method,
|
|
'headers' => $headers,
|
|
'timeout' => $this->_timelimit_api_request,
|
|
'body' => $body
|
|
) );
|
|
|
|
if ( is_wp_error( $result ) ) {
|
|
throw new \Exception( 'Failed to reach API endpoint' );
|
|
}
|
|
|
|
$response_json = @json_decode( $result['body'], true );
|
|
if ( is_null( $response_json ) || !isset( $response_json['success'] ) ) {
|
|
throw new \Exception(
|
|
'Failed to reach API endpoint, got unexpected response ' .
|
|
str_replace( '<', '.', str_replace( '>', '.', $result['body'] ) ) );
|
|
}
|
|
|
|
if ( !$response_json['success'] ) {
|
|
$errors = array();
|
|
|
|
if ( isset( $response_json['errors'] ) ) {
|
|
foreach ( $response_json['errors'] as $e ) {
|
|
if ( !empty( $e['message'] ) )
|
|
$errors[] = $e['message'];
|
|
}
|
|
}
|
|
|
|
if ( empty( $errors ) )
|
|
$errors[] = 'Request failed';
|
|
|
|
throw new \Exception( implode( ', ', $errors ) );
|
|
}
|
|
|
|
if ( isset( $response_json['result'] ) ) {
|
|
return $response_json['result'];
|
|
}
|
|
|
|
return array();
|
|
}
|
|
|
|
/**
|
|
* Performs the CF API request with meta
|
|
*
|
|
* @throws Exception
|
|
* @return array
|
|
*/
|
|
private function _wp_remote_request_with_meta( $method, $url, $body = array() ) {
|
|
if ( empty( $this->_email ) || empty( $this->_key ) ) {
|
|
throw new \Exception('Not authenticated');
|
|
}
|
|
|
|
$headers = $this->_generate_wp_remote_request_headers();
|
|
|
|
$result = wp_remote_request( $url, array(
|
|
'method' => $method,
|
|
'headers' => $headers,
|
|
'timeout' => $this->_timelimit_api_request,
|
|
'body' => $body
|
|
) );
|
|
|
|
if ( is_wp_error( $result ) )
|
|
throw new \Exception( 'Failed to reach API endpoint' );
|
|
|
|
$response_json = @json_decode( $result['body'], true );
|
|
if ( is_null( $response_json ) || !isset( $response_json['success'] ) ) {
|
|
throw new \Exception(
|
|
'Failed to reach API endpoint, got unexpected response ' .
|
|
$result['body'] );
|
|
}
|
|
|
|
if ( !$response_json['success'] ) {
|
|
$errors = array();
|
|
|
|
if ( isset( $response_json['errors'] ) ) {
|
|
foreach ( $response_json['errors'] as $e ) {
|
|
if ( !empty( $e['message'] ) )
|
|
$errors[] = $e['message'];
|
|
}
|
|
}
|
|
if ( empty( $errors ) )
|
|
$errors[] = 'Request failed';
|
|
|
|
throw new \Exception( implode( ', ', $errors ) );
|
|
}
|
|
|
|
if ( isset( $response_json['result'] ) ) {
|
|
return $response_json;
|
|
}
|
|
|
|
return array();
|
|
}
|
|
|
|
/**
|
|
* Performs the CF GraphQL API request
|
|
*
|
|
* @throws Exception
|
|
* @return array
|
|
*/
|
|
private function _wp_remote_request_graphql( $method, $url, $body ) {
|
|
if ( empty( $this->_email ) || empty( $this->_key ) ) {
|
|
throw new \Exception('Not authenticated');
|
|
}
|
|
|
|
$headers = $this->_generate_wp_remote_request_headers();
|
|
|
|
$body = preg_replace( '/\s\s+/', ' ', $body );
|
|
|
|
$result = wp_remote_request( $url, array(
|
|
'method' => $method,
|
|
'headers' => $headers,
|
|
'timeout' => $this->_timelimit_api_request,
|
|
'body' => $body
|
|
) );
|
|
|
|
if ( is_wp_error( $result ) ) {
|
|
throw new \Exception( 'Failed to reach API endpoint' );
|
|
}
|
|
|
|
$response_json = @json_decode( $result['body'], true );
|
|
if ( is_null( $response_json ) ) {
|
|
throw new \Exception(
|
|
'Failed to reach API endpoint, got unexpected response ' .
|
|
str_replace( '<', '.', str_replace( '>', '.', $result['body'] ) ) );
|
|
}
|
|
|
|
if ( isset( $response_json['errors'] ) ) {
|
|
$errors = array();
|
|
|
|
foreach ( $response_json['errors'] as $e ) {
|
|
if ( !empty( $e['message'] ) )
|
|
$errors[] = $e['message'];
|
|
}
|
|
|
|
if ( empty( $errors ) )
|
|
$errors[] = 'Request failed';
|
|
|
|
throw new \Exception( implode( ', ', $errors ) );
|
|
}
|
|
|
|
if ( isset( $response_json['data'] ) ) {
|
|
return $response_json['data'];
|
|
}
|
|
|
|
return array();
|
|
}
|
|
|
|
/**
|
|
* Generates the appropriate request headers for CF API requests based on token or global key presence
|
|
*
|
|
* @since 2.2.1
|
|
*
|
|
* @throws Exception
|
|
* @return array
|
|
*/
|
|
private function _generate_wp_remote_request_headers() {
|
|
if ( empty( $this->_email ) || empty( $this->_key ) ) {
|
|
throw new \Exception('Missing authentication email and/or API token / global key');
|
|
}
|
|
|
|
$headers = array();
|
|
|
|
// CF API Token
|
|
if( strlen( $this->_key ) == 40 ) {
|
|
$headers = array(
|
|
'Content-Type' => 'application/json',
|
|
'Authorization' => 'Bearer ' . $this->_key
|
|
);
|
|
}
|
|
// CF Legacy API Global Key
|
|
else if ( strlen( $this->_key ) == 37 ) {
|
|
$headers = array(
|
|
'Content-Type' => 'application/json',
|
|
'X-Auth-Key' => $this->_key,
|
|
'X-Auth-Email' => $this->_email
|
|
);
|
|
}
|
|
else {
|
|
throw new \Exception('Improper API token / global key length');
|
|
}
|
|
|
|
return $headers;
|
|
}
|
|
}
|