PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.12.1
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.12.1
5.12.1 5.12.0 5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / Config / Cache.php
matomo / app / core / Config Last commit date
Cache.php 2 weeks ago ConfigNotFoundException.php 2 years ago DatabaseConfig.php 1 year ago GeneralConfig.php 2 years ago IniFileChain.php 2 weeks ago SectionConfig.php 2 months ago
Cache.php
78 lines
1 <?php
2
3 /**
4 * Matomo - free/libre analytics platform
5 *
6 * @link https://matomo.org
7 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
8 */
9 namespace Piwik\Config;
10
11 use Matomo\Cache\Backend\File;
12 use Piwik\Common;
13 use Piwik\Piwik;
14 use Piwik\Url;
15 /**
16 * File cache backend for tracker config data, keyed by the current (trusted) hostname since the
17 * config is not loaded yet when this cache is used.
18 */
19 class Cache extends File
20 {
21 private $host = '';
22 public function __construct()
23 {
24 $this->host = $this->getHost();
25 // because the config is not yet loaded we cannot identify the instanceId...
26 // need to use the hostname
27 $dir = $this->makeCacheDir($this->host);
28 parent::__construct($dir);
29 }
30 private function makeCacheDir($host)
31 {
32 return PIWIK_INCLUDE_PATH . '/tmp/' . $host . '/cache/tracker';
33 }
34 public static function hasHostConfig($mergedConfigSettings)
35 {
36 return isset($mergedConfigSettings['General']['trusted_hosts']) && is_array($mergedConfigSettings['General']['trusted_hosts']);
37 }
38 public function isValidHost($mergedConfigSettings)
39 {
40 if (!self::hasHostConfig($mergedConfigSettings)) {
41 return \false;
42 }
43 // note: we do not support "enable_trusted_host_check" to keep things secure
44 return in_array($this->host, $mergedConfigSettings['General']['trusted_hosts'], \true);
45 }
46 private function getHost()
47 {
48 $host = Url::getHost($checkIfTrusted = \false);
49 $host = Url::getHostSanitized($host);
50 // Remove any port number to get actual hostname
51 $host = Common::sanitizeInputValue($host);
52 if (empty($host) || strpos($host, '..') !== \false || strpos($host, '\\') !== \false || strpos($host, '/') !== \false) {
53 throw new \Exception('Unsupported host');
54 }
55 $this->host = $host;
56 return $host;
57 }
58 public function doDelete($id)
59 {
60 // when the config changes, we need to invalidate the config caches for all configured hosts as well, not only
61 // the currently trusted host
62 $hosts = Url::getTrustedHosts();
63 $initialDir = $this->directory;
64 foreach ($hosts as $host) {
65 $dir = $this->makeCacheDir($host);
66 if (@is_dir($dir)) {
67 $this->directory = $dir;
68 $success = parent::doDelete($id);
69 if ($success) {
70 Piwik::postEvent('Core.configFileDeleted', [$this->getFilename($id)]);
71 }
72 }
73 }
74 $this->directory = $initialDir;
75 return \true;
76 }
77 }
78