X7ROOT File Manager
Current Path:
/home/mysptejz/public_html/web-hosting/wp-content/plugins/w3-total-cache
home
/
mysptejz
/
public_html
/
web-hosting
/
wp-content
/
plugins
/
w3-total-cache
/
ðŸ“
..
📄
Base_Page_Settings.php
(6.82 KB)
📄
BrowserCache_ConfigLabels.php
(10.36 KB)
📄
BrowserCache_Core.php
(3.19 KB)
📄
BrowserCache_Environment.php
(31.64 KB)
📄
BrowserCache_Environment_Apache.php
(3.38 KB)
📄
BrowserCache_Environment_LiteSpeed.php
(8.41 KB)
📄
BrowserCache_Environment_Nginx.php
(22.25 KB)
📄
BrowserCache_Page.php
(3.28 KB)
📄
BrowserCache_Page_View_QuickReference.php
(2.58 KB)
📄
BrowserCache_Page_View_SectionSecurity.php
(61.6 KB)
📄
BrowserCache_Plugin.php
(15.11 KB)
📄
BrowserCache_Plugin_Admin.php
(1.33 KB)
📄
Cache.php
(4.52 KB)
📄
CacheFlush.php
(7.88 KB)
📄
CacheFlush_Locally.php
(12.6 KB)
📄
CacheGroups_Plugin_Admin.php
(7.98 KB)
📄
CacheGroups_Plugin_Admin_View.js
(23 KB)
📄
CacheGroups_Plugin_Admin_View.php
(15.17 KB)
📄
Cache_Apc.php
(7.75 KB)
📄
Cache_Apcu.php
(7.77 KB)
📄
Cache_Base.php
(6.49 KB)
📄
Cache_Eaccelerator.php
(7.58 KB)
📄
Cache_File.php
(21.25 KB)
📄
Cache_File_Cleaner.php
(2.69 KB)
📄
Cache_File_Cleaner_Generic.php
(4.05 KB)
📄
Cache_File_Cleaner_Generic_HardDelete.php
(1.05 KB)
📄
Cache_File_Generic.php
(12.54 KB)
📄
Cache_Memcache.php
(14.32 KB)
📄
Cache_Memcached.php
(18.13 KB)
📄
Cache_Memcached_Stats.php
(3.52 KB)
📄
Cache_Nginx_Memcached.php
(13.55 KB)
📄
Cache_Redis.php
(13.31 KB)
📄
Cache_Wincache.php
(12.72 KB)
📄
Cache_Xcache.php
(11.55 KB)
📄
CdnEngine.php
(2.54 KB)
📄
CdnEngine_Azure.php
(12.65 KB)
📄
CdnEngine_Azure_MI.php
(12.28 KB)
📄
CdnEngine_Azure_MI_Utility.php
(18.19 KB)
📄
CdnEngine_Base.php
(16.37 KB)
📄
CdnEngine_CloudFront.php
(12.38 KB)
📄
CdnEngine_Ftp.php
(21.08 KB)
📄
CdnEngine_GoogleDrive.php
(24.14 KB)
📄
CdnEngine_Mirror.php
(2.46 KB)
📄
CdnEngine_Mirror_Akamai.php
(3.52 KB)
📄
CdnEngine_Mirror_Att.php
(293 B)
📄
CdnEngine_Mirror_BunnyCdn.php
(4.3 KB)
📄
CdnEngine_Mirror_CloudFront.php
(10.48 KB)
📄
CdnEngine_Mirror_Cotendo.php
(3.72 KB)
📄
CdnEngine_Mirror_Edgecast.php
(4.46 KB)
📄
CdnEngine_Mirror_RackSpaceCdn.php
(6.57 KB)
📄
CdnEngine_RackSpaceCloudFiles.php
(12.01 KB)
📄
CdnEngine_S3.php
(17.55 KB)
📄
CdnEngine_S3_Compatible.php
(10.36 KB)
📄
Cdn_AdminActions.php
(16.81 KB)
📄
Cdn_AdminNotes.php
(13.71 KB)
📄
Cdn_BunnyCdn_Api.php
(15.67 KB)
📄
Cdn_BunnyCdn_Page.php
(7.4 KB)
📄
Cdn_BunnyCdn_Page_View.js
(13.14 KB)
📄
Cdn_BunnyCdn_Page_View.php
(3.6 KB)
📄
Cdn_BunnyCdn_Page_View_Purge_Urls.php
(2.06 KB)
📄
Cdn_BunnyCdn_Popup.php
(10.83 KB)
📄
Cdn_BunnyCdn_Popup_View_Configured.php
(864 B)
📄
Cdn_BunnyCdn_Popup_View_Deauthorize.php
(2.15 KB)
📄
Cdn_BunnyCdn_Popup_View_Deauthorized.php
(1.54 KB)
📄
Cdn_BunnyCdn_Popup_View_Intro.php
(1.83 KB)
📄
Cdn_BunnyCdn_Popup_View_Pull_Zones.php
(5.16 KB)
📄
Cdn_BunnyCdn_Widget.php
(2.25 KB)
📄
Cdn_BunnyCdn_Widget_View.css
(1.26 KB)
📄
Cdn_BunnyCdn_Widget_View_Authorized.php
(1.9 KB)
📄
Cdn_BunnyCdn_Widget_View_Unauthorized.php
(6.1 KB)
📄
Cdn_CacheFlush.php
(2.64 KB)
📄
Cdn_ConfigLabels.php
(5.43 KB)
📄
Cdn_Core.php
(32.83 KB)
📄
Cdn_Core_Admin.php
(27.08 KB)
📄
Cdn_Environment.php
(19.29 KB)
📄
Cdn_Environment_LiteSpeed.php
(5.19 KB)
📄
Cdn_Environment_Nginx.php
(3.92 KB)
📄
Cdn_GeneralPage_View.php
(4.05 KB)
📄
Cdn_GoogleDrive_AdminActions.php
(3.53 KB)
📄
Cdn_GoogleDrive_Page.php
(2.03 KB)
📄
Cdn_GoogleDrive_Page_View.js
(6.25 KB)
📄
Cdn_GoogleDrive_Page_View.php
(1.36 KB)
📄
Cdn_GoogleDrive_Popup_AuthReturn.php
(1.61 KB)
📄
Cdn_GoogleDrive_Popup_AuthReturn_View.php
(1.66 KB)
📄
Cdn_Page.php
(3.5 KB)
📄
Cdn_Page_View_Fsd_HeaderActions.php
(760 B)
📄
Cdn_Plugin.php
(43.77 KB)
📄
Cdn_Plugin_Admin.php
(7.3 KB)
📄
Cdn_RackSpaceCdn_AdminActions.php
(1.28 KB)
📄
Cdn_RackSpaceCdn_Page.php
(2.05 KB)
📄
Cdn_RackSpaceCdn_Page_View.js
(10.06 KB)
📄
Cdn_RackSpaceCdn_Page_View.php
(5.22 KB)
📄
Cdn_RackSpaceCdn_Popup.php
(21.49 KB)
📄
Cdn_RackSpaceCdn_Popup_View_ConfigureDomains.php
(1.87 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Intro.php
(1.71 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Regions.php
(1.76 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Service_Actualize.php
(2.04 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Service_Create.php
(4.41 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Service_Created.php
(2.48 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Services.php
(1.99 KB)
📄
Cdn_RackSpaceCloudFiles_Page.php
(1.67 KB)
📄
Cdn_RackSpaceCloudFiles_Page_View.js
(6.44 KB)
📄
Cdn_RackSpaceCloudFiles_Page_View.php
(4.91 KB)
📄
Cdn_RackSpaceCloudFiles_Popup.php
(7.62 KB)
📄
Cdn_RackSpaceCloudFiles_Popup_View_Containers.php
(2.06 KB)
📄
Cdn_RackSpaceCloudFiles_Popup_View_Intro.php
(1.71 KB)
📄
Cdn_RackSpaceCloudFiles_Popup_View_Regions.php
(1.78 KB)
📄
Cdn_RackSpace_Api_CaCert-example.pem
(195.74 KB)
📄
Cdn_RackSpace_Api_Cdn.php
(10.72 KB)
📄
Cdn_RackSpace_Api_CloudFiles.php
(8.37 KB)
📄
Cdn_RackSpace_Api_CloudFilesCdn.php
(8.48 KB)
📄
Cdn_RackSpace_Api_Tokens.php
(6.78 KB)
📄
Cdn_Util.php
(6.73 KB)
📄
Cdnfsd_BunnyCdn_Engine.php
(2.03 KB)
📄
Cdnfsd_BunnyCdn_Page.php
(683 B)
📄
Cdnfsd_BunnyCdn_Page_View.js
(9.7 KB)
📄
Cdnfsd_BunnyCdn_Page_View.php
(3.72 KB)
📄
Cdnfsd_BunnyCdn_Popup.php
(10.39 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Configured.php
(1.3 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Deauthorize.php
(2.17 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Deauthorized.php
(1.56 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Intro.php
(1.85 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Pull_Zones.php
(5.57 KB)
📄
Cdnfsd_CacheFlush.php
(8.25 KB)
📄
Cdnfsd_CloudFront_Engine.php
(3.38 KB)
📄
Cdnfsd_CloudFront_Page.php
(741 B)
📄
Cdnfsd_CloudFront_Page_View.js
(8.51 KB)
📄
Cdnfsd_CloudFront_Page_View.php
(2.04 KB)
📄
Cdnfsd_CloudFront_Popup.php
(15.46 KB)
📄
Cdnfsd_CloudFront_Popup_View_Distribution.php
(3.34 KB)
📄
Cdnfsd_CloudFront_Popup_View_Distributions.php
(1.72 KB)
📄
Cdnfsd_CloudFront_Popup_View_Intro.php
(1.65 KB)
📄
Cdnfsd_CloudFront_Popup_View_Success.php
(976 B)
📄
Cdnfsd_Core.php
(1.96 KB)
📄
Cdnfsd_GeneralPage_View.php
(4.02 KB)
📄
Cdnfsd_Plugin.php
(1.98 KB)
📄
Cdnfsd_Plugin_Admin.php
(2.63 KB)
📄
Cdnfsd_TransparentCDN_Engine.php
(7.97 KB)
📄
Cdnfsd_TransparentCDN_Page.php
(1.36 KB)
📄
Cdnfsd_TransparentCDN_Page_View.js
(7.13 KB)
📄
Cdnfsd_TransparentCDN_Page_View.php
(2.33 KB)
📄
Cdnfsd_Util.php
(834 B)
📄
Cli.php
(17.33 KB)
📄
Config.php
(16.8 KB)
📄
ConfigCache.php
(4.67 KB)
📄
ConfigCompiler.php
(17.87 KB)
📄
ConfigDbStorage.php
(15.87 KB)
📄
ConfigKeys.php
(69.92 KB)
📄
ConfigSettingsTabs.php
(1.18 KB)
📄
ConfigSettingsTabsKeys.php
(19.62 KB)
📄
ConfigState.php
(6.08 KB)
📄
ConfigStateNote.php
(1.94 KB)
📄
ConfigUtil.php
(3.45 KB)
📄
DbCache_ConfigLabels.php
(1.22 KB)
📄
DbCache_Core.php
(2.05 KB)
📄
DbCache_Environment.php
(6.41 KB)
📄
DbCache_Page.php
(1.1 KB)
📄
DbCache_Plugin.php
(9.62 KB)
📄
DbCache_Plugin_Admin.php
(5.08 KB)
📄
DbCache_Wpdb.php
(1.63 KB)
📄
DbCache_WpdbBase.php
(346 B)
📄
DbCache_WpdbInjection.php
(7.15 KB)
📄
DbCache_WpdbInjection_QueryCaching.php
(26.05 KB)
📄
DbCache_WpdbLegacy.php
(22.42 KB)
📄
DbCache_WpdbNew.php
(22.24 KB)
📄
Dispatcher.php
(8.21 KB)
📄
Enterprise_CacheFlush_MakeSnsEvent.php
(7.47 KB)
📄
Enterprise_Dbcache_WpdbInjection_Cluster.php
(30.32 KB)
📄
Enterprise_SnsBase.php
(3.07 KB)
📄
Enterprise_SnsServer.php
(5.17 KB)
📄
Extension_AlwaysCached_AdminActions.php
(2.36 KB)
📄
Extension_AlwaysCached_Environment.php
(2.87 KB)
📄
Extension_AlwaysCached_Page.php
(4 KB)
📄
Extension_AlwaysCached_Page_Queue_View.php
(3.14 KB)
📄
Extension_AlwaysCached_Page_View.js
(13.04 KB)
📄
Extension_AlwaysCached_Page_View.php
(2.51 KB)
📄
Extension_AlwaysCached_Page_View_BoxCron.php
(2.92 KB)
📄
Extension_AlwaysCached_Page_View_BoxFlushAll.php
(3.28 KB)
📄
Extension_AlwaysCached_Page_View_BoxQueue.php
(4.35 KB)
📄
Extension_AlwaysCached_Page_View_Exclusions.php
(1.11 KB)
📄
Extension_AlwaysCached_Plugin.php
(12.1 KB)
📄
Extension_AlwaysCached_Plugin_Admin.php
(3.06 KB)
📄
Extension_AlwaysCached_Queue.php
(10.22 KB)
📄
Extension_AlwaysCached_Worker.php
(2.93 KB)
📄
Extension_Amp_Page_View.php
(1.26 KB)
📄
Extension_Amp_Plugin.php
(11.1 KB)
📄
Extension_Amp_Plugin_Admin.php
(2.19 KB)
📄
Extension_CloudFlare_AdminActions.php
(1.57 KB)
📄
Extension_CloudFlare_Api.php
(12.19 KB)
📄
Extension_CloudFlare_Cdn_Page_View.php
(625 B)
📄
Extension_CloudFlare_GeneralPage_View.php
(3.05 KB)
📄
Extension_CloudFlare_Page.php
(4.32 KB)
📄
Extension_CloudFlare_Page_View.js
(6.93 KB)
📄
Extension_CloudFlare_Page_View.php
(27.38 KB)
📄
Extension_CloudFlare_Plugin.php
(15.19 KB)
📄
Extension_CloudFlare_Plugin_Admin.php
(14.13 KB)
📄
Extension_CloudFlare_Popup.php
(4.21 KB)
📄
Extension_CloudFlare_Popup_View_Intro.php
(1.75 KB)
📄
Extension_CloudFlare_Popup_View_Zones.php
(2.09 KB)
📄
Extension_CloudFlare_SettingsForUi.php
(4.84 KB)
📄
Extension_CloudFlare_View_Dashboard.js
(6.49 KB)
📄
Extension_CloudFlare_Widget.php
(4.63 KB)
📄
Extension_CloudFlare_Widget_Logo.png
(6.96 KB)
📄
Extension_CloudFlare_Widget_View.css
(683 B)
📄
Extension_CloudFlare_Widget_View.php
(1.65 KB)
📄
Extension_FragmentCache_Api.php
(7.01 KB)
📄
Extension_FragmentCache_Core.php
(3.38 KB)
📄
Extension_FragmentCache_Environment.php
(1.41 KB)
📄
Extension_FragmentCache_GeneralPage.php
(1.27 KB)
📄
Extension_FragmentCache_GeneralPage_View.php
(2.47 KB)
📄
Extension_FragmentCache_Page.php
(697 B)
📄
Extension_FragmentCache_Page_View.php
(5.25 KB)
📄
Extension_FragmentCache_Plugin.php
(8.21 KB)
📄
Extension_FragmentCache_Plugin_Admin.php
(8.91 KB)
📄
Extension_FragmentCache_WpObjectCache.php
(16.92 KB)
📄
Extension_Genesis_Page.php
(409 B)
📄
Extension_Genesis_Page_View.php
(11.11 KB)
📄
Extension_Genesis_Plugin.php
(14.46 KB)
📄
Extension_Genesis_Plugin_Admin.php
(5.45 KB)
📄
Extension_ImageService_Api.php
(11.99 KB)
📄
Extension_ImageService_Cron.php
(6.49 KB)
📄
Extension_ImageService_Environment.php
(4.6 KB)
📄
Extension_ImageService_Page_View.php
(8.41 KB)
📄
Extension_ImageService_Plugin.php
(1.44 KB)
📄
Extension_ImageService_Plugin_Admin.css
(2.34 KB)
📄
Extension_ImageService_Plugin_Admin.js
(23.15 KB)
📄
Extension_ImageService_Plugin_Admin.php
(42.7 KB)
📄
Extension_ImageService_Widget.js
(11.95 KB)
📄
Extension_ImageService_Widget.php
(3.34 KB)
📄
Extension_ImageService_Widget_View.php
(1.59 KB)
📄
Extension_NewRelic_AdminActions.php
(1.11 KB)
📄
Extension_NewRelic_AdminNotes.php
(2.11 KB)
📄
Extension_NewRelic_Api.php
(4.03 KB)
📄
Extension_NewRelic_Core.php
(1.33 KB)
📄
Extension_NewRelic_GeneralPage.php
(1.53 KB)
📄
Extension_NewRelic_GeneralPage_View.php
(2.84 KB)
📄
Extension_NewRelic_Page.php
(1.35 KB)
📄
Extension_NewRelic_Page_View_Apm.php
(12.87 KB)
📄
Extension_NewRelic_Plugin.php
(7.09 KB)
📄
Extension_NewRelic_Plugin_Admin.php
(8.08 KB)
📄
Extension_NewRelic_Popup.php
(3.96 KB)
📄
Extension_NewRelic_Popup_View.js
(7.5 KB)
📄
Extension_NewRelic_Popup_View_Intro.php
(1.37 KB)
📄
Extension_NewRelic_Popup_View_ListApplications.php
(1.93 KB)
📄
Extension_NewRelic_Service.php
(21.65 KB)
📄
Extension_NewRelic_Widget.php
(10.48 KB)
📄
Extension_NewRelic_Widget_View.css
(1.37 KB)
📄
Extension_NewRelic_Widget_View.js
(8.2 KB)
📄
Extension_NewRelic_Widget_View_Apm.php
(2.91 KB)
📄
Extension_NewRelic_Widget_View_Browser.php
(436 B)
📄
Extension_NewRelic_Widget_View_NotConfigured.php
(233 B)
📄
Extension_Swarmify_AdminActions.php
(793 B)
📄
Extension_Swarmify_Core.php
(748 B)
📄
Extension_Swarmify_Page.php
(708 B)
📄
Extension_Swarmify_Page_View.php
(2.78 KB)
📄
Extension_Swarmify_Plugin.php
(4.63 KB)
📄
Extension_Swarmify_Plugin_Admin.php
(2.63 KB)
📄
Extension_WordPressSeo_Plugin.php
(1.39 KB)
📄
Extension_WordPressSeo_Plugin_Admin.php
(5.25 KB)
📄
Extension_Wpml_Plugin.php
(1.34 KB)
📄
Extension_Wpml_Plugin_Admin.php
(7.45 KB)
📄
Extensions_AdminActions.php
(943 B)
📄
Extensions_Page.php
(4.06 KB)
📄
Extensions_Plugin_Admin.php
(9.66 KB)
📄
Extensions_Util.php
(4.43 KB)
📄
FeatureShowcase_Plugin_Admin.php
(29.1 KB)
📄
FeatureShowcase_Plugin_Admin_View.php
(2.82 KB)
📄
Generic_AdminActions_Config.php
(6.61 KB)
📄
Generic_AdminActions_Default.php
(21.84 KB)
📄
Generic_AdminActions_Flush.php
(10.57 KB)
📄
Generic_AdminActions_Test.php
(6.15 KB)
📄
Generic_AdminNotes.php
(13.88 KB)
📄
Generic_ConfigLabels.php
(2.33 KB)
📄
Generic_Environment.php
(6.67 KB)
📄
Generic_Faq.php
(2.27 KB)
📄
Generic_GeneralPage_View_ShowEdge.js
(6.08 KB)
📄
Generic_Page_About.php
(503 B)
📄
Generic_Page_Dashboard.php
(1.66 KB)
📄
Generic_Page_Dashboard_View.css
(6.34 KB)
📄
Generic_Page_General.php
(2.88 KB)
📄
Generic_Page_Install.php
(913 B)
📄
Generic_Page_PurgeLog.php
(2.81 KB)
📄
Generic_Page_PurgeLog_View.php
(2.97 KB)
📄
Generic_Plugin.php
(23.04 KB)
📄
Generic_Plugin_Admin.php
(48.87 KB)
📄
Generic_Plugin_AdminCompatibility.php
(3.98 KB)
📄
Generic_Plugin_AdminNotices.css
(188 B)
📄
Generic_Plugin_AdminNotices.js
(7.43 KB)
📄
Generic_Plugin_AdminNotices.php
(12.12 KB)
📄
Generic_Plugin_AdminRowActions.php
(2.43 KB)
📄
Generic_Plugin_Admin_View_Faq.php
(1007 B)
📄
Generic_Plugin_Survey.php
(4.8 KB)
📄
Generic_WidgetAccount.php
(1.05 KB)
📄
Generic_WidgetAccount_View.php
(2.1 KB)
📄
Generic_WidgetBoldGrid.php
(1.97 KB)
📄
Generic_WidgetBoldGrid_AdminActions.php
(912 B)
📄
Generic_WidgetBoldGrid_Logo.svg
(4.28 KB)
📄
Generic_WidgetBoldGrid_View.js
(6.39 KB)
📄
Generic_WidgetBoldGrid_View.php
(872 B)
📄
Generic_WidgetPartners.php
(1.08 KB)
📄
Generic_WidgetPartners_View.php
(1.66 KB)
📄
Generic_WidgetServices.php
(1.66 KB)
📄
Generic_WidgetServices_View.php
(501 B)
📄
Generic_WidgetSettings.php
(1.05 KB)
📄
Generic_WidgetSettings_View.php
(3.37 KB)
📄
Generic_WidgetSpreadTheWord.js
(6.64 KB)
📄
Generic_WidgetSpreadTheWord_Plugin.php
(2.03 KB)
📄
Generic_WidgetSpreadTheWord_View.php
(579 B)
📄
Generic_WidgetStats.js
(9.08 KB)
📄
Generic_WidgetStats.php
(4.84 KB)
📄
LICENSE
(17.67 KB)
📄
Licensing_AdminActions.php
(4.22 KB)
📄
Licensing_Core.php
(6.28 KB)
📄
Licensing_Plugin_Admin.php
(16.65 KB)
📄
Minify_AutoCss.php
(8.83 KB)
📄
Minify_AutoJs.php
(9.68 KB)
📄
Minify_ConfigLabels.php
(8.66 KB)
📄
Minify_ContentMinifier.php
(10.24 KB)
📄
Minify_Core.php
(7.42 KB)
📄
Minify_Environment.php
(26.91 KB)
📄
Minify_Environment_LiteSpeed.php
(977 B)
📄
Minify_Extract.php
(2.8 KB)
📄
Minify_GeneralPage_View_ShowHelp.js
(6.9 KB)
📄
Minify_GeneralPage_View_ShowHelpForce.js
(5.83 KB)
📄
Minify_HelpPopup_View.php
(5.01 KB)
📄
Minify_MinifiedFileRequestHandler.php
(32.87 KB)
📄
Minify_Page.php
(18.45 KB)
📄
Minify_Plugin.php
(41.75 KB)
📄
Minify_Plugin_Admin.php
(11.97 KB)
📄
Mobile_Base.php
(6.85 KB)
📄
Mobile_Redirect.php
(1.85 KB)
📄
Mobile_Referrer.php
(2.4 KB)
📄
Mobile_UserAgent.php
(971 B)
📄
ModuleStatus.php
(4.37 KB)
📄
ObjectCache_ConfigLabels.php
(1.25 KB)
📄
ObjectCache_DiskPopup.js
(8.18 KB)
📄
ObjectCache_DiskPopup_View.php
(1.77 KB)
📄
ObjectCache_Environment.php
(6.79 KB)
📄
ObjectCache_Page.php
(560 B)
📄
ObjectCache_Page_View_PurgeLog.php
(1.01 KB)
📄
ObjectCache_Plugin.php
(6.54 KB)
📄
ObjectCache_Plugin_Admin.php
(6.97 KB)
📄
ObjectCache_WpObjectCache.php
(10.17 KB)
📄
ObjectCache_WpObjectCache_Regular.php
(34.11 KB)
📄
PageSpeed_Api.php
(12.16 KB)
📄
PageSpeed_Data.php
(37.19 KB)
📄
PageSpeed_Instructions.php
(43.29 KB)
📄
PageSpeed_Page.php
(8.76 KB)
📄
PageSpeed_Page_View.css
(6.21 KB)
📄
PageSpeed_Page_View.js
(15.26 KB)
📄
PageSpeed_Page_View.php
(2.08 KB)
📄
PageSpeed_Page_View_FromAPI.php
(7.65 KB)
📄
PageSpeed_Widget.php
(7.03 KB)
📄
PageSpeed_Widget_View.css
(2.62 KB)
📄
PageSpeed_Widget_View.js
(7.86 KB)
📄
PageSpeed_Widget_View.php
(1.09 KB)
📄
PageSpeed_Widget_View_FromApi.php
(3.71 KB)
📄
PgCache_ConfigLabels.php
(5.82 KB)
📄
PgCache_ContentGrabber.php
(70.95 KB)
📄
PgCache_Environment.php
(51.72 KB)
📄
PgCache_Flush.php
(16.32 KB)
📄
PgCache_Page.php
(1.6 KB)
📄
PgCache_Page_View.js
(6.32 KB)
📄
PgCache_Plugin.php
(14.22 KB)
📄
PgCache_Plugin_Admin.php
(14.49 KB)
📄
PgCache_QsExempts.php
(1.88 KB)
📄
Root_AdminActions.php
(3.05 KB)
📄
Root_AdminActivation.php
(6.52 KB)
📄
Root_AdminMenu.php
(8.37 KB)
📄
Root_Environment.php
(7.81 KB)
📄
Root_Loader.php
(6.94 KB)
📄
SetupGuide_Plugin_Admin.php
(48.8 KB)
📄
Support_AdminActions.php
(6.14 KB)
📄
Support_Page.php
(3.08 KB)
📄
Support_Page_View_DoneContent.php
(353 B)
📄
Support_Page_View_PageContent.php
(1.39 KB)
📄
SystemOpCache_AdminActions.php
(1.18 KB)
📄
SystemOpCache_Core.php
(2.48 KB)
📄
SystemOpCache_GeneralPage_View.php
(2.27 KB)
📄
SystemOpCache_Plugin_Admin.php
(3.3 KB)
📄
UsageStatistics_AdminActions.php
(1.14 KB)
📄
UsageStatistics_Core.php
(3.39 KB)
📄
UsageStatistics_GeneralPage.php
(1.6 KB)
📄
UsageStatistics_GeneralPage_View.php
(6.18 KB)
📄
UsageStatistics_Page.php
(8.4 KB)
📄
UsageStatistics_Page_DbRequests_View.php
(1.79 KB)
📄
UsageStatistics_Page_ObjectCacheLog_View.php
(1.97 KB)
📄
UsageStatistics_Page_PageCacheRequests_View.php
(1.86 KB)
📄
UsageStatistics_Page_View.css
(1.68 KB)
📄
UsageStatistics_Page_View.js
(23.2 KB)
📄
UsageStatistics_Page_View.php
(17.13 KB)
📄
UsageStatistics_Page_View_Ad.php
(688 B)
📄
UsageStatistics_Page_View_Disabled.php
(610 B)
📄
UsageStatistics_Page_View_Free.php
(635 B)
📄
UsageStatistics_Page_View_NoDebugMode.php
(615 B)
📄
UsageStatistics_Plugin.php
(2.89 KB)
📄
UsageStatistics_Plugin_Admin.php
(5.65 KB)
📄
UsageStatistics_Source_AccessLog.php
(17.47 KB)
📄
UsageStatistics_Source_DbQueriesLog.php
(6.04 KB)
📄
UsageStatistics_Source_ObjectCacheLog.php
(5.57 KB)
📄
UsageStatistics_Source_PageCacheLog.php
(6.11 KB)
📄
UsageStatistics_Source_Wpdb.php
(3.49 KB)
📄
UsageStatistics_Sources.php
(5.41 KB)
📄
UsageStatistics_Sources_Apc.php
(3.39 KB)
📄
UsageStatistics_Sources_Memcached.php
(4.58 KB)
📄
UsageStatistics_Sources_Redis.php
(4.69 KB)
📄
UsageStatistics_StorageReader.php
(2.81 KB)
📄
UsageStatistics_StorageWriter.php
(14.38 KB)
📄
UserExperience_DeferScripts_Extension.php
(7.04 KB)
📄
UserExperience_DeferScripts_Mutator.php
(2.78 KB)
📄
UserExperience_DeferScripts_Page_View.php
(3.91 KB)
📄
UserExperience_DeferScripts_Script.js
(6.14 KB)
📄
UserExperience_Emoji_Extension.php
(3.04 KB)
📄
UserExperience_GeneralPage.php
(1.72 KB)
📄
UserExperience_GeneralPage_View.php
(8.21 KB)
📄
UserExperience_LazyLoad_GoogleMaps_GoogleMapsEasy.php
(3.89 KB)
📄
UserExperience_LazyLoad_GoogleMaps_WPGoogleMapPlugin.php
(2.14 KB)
📄
UserExperience_LazyLoad_GoogleMaps_WPGoogleMaps.php
(3.94 KB)
📄
UserExperience_LazyLoad_Mutator.php
(9.18 KB)
📄
UserExperience_LazyLoad_Mutator_Picture.php
(2.52 KB)
📄
UserExperience_LazyLoad_Mutator_Unmutable.php
(2.88 KB)
📄
UserExperience_LazyLoad_Page_View.php
(6.46 KB)
📄
UserExperience_LazyLoad_Plugin.php
(9.17 KB)
📄
UserExperience_OEmbed_Extension.php
(795 B)
📄
UserExperience_Page.php
(527 B)
📄
UserExperience_Page_View.php
(695 B)
📄
UserExperience_Plugin_Admin.php
(3.49 KB)
📄
UserExperience_Plugin_Jquery.php
(1.4 KB)
📄
UserExperience_Preload_Requests_Extension.php
(6.15 KB)
📄
UserExperience_Preload_Requests_Page_View.php
(8.18 KB)
📄
UserExperience_Remove_CssJs_Extension.php
(6.79 KB)
📄
UserExperience_Remove_CssJs_Mutator.php
(4.45 KB)
📄
UserExperience_Remove_CssJs_Page_View.js
(15.98 KB)
📄
UserExperience_Remove_CssJs_Page_View.php
(14.59 KB)
📄
Util_Activation.php
(9.89 KB)
📄
Util_Admin.php
(25.03 KB)
📄
Util_AttachToActions.php
(7.65 KB)
📄
Util_Bus.php
(832 B)
📄
Util_ConfigLabel.php
(1.57 KB)
📄
Util_Content.php
(3.03 KB)
📄
Util_Debug.php
(6.38 KB)
📄
Util_DebugPurgeLog_Reader.php
(3.36 KB)
📄
Util_Environment.php
(42.46 KB)
📄
Util_Environment_Exception.php
(719 B)
📄
Util_Environment_Exceptions.php
(1.42 KB)
📄
Util_File.php
(13.11 KB)
📄
Util_Http.php
(5.87 KB)
📄
Util_Installed.php
(4.24 KB)
📄
Util_Mime.php
(2.9 KB)
📄
Util_PageSpeed.php
(33.92 KB)
📄
Util_PageUrls.php
(32.57 KB)
📄
Util_Request.php
(3.52 KB)
📄
Util_Rule.php
(13.83 KB)
📄
Util_Theme.php
(3.87 KB)
📄
Util_Ui.php
(83.11 KB)
📄
Util_UsageStatistics.php
(13.6 KB)
📄
Util_Widget.php
(7.88 KB)
📄
Util_WpFile.php
(16.48 KB)
📄
Util_WpFile_FilesystemChmodException.php
(1.66 KB)
📄
Util_WpFile_FilesystemCopyException.php
(1.79 KB)
📄
Util_WpFile_FilesystemMkdirException.php
(1.14 KB)
📄
Util_WpFile_FilesystemModifyException.php
(2.35 KB)
📄
Util_WpFile_FilesystemOperationException.php
(1.29 KB)
📄
Util_WpFile_FilesystemRmException.php
(1.14 KB)
📄
Util_WpFile_FilesystemRmdirException.php
(1.19 KB)
📄
Util_WpFile_FilesystemWriteException.php
(1.57 KB)
📄
Util_WpmuBlogmap.php
(8.06 KB)
📄
Varnish_Flush.php
(18.57 KB)
📄
Varnish_Plugin.php
(3.2 KB)
ðŸ“
extension-example
ðŸ“
inc
📄
index.html
(0 B)
ðŸ“
ini
ðŸ“
languages
ðŸ“
lib
📄
press.txt
(45.78 KB)
ðŸ“
pub
📄
readme.txt
(76.49 KB)
ðŸ“
vendor
📄
w3-total-cache-api.php
(22.29 KB)
📄
w3-total-cache-old-php.php
(1.25 KB)
📄
w3-total-cache.php
(2.83 KB)
ðŸ“
wp-content
Editing: CdnEngine_Ftp.php
<?php /** * File: CdnEngine_CloudFront.php * * @package W3TC */ namespace W3TC; define( 'W3TC_CDN_FTP_CONNECT_TIMEOUT', 30 ); /** * Class CdnEngine_Ftp * * W3 CDN FTP Class * * phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore * phpcs:disable PSR2.Methods.MethodDeclaration.Underscore * phpcs:disable WordPress.PHP.NoSilencedErrors.Discouraged * phpcs:disable WordPress.WP.AlternativeFunctions */ class CdnEngine_Ftp extends CdnEngine_Base { /** * FTP resource * * @var resource */ private $_ftp = null; /** * Class constructor for initializing FTP/SFTP connection settings. * * @param array $config Optional configuration array to override default values. * Keys include 'host', 'type', 'user', 'pass', 'default_keys', * 'pubkey', 'privkey', 'path', 'pasv', 'domain', and 'docroot'. */ public function __construct( $config = array() ) { $config = array_merge( array( 'host' => '', 'type' => '', 'user' => '', 'pass' => '', 'default_keys' => false, 'pubkey' => '', 'privkey' => '', 'path' => '', 'pasv' => false, 'domain' => array(), 'docroot' => '', ), $config ); list( $ip, $port ) = Util_Content::endpoint_to_host_port( $config['host'], 21 ); $config['host'] = $ip; $config['port'] = $port; if ( 'sftp' === $config['type'] && $config['default_keys'] ) { $home = isset( $_SERVER['HOME'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HOME'] ) ) : ''; $config['pubkey'] = $home . '/.ssh/id_rsa.pub'; $config['privkey'] = $home . '/.ssh/id_rsa'; } parent::__construct( $config ); } /** * Establishes a connection to the FTP/SFTP server. * * Attempts to connect to the server using the configuration provided in the class. * Handles both FTP and SFTP types with error handling and connection setup. * * @param string $error Reference to a variable to capture error messages. * * @return bool Returns true on successful connection, false on failure. */ public function _connect( &$error ) { if ( empty( $this->_config['host'] ) ) { $error = 'Empty host.'; return false; } $this->_set_error_handler(); if ( 'sftp' === $this->_config['type'] ) { if ( ! function_exists( 'ssh2_connect' ) ) { $error = sprintf( 'Missing required php-ssh2 extension.' ); $this->_restore_error_handler(); $this->_disconnect(); return false; } $this->_ftp = @ssh2_connect( $this->_config['host'], (int) $this->_config['port'] ); return $this->_connect_sftp( $error ); } if ( 'ftps' === $this->_config['type'] ) { $this->_ftp = @ftp_ssl_connect( $this->_config['host'], (int) $this->_config['port'], W3TC_CDN_FTP_CONNECT_TIMEOUT ); } else { $this->_ftp = @ftp_connect( $this->_config['host'], (int) $this->_config['port'], W3TC_CDN_FTP_CONNECT_TIMEOUT ); } if ( ! $this->_ftp ) { $error = sprintf( 'Unable to connect to %s:%d (%s).', $this->_config['host'], $this->_config['port'], $this->_get_last_error() ); $this->_restore_error_handler(); return false; } if ( ! @ftp_login( $this->_ftp, $this->_config['user'], $this->_config['pass'] ) ) { $error = sprintf( 'Incorrect login or password (%s).', $this->_get_last_error() ); $this->_restore_error_handler(); $this->_disconnect(); return false; } if ( ! @ftp_pasv( $this->_ftp, $this->_config['pasv'] ) ) { $error = sprintf( 'Unable to change mode to passive (%s).', $this->_get_last_error() ); $this->_restore_error_handler(); $this->_disconnect(); return false; } if ( ! empty( $this->_config['path'] ) && ! @ftp_chdir( $this->_ftp, $this->_config['path'] ) ) { $error = sprintf( 'Unable to change directory to: %s (%s).', $this->_config['path'], $this->_get_last_error() ); $this->_restore_error_handler(); $this->_disconnect(); return false; } $this->_restore_error_handler(); return true; } /** * Establishes an SFTP connection and authenticates using the provided credentials. * * This method is used specifically for handling SFTP connections, including both * public key and password-based authentication. * * @param string $error Reference to a variable to capture error messages. * * @return bool Returns true on successful connection, false on failure. */ public function _connect_sftp( &$error ) { if ( is_file( $this->_config['pass'] ) ) { if ( ! @ssh2_auth_pubkey_file( $this->_ftp, $this->_config['user'], $this->_config['pubkey'], $this->_config['privkey'], $this->_config['pass'] ) ) { $error = sprintf( 'Public key authentication failed (%s).', $this->_get_last_error() ); $this->_restore_error_handler(); $this->_disconnect(); return false; } } elseif ( ! @ssh2_auth_password( $this->_ftp, $this->_config['user'], $this->_config['pass'] ) ) { $error = sprintf( 'Incorrect login or password (%s).', $this->_get_last_error() ); $this->_restore_error_handler(); $this->_disconnect(); return false; } if ( ! empty( $this->_config['path'] ) && ! @ssh2_exec( $this->_ftp, 'cd ' . $this->_config['path'] ) ) { $error = sprintf( 'Unable to change directory to: %s (%s).', $this->_config['path'], $this->_get_last_error() ); $this->_restore_error_handler(); $this->_disconnect(); return false; } $this->_restore_error_handler(); return true; } /** * Closes the current FTP/SFTP connection. * * This method properly terminates the connection to the server based on the connection type. * * @return void */ public function _disconnect() { if ( 'sftp' === $this->_config['type'] ) { if ( function_exists( 'ssh2_connect' ) ) { @ssh2_exec( $this->_ftp, 'echo "EXITING" && exit;' ); $this->_ftp = null; } } else { @ftp_close( $this->_ftp ); } } /** * Sends an MDTM (Modification Time) command to the FTP server to update the modification time of a file. * * This method is used for updating the timestamp of a remote file. * * @param string $remote_file The remote file path to modify. * @param int $mtime The modification time to set for the file. * * @return array Returns the raw response from the FTP server. */ public function _mdtm( $remote_file, $mtime ) { $command = sprintf( 'MDTM %s %s', gmdate( 'YmdHis', $mtime ), $remote_file ); return @ftp_raw( $this->_ftp, $command ); } /** * Uploads files to the FTP/SFTP server. * * Handles the upload of files, including checking for existing files and handling * overwrites, directory creation, and error logging. * * @param array $files Array of files to upload, with 'local_path' and 'remote_path' for each file. * @param array $results Array to capture the results of the upload attempt. * @param bool $force_rewrite Whether to force overwriting files even if they are up-to-date. * @param int|null $timeout_time Optional timeout time to stop the process if exceeded. * * @return bool Returns true if the upload is successful, false if there were errors. */ public function upload( $files, &$results, $force_rewrite = false, $timeout_time = null ) { $error = null; if ( ! $this->_connect( $error ) ) { $results = $this->_get_results( $files, W3TC_CDN_RESULT_HALT, $error ); return false; } $this->_set_error_handler(); if ( 'sftp' === $this->_config['type'] ) { return $this->_upload_sftp( $files, $results, $force_rewrite, $timeout_time ); } $home = @ftp_pwd( $this->_ftp ); if ( false === $home ) { $results = $this->_get_results( $files, W3TC_CDN_RESULT_HALT, sprintf( 'Unable to get current directory (%s).', $this->_get_last_error() ) ); $this->_restore_error_handler(); $this->_disconnect(); return false; } foreach ( $files as $file ) { $local_path = $file['local_path']; $remote_path = $file['remote_path']; // process at least one item before timeout so that progress goes on. if ( ! empty( $results ) ) { if ( ! is_null( $timeout_time ) && time() > $timeout_time ) { return 'timeout'; } } if ( ! file_exists( $local_path ) ) { $results[] = $this->_get_result( $local_path, $remote_path, W3TC_CDN_RESULT_ERROR, 'Source file not found.', $file ); continue; } @ftp_chdir( $this->_ftp, $home ); $remote_dir = dirname( $remote_path ); $remote_dirs = preg_split( '~\\/+~', $remote_dir ); foreach ( $remote_dirs as $dir ) { if ( ! @ftp_chdir( $this->_ftp, $dir ) ) { if ( ! @ftp_mkdir( $this->_ftp, $dir ) ) { $results[] = $this->_get_result( $local_path, $remote_path, W3TC_CDN_RESULT_ERROR, sprintf( 'Unable to create directory (%s).', $this->_get_last_error() ), $file ); continue 2; } if ( ! @ftp_chdir( $this->_ftp, $dir ) ) { $results[] = $this->_get_result( $local_path, $remote_path, W3TC_CDN_RESULT_ERROR, sprintf( 'Unable to change directory (%s).', $this->_get_last_error() ), $file ); continue 2; } } } // basename cannot be used, kills chinese chars and similar characters. $remote_file = substr( $remote_path, strrpos( $remote_path, '/' ) + 1 ); $mtime = @filemtime( $local_path ); if ( ! $force_rewrite ) { $size = @filesize( $local_path ); $ftp_size = @ftp_size( $this->_ftp, $remote_file ); $ftp_mtime = @ftp_mdtm( $this->_ftp, $remote_file ); if ( $size === $ftp_size && $mtime === $ftp_mtime ) { $results[] = $this->_get_result( $local_path, $remote_path, W3TC_CDN_RESULT_OK, 'File up-to-date.', $file ); continue; } } $result = @ftp_put( $this->_ftp, $remote_file, $local_path, FTP_BINARY ); if ( $result ) { $this->_mdtm( $remote_file, $mtime ); $results[] = $this->_get_result( $local_path, $remote_path, W3TC_CDN_RESULT_OK, 'OK', $file ); } else { $results[] = $this->_get_result( $local_path, $remote_path, W3TC_CDN_RESULT_ERROR, sprintf( 'Unable to upload file (%s).', $this->_get_last_error() ), $file ); } } $this->_restore_error_handler(); $this->_disconnect(); return ! $this->_is_error( $results ); } /** * Handles the SFTP-specific file upload process. * * This method is called when the connection type is SFTP, and is responsible for * uploading files using the SFTP protocol, including directory creation and file transfer. * * @param array $files Array of files to upload, with 'local_path' and 'remote_path' for each file. * @param array $results Array to capture the results of the upload attempt. * @param bool $force_rewrite Whether to force overwriting files even if they are up-to-date. * @param int|null $timeout_time Optional timeout time to stop the process if exceeded. * * @return string Returns 'timeout' if the process times out, otherwise no return value on success. */ public function _upload_sftp( $files, $results, $force_rewrite, $timeout_time ) { $sftp = ssh2_sftp( $this->_ftp ); foreach ( $files as $file ) { $local_path = $file['local_path']; $remote_path = $file['remote_path']; // process at least one item before timeout so that progress goes on. if ( ! empty( $results ) ) { if ( ! is_null( $timeout_time ) && time() > $timeout_time ) { return 'timeout'; } } if ( ! file_exists( $local_path ) ) { $results[] = $this->_get_result( $local_path, $remote_path, W3TC_CDN_RESULT_ERROR, 'Source file not found.', $file ); continue; } $remote_dir = dirname( $remote_path ); if ( ! @file_exists( 'ssh2.sftp://' . intval( $sftp ) . $remote_dir ) ) { if ( ! @ssh2_sftp_mkdir( $sftp, $remote_dir, null, true ) ) { $results[] = $this->_get_result( $local_path, $remote_path, W3TC_CDN_RESULT_ERROR, sprintf( 'Unable to create directory (%s).', $this->_get_last_error() ), $file ); continue; } } $mtime = @filemtime( $local_path ); if ( ! $force_rewrite ) { $size = @filesize( $local_path ); $statinfo = @ssh2_sftp_stat( $sftp, $remote_path ); if ( $size === $statinfo['size'] && $mtime === $statinfo['mtime'] ) { $results[] = $this->_get_result( $local_path, $remote_path, W3TC_CDN_RESULT_OK, 'File up-to-date.', $file ); continue; } } $result = @ssh2_scp_send( $this->_ftp, $local_path, $remote_path ); if ( $result ) { $results[] = $this->_get_result( $local_path, $remote_path, W3TC_CDN_RESULT_OK, 'OK', $file ); } else { $results[] = $this->_get_result( $local_path, $remote_path, W3TC_CDN_RESULT_ERROR, sprintf( 'Unable to upload file (%s).', $this->_get_last_error() ), $file ); } } $this->_restore_error_handler(); $this->_disconnect(); return ! $this->_is_error( $results ); } /** * Deletes the specified files from the remote FTP/SFTP server. * * This method connects to the remote server, attempts to delete each file, and then tries to remove * the directories associated with those files. It collects the results of the delete operations * and stores them in the results array. * * @param array $files An array of file data, where each entry contains the local and remote paths of the files. * @param array $results An array that will be populated with the results of each delete operation. * * @return bool Returns true if all files and directories were deleted successfully, otherwise false. */ public function delete( $files, &$results ) { $error = null; if ( ! $this->_connect( $error ) ) { $results = $this->_get_results( $files, W3TC_CDN_RESULT_HALT, $error ); return false; } $this->_set_error_handler(); foreach ( $files as $file ) { $local_path = $file['local_path']; $remote_path = $file['remote_path']; if ( 'sftp' === $this->_config['type'] ) { $sftp = @ssh2_sftp( $this->_ftp ); $result = @ssh2_sftp_unlink( $sftp, $remote_path ); } else { $result = @ftp_delete( $this->_ftp, $remote_path ); } if ( $result ) { $results[] = $this->_get_result( $local_path, $remote_path, W3TC_CDN_RESULT_OK, 'OK', $file ); } else { $results[] = $this->_get_result( $local_path, $remote_path, W3TC_CDN_RESULT_ERROR, sprintf( 'Unable to delete file (%s).', $this->_get_last_error() ), $file ); } while ( true ) { $remote_path = dirname( $remote_path ); if ( '.' === $remote_path ) { break; } if ( 'sftp' === $this->_config['type'] && ! @ssh2_sftp_rmdir( $sftp, $remote_path ) ) { break; } elseif ( ! @ftp_rmdir( $this->_ftp, $remote_path ) ) { break; } } } $this->_restore_error_handler(); $this->_disconnect(); return ! $this->_is_error( $results ); } /** * Tests the FTP/SFTP connection and upload/download functionality. * * This method tests the FTP/SFTP connection by performing a series of file operations including * creating a temporary directory, uploading a test file, deleting it, and cleaning up. If any step * fails, an error message is returned via the $error parameter. * * @param string $error A reference to a variable that will be populated with an error message, if any. * * @return bool Returns true if the test was successful, otherwise false. */ public function test( &$error ) { if ( ! parent::test( $error ) ) { return false; } if ( 'sftp' === $this->_config['type'] ) { return $this->_test_sftp( $error ); } $rand = md5( time() ); $tmp_dir = 'test_dir_' . $rand; $tmp_file = 'test_file_' . $rand; $tmp_path = W3TC_CACHE_TMP_DIR . '/' . $tmp_file; if ( ! @file_put_contents( $tmp_path, $rand ) ) { $error = sprintf( 'Unable to create file: %s.', $tmp_path ); return false; } if ( ! $this->_connect( $error ) ) { return false; } $this->_set_error_handler(); if ( ! @ftp_mkdir( $this->_ftp, $tmp_dir ) ) { $error = sprintf( 'Unable to make directory: %s (%s).', $tmp_dir, $this->_get_last_error() ); @unlink( $tmp_path ); $this->_restore_error_handler(); $this->_disconnect(); return false; } if ( file_exists( $this->_config['docroot'] . '/' . $tmp_dir ) ) { $error = sprintf( 'Test directory was made in your site root, not on separate FTP host or path. Change path or FTP information: %s.', $tmp_dir ); @unlink( $tmp_path ); @ftp_rmdir( $this->_ftp, $tmp_dir ); $this->_restore_error_handler(); $this->_disconnect(); return false; } if ( ! @ftp_chdir( $this->_ftp, $tmp_dir ) ) { $error = sprintf( 'Unable to change directory to: %s (%s).', $tmp_dir, $this->_get_last_error() ); @unlink( $tmp_path ); @ftp_rmdir( $this->_ftp, $tmp_dir ); $this->_restore_error_handler(); $this->_disconnect(); return false; } if ( ! @ftp_put( $this->_ftp, $tmp_file, $tmp_path, FTP_BINARY ) ) { $error = sprintf( 'Unable to upload file: %s (%s).', $tmp_path, $this->_get_last_error() ); @unlink( $tmp_path ); @ftp_cdup( $this->_ftp ); @ftp_rmdir( $this->_ftp, $tmp_dir ); $this->_restore_error_handler(); $this->_disconnect(); return false; } @unlink( $tmp_path ); if ( ! @ftp_delete( $this->_ftp, $tmp_file ) ) { $error = sprintf( 'Unable to delete file: %s (%s).', $tmp_path, $this->_get_last_error() ); @ftp_cdup( $this->_ftp ); @ftp_rmdir( $this->_ftp, $tmp_dir ); $this->_restore_error_handler(); $this->_disconnect(); return false; } @ftp_cdup( $this->_ftp ); if ( ! @ftp_rmdir( $this->_ftp, $tmp_dir ) ) { $error = sprintf( 'Unable to remove directory: %s (%s).', $tmp_dir, $this->_get_last_error() ); $this->_restore_error_handler(); $this->_disconnect(); return false; } $this->_restore_error_handler(); $this->_disconnect(); return true; } /** * Tests SFTP-specific functionality, including directory creation and file upload/delete. * * This method is specifically designed to test SFTP connections by creating directories, uploading * a test file, and performing file deletions using SFTP commands. If any operation fails, an error message * is returned via the $error parameter. * * @param string $error A reference to a variable that will be populated with an error message, if any. * * @return bool Returns true if the SFTP test was successful, otherwise false. */ public function _test_sftp( &$error ) { $rand = md5( time() ); $tmp_dir = 'test_dir_' . $rand; $tmp_file = 'test_file_' . $rand; $local_path = W3TC_CACHE_TMP_DIR . '/' . $tmp_file; $remote_path = $tmp_dir . '/' . $tmp_file; if ( ! @file_put_contents( $local_path, $rand ) ) { $error = sprintf( 'Unable to create file: %s.', $local_path ); return false; } if ( ! $this->_connect( $error ) ) { return false; } $sftp = @ssh2_sftp( $this->_ftp ); $this->_set_error_handler(); if ( ! @ssh2_sftp_mkdir( $sftp, $tmp_dir ) ) { $error = sprintf( 'Unable to make directory: %s (%s).', $tmp_dir, $this->_get_last_error() ); @unlink( $local_path ); $this->_restore_error_handler(); $this->_disconnect(); return false; } if ( file_exists( $this->_config['docroot'] . '/' . $tmp_dir ) ) { $error = sprintf( 'Test directory was made in your site root, not on separate FTP host or path. Change path or FTP information: %s.', $tmp_dir ); @unlink( $local_path ); @ssh2_sftp_rmdir( $sftp, $tmp_dir ); $this->_restore_error_handler(); $this->_disconnect(); return false; } if ( ! @ssh2_scp_send( $this->_ftp, $local_path, $remote_path ) ) { $error = sprintf( 'Unable to upload file: %s (%s).', $local_path, $this->_get_last_error() ); @unlink( $local_path ); @ssh2_sftp_rmdir( $sftp, $tmp_dir ); $this->_restore_error_handler(); $this->_disconnect(); return false; } @unlink( $local_path ); if ( ! @ssh2_sftp_unlink( $sftp, $remote_path ) ) { $error = sprintf( 'Unable to delete file: %s (%s).', $local_path, $this->_get_last_error() ); @ssh2_sftp_rmdir( $sftp, $tmp_dir ); $this->_restore_error_handler(); $this->_disconnect(); return false; } if ( ! @ssh2_sftp_rmdir( $sftp, $tmp_dir ) ) { $error = sprintf( 'Unable to remove directory: %s (%s).', $tmp_dir, $this->_get_last_error() ); $this->_restore_error_handler(); $this->_disconnect(); return false; } $this->_restore_error_handler(); $this->_disconnect(); return true; } /** * Retrieves the domains configured for the CDN. * * This method returns the domains associated with the CDN configuration, or an empty array if no * domains are configured. * * @return array An array of domain names. */ public function get_domains() { if ( ! empty( $this->_config['domain'] ) ) { return (array) $this->_config['domain']; } return array(); } /** * Returns the headers support level for the CDN. * * This method returns the type of header mirroring support available for the CDN configuration. * * @return string The header mirroring type supported by the CDN. */ public function headers_support() { return W3TC_CDN_HEADER_MIRRORING; } }
Upload File
Create Folder