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

app.php « appinfo - github.com/nextcloud/jsloader.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 347daa94f5f46be87ffe787c236d366343a6508a (plain)
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
<?php
/**
 * @copyright Copyright (c) 2017 Morris Jobke <hey@morrisjobke.de>
 *
 * @license GNU AGPL version 3 or any later version
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

namespace OCA\JSLoader\Appinfo;

use OC\Security\CSP\ContentSecurityPolicy;

$config = \OC::$server->getConfig();

$snippet = $config->getAppValue('jsloader', 'snippet', '');

if ($snippet !== '') {
	$linkToJs = \OC::$server->getURLGenerator()->linkToRoute(
		'jsloader.JS.script',
		[
			'v' => $config->getAppValue('jsloader', 'cachebuster', '0'),
		]
	);
	\OCP\Util::addHeader(
		'script',
		[
			'src' => $linkToJs,
			'nonce' => \OC::$server->getContentSecurityPolicyNonceManager()->getNonce()
		], ''
	);

	// whitelist the URL to allow loading JS from this external domain
	$url = $config->getAppValue('jsloader', 'url');
	if ($url !== '') {
		$CSPManager = \OC::$server->getContentSecurityPolicyManager();
		$policy = new ContentSecurityPolicy();
		$policy->addAllowedScriptDomain($url);
		$policy->addAllowedImageDomain($url);
		$policy->addAllowedConnectDomain($url);
		$CSPManager->addDefaultPolicy($policy);
	}
}