Merge remote-tracking branch 'origin/main' into v2.2

This commit is contained in:
Michael Kaufmann
2025-07-08 09:00:20 +02:00
13 changed files with 148 additions and 79 deletions

View File

@@ -177,6 +177,10 @@ return [
'type' => 'text', 'type' => 'text',
'default' => 'froxlorlocal', 'default' => 'froxlorlocal',
'string_emptyallowed' => false, 'string_emptyallowed' => false,
'plausibility_check_method' => [
'\\Froxlor\\Validate\\Check',
'checkSystemUsername'
],
'save_method' => 'storeSettingWebserverFcgidFpmUser', 'save_method' => 'storeSettingWebserverFcgidFpmUser',
'websrv_avail' => [ 'websrv_avail' => [
'apache2' 'apache2'
@@ -246,6 +250,10 @@ return [
'type' => 'text', 'type' => 'text',
'default' => 'froxlorlocal', 'default' => 'froxlorlocal',
'string_emptyallowed' => false, 'string_emptyallowed' => false,
'plausibility_check_method' => [
'\\Froxlor\\Validate\\Check',
'checkSystemUsername'
],
'save_method' => 'storeSettingWebserverFcgidFpmUser', 'save_method' => 'storeSettingWebserverFcgidFpmUser',
'visible' => Settings::Get('phpfpm.enabled') && call_user_func([ 'visible' => Settings::Get('phpfpm.enabled') && call_user_func([
'\Froxlor\Settings\FroxlorVhostSettings', '\Froxlor\Settings\FroxlorVhostSettings',

View File

@@ -104,6 +104,10 @@ return [
'varname' => 'httpuser', 'varname' => 'httpuser',
'type' => 'text', 'type' => 'text',
'default' => 'www-data', 'default' => 'www-data',
'plausibility_check_method' => [
'\\Froxlor\\Validate\\Check',
'checkSystemUsername'
],
'save_method' => 'storeSettingWebserverFcgidFpmUser' 'save_method' => 'storeSettingWebserverFcgidFpmUser'
], ],
'system_httpgroup' => [ 'system_httpgroup' => [

148
composer.lock generated
View File

@@ -201,16 +201,16 @@
}, },
{ {
"name": "league/commonmark", "name": "league/commonmark",
"version": "2.6.2", "version": "2.7.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/thephpleague/commonmark.git", "url": "https://github.com/thephpleague/commonmark.git",
"reference": "06c3b0bf2540338094575612f4a1778d0d2d5e94" "reference": "6fbb36d44824ed4091adbcf4c7d4a3923cdb3405"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/06c3b0bf2540338094575612f4a1778d0d2d5e94", "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/6fbb36d44824ed4091adbcf4c7d4a3923cdb3405",
"reference": "06c3b0bf2540338094575612f4a1778d0d2d5e94", "reference": "6fbb36d44824ed4091adbcf4c7d4a3923cdb3405",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -247,7 +247,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-main": "2.7-dev" "dev-main": "2.8-dev"
} }
}, },
"autoload": { "autoload": {
@@ -304,7 +304,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-04-18T21:09:27+00:00" "time": "2025-05-05T12:20:28+00:00"
}, },
{ {
"name": "league/config", "name": "league/config",
@@ -624,20 +624,20 @@
}, },
{ {
"name": "pear/net_dns2", "name": "pear/net_dns2",
"version": "v1.5.4", "version": "v1.5.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/mikepultz/netdns2.git", "url": "https://github.com/mikepultz/netdns2.git",
"reference": "c4a167ff1bc93aaae95601ebc86099376c994581" "reference": "ea39ef5a97d5c2b9893a8c35af7b5fd5b0e40bc9"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/mikepultz/netdns2/zipball/c4a167ff1bc93aaae95601ebc86099376c994581", "url": "https://api.github.com/repos/mikepultz/netdns2/zipball/ea39ef5a97d5c2b9893a8c35af7b5fd5b0e40bc9",
"reference": "c4a167ff1bc93aaae95601ebc86099376c994581", "reference": "ea39ef5a97d5c2b9893a8c35af7b5fd5b0e40bc9",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.4" "php": ">=7.1"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^9" "phpunit/phpunit": "^9"
@@ -671,7 +671,7 @@
"issues": "https://github.com/mikepultz/netdns2/issues", "issues": "https://github.com/mikepultz/netdns2/issues",
"source": "https://github.com/mikepultz/netdns2" "source": "https://github.com/mikepultz/netdns2"
}, },
"time": "2023-10-01T05:15:14+00:00" "time": "2025-05-17T20:56:28+00:00"
}, },
{ {
"name": "phpmailer/phpmailer", "name": "phpmailer/phpmailer",
@@ -1140,7 +1140,7 @@
}, },
{ {
"name": "symfony/polyfill-ctype", "name": "symfony/polyfill-ctype",
"version": "v1.31.0", "version": "v1.32.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git", "url": "https://github.com/symfony/polyfill-ctype.git",
@@ -1199,7 +1199,7 @@
"portable" "portable"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0"
}, },
"funding": [ "funding": [
{ {
@@ -1219,16 +1219,16 @@
}, },
{ {
"name": "symfony/polyfill-iconv", "name": "symfony/polyfill-iconv",
"version": "v1.31.0", "version": "v1.32.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-iconv.git", "url": "https://github.com/symfony/polyfill-iconv.git",
"reference": "48becf00c920479ca2e910c22a5a39e5d47ca956" "reference": "5f3b930437ae03ae5dff61269024d8ea1b3774aa"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/48becf00c920479ca2e910c22a5a39e5d47ca956", "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/5f3b930437ae03ae5dff61269024d8ea1b3774aa",
"reference": "48becf00c920479ca2e910c22a5a39e5d47ca956", "reference": "5f3b930437ae03ae5dff61269024d8ea1b3774aa",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -1279,7 +1279,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-iconv/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-iconv/tree/v1.32.0"
}, },
"funding": [ "funding": [
{ {
@@ -1295,11 +1295,11 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-09T11:45:10+00:00" "time": "2024-09-17T14:58:18+00:00"
}, },
{ {
"name": "symfony/polyfill-intl-grapheme", "name": "symfony/polyfill-intl-grapheme",
"version": "v1.31.0", "version": "v1.32.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
@@ -1357,7 +1357,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0"
}, },
"funding": [ "funding": [
{ {
@@ -1377,7 +1377,7 @@
}, },
{ {
"name": "symfony/polyfill-intl-normalizer", "name": "symfony/polyfill-intl-normalizer",
"version": "v1.31.0", "version": "v1.32.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
@@ -1438,7 +1438,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0"
}, },
"funding": [ "funding": [
{ {
@@ -1458,19 +1458,20 @@
}, },
{ {
"name": "symfony/polyfill-mbstring", "name": "symfony/polyfill-mbstring",
"version": "v1.31.0", "version": "v1.32.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git", "url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-iconv": "*",
"php": ">=7.2" "php": ">=7.2"
}, },
"provide": { "provide": {
@@ -1518,7 +1519,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0"
}, },
"funding": [ "funding": [
{ {
@@ -1534,7 +1535,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-09T11:45:10+00:00" "time": "2024-12-23T08:48:59+00:00"
}, },
{ {
"name": "symfony/polyfill-php72", "name": "symfony/polyfill-php72",
@@ -1603,7 +1604,7 @@
}, },
{ {
"name": "symfony/polyfill-php73", "name": "symfony/polyfill-php73",
"version": "v1.31.0", "version": "v1.32.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php73.git", "url": "https://github.com/symfony/polyfill-php73.git",
@@ -1659,7 +1660,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php73/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-php73/tree/v1.32.0"
}, },
"funding": [ "funding": [
{ {
@@ -1679,16 +1680,16 @@
}, },
{ {
"name": "symfony/polyfill-php80", "name": "symfony/polyfill-php80",
"version": "v1.31.0", "version": "v1.32.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php80.git", "url": "https://github.com/symfony/polyfill-php80.git",
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -1739,7 +1740,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0"
}, },
"funding": [ "funding": [
{ {
@@ -1755,11 +1756,11 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-09T11:45:10+00:00" "time": "2025-01-02T08:10:11+00:00"
}, },
{ {
"name": "symfony/polyfill-php81", "name": "symfony/polyfill-php81",
"version": "v1.31.0", "version": "v1.32.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php81.git", "url": "https://github.com/symfony/polyfill-php81.git",
@@ -1815,7 +1816,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-php81/tree/v1.32.0"
}, },
"funding": [ "funding": [
{ {
@@ -2561,16 +2562,16 @@
}, },
{ {
"name": "myclabs/deep-copy", "name": "myclabs/deep-copy",
"version": "1.13.0", "version": "1.13.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/myclabs/DeepCopy.git", "url": "https://github.com/myclabs/DeepCopy.git",
"reference": "024473a478be9df5fdaca2c793f2232fe788e414" "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/1720ddd719e16cf0db4eb1c6eca108031636d46c",
"reference": "024473a478be9df5fdaca2c793f2232fe788e414", "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2609,7 +2610,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/myclabs/DeepCopy/issues", "issues": "https://github.com/myclabs/DeepCopy/issues",
"source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" "source": "https://github.com/myclabs/DeepCopy/tree/1.13.1"
}, },
"funding": [ "funding": [
{ {
@@ -2617,20 +2618,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-02-12T12:17:51+00:00" "time": "2025-04-29T12:36:36+00:00"
}, },
{ {
"name": "nikic/php-parser", "name": "nikic/php-parser",
"version": "v5.4.0", "version": "v5.5.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nikic/PHP-Parser.git", "url": "https://github.com/nikic/PHP-Parser.git",
"reference": "447a020a1f875a434d62f2a401f53b82a396e494" "reference": "ae59794362fe85e051a58ad36b289443f57be7a9"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9",
"reference": "447a020a1f875a434d62f2a401f53b82a396e494", "reference": "ae59794362fe85e051a58ad36b289443f57be7a9",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2673,9 +2674,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/nikic/PHP-Parser/issues", "issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0"
}, },
"time": "2024-12-30T11:07:19+00:00" "time": "2025-05-31T08:24:38+00:00"
}, },
{ {
"name": "pdepend/pdepend", "name": "pdepend/pdepend",
@@ -2979,6 +2980,7 @@
"type": "github" "type": "github"
} }
], ],
"abandoned": true,
"time": "2020-12-07T05:51:20+00:00" "time": "2020-12-07T05:51:20+00:00"
}, },
{ {
@@ -3066,16 +3068,16 @@
}, },
{ {
"name": "phpstan/phpstan", "name": "phpstan/phpstan",
"version": "1.12.25", "version": "1.12.27",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpstan/phpstan.git", "url": "https://github.com/phpstan/phpstan.git",
"reference": "e310849a19e02b8bfcbb63147f495d8f872dd96f" "reference": "3a6e423c076ab39dfedc307e2ac627ef579db162"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/e310849a19e02b8bfcbb63147f495d8f872dd96f", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/3a6e423c076ab39dfedc307e2ac627ef579db162",
"reference": "e310849a19e02b8bfcbb63147f495d8f872dd96f", "reference": "3a6e423c076ab39dfedc307e2ac627ef579db162",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3120,7 +3122,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-04-27T12:20:45+00:00" "time": "2025-05-21T20:51:45+00:00"
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
@@ -3443,16 +3445,16 @@
}, },
{ {
"name": "phpunit/phpunit", "name": "phpunit/phpunit",
"version": "9.6.22", "version": "9.6.23",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git", "url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c" "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f80235cb4d3caa59ae09be3adf1ded27521d1a9c", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/43d2cb18d0675c38bd44982a5d1d88f6d53d8d95",
"reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c", "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3463,7 +3465,7 @@
"ext-mbstring": "*", "ext-mbstring": "*",
"ext-xml": "*", "ext-xml": "*",
"ext-xmlwriter": "*", "ext-xmlwriter": "*",
"myclabs/deep-copy": "^1.12.1", "myclabs/deep-copy": "^1.13.1",
"phar-io/manifest": "^2.0.4", "phar-io/manifest": "^2.0.4",
"phar-io/version": "^3.2.1", "phar-io/version": "^3.2.1",
"php": ">=7.3", "php": ">=7.3",
@@ -3526,7 +3528,7 @@
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues", "issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy", "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.22" "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.23"
}, },
"funding": [ "funding": [
{ {
@@ -3537,12 +3539,20 @@
"url": "https://github.com/sebastianbergmann", "url": "https://github.com/sebastianbergmann",
"type": "github" "type": "github"
}, },
{
"url": "https://liberapay.com/sebastianbergmann",
"type": "liberapay"
},
{
"url": "https://thanks.dev/u/gh/sebastianbergmann",
"type": "thanks_dev"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-12-05T13:48:26+00:00" "time": "2025-05-02T06:40:34+00:00"
}, },
{ {
"name": "sebastian/cli-parser", "name": "sebastian/cli-parser",
@@ -4571,16 +4581,16 @@
}, },
{ {
"name": "squizlabs/php_codesniffer", "name": "squizlabs/php_codesniffer",
"version": "3.12.2", "version": "3.13.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
"reference": "6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa" "reference": "65ff2489553b83b4597e89c3b8b721487011d186"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa", "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/65ff2489553b83b4597e89c3b8b721487011d186",
"reference": "6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa", "reference": "65ff2489553b83b4597e89c3b8b721487011d186",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -4651,7 +4661,7 @@
"type": "thanks_dev" "type": "thanks_dev"
} }
], ],
"time": "2025-04-13T04:10:18+00:00" "time": "2025-05-11T03:36:00+00:00"
}, },
{ {
"name": "symfony/config", "name": "symfony/config",

View File

@@ -42,7 +42,7 @@ final class RunApiCommand extends CliCommand
$this->setDescription('Run an API command as given user'); $this->setDescription('Run an API command as given user');
$this->addArgument('user', InputArgument::REQUIRED, 'Loginname of the user you want to run the command as') $this->addArgument('user', InputArgument::REQUIRED, 'Loginname of the user you want to run the command as')
->addArgument('api-command', InputArgument::REQUIRED, 'The command to execute in the form "Module.function"') ->addArgument('api-command', InputArgument::REQUIRED, 'The command to execute in the form "Module.function"')
->addArgument('parameters', InputArgument::OPTIONAL, 'Paramaters to pass to the command as JSON array'); ->addArgument('parameters', InputArgument::OPTIONAL, 'Parameters to pass to the command as JSON array');
$this->addOption('show-params', 's', InputOption::VALUE_NONE, 'Show possible parameters for given api-command (given command will *not* be called)'); $this->addOption('show-params', 's', InputOption::VALUE_NONE, 'Show possible parameters for given api-command (given command will *not* be called)');
} }

View File

@@ -83,7 +83,7 @@ final class UpdateCommand extends CliCommand
} }
return $result; return $result;
} }
$output->writeln('<info>' . lng('update.noupdatesavail', (Settings::Get('system.update_channel') == 'testing' ? lng('serversettings.uc_testing') . ' ' : '')) . '</>'); $output->writeln('<info>' . lng('update.noupdatesavail', [(Settings::Get('system.update_channel') == 'testing' ? lng('serversettings.uc_testing') . ' ' : '')]) . '</>');
} }
return $result; return $result;
} }
@@ -190,7 +190,8 @@ final class UpdateCommand extends CliCommand
$question = new ConfirmationQuestion('Update database? [no] ', false, '/^(y|j)/i'); $question = new ConfirmationQuestion('Update database? [no] ', false, '/^(y|j)/i');
if ($yestoall || $helper->ask($input, $output, $question)) { if ($yestoall || $helper->ask($input, $output, $question)) {
$result = $this->runUpdate($output, true); // run in separate process to ensure the use of newly unpacked files
passthru(Froxlor::getInstallDir() . '/bin/froxlor-cli froxlor:update -dA', $result);
} }
} else { } else {
$errmsg = 'error.autoupdate_' . $auex; $errmsg = 'error.autoupdate_' . $auex;

View File

@@ -435,7 +435,7 @@ class Nginx extends HttpConfigBase
$sslsettings .= '";' . "\n"; $sslsettings .= '";' . "\n";
} }
if ((isset($domain_or_ip['ocsp_stapling']) && $domain_or_ip['ocsp_stapling'] == "1") || (isset($domain_or_ip['letsencrypt']) && $domain_or_ip['letsencrypt'] == "1")) { if ((isset($domain_or_ip['ocsp_stapling']) && $domain_or_ip['ocsp_stapling'] == "1")) {
$sslsettings .= "\t" . 'ssl_stapling on;' . "\n"; $sslsettings .= "\t" . 'ssl_stapling on;' . "\n";
$sslsettings .= "\t" . 'ssl_stapling_verify on;' . "\n"; $sslsettings .= "\t" . 'ssl_stapling_verify on;' . "\n";
$sslsettings .= "\t" . 'ssl_trusted_certificate ' . FileDir::makeCorrectFile($domain_or_ip['ssl_cert_file']) . ';' . "\n"; $sslsettings .= "\t" . 'ssl_trusted_certificate ' . FileDir::makeCorrectFile($domain_or_ip['ssl_cert_file']) . ';' . "\n";

View File

@@ -274,8 +274,8 @@ pm.max_children = 1
$fpm_config .= "\n\n"; $fpm_config .= "\n\n";
foreach ($phpini_array as $inisection) { foreach ($phpini_array as $inisection) {
$is = explode("=", trim($inisection)); $is = explode("=", trim($inisection), 2);
if (count($is) !== 2 || empty($is[0])) { if (empty($is[0])) {
continue; continue;
} }
foreach ($this->ini as $sec => $possibles) { foreach ($this->ini as $sec => $possibles) {

View File

@@ -359,4 +359,41 @@ class Check
return [self::FORMFIELDS_PLAUSIBILITY_CHECK_OK]; return [self::FORMFIELDS_PLAUSIBILITY_CHECK_OK];
} }
/**
* @param $fieldname
* @param $fielddata
* @param $newfieldvalue
* @param $allnewfieldvalues
* @return array|int[]
* @throws \Exception
*/
public static function checkSystemUsername($fieldname, $fielddata, $newfieldvalue, $allnewfieldvalues)
{
if (empty($newfieldvalue) || $fielddata['value'] == $newfieldvalue) {
$returnvalue = [
self::FORMFIELDS_PLAUSIBILITY_CHECK_OK
];
} elseif (function_exists('posix_getpwnam') && posix_getpwnam($newfieldvalue) == false) {
$returnvalue = [
self::FORMFIELDS_PLAUSIBILITY_CHECK_ERROR,
'local_user_invalid'
];
} else {
// user exists, but cannot be one of the froxlor-customers
$sel_stmt = Database::prepare("SELECT COUNT(*) as numUsers FROM `" . TABLE_PANEL_CUSTOMERS . "` WHERE `loginname` = :username");
$result = Database::pexecute_first($sel_stmt, [':username' => $newfieldvalue]);
if ($result && $result['numUsers'] > 0) {
$returnvalue = [
self::FORMFIELDS_PLAUSIBILITY_CHECK_ERROR,
'local_user_isfroxloruser'
];
} else {
$returnvalue = [
self::FORMFIELDS_PLAUSIBILITY_CHECK_OK
];
}
}
return $returnvalue;
}
} }

View File

@@ -437,7 +437,7 @@ return [
'section_d' => [ 'section_d' => [
'title' => lng('admin.nameserversettings'), 'title' => lng('admin.nameserversettings'),
'image' => 'icons/domain_edit.png', 'image' => 'icons/domain_edit.png',
'visible' => ($userinfo['change_serversettings'] == '1' && Settings::Get('system.bind_enable') == '1') || ($result['isemaildomain'] == '1' && (Settings::Get('spf.use_spf') == '1' || Settings::Get('dmarc.use_dmarc') == '1' || (Settings::Get('antispam.activated') == '1' && $result['dkim'] == '1' && $result['dkim_pubkey'] != ''))), 'visible' => ($userinfo['change_serversettings'] == '1' && Settings::Get('system.bind_enable') == '1') || ($result['isemaildomain'] == '1' && (Settings::Get('spf.use_spf') == '1' || Settings::Get('dmarc.use_dmarc') == '1') || Settings::Get('antispam.activated') == '1' && $result['dkim'] == '1' && $result['dkim_pubkey'] != ''),
'fields' => [ 'fields' => [
'isbinddomain' => [ 'isbinddomain' => [
'visible' => $userinfo['change_serversettings'] == '1' && Settings::Get('system.bind_enable') == '1', 'visible' => $userinfo['change_serversettings'] == '1' && Settings::Get('system.bind_enable') == '1',
@@ -466,7 +466,7 @@ return [
'value' => (string)(new \Froxlor\Dns\DnsEntry('_dmarc', 'TXT', \Froxlor\Dns\Dns::encloseTXTContent(Settings::Get('dmarc.dmarc_entry')))) 'value' => (string)(new \Froxlor\Dns\DnsEntry('_dmarc', 'TXT', \Froxlor\Dns\Dns::encloseTXTContent(Settings::Get('dmarc.dmarc_entry'))))
], ],
'dkim_entry' => [ 'dkim_entry' => [
'visible' => (Settings::Get('antispam.activated') == '1' && $result['dkim'] == '1' && $result['dkim_pubkey'] != '' && $result['isemaildomain'] == '1'), 'visible' => (Settings::Get('antispam.activated') == '1' && $result['dkim'] == '1' && $result['dkim_pubkey'] != ''),
'label' => lng('antispam.required_dkim_dns'), 'label' => lng('antispam.required_dkim_dns'),
'type' => 'longtext', 'type' => 'longtext',
'value' => (string)(new \Froxlor\Dns\DnsEntry('dkim' . $result['dkim_id'] . '._domainkey', 'TXT', \Froxlor\Dns\Dns::encloseTXTContent('v=DKIM1; k=rsa; p='.trim($result['dkim_pubkey'])))) 'value' => (string)(new \Froxlor\Dns\DnsEntry('dkim' . $result['dkim_id'] . '._domainkey', 'TXT', \Froxlor\Dns\Dns::encloseTXTContent('v=DKIM1; k=rsa; p='.trim($result['dkim_pubkey']))))

View File

@@ -111,7 +111,7 @@ return [
'step' => 0.1, 'step' => 0.1,
'value' => $result['spam_tag_level'], 'value' => $result['spam_tag_level'],
], ],
'spam_rewrite_subject' => [ 'rewrite_subject' => [
'visible' => Settings::Get('antispam.activated') == '1' && (int)Settings::Get('antispam.default_spam_rewrite_subject') <= 2, 'visible' => Settings::Get('antispam.activated') == '1' && (int)Settings::Get('antispam.default_spam_rewrite_subject') <= 2,
'label' => lng('antispam.rewrite_subject'), 'label' => lng('antispam.rewrite_subject'),
'type' => 'checkbox', 'type' => 'checkbox',

View File

@@ -966,6 +966,8 @@ return [
'no_wwwcnamae_ifwwwalias' => 'Es kann kein CNAME Eintrag für "www" angelegt werden, da die Domain einen www-Alias aktiviert hat. Ändere diese Einstellung auf "Kein Alias" oder "Wildcard Alias"', 'no_wwwcnamae_ifwwwalias' => 'Es kann kein CNAME Eintrag für "www" angelegt werden, da die Domain einen www-Alias aktiviert hat. Ändere diese Einstellung auf "Kein Alias" oder "Wildcard Alias"',
'local_group_exists' => 'Die angegebene Gruppe existiert bereits auf dem System', 'local_group_exists' => 'Die angegebene Gruppe existiert bereits auf dem System',
'local_group_invalid' => 'Der angegebene Gruppen-Name ist nicht gültig', 'local_group_invalid' => 'Der angegebene Gruppen-Name ist nicht gültig',
'local_user_invalid' => 'Der angegebene Benutzer-Name ist nicht gültig oder existiert nicht',
'local_user_isfroxloruser' => 'Der angegebene Benutzer-Name ist ein von froxlor verwalteter Benutzer und kann in diesem Kontext nicht verwendet werden.',
'invaliddnsforletsencrypt' => 'Die DNS-Einträge der Domain enthalten keine der gewählten IP Adressen. Let\'s Encrypt Zertifikats-Erstellung ist nicht möglich.', 'invaliddnsforletsencrypt' => 'Die DNS-Einträge der Domain enthalten keine der gewählten IP Adressen. Let\'s Encrypt Zertifikats-Erstellung ist nicht möglich.',
'notallowedphpconfigused' => 'Nutzung einer PHP-Konfiguration welche nicht dem Kunden zugeordnet ist', 'notallowedphpconfigused' => 'Nutzung einer PHP-Konfiguration welche nicht dem Kunden zugeordnet ist',
'pathmustberelative' => 'Der Benutzer hat nicht die benötigten Berechtigungen, um Pfade außerhalb des Kunden-Heimatverzeichnisses anzugeben. Bitte einen relativen Pfad angeben (kein führendes /).', 'pathmustberelative' => 'Der Benutzer hat nicht die benötigten Berechtigungen, um Pfade außerhalb des Kunden-Heimatverzeichnisses anzugeben. Bitte einen relativen Pfad angeben (kein führendes /).',
@@ -2108,7 +2110,7 @@ Vielen Dank, Ihr Administrator',
'description' => 'Ist die Nutzung eines hochgeladenen Logos gewünscht, muss diese Einstellung auf "Ja" gesetzt werden. Alternativ kann weiterhin das Theme-basierte Überschreiben via "logo_custom.png" und "logo_custom_login.png" genutzt werden.', 'description' => 'Ist die Nutzung eines hochgeladenen Logos gewünscht, muss diese Einstellung auf "Ja" gesetzt werden. Alternativ kann weiterhin das Theme-basierte Überschreiben via "logo_custom.png" und "logo_custom_login.png" genutzt werden.',
], ],
'logo_overridecustom' => [ 'logo_overridecustom' => [
'title' => 'Überschreibe benutzerdefinierte Theme-Logos (logo_custom.png und logo_custom_login.png) mit "Logo Bold" (Header und Login, siehe unten)', 'title' => 'Überschreibe benutzerdefinierte Theme-Logos (logo_custom.png und logo_custom_login.png) mit "Logo Bild" (Header und Login, siehe unten)',
'description' => 'Ist diese Einstellung aktiv, werden benutzerdefinierte Logos im Theme-Ordner mit dem "Logo Bild" ersetzt', 'description' => 'Ist diese Einstellung aktiv, werden benutzerdefinierte Logos im Theme-Ordner mit dem "Logo Bild" ersetzt',
], ],
'createstdsubdom_default' => [ 'createstdsubdom_default' => [

View File

@@ -1039,6 +1039,8 @@ return [
'no_wwwcnamae_ifwwwalias' => 'Cannot set CNAME record for "www" as domain is set to generate a www-alias. Please change settings to either "No alias" or "Wildcard alias"', 'no_wwwcnamae_ifwwwalias' => 'Cannot set CNAME record for "www" as domain is set to generate a www-alias. Please change settings to either "No alias" or "Wildcard alias"',
'local_group_exists' => 'The given group already exists on the system.', 'local_group_exists' => 'The given group already exists on the system.',
'local_group_invalid' => 'The given group name is invalid', 'local_group_invalid' => 'The given group name is invalid',
'local_user_invalid' => 'The given user name is invalid or does not exist',
'local_user_isfroxloruser' => 'The given user name is a froxlor managed username and cannot be used in this context',
'invaliddnsforletsencrypt' => 'The domains DNS does not include any of the chosen IP addresses. Let\'s Encrypt certificate generation not possible.', 'invaliddnsforletsencrypt' => 'The domains DNS does not include any of the chosen IP addresses. Let\'s Encrypt certificate generation not possible.',
'notallowedphpconfigused' => 'Trying to use php-config which is not assigned to customer', 'notallowedphpconfigused' => 'Trying to use php-config which is not assigned to customer',
'pathmustberelative' => 'The user does not have the permission to specify directories outside the customers home-directory. Please specify a relative path (no leading /).', 'pathmustberelative' => 'The user does not have the permission to specify directories outside the customers home-directory. Please specify a relative path (no leading /).',

View File

@@ -2045,6 +2045,11 @@ Jelszó: {USR_PASS}
'description' => 'Parancs a cronjobjaink végrehajtásához. Csak akkor változtassa meg, ha tudja, mit csinál (alapértelmezett: "/usr/bin/nice -n 5 /usr/bin/php -q")!', 'description' => 'Parancs a cronjobjaink végrehajtásához. Csak akkor változtassa meg, ha tudja, mit csinál (alapértelmezett: "/usr/bin/nice -n 5 /usr/bin/php -q")!',
], ],
'system_cron_allowautoupdate' => [ 'system_cron_allowautoupdate' => [
'title' => 'Automatikus adatbázis-frissítések engedélyezése',
'description' => '<div class="text-danger"><b>FIGYELEM:</b></div> Ez a beállítás lehetővé teszi a cronjob számára, hogy megkerülje a froxlor fájlok és az adatbázis verzióellenőrzését, és verzióeltérés esetén lefuttassa az adatbázis-frissítéseket.<br><br><div class="text-danger">Az automatikus frissítés mindig az alapértelmezett értékeket állítja be az új beállításokhoz vagy változtatásokhoz. Ez nem mindig felel meg az Ön rendszerének. Kérjük, gondolja át kétszer, mielőtt aktiválja ezt a beállítást.</div>',
],
'dns_createhostnameentry' => 'Bind-zone/config létrehozása a rendszer hosztnévhez',
'panel_password_alpha_lower' => [
'title' => 'Kisbetű', 'title' => 'Kisbetű',
'description' => 'A jelszónak tartalmaznia kell legalább egy kisbetűt (a-z).', 'description' => 'A jelszónak tartalmaznia kell legalább egy kisbetűt (a-z).',
], ],