mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-21 12:19:56 +09:00
- 2022년 3월 개발팀 결정사항 적용 - 모듈 등 서드파티 자료 개발시 composer를 사용하면 상위 경로에 있는 코어의 composer.json을 수정하고, 코어의 vendor 디렉토리를 건드리는 것이 기본값임 - 이를 방지하기 위해 코어의 composer.json과 vendor를 common 디렉토리 안으로 이동하여, 모듈 경로에서 상위 폴더로 인식하지 않도록 함
112 lines
3.3 KiB
PHP
112 lines
3.3 KiB
PHP
<?php
|
|
|
|
class HTMLPurifier_URIDefinition extends HTMLPurifier_Definition
|
|
{
|
|
|
|
public $type = 'URI';
|
|
protected $filters = array();
|
|
protected $postFilters = array();
|
|
protected $registeredFilters = array();
|
|
|
|
/**
|
|
* HTMLPurifier_URI object of the base specified at %URI.Base
|
|
*/
|
|
public $base;
|
|
|
|
/**
|
|
* String host to consider "home" base, derived off of $base
|
|
*/
|
|
public $host;
|
|
|
|
/**
|
|
* Name of default scheme based on %URI.DefaultScheme and %URI.Base
|
|
*/
|
|
public $defaultScheme;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->registerFilter(new HTMLPurifier_URIFilter_DisableExternal());
|
|
$this->registerFilter(new HTMLPurifier_URIFilter_DisableExternalResources());
|
|
$this->registerFilter(new HTMLPurifier_URIFilter_DisableResources());
|
|
$this->registerFilter(new HTMLPurifier_URIFilter_HostBlacklist());
|
|
$this->registerFilter(new HTMLPurifier_URIFilter_SafeIframe());
|
|
$this->registerFilter(new HTMLPurifier_URIFilter_MakeAbsolute());
|
|
$this->registerFilter(new HTMLPurifier_URIFilter_Munge());
|
|
}
|
|
|
|
public function registerFilter($filter)
|
|
{
|
|
$this->registeredFilters[$filter->name] = $filter;
|
|
}
|
|
|
|
public function addFilter($filter, $config)
|
|
{
|
|
$r = $filter->prepare($config);
|
|
if ($r === false) return; // null is ok, for backwards compat
|
|
if ($filter->post) {
|
|
$this->postFilters[$filter->name] = $filter;
|
|
} else {
|
|
$this->filters[$filter->name] = $filter;
|
|
}
|
|
}
|
|
|
|
protected function doSetup($config)
|
|
{
|
|
$this->setupMemberVariables($config);
|
|
$this->setupFilters($config);
|
|
}
|
|
|
|
protected function setupFilters($config)
|
|
{
|
|
foreach ($this->registeredFilters as $name => $filter) {
|
|
if ($filter->always_load) {
|
|
$this->addFilter($filter, $config);
|
|
} else {
|
|
$conf = $config->get('URI.' . $name);
|
|
if ($conf !== false && $conf !== null) {
|
|
$this->addFilter($filter, $config);
|
|
}
|
|
}
|
|
}
|
|
unset($this->registeredFilters);
|
|
}
|
|
|
|
protected function setupMemberVariables($config)
|
|
{
|
|
$this->host = $config->get('URI.Host');
|
|
$base_uri = $config->get('URI.Base');
|
|
if (!is_null($base_uri)) {
|
|
$parser = new HTMLPurifier_URIParser();
|
|
$this->base = $parser->parse($base_uri);
|
|
$this->defaultScheme = $this->base->scheme;
|
|
if (is_null($this->host)) $this->host = $this->base->host;
|
|
}
|
|
if (is_null($this->defaultScheme)) $this->defaultScheme = $config->get('URI.DefaultScheme');
|
|
}
|
|
|
|
public function getDefaultScheme($config, $context)
|
|
{
|
|
return HTMLPurifier_URISchemeRegistry::instance()->getScheme($this->defaultScheme, $config, $context);
|
|
}
|
|
|
|
public function filter(&$uri, $config, $context)
|
|
{
|
|
foreach ($this->filters as $name => $f) {
|
|
$result = $f->filter($uri, $config, $context);
|
|
if (!$result) return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public function postFilter(&$uri, $config, $context)
|
|
{
|
|
foreach ($this->postFilters as $name => $f) {
|
|
$result = $f->filter($uri, $config, $context);
|
|
if (!$result) return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
}
|
|
|
|
// vim: et sw=4 sts=4
|