-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathProtectTrackID.php
78 lines (65 loc) · 1.97 KB
/
ProtectTrackID.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
/**
* Matomo - Open source web analytics
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
* @copyright (c) 2016 Joubert RedRat
* @author Joubert RedRat <eu+matomo@redrat.com.br>
* @license MIT
* @category Matomo_Plugins
* @package ProtectTrackID
*/
namespace Piwik\Plugins\ProtectTrackID;
use Piwik\Plugin;
class ProtectTrackID extends Plugin
{
public function registerEvents(): array
{
return [
'Tracker.getJavascriptCode' => 'encodeIdJavaScript',
'SitesManager.getImageTrackingCode' => 'encodeIdImage',
'Tracker.Request.getIdSite' => 'decodeId'
];
}
public function encodeIdJavaScript(&$codeImpl, $parameters): void
{
$settings = PluginSettings::createFromSettings();
if (!$settings->hasValidValues()) {
return;
}
$hasher = new Hasher($settings);
$codeImpl['idSite'] = $hasher->encode($codeImpl['idSite']);
}
public function encodeIdImage(&$matomoUrl, &$urlParams): void
{
$settings = PluginSettings::createFromSettings();
if (!$settings->hasValidValues()) {
return;
}
$hasher = new Hasher($settings);
$urlParams['idsite'] = $hasher->encode($urlParams['idsite']);
}
public function decodeId(&$idSite, $params): void
{
$settings = PluginSettings::createFromSettings();
if (!$settings->hasValidValues()) {
return;
}
if (!$this->isValidHash($settings, $params['idsite'])) {
return;
}
$hasher = new Hasher($settings);
$idSite = $hasher->decode($params['idsite']);
}
public function isValidHash(PluginSettings $settings, string $hash): bool
{
$regex = sprintf(
'/^(%s){%s}$/',
implode('|', str_split($settings->base)),
$settings->length
);
return (bool) preg_match($regex, $hash);
}
}