Moved BaseURL to App namespace (because similar type as Arguments/Modules/Modes)
This commit is contained in:
parent
fa1b783052
commit
08be92a862
12 changed files with 73 additions and 51 deletions
18
src/App.php
18
src/App.php
|
@ -9,6 +9,7 @@ use DOMDocument;
|
|||
use DOMXPath;
|
||||
use Exception;
|
||||
use Friendica\App\Arguments;
|
||||
use Friendica\App\BaseURL;
|
||||
use Friendica\Core\Config\Cache\ConfigCache;
|
||||
use Friendica\Core\Config\Configuration;
|
||||
use Friendica\Core\Config\PConfiguration;
|
||||
|
@ -20,7 +21,6 @@ use Friendica\Model\Profile;
|
|||
use Friendica\Module\Login;
|
||||
use Friendica\Module\Special\HTTPException as ModuleHTTPException;
|
||||
use Friendica\Network\HTTPException;
|
||||
use Friendica\Util\BaseURL;
|
||||
use Friendica\Util\ConfigFileLoader;
|
||||
use Friendica\Util\HTTPSignature;
|
||||
use Friendica\Util\Profiler;
|
||||
|
@ -536,21 +536,13 @@ class App
|
|||
* @param string $origURL
|
||||
*
|
||||
* @return string The cleaned url
|
||||
* @throws HTTPException\InternalServerErrorException
|
||||
*
|
||||
* @deprecated 2019.09 - Use BaseURL->remove() instead
|
||||
* @see BaseURL::remove()
|
||||
*/
|
||||
public function removeBaseURL($origURL)
|
||||
{
|
||||
// Remove the hostname from the url if it is an internal link
|
||||
$nurl = Util\Strings::normaliseLink($origURL);
|
||||
$base = Util\Strings::normaliseLink($this->getBaseURL());
|
||||
$url = str_replace($base . '/', '', $nurl);
|
||||
|
||||
// if it is an external link return the orignal value
|
||||
if ($url == Util\Strings::normaliseLink($origURL)) {
|
||||
return $origURL;
|
||||
} else {
|
||||
return $url;
|
||||
}
|
||||
return $this->baseURL->remove($origURL);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Friendica\Util;
|
||||
namespace Friendica\App;
|
||||
|
||||
use Friendica\Core\Config\Configuration;
|
||||
use Friendica\Util\Network;
|
||||
use Friendica\Util\Strings;
|
||||
|
||||
/**
|
||||
* A class which checks and contains the basic
|
||||
|
@ -32,48 +34,56 @@ class BaseURL
|
|||
|
||||
/**
|
||||
* The Friendica Config
|
||||
*
|
||||
* @var Configuration
|
||||
*/
|
||||
private $config;
|
||||
|
||||
/**
|
||||
* The server side variables
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $server;
|
||||
|
||||
/**
|
||||
* The hostname of the Base URL
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $hostname;
|
||||
|
||||
/**
|
||||
* The SSL_POLICY of the Base URL
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $sslPolicy;
|
||||
|
||||
/**
|
||||
* The URL sub-path of the Base URL
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $urlPath;
|
||||
|
||||
/**
|
||||
* The full URL
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $url;
|
||||
|
||||
/**
|
||||
* The current scheme of this call
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $scheme;
|
||||
|
||||
/**
|
||||
* Returns the hostname of this node
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getHostname()
|
||||
|
@ -83,6 +93,7 @@ class BaseURL
|
|||
|
||||
/**
|
||||
* Returns the current scheme of this call
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getScheme()
|
||||
|
@ -92,6 +103,7 @@ class BaseURL
|
|||
|
||||
/**
|
||||
* Returns the SSL policy of this node
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getSSLPolicy()
|
||||
|
@ -101,6 +113,7 @@ class BaseURL
|
|||
|
||||
/**
|
||||
* Returns the sub-path of this URL
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getUrlPath()
|
||||
|
@ -143,7 +156,7 @@ class BaseURL
|
|||
|
||||
if (!empty($hostname) && $hostname !== $this->hostname) {
|
||||
if ($this->config->set('config', 'hostname', $hostname)) {
|
||||
$this->hostname = $hostname;
|
||||
$this->hostname = $hostname;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
@ -153,7 +166,7 @@ class BaseURL
|
|||
if ($this->config->set('system', 'ssl_policy', $sslPolicy)) {
|
||||
$this->sslPolicy = $sslPolicy;
|
||||
} else {
|
||||
$this->hostname = $currHostname;
|
||||
$this->hostname = $currHostname;
|
||||
$this->config->set('config', 'hostname', $this->hostname);
|
||||
return false;
|
||||
}
|
||||
|
@ -229,12 +242,12 @@ class BaseURL
|
|||
*/
|
||||
public function checkRedirectHttps()
|
||||
{
|
||||
return $this->config->get('system', 'force_ssl')
|
||||
&& ($this->getScheme() == "http")
|
||||
&& intval($this->getSSLPolicy()) == BaseURL::SSL_POLICY_FULL
|
||||
&& strpos($this->get(), 'https://') === 0
|
||||
&& !empty($this->server['REQUEST_METHOD'])
|
||||
&& $this->server['REQUEST_METHOD'] === 'GET';
|
||||
return $this->config->get('system', 'force_ssl') &&
|
||||
($this->getScheme() == "http") &&
|
||||
intval($this->getSSLPolicy()) == BaseURL::SSL_POLICY_FULL &&
|
||||
strpos($this->get(), 'https://') === 0 &&
|
||||
!empty($this->server['REQUEST_METHOD']) &&
|
||||
$this->server['REQUEST_METHOD'] === 'GET';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -359,7 +372,7 @@ class BaseURL
|
|||
$scheme = 'https';
|
||||
}
|
||||
|
||||
$this->url = $scheme . '://' . $this->hostname . (!empty($this->urlPath) ? '/' . $this->urlPath : '' );
|
||||
$this->url = $scheme . '://' . $this->hostname . (!empty($this->urlPath) ? '/' . $this->urlPath : '');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -370,13 +383,35 @@ class BaseURL
|
|||
$this->scheme = 'http';
|
||||
|
||||
if (!empty($this->server['HTTPS']) ||
|
||||
!empty($this->server['HTTP_FORWARDED']) && preg_match('/proto=https/', $this->server['HTTP_FORWARDED']) ||
|
||||
!empty($this->server['HTTP_X_FORWARDED_PROTO']) && $this->server['HTTP_X_FORWARDED_PROTO'] == 'https' ||
|
||||
!empty($this->server['HTTP_X_FORWARDED_SSL']) && $this->server['HTTP_X_FORWARDED_SSL'] == 'on' ||
|
||||
!empty($this->server['FRONT_END_HTTPS']) && $this->server['FRONT_END_HTTPS'] == 'on' ||
|
||||
!empty($this->server['SERVER_PORT']) && (intval($this->server['SERVER_PORT']) == 443) // XXX: reasonable assumption, but isn't this hardcoding too much?
|
||||
!empty($this->server['HTTP_FORWARDED']) && preg_match('/proto=https/', $this->server['HTTP_FORWARDED']) ||
|
||||
!empty($this->server['HTTP_X_FORWARDED_PROTO']) && $this->server['HTTP_X_FORWARDED_PROTO'] == 'https' ||
|
||||
!empty($this->server['HTTP_X_FORWARDED_SSL']) && $this->server['HTTP_X_FORWARDED_SSL'] == 'on' ||
|
||||
!empty($this->server['FRONT_END_HTTPS']) && $this->server['FRONT_END_HTTPS'] == 'on' ||
|
||||
!empty($this->server['SERVER_PORT']) && (intval($this->server['SERVER_PORT']) == 443) // XXX: reasonable assumption, but isn't this hardcoding too much?
|
||||
) {
|
||||
$this->scheme = 'https';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the base url from an url. This avoids some mixed content problems.
|
||||
*
|
||||
* @param string $origURL
|
||||
*
|
||||
* @return string The cleaned url
|
||||
*/
|
||||
public function remove(string $origURL)
|
||||
{
|
||||
// Remove the hostname from the url if it is an internal link
|
||||
$nurl = Strings::normaliseLink($origURL);
|
||||
$base = Strings::normaliseLink($this->get());
|
||||
$url = str_replace($base . '/', '', $nurl);
|
||||
|
||||
// if it is an external link return the orignal value
|
||||
if ($url == Strings::normaliseLink($origURL)) {
|
||||
return $origURL;
|
||||
} else {
|
||||
return $url;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,9 +9,7 @@ use Friendica\App;
|
|||
use Friendica\Core\Session\CacheSessionHandler;
|
||||
use Friendica\Core\Session\DatabaseSessionHandler;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Model\Contact;
|
||||
use Friendica\Model\User;
|
||||
use Friendica\Util\BaseURL;
|
||||
use Friendica\Util\DateTimeFormat;
|
||||
|
||||
/**
|
||||
|
@ -30,7 +28,7 @@ class Session
|
|||
ini_set('session.use_only_cookies', 1);
|
||||
ini_set('session.cookie_httponly', 1);
|
||||
|
||||
if (Config::get('system', 'ssl_policy') == BaseURL::SSL_POLICY_FULL) {
|
||||
if (Config::get('system', 'ssl_policy') == App\BaseURL::SSL_POLICY_FULL) {
|
||||
ini_set('session.cookie_secure', 1);
|
||||
}
|
||||
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
*/
|
||||
namespace Friendica\Core;
|
||||
|
||||
use Friendica\App\BaseURL;
|
||||
use Friendica\BaseObject;
|
||||
use Friendica\Network\HTTPException\InternalServerErrorException;
|
||||
use Friendica\Util\BaseURL;
|
||||
use Friendica\Util\XML;
|
||||
|
||||
/**
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*/
|
||||
namespace Friendica\Model;
|
||||
|
||||
use Friendica\App\BaseURL;
|
||||
use Friendica\BaseObject;
|
||||
use Friendica\Content\Pager;
|
||||
use Friendica\Core\Config;
|
||||
|
@ -22,7 +23,6 @@ use Friendica\Protocol\Diaspora;
|
|||
use Friendica\Protocol\OStatus;
|
||||
use Friendica\Protocol\PortableContact;
|
||||
use Friendica\Protocol\Salmon;
|
||||
use Friendica\Util\BaseURL;
|
||||
use Friendica\Util\DateTimeFormat;
|
||||
use Friendica\Util\Network;
|
||||
use Friendica\Util\Strings;
|
||||
|
|
|
@ -14,7 +14,6 @@ use Friendica\Module\BaseAdminModule;
|
|||
use Friendica\Module\Register;
|
||||
use Friendica\Protocol\PortableContact;
|
||||
use Friendica\Util\BasePath;
|
||||
use Friendica\Util\BaseURL;
|
||||
use Friendica\Util\Strings;
|
||||
use Friendica\Worker\Delivery;
|
||||
|
||||
|
@ -246,7 +245,7 @@ class Site extends BaseAdminModule
|
|||
$diaspora_enabled = false;
|
||||
}
|
||||
if ($ssl_policy != intval(Config::get('system', 'ssl_policy'))) {
|
||||
if ($ssl_policy == BaseURL::SSL_POLICY_FULL) {
|
||||
if ($ssl_policy == App\BaseURL::SSL_POLICY_FULL) {
|
||||
DBA::e("UPDATE `contact` SET
|
||||
`url` = REPLACE(`url` , 'http:' , 'https:'),
|
||||
`photo` = REPLACE(`photo` , 'http:' , 'https:'),
|
||||
|
@ -264,7 +263,7 @@ class Site extends BaseAdminModule
|
|||
`thumb` = REPLACE(`thumb` , 'http:' , 'https:')
|
||||
WHERE 1 "
|
||||
);
|
||||
} elseif ($ssl_policy == BaseURL::SSL_POLICY_SELFSIGN) {
|
||||
} elseif ($ssl_policy == App\BaseURL::SSL_POLICY_SELFSIGN) {
|
||||
DBA::e("UPDATE `contact` SET
|
||||
`url` = REPLACE(`url` , 'https:' , 'http:'),
|
||||
`photo` = REPLACE(`photo` , 'https:' , 'http:'),
|
||||
|
@ -512,9 +511,9 @@ class Site extends BaseAdminModule
|
|||
];
|
||||
|
||||
$ssl_choices = [
|
||||
BaseURL::SSL_POLICY_NONE => L10n::t('No SSL policy, links will track page SSL state'),
|
||||
BaseURL::SSL_POLICY_FULL => L10n::t('Force all links to use SSL'),
|
||||
BaseURL::SSL_POLICY_SELFSIGN => L10n::t('Self-signed certificate, use SSL for local links only (discouraged)')
|
||||
App\BaseURL::SSL_POLICY_NONE => L10n::t('No SSL policy, links will track page SSL state'),
|
||||
App\BaseURL::SSL_POLICY_FULL => L10n::t('Force all links to use SSL'),
|
||||
App\BaseURL::SSL_POLICY_SELFSIGN => L10n::t('Self-signed certificate, use SSL for local links only (discouraged)')
|
||||
];
|
||||
|
||||
$check_git_version_choices = [
|
||||
|
|
|
@ -10,7 +10,6 @@ use Friendica\Core\L10n;
|
|||
use Friendica\Core\Renderer;
|
||||
use Friendica\Network\HTTPException;
|
||||
use Friendica\Util\BasePath;
|
||||
use Friendica\Util\BaseURL;
|
||||
use Friendica\Util\Strings;
|
||||
use Friendica\Util\Temporal;
|
||||
|
||||
|
@ -180,9 +179,9 @@ class Install extends BaseModule
|
|||
|
||||
case self::BASE_CONFIG:
|
||||
$ssl_choices = [
|
||||
BaseURL::SSL_POLICY_NONE => L10n::t("No SSL policy, links will track page SSL state"),
|
||||
BaseURL::SSL_POLICY_FULL => L10n::t("Force all links to use SSL"),
|
||||
BaseURL::SSL_POLICY_SELFSIGN => L10n::t("Self-signed certificate, use SSL for local links only \x28discouraged\x29")
|
||||
App\BaseURL::SSL_POLICY_NONE => L10n::t("No SSL policy, links will track page SSL state"),
|
||||
App\BaseURL::SSL_POLICY_FULL => L10n::t("Force all links to use SSL"),
|
||||
App\BaseURL::SSL_POLICY_SELFSIGN => L10n::t("Self-signed certificate, use SSL for local links only \x28discouraged\x29")
|
||||
];
|
||||
|
||||
$tpl = Renderer::getMarkupTemplate('install_base.tpl');
|
||||
|
|
|
@ -11,6 +11,7 @@ namespace Friendica\Protocol;
|
|||
use DOMDocument;
|
||||
use DOMXPath;
|
||||
use Friendica\App;
|
||||
use Friendica\App\BaseURL;
|
||||
use Friendica\Content\OEmbed;
|
||||
use Friendica\Content\Text\BBCode;
|
||||
use Friendica\Content\Text\HTML;
|
||||
|
@ -31,7 +32,6 @@ use Friendica\Model\Profile;
|
|||
use Friendica\Model\User;
|
||||
use Friendica\Network\Probe;
|
||||
use Friendica\Object\Image;
|
||||
use Friendica\Util\BaseURL;
|
||||
use Friendica\Util\Crypto;
|
||||
use Friendica\Util\DateTimeFormat;
|
||||
use Friendica\Util\Network;
|
||||
|
|
|
@ -85,12 +85,12 @@ return [
|
|||
],
|
||||
],
|
||||
/**
|
||||
* Creates the Util\BaseURL
|
||||
* Creates the App\BaseURL
|
||||
*
|
||||
* Same as:
|
||||
* $baseURL = new Util\BaseURL($configuration, $_SERVER);
|
||||
* $baseURL = new App\BaseURL($configuration, $_SERVER);
|
||||
*/
|
||||
Util\BaseURL::class => [
|
||||
App\BaseURL::class => [
|
||||
'constructParams' => [
|
||||
$_SERVER,
|
||||
],
|
||||
|
|
|
@ -15,7 +15,6 @@ use Friendica\Test\Util\DBAMockTrait;
|
|||
use Friendica\Test\Util\DBStructureMockTrait;
|
||||
use Friendica\Test\Util\RendererMockTrait;
|
||||
use Friendica\Test\Util\VFSTrait;
|
||||
use Friendica\Util\BaseURL;
|
||||
use Friendica\Util\Logger\VoidLogger;
|
||||
use Mockery\MockInterface;
|
||||
use org\bovigo\vfs\vfsStream;
|
||||
|
@ -353,7 +352,7 @@ FIN;
|
|||
$this->assertConfigEntry('system', 'language', $assertion, ($default) ? Installer::DEFAULT_LANG : null);
|
||||
$this->assertConfigEntry('system', 'url', $assertion);
|
||||
$this->assertConfigEntry('system', 'urlpath', $assertion);
|
||||
$this->assertConfigEntry('system', 'ssl_policy', $assertion, ($default) ? BaseURL::DEFAULT_SSL_SCHEME : null);
|
||||
$this->assertConfigEntry('system', 'ssl_policy', $assertion, ($default) ? App\BaseURL::DEFAULT_SSL_SCHEME : null);
|
||||
$this->assertConfigEntry('system', 'basepath', ($realBasepath) ? $this->root->url() : $assertion);
|
||||
}
|
||||
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
namespace Friendica\Test\src\Content\Text;
|
||||
|
||||
use Friendica\App\BaseURL;
|
||||
use Friendica\Content\Text\BBCode;
|
||||
use Friendica\Core\L10n\L10n;
|
||||
use Friendica\Test\MockedTest;
|
||||
use Friendica\Test\Util\AppMockTrait;
|
||||
use Friendica\Test\Util\VFSTrait;
|
||||
use Friendica\Util\BaseURL;
|
||||
|
||||
class BBCodeTest extends MockedTest
|
||||
{
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
namespace Friendica\Test\src\Util;
|
||||
|
||||
use Friendica\App\BaseURL;
|
||||
use Friendica\Core\Config\Configuration;
|
||||
use Friendica\Test\MockedTest;
|
||||
use Friendica\Util\BaseURL;
|
||||
|
||||
class BaseURLTest extends MockedTest
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue