Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sualko/cloud_piwik.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsualko <klaus@jsxc.org>2018-10-28 16:26:08 +0300
committersualko <klaus@jsxc.org>2018-10-28 16:26:08 +0300
commitbd2b33a8ea76a7f132bde132f95984075717c9e9 (patch)
tree8df2996bf912770fcce6ec87878d054d98001dcf /appinfo
parente9edc1224ba15589ae5e7ba9717eef57d8dd11c8 (diff)
convert to dynamic tracking script
this saves one request and removes any client-side cache
Diffstat (limited to 'appinfo')
-rw-r--r--appinfo/Application.php9
-rwxr-xr-xappinfo/app.php25
-rw-r--r--appinfo/routes.php5
3 files changed, 25 insertions, 14 deletions
diff --git a/appinfo/Application.php b/appinfo/Application.php
index fed6193..c483b35 100644
--- a/appinfo/Application.php
+++ b/appinfo/Application.php
@@ -3,6 +3,7 @@ namespace OCA\Piwik\AppInfo;
use OCA\Piwik\Config;
use OCA\Piwik\Controller\SettingsController;
+use OCA\Piwik\Controller\JavaScriptController;
use OCA\Piwik\Migration\Settings as SettingsMigration;
use OCP\AppFramework\App;
use OCP\IContainer;
@@ -34,6 +35,14 @@ class Application extends App
);
});
+ $container->registerService('JavaScriptController', function (IContainer $c) {
+ return new JavaScriptController(
+ $c->query('AppName'),
+ $c->query('Request'),
+ $c->query('OCA\Piwik\Config')
+ );
+ });
+
/**
* Migrations
*/
diff --git a/appinfo/app.php b/appinfo/app.php
index 8ded64a..44b441c 100755
--- a/appinfo/app.php
+++ b/appinfo/app.php
@@ -2,20 +2,21 @@
$url = \OC::$server->getConfig()->getAppValue('piwik', 'url');
if (!empty($url)) {
- OCP\Util::addScript('piwik', 'track');
+ \OCP\Util::addHeader(
+ 'script',
+ [
+ 'src' => \OC::$server->getURLGenerator()->linkToRoute('piwik.JavaScript.tracking'),
+ 'nonce' => \OC::$server->getContentSecurityPolicyNonceManager()->getNonce(),
+ ], ''
+ );
- if (class_exists('\\OCP\\AppFramework\\Http\\ContentSecurityPolicy')) {
- $url = parse_url($url, PHP_URL_HOST);
+ $url = parse_url($url, PHP_URL_HOST);
+ $policy = new OCP\AppFramework\Http\ContentSecurityPolicy();
- $policy = new OCP\AppFramework\Http\ContentSecurityPolicy();
- $policy->addAllowedScriptDomain('\'self\' ');
- $policy->addAllowedImageDomain('\'self\' ');
-
- if ($url !== false && array_key_exists('HTTP_HOST', $_SERVER)
- && $_SERVER['HTTP_HOST'] !== $url && !empty($url)) {
- $policy->addAllowedScriptDomain($url);
- $policy->addAllowedImageDomain($url);
- }
+ if ($url !== false && array_key_exists('HTTP_HOST', $_SERVER)
+ && $_SERVER['HTTP_HOST'] !== $url && !empty($url)) {
+ $policy->addAllowedScriptDomain($url);
+ $policy->addAllowedImageDomain($url);
\OC::$server->getContentSecurityPolicyManager()->addDefaultPolicy($policy);
}
diff --git a/appinfo/routes.php b/appinfo/routes.php
index 6a4e821..2fd1fa6 100644
--- a/appinfo/routes.php
+++ b/appinfo/routes.php
@@ -3,7 +3,8 @@
return [
'routes' => [
['name' => 'settings#index', 'url' => '/settings', 'verb' => 'GET'],
- ['name' => 'settings#update', 'url' => '/settings/{key}', 'verb' => 'PUT']
+ ['name' => 'settings#update', 'url' => '/settings/{key}', 'verb' => 'PUT'],
+ ['name' => 'JavaScript#tracking', 'url' => '/js/tracking.js', 'verb' => 'GET']
],
];
-?>
+?> \ No newline at end of file