Доброго всем времени суток!
Как мониторить Nextcloud 12 с помощью PIWIK 3.0.4?
Nextckiud и PIWIK находятся на разных поддоменах: nextcloud.example.com и piwik.example.com
Задача очень не тривиальная, как может показаться, Nextcloud всеми силами противостоит внедрению кода аналитики piwik.
Есть 3 файла в которые нужно внедрить piwik:
/var/www/nextcloud/core/temlates/layout.base.php
/var/www/nextcloud/core/temlates/layout.guest.php
/var/www/nextcloud/core/temlates/layout.user.php
Но если просто стандартным способом вставить код счётчика piwik до </header> ничего работать не будет, потому что браузер клиента получает от nextcloud инструкции СSP (Content-Security-Policy) https://www.html5rocks.com/en/tutorials/security/content-security-policy/ которые блокируют запуск скриптов или загрузку картинок со сторонних узлов, конкретно браузер получает заголовки:
curl -vvvv https://nextcloud.exaple.com
< Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'nonce-bFV3U25zbkFOKzVFSTJsZnh4Y05CNE5KM09ITlk4R2VXeXl2Tlg2blBoMD06OHhSZC9meUxISzE5V2djS3ZuQmladG93bE1xREVwbkxNa0NmZmpEL1QzOD0='; style-src 'self' 'unsafe-inline'; frame-src *; img-src * data: blob:; font-src 'self' data:; media-src *; connect-src *; object-src 'none'; base-uri 'self';
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< X-Robots-Tag: none
< X-Download-Options: noopen
< X-Permitted-Cross-Domain-Policies: none
В самом браузере (например Safari веб-инспектор) мы получаем:
Refused to load https://piwik.example.com/piwik.js because it does not appear in the script-src directive of the Content Security Policy.
script-src 'self' 'unsafe-eval' https://piwik.example.com;
Content-Security-Policy в owncloud настраивается в этом файле:
/var/www/owncloud/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
/var/www/owncloud/lib/public/AppFramework/Http/ContentSecurityPolicy.php
/var/www/owncloud/lib/private/legacy/response.php
Если непосредственно в Nginx прописать add_header Content-Security-Policy... это никак не поможет, в этом случае браузер одновреннно 2 политики получит, первую, ту что в EmptyContentSecurityPolicy.php прописана и вторую ту, что от Nginx пришла, интересно как он их в этом случае обрабатывает, они друг друга добавляют, а если правила конфликтуют?
В итоге у меня PIWIK категорически не хочет работать с NEXTCLOUD, а если точнее то браузеры через которые открывается NEXTCLOUD получают инструкции от СSP не грузить ничего со сторонних доменов, в частности с моего PIWIK.
В репозитории приложений для NEXTCLOUD есть приложение для интеграции с PIWIK, но оно не работает, по крайней мере этой интеграции у меня не случилось.
У кого-нибудь работает Nextcloud 12 + PIWIK 3.0.4, которые на разных доменах находятся?