PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 1.3.1
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v1.3.1
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 6 years ago ConfigNotFoundException.php 6 years ago IniFileChain.php 6 years ago
Cache.php
90 lines
1 <?php
2 /**
3 * Piwik - free/libre analytics platform
4 *
5 * @link http://piwik.org
6 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
7 */
8
9 namespace Piwik\Config;
10
11 use Piwik\Cache\Backend\File;
12 use Piwik\Common;
13 use Piwik\Filesystem;
14 use Piwik\Piwik;
15 use Piwik\Url;
16
17 /**
18 * Exception thrown when the config file doesn't exist.
19 */
20 class Cache extends File
21 {
22 private $host = '';
23
24 public function __construct()
25 {
26 $this->host = $this->getHost();
27
28 // because the config is not yet loaded we cannot identify the instanceId...
29 // need to use the hostname
30 $dir = $this->makeCacheDir($this->host);
31
32 parent::__construct($dir);
33 }
34
35 private function makeCacheDir($host)
36 {
37 return PIWIK_INCLUDE_PATH . '/tmp/' . $host . '/cache/tracker';
38 }
39
40 public function isValidHost($mergedConfigSettings)
41 {
42 if (!isset($mergedConfigSettings['General']['trusted_hosts']) || !is_array($mergedConfigSettings['General']['trusted_hosts'])) {
43 return false;
44 }
45 // note: we do not support "enable_trusted_host_check" to keep things secure
46 return in_array($this->host, $mergedConfigSettings['General']['trusted_hosts'], true);
47 }
48
49 private function getHost()
50 {
51 $host = Url::getHost($checkIfTrusted = false);
52 $host = Url::getHostSanitized($host); // Remove any port number to get actual hostname
53 $host = Common::sanitizeInputValue($host);
54
55 if (empty($host)
56 || strpos($host, '..') !== false
57 || strpos($host, '\\') !== false
58 || strpos($host, '/') !== false) {
59 throw new \Exception('Unsupported host');
60 }
61
62 $this->host = $host;
63
64 return $host;
65 }
66
67 public function doDelete($id)
68 {
69 // when the config changes, we need to invalidate the config caches for all configured hosts as well, not only
70 // the currently trusted host
71 $hosts = Url::getTrustedHosts();
72 $initialDir = $this->directory;
73
74 foreach ($hosts as $host)
75 {
76 $dir = $this->makeCacheDir($host);
77 if (@is_dir($dir)) {
78 $this->directory = $dir;
79 $success = parent::doDelete($id);
80 if ($success) {
81 Piwik::postEvent('Core.configFileDeleted', array($this->getFilename($id)));
82 }
83 }
84 }
85
86 $this->directory = $initialDir;
87 }
88
89 }
90