Automatic push 4.3.4

This commit is contained in:
chevereto
2025-05-26 15:08:35 +00:00
parent 9a8aceaddb
commit 29a04d90b8
15 changed files with 94 additions and 92 deletions

View File

@@ -1,7 +0,0 @@
Chevereto 4.3.3 (2025-05-22)
- Added configurable cache stampede protection
- Added open_basedir section to /dashboard
- Fixed bug affecting binary conflicts with open_basedir restrictions
- Fixed bug affecting close button on modal boxes
- Improved binary detection display at /dashboard

5
.package/4.3.4.txt Normal file
View File

@@ -0,0 +1,5 @@
Chevereto 4.3.4 (2025-05-26)
- Added disable_functions detection at /dashboard
- Fixed layout issue on user profile pages when viewed on large screens
- Fixed incorrect alignment of the "powered by" footer on large screens

View File

@@ -25,8 +25,8 @@ class CustomTinkerwellDriver extends TinkerwellDriver
define('REPL', true);
require $projectPath . '/app/legacy/load/loader.php';
include loaderHandler(
_cookie: [],
_env: getCheveretoEnv(),
_cookie: [],
_files: [],
_get: [],
_post: [],

View File

@@ -16,8 +16,8 @@ define('ACCESS', 'web');
define('REPL', true);
require __DIR__ . '/legacy/load/loader.php';
include loaderHandler(
_cookie: [],
_env: getCheveretoEnv(),
_cookie: [],
_files: [],
_get: [],
_post: [],

28
app/composer.lock generated
View File

@@ -5200,16 +5200,16 @@
},
{
"name": "symfony/deprecation-contracts",
"version": "v3.5.1",
"version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6"
"reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6",
"reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
"reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
"shasum": ""
},
"require": {
@@ -5222,7 +5222,7 @@
"name": "symfony/contracts"
},
"branch-alias": {
"dev-main": "3.5-dev"
"dev-main": "3.6-dev"
}
},
"autoload": {
@@ -5247,7 +5247,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1"
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
},
"funding": [
{
@@ -5263,7 +5263,7 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:20:29+00:00"
"time": "2024-09-25T14:21:43+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -5803,16 +5803,16 @@
},
{
"name": "symfony/service-contracts",
"version": "v3.5.1",
"version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
"reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0"
"reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0",
"reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
"reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
"shasum": ""
},
"require": {
@@ -5830,7 +5830,7 @@
"name": "symfony/contracts"
},
"branch-alias": {
"dev-main": "3.5-dev"
"dev-main": "3.6-dev"
}
},
"autoload": {
@@ -5866,7 +5866,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/service-contracts/tree/v3.5.1"
"source": "https://github.com/symfony/service-contracts/tree/v3.6.0"
},
"funding": [
{
@@ -5882,7 +5882,7 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:20:29+00:00"
"time": "2025-04-25T09:37:31+00:00"
},
{
"name": "symfony/string",

View File

@@ -54,8 +54,8 @@ require_once __DIR__ . '/../load/php-boot.php';
set_error_handler(ThrowableHandler::ERROR_AS_EXCEPTION);
set_exception_handler(ThrowableHandler::CONSOLE);
require_once loaderHandler(
$_COOKIE,
getCheveretoEnv(),
$_COOKIE,
$_FILES,
$_GET,
$_POST,

View File

@@ -35,8 +35,8 @@ if (in_array($urlPath, ['/upgrading', '/upgrading/'], true)
exit;
}
require_once loaderHandler(
$_COOKIE,
getCheveretoEnv(),
$_COOKIE,
$_FILES,
$_GET,
$_POST,

View File

@@ -651,6 +651,7 @@ $settings_updates = [
'4.3.1' => null,
'4.3.2' => null,
'4.3.3' => null,
'4.3.4' => null,
];
/**

View File

@@ -9,5 +9,5 @@
* file that was distributed with this source code.
*/
const APP_VERSION = '4.3.3';
const APP_VERSION = '4.3.4';
const APP_VERSION_AKA = 'entrador';

View File

@@ -555,19 +555,6 @@ return function (Handler $handler) {
}
try {
$missing = [
'proc_open' => ! function_exists('proc_open'),
'proc_close' => ! function_exists('proc_close'),
];
$missing = array_filter($missing);
if ($missing) {
throw new Exception(
_s(
'PHP function [%s] not available in this PHP installation',
implode(', ', array_keys($missing))
)
);
}
if (! $isFFmpegError) {
$ffmpegErrors = [];
@@ -600,7 +587,7 @@ return function (Handler $handler) {
}
}
} catch (Throwable $e) {
$ffmpegContent .= '<span class="color-fail"><br><br>'
$ffmpegContent .= '<br><span class="color-fail"><i class="fas fa-warning"></i> '
. get_ffmpeg_error($e)
. '</span>';
}
@@ -626,7 +613,7 @@ return function (Handler $handler) {
try {
$exifTool = new ExifTool(env()['CHEVERETO_BINARY_EXIFTOOL']);
$exifToolContent .= '<br>version ' . $exifTool->version();
} catch (RuntimeException $e) {
} catch (Throwable $e) {
$exifToolContent .= '<br><span class="color-fail"><i class="fas fa-warning"></i> ' . $e->getMessage() . '</span>';
}
} else {
@@ -755,6 +742,19 @@ return function (Handler $handler) {
. '</span> <a href="https://www.php.net/manual/en/ini.core.php#ini.open-basedir" target="_blank">open_basedir</a>',
];
}
$missingFunctions = [
'proc_open' => ! function_exists('proc_open'),
'proc_close' => ! function_exists('proc_close'),
];
$missingFunctions = array_filter($missingFunctions);
if ($missingFunctions) {
$system_values_more['disable_functions'] = [
'label' => 'disable_functions',
'content' => '<span class="color-fail"><i class="fas fa-warning"></i> '
. implode(', ', array_keys($missingFunctions))
. '</span> <a href="https://www.php.net/manual/en/ini.core.php#ini.disable-functions" target="_blank">disable_functions</a>',
];
}
$pos = array_search('upload_max_filesize', array_keys($system_values), true);
array_splice($system_values, $pos, 0, $system_values_more);
}

View File

@@ -1040,36 +1040,18 @@ function isShowEmbedContent(): bool
function getCheveretoEnv(): array
{
$env = getenv();
return array_filter($env, function ($key) {
return array_filter(getenv(), function ($key) {
return strpos($key, 'CHEVERETO_') === 0;
}, ARRAY_FILTER_USE_KEY);
}
/**
* Process the server context and returns the handler file to load.
* Preload the application environment.
*
* @throws RuntimeException
*/
function loaderHandler(
array $_cookie,
array $_env,
array $_files,
array $_get,
array $_post,
array $_request,
array $_server,
array $_session,
): string {
$isHttps = strtolower($_server['HTTPS'] ?? '') === 'on'
|| ($_server['HTTP_X_FORWARDED_PROTO'] ?? '') === 'https'
|| preg_match('#https#i', $_server['HTTP_CF_VISITOR'] ?? '');
$imageLibrary = '';
if (extension_loaded('gd') && function_exists('gd_info')) {
$imageLibrary = 'gd';
}
if (extension_loaded('imagick')) {
$imageLibrary = 'imagick';
}
function preload(): void
{
setlocale(LC_ALL, 'en_US.UTF8');
define('APP_NAME', 'Chevereto');
define('PATH_PUBLIC', dirname(__DIR__, 3) . '/');
@@ -1091,22 +1073,49 @@ function loaderHandler(
define('PATH_PUBLIC_CONTENT_PAGES', PATH_PUBLIC_CONTENT . 'pages/');
define('PATH_PUBLIC_CONTENT_LEGACY_THEMES_PEAFOWL_LIB', PATH_PUBLIC_CONTENT . 'legacy/themes/Peafowl/lib/');
define('PATH_PUBLIC_CONTENT_LEGACY_THEMES', PATH_PUBLIC_CONTENT . 'legacy/themes/');
/** @var array $envDefault */
$envDefault = require PATH_APP . 'env-default.php';
$envDefault = array_merge($envDefault, [
'CHEVERETO_HOSTNAME' => $_server['SERVER_NAME'] ?? gethostname(),
'CHEVERETO_HTTPS' => (string) (int) $isHttps,
'CHEVERETO_IMAGE_LIBRARY' => $imageLibrary,
]);
define('ENV_DEFAULT', require PATH_APP . 'env-default.php');
$env = [];
$envFile = filePhpForPath(PATH_APP . 'env.php');
if ($envFile->file()->exists()) {
$filePhpReturn = new FilePhpReturn($envFile);
$env = $filePhpReturn->cast()->array();
}
$envVar = array_merge($envDefault, $env, $_env);
define('ENV', $env);
$imageLibrary = '';
if (extension_loaded('gd') && function_exists('gd_info')) {
$imageLibrary = 'gd';
}
if (extension_loaded('imagick')) {
$imageLibrary = 'imagick';
}
define('IMAGE_LIBRARY', $imageLibrary);
}
/**
* @return string The file to require.
*/
function loaderHandler(
array $_env,
array $_cookie,
array $_files,
array $_get,
array $_post,
array $_request,
array $_server,
array $_session,
): string {
preload();
$isHttps = strtolower($_server['HTTPS'] ?? '') === 'on'
|| ($_server['HTTP_X_FORWARDED_PROTO'] ?? '') === 'https'
|| preg_match('#https#i', $_server['HTTP_CF_VISITOR'] ?? '');
$envDefault = array_merge(ENV_DEFAULT, [
'CHEVERETO_HOSTNAME' => $_server['SERVER_NAME'] ?? gethostname(),
'CHEVERETO_HTTPS' => (string) (int) $isHttps,
'CHEVERETO_IMAGE_LIBRARY' => IMAGE_LIBRARY,
]);
$envVar = array_merge($envDefault, ENV, $_env);
$envVar['CHEVERETO_ID'] = $_env['CHEVERETO_ID']
?? $env['CHEVERETO_ID']
?? ENV['CHEVERETO_ID']
?? $_server['CHEVERETO_ID']
?? '';
$envVar['CHEVERETO_ID_HANDLE'] = '';
@@ -1150,23 +1159,14 @@ function loaderHandler(
));
$iniToChevereto = [
'error_log' => 'CHEVERETO_ERROR_LOG',
'max_execution_time' => 'CHEVERETO_MAX_EXECUTION_TIME_SECONDS',
'memory_limit' => 'CHEVERETO_MAX_MEMORY_SIZE',
'post_max_size' => 'CHEVERETO_MAX_POST_SIZE',
'session.save_handler' => 'CHEVERETO_SESSION_SAVE_HANDLER',
'session.save_path' => 'CHEVERETO_SESSION_SAVE_PATH',
// 'max_execution_time' => 'CHEVERETO_MAX_EXECUTION_TIME_SECONDS',
// 'session.save_handler' => 'CHEVERETO_SESSION_SAVE_HANDLER',
// 'session.save_path' => 'CHEVERETO_SESSION_SAVE_PATH',
// 'upload_max_filesize' => 'CHEVERETO_MAX_UPLOAD_FILE_SIZE', // INI_PERDIR
];
$isCLI = PHP_SAPI === 'cli';
$iniToSkip = [
'max_execution_time' => $isCLI,
'session.save_handler' => $isCLI,
'session.save_path' => $isCLI,
];
foreach ($iniToChevereto as $iniOption => $envName) {
if (($iniToSkip[$iniOption] ?? false) === true) {
continue;
}
if (! function_exists('ini_get')
|| ! function_exists('ini_set')
) {
@@ -1225,7 +1225,7 @@ function loaderHandler(
}
}
new EnvVar($envVar);
new ServerVar(array_merge($envDefault, $env, $_server));
new ServerVar(array_merge($envDefault, ENV, $_server));
new CookieVar($_cookie);
new RequestVar($_request);
new PostVar($_post);

View File

@@ -4490,14 +4490,16 @@ a.top-user-avatar {
}
.phone .top-user,
.laptop .top-user:not(.no-background),
.desktop .top-user:not(.no-background),
.laptop .top-user:not(.no-background) {
.largescreen .top-user:not(.no-background) {
-webkit-padding-start: 0;
padding-inline-start: 0;
}
.desktop .top-user:not(.no-background) .top-user-avatar,
.laptop .top-user:not(.no-background) .top-user-avatar {
.laptop .top-user:not(.no-background) .top-user-avatar,
.largescreen .top-user:not(.no-background) .top-user-avatar {
position: absolute;
left: 50%;
-webkit-margin-start: calc(-0.5em - 10px);

File diff suppressed because one or more lines are too long

View File

@@ -1587,7 +1587,8 @@ body#maintenance, body#consent-screen {
.tablet .footer,
.laptop .footer,
.desktop .footer {
.desktop .footer,
.largescreen .footer {
text-align: right;
}

File diff suppressed because one or more lines are too long