Version 4.7.23

This commit is contained in:
Neo committed 2025-12-19 16:21:27 -08:00
1 parent 7124a02564
commit 25ddeb65d6
1791 files changed
+76990 -44452

No files matched your search

+36 -19
View File
@@ -237,31 +237,43 @@ class _Request extends \IPS\Patterns\Singleton
{
$url = $this->isSecure() ? 'https' : 'http';
$url .= '://';
$ruleMatched = FALSE;
/* Nginx uses HTTP_X_FORWARDED_SERVER. @see <a href='https://plone.lucidsolutions.co.nz/web/reverseproxyandcache/setting-nginx-http-x-forward-headers-for-reverse-proxy'>Nginx Reverse Proxy</a> */
if ( !empty( $_SERVER['HTTP_X_FORWARDED_SERVER'] ) )
if ( !\IPS\CIC )
{
if ( isset( $_SERVER['HTTP_X_FORWARDED_HOST'] ) AND mb_strstr( $_SERVER['HTTP_X_FORWARDED_HOST'], ':' ) === FALSE )
if ( !empty( $_SERVER['HTTP_X_FORWARDED_SERVER'] ) )
{
$url .= $_SERVER['HTTP_X_FORWARDED_HOST'];
if ( !empty( $_SERVER['HTTP_X_FORWARDED_HOST'] ) and $host = filter_var( $_SERVER['HTTP_X_FORWARDED_HOST'], FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME | FILTER_NULL_ON_FAILURE ) )
{
$url .= $host;
$ruleMatched = TRUE;
}
elseif ( $server = filter_var( $_SERVER['HTTP_X_FORWARDED_SERVER'], FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME | FILTER_NULL_ON_FAILURE ) )
{
$url .= $server;
$ruleMatched = TRUE;
}
}
elseif ( !empty( $_SERVER['HTTP_X_FORWARDED_HOST'] ) and $host = filter_var( $_SERVER['HTTP_X_FORWARDED_HOST'], FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME | FILTER_NULL_ON_FAILURE ) )
{
$url .= $host;
$ruleMatched = TRUE;
}
}
/* Probably not Nginx and can use normal headers */
if( !$ruleMatched )
{
if ( !empty( $_SERVER['HTTP_HOST'] ) )
{
$url .= $_SERVER['HTTP_HOST'];
}
else
{
$url .= $_SERVER['HTTP_X_FORWARDED_SERVER'];
$url .= $_SERVER['SERVER_NAME'];
}
}
elseif ( !empty( $_SERVER['HTTP_X_FORWARDED_HOST'] ) )
{
$url .= $_SERVER['HTTP_X_FORWARDED_HOST'];
}
elseif ( !empty( $_SERVER['HTTP_HOST'] ) )
{
$url .= $_SERVER['HTTP_HOST'];
}
else
{
$url .= $_SERVER['SERVER_NAME'];
}
if ( $_SERVER['QUERY_STRING'] AND mb_strpos( $_SERVER['REQUEST_URI'], $_SERVER['QUERY_STRING'] ) !== FALSE )
{
@@ -468,9 +480,14 @@ class _Request extends \IPS\Patterns\Singleton
/* Check wildcard cookies */
foreach( static::getEssentialCookies() as $c )
{
if( mb_substr( $c, -1, 1 ) === '*' AND rtrim( $name, '*' ) === $name )
if (str_ends_with($c, '*'))
{
return FALSE;
$prefix = mb_substr($c, 0, -1);
if( str_starts_with($name, $prefix ) )
{
return false;
}
}
}
@@ -554,7 +571,7 @@ class _Request extends \IPS\Patterns\Singleton
{
$groupFloodSeconds = \IPS\Member::loggedIn()->group['g_search_flood'];
if ( \IPS\Session::i()->userAgent->spider )
if ( \IPS\Session::i()->userAgent->bot )
{
/* Force a 30 second flood control so if guests have it switched off, or set very low, you do not get flooded by known bots */
$groupFloodSeconds = \IPS\BOT_SEARCH_FLOOD_SECONDS;