From: Philipp Holzer Date: Thu, 15 Aug 2019 15:23:00 +0000 (+0200) Subject: Moved BaseURL to App namespace (because similar type as Arguments/Modules/Modes) X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=08be92a86226fdad7f53e2b330fa0b5bd1388f0a;p=friendica.git Moved BaseURL to App namespace (because similar type as Arguments/Modules/Modes) --- diff --git a/src/App.php b/src/App.php index c9a66c523d..0a7bab0e16 100644 --- a/src/App.php +++ b/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); } /** diff --git a/src/App/BaseURL.php b/src/App/BaseURL.php new file mode 100644 index 0000000000..ad5fd0d4ed --- /dev/null +++ b/src/App/BaseURL.php @@ -0,0 +1,417 @@ +hostname; + } + + /** + * Returns the current scheme of this call + * + * @return string + */ + public function getScheme() + { + return $this->scheme; + } + + /** + * Returns the SSL policy of this node + * + * @return int + */ + public function getSSLPolicy() + { + return $this->sslPolicy; + } + + /** + * Returns the sub-path of this URL + * + * @return string + */ + public function getUrlPath() + { + return $this->urlPath; + } + + /** + * Returns the full URL of this call + * + * Note: $ssl parameter value doesn't directly correlate with the resulting protocol + * + * @param bool $ssl True, if ssl should get used + * + * @return string + */ + public function get($ssl = false) + { + if ($this->sslPolicy === self::SSL_POLICY_SELFSIGN && $ssl) { + return Network::switchScheme($this->url); + } + + return $this->url; + } + + /** + * Save current parts of the base Url + * + * @param string? $hostname + * @param int? $sslPolicy + * @param string? $urlPath + * + * @return bool true, if successful + */ + public function save($hostname = null, $sslPolicy = null, $urlPath = null) + { + $currHostname = $this->hostname; + $currSSLPolicy = $this->sslPolicy; + $currURLPath = $this->urlPath; + + if (!empty($hostname) && $hostname !== $this->hostname) { + if ($this->config->set('config', 'hostname', $hostname)) { + $this->hostname = $hostname; + } else { + return false; + } + } + + if (isset($sslPolicy) && $sslPolicy !== $this->sslPolicy) { + if ($this->config->set('system', 'ssl_policy', $sslPolicy)) { + $this->sslPolicy = $sslPolicy; + } else { + $this->hostname = $currHostname; + $this->config->set('config', 'hostname', $this->hostname); + return false; + } + } + + if (isset($urlPath) && $urlPath !== $this->urlPath) { + if ($this->config->set('system', 'urlpath', $urlPath)) { + $this->urlPath = $urlPath; + } else { + $this->hostname = $currHostname; + $this->sslPolicy = $currSSLPolicy; + $this->config->set('config', 'hostname', $this->hostname); + $this->config->set('system', 'ssl_policy', $this->sslPolicy); + return false; + } + } + + $this->determineBaseUrl(); + if (!$this->config->set('system', 'url', $this->url)) { + $this->hostname = $currHostname; + $this->sslPolicy = $currSSLPolicy; + $this->urlPath = $currURLPath; + $this->determineBaseUrl(); + + $this->config->set('config', 'hostname', $this->hostname); + $this->config->set('system', 'ssl_policy', $this->sslPolicy); + $this->config->set('system', 'urlpath', $this->urlPath); + return false; + } + + return true; + } + + /** + * Save the current url as base URL + * + * @param $url + * + * @return bool true, if the save was successful + */ + public function saveByURL($url) + { + $parsed = @parse_url($url); + + if (empty($parsed)) { + return false; + } + + $hostname = $parsed['host']; + if (!empty($hostname) && !empty($parsed['port'])) { + $hostname .= ':' . $parsed['port']; + } + + $urlPath = null; + if (!empty($parsed['path'])) { + $urlPath = trim($parsed['path'], '\\/'); + } + + $sslPolicy = null; + if (!empty($parsed['scheme'])) { + if ($parsed['scheme'] == 'https') { + $sslPolicy = BaseURL::SSL_POLICY_FULL; + } + } + + return $this->save($hostname, $sslPolicy, $urlPath); + } + + /** + * Checks, if a redirect to the HTTPS site would be necessary + * + * @return bool + */ + 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'; + } + + /** + * @param Configuration $config The Friendica configuration + * @param array $server The $_SERVER array + */ + public function __construct(Configuration $config, array $server) + { + $this->config = $config; + $this->server = $server; + + $this->determineSchema(); + $this->checkConfig(); + } + + /** + * Check the current config during loading + */ + public function checkConfig() + { + $this->hostname = $this->config->get('config', 'hostname'); + $this->urlPath = $this->config->get('system', 'urlpath'); + $this->sslPolicy = $this->config->get('system', 'ssl_policy'); + $this->url = $this->config->get('system', 'url'); + + if (empty($this->hostname)) { + $this->determineHostname(); + + if (!empty($this->hostname)) { + $this->config->set('config', 'hostname', $this->hostname); + } + } + + if (!isset($this->urlPath)) { + $this->determineURLPath(); + $this->config->set('system', 'urlpath', $this->urlPath); + } + + if (!isset($this->sslPolicy)) { + if ($this->scheme == 'https') { + $this->sslPolicy = self::SSL_POLICY_FULL; + } else { + $this->sslPolicy = self::DEFAULT_SSL_SCHEME; + } + $this->config->set('system', 'ssl_policy', $this->sslPolicy); + } + + if (empty($this->url)) { + $this->determineBaseUrl(); + + if (!empty($this->url)) { + $this->config->set('system', 'url', $this->url); + } + } + } + + /** + * Determines the hostname of this node if not set already + */ + private function determineHostname() + { + $this->hostname = ''; + + if (!empty($this->server['SERVER_NAME'])) { + $this->hostname = $this->server['SERVER_NAME']; + + if (!empty($this->server['SERVER_PORT']) && $this->server['SERVER_PORT'] != 80 && $this->server['SERVER_PORT'] != 443) { + $this->hostname .= ':' . $this->server['SERVER_PORT']; + } + } + } + + /** + * Figure out if we are running at the top of a domain or in a sub-directory + */ + private function determineURLPath() + { + $this->urlPath = ''; + + /* + * The automatic path detection in this function is currently deactivated, + * see issue https://github.com/friendica/friendica/issues/6679 + * + * The problem is that the function seems to be confused with some url. + * These then confuses the detection which changes the url path. + */ + + /* Relative script path to the web server root + * Not all of those $_SERVER properties can be present, so we do by inverse priority order + */ + $relative_script_path = ''; + $relative_script_path = defaults($this->server, 'REDIRECT_URL', $relative_script_path); + $relative_script_path = defaults($this->server, 'REDIRECT_URI', $relative_script_path); + $relative_script_path = defaults($this->server, 'REDIRECT_SCRIPT_URL', $relative_script_path); + $relative_script_path = defaults($this->server, 'SCRIPT_URL', $relative_script_path); + $relative_script_path = defaults($this->server, 'REQUEST_URI', $relative_script_path); + + /* $relative_script_path gives /relative/path/to/friendica/module/parameter + * QUERY_STRING gives pagename=module/parameter + * + * To get /relative/path/to/friendica we perform dirname() for as many levels as there are slashes in the QUERY_STRING + */ + if (!empty($relative_script_path)) { + // Module + if (!empty($this->server['QUERY_STRING'])) { + $this->urlPath = trim(rdirname($relative_script_path, substr_count(trim($this->server['QUERY_STRING'], '/'), '/') + 1), '/'); + } else { + // Root page + $this->urlPath = trim($relative_script_path, '/'); + } + } + } + + /** + * Determine the full URL based on all parts + */ + private function determineBaseUrl() + { + $scheme = 'http'; + + if ($this->sslPolicy == self::SSL_POLICY_FULL) { + $scheme = 'https'; + } + + $this->url = $scheme . '://' . $this->hostname . (!empty($this->urlPath) ? '/' . $this->urlPath : ''); + } + + /** + * Determine the scheme of the current used link + */ + private function determineSchema() + { + $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? + ) { + $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; + } + } +} diff --git a/src/Core/Session.php b/src/Core/Session.php index e54c0e49b9..22909a6e6e 100644 --- a/src/Core/Session.php +++ b/src/Core/Session.php @@ -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); } diff --git a/src/Core/System.php b/src/Core/System.php index 89526bdb4e..0888f390a6 100644 --- a/src/Core/System.php +++ b/src/Core/System.php @@ -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; /** diff --git a/src/Model/Contact.php b/src/Model/Contact.php index f01cb73604..df3efa0c57 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -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; diff --git a/src/Module/Admin/Site.php b/src/Module/Admin/Site.php index c899729f8e..dff869df20 100644 --- a/src/Module/Admin/Site.php +++ b/src/Module/Admin/Site.php @@ -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 = [ diff --git a/src/Module/Install.php b/src/Module/Install.php index 3b8ebb471c..7ba4039665 100644 --- a/src/Module/Install.php +++ b/src/Module/Install.php @@ -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'); diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 2abdfe1486..273a7c248c 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -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; diff --git a/src/Util/BaseURL.php b/src/Util/BaseURL.php deleted file mode 100644 index be34de30ec..0000000000 --- a/src/Util/BaseURL.php +++ /dev/null @@ -1,382 +0,0 @@ -hostname; - } - - /** - * Returns the current scheme of this call - * @return string - */ - public function getScheme() - { - return $this->scheme; - } - - /** - * Returns the SSL policy of this node - * @return int - */ - public function getSSLPolicy() - { - return $this->sslPolicy; - } - - /** - * Returns the sub-path of this URL - * @return string - */ - public function getUrlPath() - { - return $this->urlPath; - } - - /** - * Returns the full URL of this call - * - * Note: $ssl parameter value doesn't directly correlate with the resulting protocol - * - * @param bool $ssl True, if ssl should get used - * - * @return string - */ - public function get($ssl = false) - { - if ($this->sslPolicy === self::SSL_POLICY_SELFSIGN && $ssl) { - return Network::switchScheme($this->url); - } - - return $this->url; - } - - /** - * Save current parts of the base Url - * - * @param string? $hostname - * @param int? $sslPolicy - * @param string? $urlPath - * - * @return bool true, if successful - */ - public function save($hostname = null, $sslPolicy = null, $urlPath = null) - { - $currHostname = $this->hostname; - $currSSLPolicy = $this->sslPolicy; - $currURLPath = $this->urlPath; - - if (!empty($hostname) && $hostname !== $this->hostname) { - if ($this->config->set('config', 'hostname', $hostname)) { - $this->hostname = $hostname; - } else { - return false; - } - } - - if (isset($sslPolicy) && $sslPolicy !== $this->sslPolicy) { - if ($this->config->set('system', 'ssl_policy', $sslPolicy)) { - $this->sslPolicy = $sslPolicy; - } else { - $this->hostname = $currHostname; - $this->config->set('config', 'hostname', $this->hostname); - return false; - } - } - - if (isset($urlPath) && $urlPath !== $this->urlPath) { - if ($this->config->set('system', 'urlpath', $urlPath)) { - $this->urlPath = $urlPath; - } else { - $this->hostname = $currHostname; - $this->sslPolicy = $currSSLPolicy; - $this->config->set('config', 'hostname', $this->hostname); - $this->config->set('system', 'ssl_policy', $this->sslPolicy); - return false; - } - } - - $this->determineBaseUrl(); - if (!$this->config->set('system', 'url', $this->url)) { - $this->hostname = $currHostname; - $this->sslPolicy = $currSSLPolicy; - $this->urlPath = $currURLPath; - $this->determineBaseUrl(); - - $this->config->set('config', 'hostname', $this->hostname); - $this->config->set('system', 'ssl_policy', $this->sslPolicy); - $this->config->set('system', 'urlpath', $this->urlPath); - return false; - } - - return true; - } - - /** - * Save the current url as base URL - * - * @param $url - * - * @return bool true, if the save was successful - */ - public function saveByURL($url) - { - $parsed = @parse_url($url); - - if (empty($parsed)) { - return false; - } - - $hostname = $parsed['host']; - if (!empty($hostname) && !empty($parsed['port'])) { - $hostname .= ':' . $parsed['port']; - } - - $urlPath = null; - if (!empty($parsed['path'])) { - $urlPath = trim($parsed['path'], '\\/'); - } - - $sslPolicy = null; - if (!empty($parsed['scheme'])) { - if ($parsed['scheme'] == 'https') { - $sslPolicy = BaseURL::SSL_POLICY_FULL; - } - } - - return $this->save($hostname, $sslPolicy, $urlPath); - } - - /** - * Checks, if a redirect to the HTTPS site would be necessary - * - * @return bool - */ - 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'; - } - - /** - * @param Configuration $config The Friendica configuration - * @param array $server The $_SERVER array - */ - public function __construct(Configuration $config, array $server) - { - $this->config = $config; - $this->server = $server; - - $this->determineSchema(); - $this->checkConfig(); - } - - /** - * Check the current config during loading - */ - public function checkConfig() - { - $this->hostname = $this->config->get('config', 'hostname'); - $this->urlPath = $this->config->get('system', 'urlpath'); - $this->sslPolicy = $this->config->get('system', 'ssl_policy'); - $this->url = $this->config->get('system', 'url'); - - if (empty($this->hostname)) { - $this->determineHostname(); - - if (!empty($this->hostname)) { - $this->config->set('config', 'hostname', $this->hostname); - } - } - - if (!isset($this->urlPath)) { - $this->determineURLPath(); - $this->config->set('system', 'urlpath', $this->urlPath); - } - - if (!isset($this->sslPolicy)) { - if ($this->scheme == 'https') { - $this->sslPolicy = self::SSL_POLICY_FULL; - } else { - $this->sslPolicy = self::DEFAULT_SSL_SCHEME; - } - $this->config->set('system', 'ssl_policy', $this->sslPolicy); - } - - if (empty($this->url)) { - $this->determineBaseUrl(); - - if (!empty($this->url)) { - $this->config->set('system', 'url', $this->url); - } - } - } - - /** - * Determines the hostname of this node if not set already - */ - private function determineHostname() - { - $this->hostname = ''; - - if (!empty($this->server['SERVER_NAME'])) { - $this->hostname = $this->server['SERVER_NAME']; - - if (!empty($this->server['SERVER_PORT']) && $this->server['SERVER_PORT'] != 80 && $this->server['SERVER_PORT'] != 443) { - $this->hostname .= ':' . $this->server['SERVER_PORT']; - } - } - } - - /** - * Figure out if we are running at the top of a domain or in a sub-directory - */ - private function determineURLPath() - { - $this->urlPath = ''; - - /* - * The automatic path detection in this function is currently deactivated, - * see issue https://github.com/friendica/friendica/issues/6679 - * - * The problem is that the function seems to be confused with some url. - * These then confuses the detection which changes the url path. - */ - - /* Relative script path to the web server root - * Not all of those $_SERVER properties can be present, so we do by inverse priority order - */ - $relative_script_path = ''; - $relative_script_path = defaults($this->server, 'REDIRECT_URL', $relative_script_path); - $relative_script_path = defaults($this->server, 'REDIRECT_URI', $relative_script_path); - $relative_script_path = defaults($this->server, 'REDIRECT_SCRIPT_URL', $relative_script_path); - $relative_script_path = defaults($this->server, 'SCRIPT_URL', $relative_script_path); - $relative_script_path = defaults($this->server, 'REQUEST_URI', $relative_script_path); - - /* $relative_script_path gives /relative/path/to/friendica/module/parameter - * QUERY_STRING gives pagename=module/parameter - * - * To get /relative/path/to/friendica we perform dirname() for as many levels as there are slashes in the QUERY_STRING - */ - if (!empty($relative_script_path)) { - // Module - if (!empty($this->server['QUERY_STRING'])) { - $this->urlPath = trim(rdirname($relative_script_path, substr_count(trim($this->server['QUERY_STRING'], '/'), '/') + 1), '/'); - } else { - // Root page - $this->urlPath = trim($relative_script_path, '/'); - } - } - } - - /** - * Determine the full URL based on all parts - */ - private function determineBaseUrl() - { - $scheme = 'http'; - - if ($this->sslPolicy == self::SSL_POLICY_FULL) { - $scheme = 'https'; - } - - $this->url = $scheme . '://' . $this->hostname . (!empty($this->urlPath) ? '/' . $this->urlPath : '' ); - } - - /** - * Determine the scheme of the current used link - */ - private function determineSchema() - { - $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? - ) { - $this->scheme = 'https'; - } - } -} diff --git a/static/dependencies.config.php b/static/dependencies.config.php index 7a4adb5ea1..e32f99a60c 100644 --- a/static/dependencies.config.php +++ b/static/dependencies.config.php @@ -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, ], diff --git a/tests/src/Console/AutomaticInstallationConsoleTest.php b/tests/src/Console/AutomaticInstallationConsoleTest.php index a8c4894b9d..774db31746 100644 --- a/tests/src/Console/AutomaticInstallationConsoleTest.php +++ b/tests/src/Console/AutomaticInstallationConsoleTest.php @@ -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); } diff --git a/tests/src/Content/Text/BBCodeTest.php b/tests/src/Content/Text/BBCodeTest.php index 6938f8ed5a..899f32764d 100644 --- a/tests/src/Content/Text/BBCodeTest.php +++ b/tests/src/Content/Text/BBCodeTest.php @@ -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 { diff --git a/tests/src/Util/BaseURLTest.php b/tests/src/Util/BaseURLTest.php index 1e74af39fe..7f63027fcb 100644 --- a/tests/src/Util/BaseURLTest.php +++ b/tests/src/Util/BaseURLTest.php @@ -1,9 +1,9 @@