Browse Source

Moved BaseURL to App namespace (because similar type as Arguments/Modules/Modes)

tags/2019.09
Philipp Holzer 1 year ago
parent
commit
08be92a862
No known key found for this signature in database GPG Key ID: D8365C3D36B77D90
12 changed files with 73 additions and 51 deletions
  1. +5
    -13
      src/App.php
  2. +50
    -15
      src/App/BaseURL.php
  3. +1
    -3
      src/Core/Session.php
  4. +1
    -1
      src/Core/System.php
  5. +1
    -1
      src/Model/Contact.php
  6. +5
    -6
      src/Module/Admin/Site.php
  7. +3
    -4
      src/Module/Install.php
  8. +1
    -1
      src/Protocol/DFRN.php
  9. +3
    -3
      static/dependencies.config.php
  10. +1
    -2
      tests/src/Console/AutomaticInstallationConsoleTest.php
  11. +1
    -1
      tests/src/Content/Text/BBCodeTest.php
  12. +1
    -1
      tests/src/Util/BaseURLTest.php

+ 5
- 13
src/App.php View File

@@ -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);
}

/**


src/Util/BaseURL.php → src/App/BaseURL.php View File

@@ -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;
}
}
}

+ 1
- 3
src/Core/Session.php View File

@@ -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);
}



+ 1
- 1
src/Core/System.php View File

@@ -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;

/**


+ 1
- 1
src/Model/Contact.php View File

@@ -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;


+ 5
- 6
src/Module/Admin/Site.php View File

@@ -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 = [


+ 3
- 4
src/Module/Install.php View File

@@ -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');


+ 1
- 1
src/Protocol/DFRN.php View File

@@ -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;


+ 3
- 3
static/dependencies.config.php View File

@@ -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,
],


+ 1
- 2
tests/src/Console/AutomaticInstallationConsoleTest.php View File

@@ -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);
}



+ 1
- 1
tests/src/Content/Text/BBCodeTest.php View File

@@ -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
- 1
tests/src/Util/BaseURLTest.php View File

@@ -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…
Cancel
Save