Compare commits
50 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8d6275e1aa | ||
|
|
f21d4f8770 | ||
|
|
fc97b4d4e9 | ||
|
|
05051309c7 | ||
|
|
0f025a6627 | ||
|
|
f6f5765b54 | ||
|
|
ac82aa80d2 | ||
|
|
57503d9c6e | ||
|
|
f55ad16d82 | ||
|
|
ea7834c1d1 | ||
|
|
b355711de9 | ||
|
|
a5287726a4 | ||
|
|
b393c7d6e6 | ||
|
|
dd2782771a | ||
|
|
25d0bbb766 | ||
|
|
b4dedca3db | ||
|
|
09aed61dbf | ||
|
|
ca39501530 | ||
|
|
28fd88e53e | ||
|
|
e01c2e02fb | ||
|
|
762bfae61a | ||
|
|
a4d4e16efc | ||
|
|
7f83ad31f4 | ||
|
|
e143ba4577 | ||
|
|
6799a56ba1 | ||
|
|
484fe8acbc | ||
|
|
550af5b943 | ||
|
|
7ae59477af | ||
|
|
acefa41806 | ||
|
|
b39c8029cd | ||
|
|
69ff416361 | ||
|
|
3eb1718fe0 | ||
|
|
37c434d4fc | ||
|
|
1eb14d7564 | ||
|
|
1c17df69d2 | ||
|
|
c61b3b73bd | ||
|
|
18c87baec8 | ||
|
|
631b2b59a5 | ||
|
|
1e0510a43d | ||
|
|
e62f675c4c | ||
|
|
fe389ab208 | ||
|
|
63d915804a | ||
|
|
466c09137b | ||
|
|
3a738b7070 | ||
|
|
5ee9d3064a | ||
|
|
adb5c6734a | ||
|
|
7dff46b63e | ||
|
|
12883bafd6 | ||
|
|
c2b88200f0 | ||
|
|
634199780b |
17
README.md
17
README.md
@@ -53,14 +53,21 @@ https://files.froxlor.org/releases/froxlor-latest.tar.gz [MD5](https://files.fro
|
|||||||
|
|
||||||
[HowTo](https://github.com/Froxlor/Froxlor/wiki/Install-froxlor-on-debian)
|
[HowTo](https://github.com/Froxlor/Froxlor/wiki/Install-froxlor-on-debian)
|
||||||
|
|
||||||
/etc/apt/sources.list.d/froxlor.list
|
```
|
||||||
> deb http://debian.froxlor.org {stretch|buster} main
|
apt-get -y install apt-transport-https lsb-release ca-certificates
|
||||||
|
wget -O - https://deb.froxlor.org/froxlor.gpg | apt-key add -
|
||||||
|
echo "deb https://deb.froxlor.org/debian $(lsb_release -sc) main" > /etc/apt/sources.list.d/froxlor.list
|
||||||
|
```
|
||||||
|
|
||||||
### Gentoo repository
|
### Ubuntu repository
|
||||||
|
|
||||||
[HowTo](https://github.com/Froxlor/Froxlor/wiki/Install-froxlor-on-gentoo)
|
[HowTo](https://github.com/Froxlor/Froxlor/wiki/Install-froxlor-on-ubuntu)
|
||||||
|
|
||||||
https://files.froxlor.org/gentoo/repositories.xml
|
```
|
||||||
|
apt-get -y install apt-transport-https lsb-release ca-certificates
|
||||||
|
wget -O - https://deb.froxlor.org/froxlor.gpg | apt-key add -
|
||||||
|
echo "deb https://deb.froxlor.org/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/froxlor.list
|
||||||
|
```
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
|||||||
@@ -105,6 +105,30 @@ return array(
|
|||||||
'hasVhostContainerEnabled'
|
'hasVhostContainerEnabled'
|
||||||
), true)
|
), true)
|
||||||
),
|
),
|
||||||
|
'system_honorcipherorder' => array(
|
||||||
|
'label' => $lng['admin']['domain_honorcipherorder'],
|
||||||
|
'settinggroup' => 'system',
|
||||||
|
'varname' => 'honorcipherorder',
|
||||||
|
'type' => 'bool',
|
||||||
|
'default' => false,
|
||||||
|
'save_method' => 'storeSettingField',
|
||||||
|
'visible' => \Froxlor\Settings::Get('system.use_ssl') && call_user_func(array(
|
||||||
|
'\Froxlor\Settings\FroxlorVhostSettings',
|
||||||
|
'hasVhostContainerEnabled'
|
||||||
|
), true)
|
||||||
|
),
|
||||||
|
'system_sessiontickets' => array(
|
||||||
|
'label' => $lng['admin']['domain_sessiontickets'],
|
||||||
|
'settinggroup' => 'system',
|
||||||
|
'varname' => 'sessiontickets',
|
||||||
|
'type' => 'bool',
|
||||||
|
'default' => true,
|
||||||
|
'save_method' => 'storeSettingField',
|
||||||
|
'visible' => \Froxlor\Settings::Get('system.use_ssl') && call_user_func(array(
|
||||||
|
'\Froxlor\Settings\FroxlorVhostSettings',
|
||||||
|
'hasVhostContainerEnabled'
|
||||||
|
), true)
|
||||||
|
),
|
||||||
/**
|
/**
|
||||||
* FCGID
|
* FCGID
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -173,7 +173,8 @@ return array(
|
|||||||
'websrv_avail' => array(
|
'websrv_avail' => array(
|
||||||
'apache2',
|
'apache2',
|
||||||
'nginx'
|
'nginx'
|
||||||
)
|
),
|
||||||
|
'visible' => \Froxlor\Settings::Get('system.awstats_enabled') == 1
|
||||||
),
|
),
|
||||||
'system_logfiles_type' => array(
|
'system_logfiles_type' => array(
|
||||||
'label' => $lng['serversettings']['logfiles_type'],
|
'label' => $lng['serversettings']['logfiles_type'],
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ return array(
|
|||||||
'string_emptyallowed' => true,
|
'string_emptyallowed' => true,
|
||||||
'default' => '',
|
'default' => '',
|
||||||
'visible' => \Froxlor\Settings::Get('system.webserver') == "apache2" && \Froxlor\Settings::Get('system.apache24') == 1,
|
'visible' => \Froxlor\Settings::Get('system.webserver') == "apache2" && \Froxlor\Settings::Get('system.apache24') == 1,
|
||||||
'save_method' => 'storeSettingField',
|
'save_method' => 'storeSettingField'
|
||||||
),
|
),
|
||||||
'system_ssl_cert_file' => array(
|
'system_ssl_cert_file' => array(
|
||||||
'label' => $lng['serversettings']['ssl']['ssl_cert_file'],
|
'label' => $lng['serversettings']['ssl']['ssl_cert_file'],
|
||||||
@@ -115,6 +115,18 @@ return array(
|
|||||||
'visible' => \Froxlor\Settings::Get('system.webserver') == "apache2" && \Froxlor\Settings::Get('system.apache24') == 1,
|
'visible' => \Froxlor\Settings::Get('system.webserver') == "apache2" && \Froxlor\Settings::Get('system.apache24') == 1,
|
||||||
'save_method' => 'storeSettingField'
|
'save_method' => 'storeSettingField'
|
||||||
),
|
),
|
||||||
|
'system_sessionticketsenabled' => array(
|
||||||
|
'label' => $lng['admin']['domain_sessionticketsenabled'],
|
||||||
|
'settinggroup' => 'system',
|
||||||
|
'varname' => 'sessionticketsenabled',
|
||||||
|
'type' => 'bool',
|
||||||
|
'default' => true,
|
||||||
|
'save_method' => 'storeSettingField',
|
||||||
|
'visible' => \Froxlor\Settings::Get('system.use_ssl') && (\Froxlor\Settings::Get('system.webserver') == "nginx" || (\Froxlor\Settings::Get('system.webserver') == "apache2" && \Froxlor\Settings::Get('system.apache24') == 1)) && call_user_func(array(
|
||||||
|
'\Froxlor\Settings\FroxlorVhostSettings',
|
||||||
|
'hasVhostContainerEnabled'
|
||||||
|
), true)
|
||||||
|
),
|
||||||
'system_leenabled' => array(
|
'system_leenabled' => array(
|
||||||
'label' => $lng['serversettings']['leenabled'],
|
'label' => $lng['serversettings']['leenabled'],
|
||||||
'settinggroup' => 'system',
|
'settinggroup' => 'system',
|
||||||
@@ -150,10 +162,10 @@ return array(
|
|||||||
'settinggroup' => 'system',
|
'settinggroup' => 'system',
|
||||||
'varname' => 'letsencryptca',
|
'varname' => 'letsencryptca',
|
||||||
'type' => 'option',
|
'type' => 'option',
|
||||||
'default' => 'testing',
|
'default' => 'production',
|
||||||
'option_mode' => 'one',
|
'option_mode' => 'one',
|
||||||
'option_options' => array(
|
'option_options' => array(
|
||||||
'testing' => 'https://acme-staging' . (\Froxlor\Settings::Get('system.leapiversion') == '2' ? '-v02' : '') . '.api.letsencrypt.org (Test)',
|
'testing' => 'https://acme-staging-v0' . \Froxlor\Settings::Get('system.leapiversion') . '.api.letsencrypt.org (Test)',
|
||||||
'production' => 'https://acme-v0' . \Froxlor\Settings::Get('system.leapiversion') . '.api.letsencrypt.org (Live)'
|
'production' => 'https://acme-v0' . \Froxlor\Settings::Get('system.leapiversion') . '.api.letsencrypt.org (Live)'
|
||||||
),
|
),
|
||||||
'save_method' => 'storeSettingField'
|
'save_method' => 'storeSettingField'
|
||||||
|
|||||||
@@ -33,7 +33,8 @@ return array(
|
|||||||
1 => $lng['admin']['webalizer']['quiet'],
|
1 => $lng['admin']['webalizer']['quiet'],
|
||||||
2 => $lng['admin']['webalizer']['veryquiet']
|
2 => $lng['admin']['webalizer']['veryquiet']
|
||||||
),
|
),
|
||||||
'save_method' => 'storeSettingField'
|
'save_method' => 'storeSettingField',
|
||||||
|
'visible' => \Froxlor\Settings::Get('system.awstats_enabled') == 0
|
||||||
),
|
),
|
||||||
'system_awstats_enabled' => array(
|
'system_awstats_enabled' => array(
|
||||||
'label' => $lng['serversettings']['awstats_enabled'],
|
'label' => $lng['serversettings']['awstats_enabled'],
|
||||||
@@ -50,7 +51,8 @@ return array(
|
|||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'string_type' => 'dir',
|
'string_type' => 'dir',
|
||||||
'default' => '/usr/bin/',
|
'default' => '/usr/bin/',
|
||||||
'save_method' => 'storeSettingField'
|
'save_method' => 'storeSettingField',
|
||||||
|
'visible' => \Froxlor\Settings::Get('system.awstats_enabled') == 1
|
||||||
),
|
),
|
||||||
'system_awstats_awstatspath' => array(
|
'system_awstats_awstatspath' => array(
|
||||||
'label' => $lng['serversettings']['awstats_awstatspath'],
|
'label' => $lng['serversettings']['awstats_awstatspath'],
|
||||||
@@ -59,7 +61,8 @@ return array(
|
|||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'string_type' => 'dir',
|
'string_type' => 'dir',
|
||||||
'default' => '/usr/bin/',
|
'default' => '/usr/bin/',
|
||||||
'save_method' => 'storeSettingField'
|
'save_method' => 'storeSettingField',
|
||||||
|
'visible' => \Froxlor\Settings::Get('system.awstats_enabled') == 1
|
||||||
),
|
),
|
||||||
'system_awstats_conf' => array(
|
'system_awstats_conf' => array(
|
||||||
'label' => $lng['serversettings']['awstats_conf'],
|
'label' => $lng['serversettings']['awstats_conf'],
|
||||||
@@ -68,7 +71,8 @@ return array(
|
|||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'string_type' => 'dir',
|
'string_type' => 'dir',
|
||||||
'default' => '/etc/awstats/',
|
'default' => '/etc/awstats/',
|
||||||
'save_method' => 'storeSettingField'
|
'save_method' => 'storeSettingField',
|
||||||
|
'visible' => \Froxlor\Settings::Get('system.awstats_enabled') == 1
|
||||||
),
|
),
|
||||||
'system_awstats_icons' => array(
|
'system_awstats_icons' => array(
|
||||||
'label' => $lng['serversettings']['awstats_icons'],
|
'label' => $lng['serversettings']['awstats_icons'],
|
||||||
@@ -77,7 +81,17 @@ return array(
|
|||||||
'type' => 'string',
|
'type' => 'string',
|
||||||
'string_type' => 'dir',
|
'string_type' => 'dir',
|
||||||
'default' => '/usr/share/awstats/icon/',
|
'default' => '/usr/share/awstats/icon/',
|
||||||
'save_method' => 'storeSettingField'
|
'save_method' => 'storeSettingField',
|
||||||
|
'visible' => \Froxlor\Settings::Get('system.awstats_enabled') == 1
|
||||||
|
),
|
||||||
|
'system_awstats_logformat' => array(
|
||||||
|
'label' => $lng['serversettings']['awstats']['logformat'],
|
||||||
|
'settinggroup' => 'system',
|
||||||
|
'varname' => 'awstats_logformat',
|
||||||
|
'type' => 'string',
|
||||||
|
'default' => '1',
|
||||||
|
'save_method' => 'storeSettingField',
|
||||||
|
'visible' => \Froxlor\Settings::Get('system.awstats_enabled') == 1
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
"phpmailer/phpmailer": "~6.0",
|
"phpmailer/phpmailer": "~6.0",
|
||||||
"monolog/monolog": "^1.24",
|
"monolog/monolog": "^1.24",
|
||||||
"robthree/twofactorauth": "^1.6",
|
"robthree/twofactorauth": "^1.6",
|
||||||
"algo26-matthias/idna-convert": "^2.1"
|
"froxlor/idna-convert-legacy": "^2.1"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "8.4.1",
|
"phpunit/phpunit": "8.4.1",
|
||||||
|
|||||||
416
composer.lock
generated
416
composer.lock
generated
@@ -4,20 +4,20 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "5699c65bbdcd2a61a9ced0ac7be84d64",
|
"content-hash": "a7ba15333ffb4a758ea65039b589545b",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "algo26-matthias/idna-convert",
|
"name": "froxlor/idna-convert-legacy",
|
||||||
"version": "v2.1.0",
|
"version": "v2.1.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/algo26-matthias/idna-convert.git",
|
"url": "https://github.com/Froxlor/idna-convert-legacy.git",
|
||||||
"reference": "2717d05713454991936bc581d068c6cea0d84e3b"
|
"reference": "09c1db623ba19e1ed8f2f9dabc15eeda9dc713b7"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/algo26-matthias/idna-convert/zipball/2717d05713454991936bc581d068c6cea0d84e3b",
|
"url": "https://api.github.com/repos/Froxlor/idna-convert-legacy/zipball/09c1db623ba19e1ed8f2f9dabc15eeda9dc713b7",
|
||||||
"reference": "2717d05713454991936bc581d068c6cea0d84e3b",
|
"reference": "09c1db623ba19e1ed8f2f9dabc15eeda9dc713b7",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -43,6 +43,11 @@
|
|||||||
"name": "Matthias Sommerfeld",
|
"name": "Matthias Sommerfeld",
|
||||||
"email": "matthias.sommerfeld@algo26.de",
|
"email": "matthias.sommerfeld@algo26.de",
|
||||||
"role": "Developer"
|
"role": "Developer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Michael Kaufmann (d00p)",
|
||||||
|
"email": "d00p@froxlor.org",
|
||||||
|
"role": "Developer"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "A library for encoding and decoding internationalized domain names",
|
"description": "A library for encoding and decoding internationalized domain names",
|
||||||
@@ -52,20 +57,20 @@
|
|||||||
"idna",
|
"idna",
|
||||||
"php"
|
"php"
|
||||||
],
|
],
|
||||||
"time": "2019-03-04T17:07:46+00:00"
|
"time": "2019-12-31T12:16:30+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "monolog/monolog",
|
"name": "monolog/monolog",
|
||||||
"version": "1.25.1",
|
"version": "1.25.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/Seldaek/monolog.git",
|
"url": "https://github.com/Seldaek/monolog.git",
|
||||||
"reference": "70e65a5470a42cfec1a7da00d30edb6e617e8dcf"
|
"reference": "fa82921994db851a8becaf3787a9e73c5976b6f1"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/70e65a5470a42cfec1a7da00d30edb6e617e8dcf",
|
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/fa82921994db851a8becaf3787a9e73c5976b6f1",
|
||||||
"reference": "70e65a5470a42cfec1a7da00d30edb6e617e8dcf",
|
"reference": "fa82921994db851a8becaf3787a9e73c5976b6f1",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -130,20 +135,20 @@
|
|||||||
"logging",
|
"logging",
|
||||||
"psr-3"
|
"psr-3"
|
||||||
],
|
],
|
||||||
"time": "2019-09-06T13:49:17+00:00"
|
"time": "2019-12-20T14:15:16+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpmailer/phpmailer",
|
"name": "phpmailer/phpmailer",
|
||||||
"version": "v6.1.1",
|
"version": "v6.1.4",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/PHPMailer/PHPMailer.git",
|
"url": "https://github.com/PHPMailer/PHPMailer.git",
|
||||||
"reference": "26bd96350b0b2fcbf0ef4e6f0f9cf3528302a9d8"
|
"reference": "c5e61d0729507049cec9673aa1a679f9adefd683"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/26bd96350b0b2fcbf0ef4e6f0f9cf3528302a9d8",
|
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c5e61d0729507049cec9673aa1a679f9adefd683",
|
||||||
"reference": "26bd96350b0b2fcbf0ef4e6f0f9cf3528302a9d8",
|
"reference": "c5e61d0729507049cec9673aa1a679f9adefd683",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -152,13 +157,9 @@
|
|||||||
"php": ">=5.5.0"
|
"php": ">=5.5.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"doctrine/annotations": "1.2.*",
|
"doctrine/annotations": "^1.2",
|
||||||
"friendsofphp/php-cs-fixer": "^2.2",
|
"friendsofphp/php-cs-fixer": "^2.2",
|
||||||
"phpdocumentor/phpdocumentor": "2.*",
|
"phpunit/phpunit": "^4.8 || ^5.7"
|
||||||
"phpunit/phpunit": "^4.8 || ^5.7",
|
|
||||||
"zendframework/zend-eventmanager": "3.0.*",
|
|
||||||
"zendframework/zend-i18n": "2.7.3",
|
|
||||||
"zendframework/zend-serializer": "2.7.*"
|
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-mbstring": "Needed to send email in multibyte encoding charset",
|
"ext-mbstring": "Needed to send email in multibyte encoding charset",
|
||||||
@@ -196,7 +197,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
|
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
|
||||||
"time": "2019-09-27T21:33:43+00:00"
|
"time": "2019-12-10T11:17:38+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "psr/log",
|
"name": "psr/log",
|
||||||
@@ -299,17 +300,61 @@
|
|||||||
],
|
],
|
||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
{
|
{
|
||||||
"name": "doctrine/instantiator",
|
"name": "composer/xdebug-handler",
|
||||||
"version": "1.2.0",
|
"version": "1.4.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/doctrine/instantiator.git",
|
"url": "https://github.com/composer/xdebug-handler.git",
|
||||||
"reference": "a2c590166b2133a4633738648b6b064edae0814a"
|
"reference": "cbe23383749496fe0f373345208b79568e4bc248"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a",
|
"url": "https://api.github.com/repos/composer/xdebug-handler/zipball/cbe23383749496fe0f373345208b79568e4bc248",
|
||||||
"reference": "a2c590166b2133a4633738648b6b064edae0814a",
|
"reference": "cbe23383749496fe0f373345208b79568e4bc248",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^5.3.2 || ^7.0 || ^8.0",
|
||||||
|
"psr/log": "^1.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Composer\\XdebugHandler\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "John Stevenson",
|
||||||
|
"email": "john-stevenson@blueyonder.co.uk"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Restarts a process without Xdebug.",
|
||||||
|
"keywords": [
|
||||||
|
"Xdebug",
|
||||||
|
"performance"
|
||||||
|
],
|
||||||
|
"time": "2019-11-06T16:40:04+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "doctrine/instantiator",
|
||||||
|
"version": "1.3.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/doctrine/instantiator.git",
|
||||||
|
"reference": "ae466f726242e637cebdd526a7d991b9433bacf1"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1",
|
||||||
|
"reference": "ae466f726242e637cebdd526a7d991b9433bacf1",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -352,20 +397,20 @@
|
|||||||
"constructor",
|
"constructor",
|
||||||
"instantiate"
|
"instantiate"
|
||||||
],
|
],
|
||||||
"time": "2019-03-17T17:37:11+00:00"
|
"time": "2019-10-21T16:45:58+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "myclabs/deep-copy",
|
"name": "myclabs/deep-copy",
|
||||||
"version": "1.9.3",
|
"version": "1.9.4",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/myclabs/DeepCopy.git",
|
"url": "https://github.com/myclabs/DeepCopy.git",
|
||||||
"reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea"
|
"reference": "579bb7356d91f9456ccd505f24ca8b667966a0a7"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea",
|
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/579bb7356d91f9456ccd505f24ca8b667966a0a7",
|
||||||
"reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea",
|
"reference": "579bb7356d91f9456ccd505f24ca8b667966a0a7",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -400,20 +445,20 @@
|
|||||||
"object",
|
"object",
|
||||||
"object graph"
|
"object graph"
|
||||||
],
|
],
|
||||||
"time": "2019-08-09T12:45:53+00:00"
|
"time": "2019-12-15T19:12:40+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nikic/php-parser",
|
"name": "nikic/php-parser",
|
||||||
"version": "v4.2.5",
|
"version": "v4.3.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/nikic/PHP-Parser.git",
|
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||||
"reference": "b76bbc3c51f22c570648de48e8c2d941ed5e2cf2"
|
"reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/b76bbc3c51f22c570648de48e8c2d941ed5e2cf2",
|
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc",
|
||||||
"reference": "b76bbc3c51f22c570648de48e8c2d941ed5e2cf2",
|
"reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -421,7 +466,7 @@
|
|||||||
"php": ">=7.0"
|
"php": ">=7.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"ircmaxell/php-yacc": "0.0.4",
|
"ircmaxell/php-yacc": "0.0.5",
|
||||||
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0"
|
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0"
|
||||||
},
|
},
|
||||||
"bin": [
|
"bin": [
|
||||||
@@ -430,7 +475,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "4.2-dev"
|
"dev-master": "4.3-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -452,36 +497,43 @@
|
|||||||
"parser",
|
"parser",
|
||||||
"php"
|
"php"
|
||||||
],
|
],
|
||||||
"time": "2019-10-25T18:33:07+00:00"
|
"time": "2019-11-08T13:50:10+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pdepend/pdepend",
|
"name": "pdepend/pdepend",
|
||||||
"version": "2.5.2",
|
"version": "2.6.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/pdepend/pdepend.git",
|
"url": "https://github.com/pdepend/pdepend.git",
|
||||||
"reference": "9daf26d0368d4a12bed1cacae1a9f3a6f0adf239"
|
"reference": "395b0f356bc0881ef88864bffb4ba1423ca0d111"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/pdepend/pdepend/zipball/9daf26d0368d4a12bed1cacae1a9f3a6f0adf239",
|
"url": "https://api.github.com/repos/pdepend/pdepend/zipball/395b0f356bc0881ef88864bffb4ba1423ca0d111",
|
||||||
"reference": "9daf26d0368d4a12bed1cacae1a9f3a6f0adf239",
|
"reference": "395b0f356bc0881ef88864bffb4ba1423ca0d111",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.3.7",
|
"php": ">=5.3.7",
|
||||||
"symfony/config": "^2.3.0|^3|^4",
|
"symfony/config": "^2.3.0|^3|^4|^5",
|
||||||
"symfony/dependency-injection": "^2.3.0|^3|^4",
|
"symfony/dependency-injection": "^2.3.0|^3|^4|^5",
|
||||||
"symfony/filesystem": "^2.3.0|^3|^4"
|
"symfony/filesystem": "^2.3.0|^3|^4|^5"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^4.8|^5.7",
|
"easy-doc/easy-doc": "0.0.0 || ^1.2.3",
|
||||||
|
"gregwar/rst": "^1.0",
|
||||||
|
"phpunit/phpunit": "^4.8.35|^5.7",
|
||||||
"squizlabs/php_codesniffer": "^2.0.0"
|
"squizlabs/php_codesniffer": "^2.0.0"
|
||||||
},
|
},
|
||||||
"bin": [
|
"bin": [
|
||||||
"src/bin/pdepend"
|
"src/bin/pdepend"
|
||||||
],
|
],
|
||||||
"type": "library",
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"PDepend\\": "src/main/php/PDepend"
|
"PDepend\\": "src/main/php/PDepend"
|
||||||
@@ -492,7 +544,7 @@
|
|||||||
"BSD-3-Clause"
|
"BSD-3-Clause"
|
||||||
],
|
],
|
||||||
"description": "Official version of pdepend to be handled with Composer",
|
"description": "Official version of pdepend to be handled with Composer",
|
||||||
"time": "2017-12-13T13:21:38+00:00"
|
"time": "2019-12-21T16:33:56+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phar-io/manifest",
|
"name": "phar-io/manifest",
|
||||||
@@ -598,16 +650,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpcompatibility/php-compatibility",
|
"name": "phpcompatibility/php-compatibility",
|
||||||
"version": "9.3.2",
|
"version": "9.3.5",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
|
"url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
|
||||||
"reference": "bfca2be3992f40e92206e5a7ebe5eaee37280b58"
|
"reference": "9fb324479acf6f39452e0655d2429cc0d3914243"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/bfca2be3992f40e92206e5a7ebe5eaee37280b58",
|
"url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243",
|
||||||
"reference": "bfca2be3992f40e92206e5a7ebe5eaee37280b58",
|
"reference": "9fb324479acf6f39452e0655d2429cc0d3914243",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -652,7 +704,7 @@
|
|||||||
"phpcs",
|
"phpcs",
|
||||||
"standards"
|
"standards"
|
||||||
],
|
],
|
||||||
"time": "2019-10-16T21:24:24+00:00"
|
"time": "2019-12-27T09:44:58+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpdocumentor/reflection-common",
|
"name": "phpdocumentor/reflection-common",
|
||||||
@@ -708,16 +760,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpdocumentor/reflection-docblock",
|
"name": "phpdocumentor/reflection-docblock",
|
||||||
"version": "4.3.2",
|
"version": "4.3.4",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
||||||
"reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e"
|
"reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e",
|
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
|
||||||
"reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e",
|
"reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -729,6 +781,7 @@
|
|||||||
"require-dev": {
|
"require-dev": {
|
||||||
"doctrine/instantiator": "^1.0.5",
|
"doctrine/instantiator": "^1.0.5",
|
||||||
"mockery/mockery": "^1.0",
|
"mockery/mockery": "^1.0",
|
||||||
|
"phpdocumentor/type-resolver": "0.4.*",
|
||||||
"phpunit/phpunit": "^6.4"
|
"phpunit/phpunit": "^6.4"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
@@ -755,7 +808,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
||||||
"time": "2019-09-12T14:27:41+00:00"
|
"time": "2019-12-28T18:55:12+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpdocumentor/type-resolver",
|
"name": "phpdocumentor/type-resolver",
|
||||||
@@ -855,24 +908,26 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpmd/phpmd",
|
"name": "phpmd/phpmd",
|
||||||
"version": "2.7.0",
|
"version": "2.8.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpmd/phpmd.git",
|
"url": "https://github.com/phpmd/phpmd.git",
|
||||||
"reference": "a05a999c644f4bc9a204846017db7bb7809fbe4c"
|
"reference": "5664b95d484797582f5af9536238deb9ecde58a1"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpmd/phpmd/zipball/a05a999c644f4bc9a204846017db7bb7809fbe4c",
|
"url": "https://api.github.com/repos/phpmd/phpmd/zipball/5664b95d484797582f5af9536238deb9ecde58a1",
|
||||||
"reference": "a05a999c644f4bc9a204846017db7bb7809fbe4c",
|
"reference": "5664b95d484797582f5af9536238deb9ecde58a1",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
"composer/xdebug-handler": "^1.0",
|
||||||
"ext-xml": "*",
|
"ext-xml": "*",
|
||||||
"pdepend/pdepend": "^2.5",
|
"pdepend/pdepend": "^2.6",
|
||||||
"php": ">=5.3.9"
|
"php": ">=5.3.9"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
"easy-doc/easy-doc": "0.0.0 || ^1.3.2",
|
||||||
"gregwar/rst": "^1.0",
|
"gregwar/rst": "^1.0",
|
||||||
"mikey179/vfsstream": "^1.6.4",
|
"mikey179/vfsstream": "^1.6.4",
|
||||||
"phpunit/phpunit": "^4.8.36 || ^5.7.27",
|
"phpunit/phpunit": "^4.8.36 || ^5.7.27",
|
||||||
@@ -919,37 +974,37 @@
|
|||||||
"phpmd",
|
"phpmd",
|
||||||
"pmd"
|
"pmd"
|
||||||
],
|
],
|
||||||
"time": "2019-07-30T21:13:32+00:00"
|
"time": "2019-12-27T11:09:06+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpspec/prophecy",
|
"name": "phpspec/prophecy",
|
||||||
"version": "1.9.0",
|
"version": "1.10.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpspec/prophecy.git",
|
"url": "https://github.com/phpspec/prophecy.git",
|
||||||
"reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203"
|
"reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/f6811d96d97bdf400077a0cc100ae56aa32b9203",
|
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/cbe1df668b3fe136bcc909126a0f529a78d4cbbc",
|
||||||
"reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203",
|
"reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"doctrine/instantiator": "^1.0.2",
|
"doctrine/instantiator": "^1.0.2",
|
||||||
"php": "^5.3|^7.0",
|
"php": "^5.3|^7.0",
|
||||||
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
|
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
|
||||||
"sebastian/comparator": "^1.1|^2.0|^3.0",
|
"sebastian/comparator": "^1.2.3|^2.0|^3.0",
|
||||||
"sebastian/recursion-context": "^1.0|^2.0|^3.0"
|
"sebastian/recursion-context": "^1.0|^2.0|^3.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpspec/phpspec": "^2.5|^3.2",
|
"phpspec/phpspec": "^2.5 || ^3.2",
|
||||||
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
|
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "1.8.x-dev"
|
"dev-master": "1.10.x-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -982,20 +1037,20 @@
|
|||||||
"spy",
|
"spy",
|
||||||
"stub"
|
"stub"
|
||||||
],
|
],
|
||||||
"time": "2019-10-03T11:07:50+00:00"
|
"time": "2019-12-22T21:05:45+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-code-coverage",
|
"name": "phpunit/php-code-coverage",
|
||||||
"version": "7.0.8",
|
"version": "7.0.10",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
||||||
"reference": "aa0d179a13284c7420fc281fc32750e6cc7c9e2f"
|
"reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aa0d179a13284c7420fc281fc32750e6cc7c9e2f",
|
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf",
|
||||||
"reference": "aa0d179a13284c7420fc281fc32750e6cc7c9e2f",
|
"reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1045,7 +1100,7 @@
|
|||||||
"testing",
|
"testing",
|
||||||
"xunit"
|
"xunit"
|
||||||
],
|
],
|
||||||
"time": "2019-09-17T06:24:36+00:00"
|
"time": "2019-11-20T13:55:58+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-file-iterator",
|
"name": "phpunit/php-file-iterator",
|
||||||
@@ -1535,16 +1590,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/environment",
|
"name": "sebastian/environment",
|
||||||
"version": "4.2.2",
|
"version": "4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/environment.git",
|
"url": "https://github.com/sebastianbergmann/environment.git",
|
||||||
"reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404"
|
"reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404",
|
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
|
||||||
"reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404",
|
"reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1584,7 +1639,7 @@
|
|||||||
"environment",
|
"environment",
|
||||||
"hhvm"
|
"hhvm"
|
||||||
],
|
],
|
||||||
"time": "2019-05-05T09:05:15+00:00"
|
"time": "2019-11-20T08:46:58+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/exporter",
|
"name": "sebastian/exporter",
|
||||||
@@ -2075,16 +2130,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "squizlabs/php_codesniffer",
|
"name": "squizlabs/php_codesniffer",
|
||||||
"version": "3.5.2",
|
"version": "3.5.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
|
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
|
||||||
"reference": "65b12cdeaaa6cd276d4c3033a95b9b88b12701e7"
|
"reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/65b12cdeaaa6cd276d4c3033a95b9b88b12701e7",
|
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/557a1fc7ac702c66b0bbfe16ab3d55839ef724cb",
|
||||||
"reference": "65b12cdeaaa6cd276d4c3033a95b9b88b12701e7",
|
"reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2122,36 +2177,36 @@
|
|||||||
"phpcs",
|
"phpcs",
|
||||||
"standards"
|
"standards"
|
||||||
],
|
],
|
||||||
"time": "2019-10-28T04:36:32+00:00"
|
"time": "2019-12-04T04:46:47+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/config",
|
"name": "symfony/config",
|
||||||
"version": "v4.3.6",
|
"version": "v5.0.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/config.git",
|
"url": "https://github.com/symfony/config.git",
|
||||||
"reference": "f4ee0ebb91b16ca1ac105aa39f9284f3cac19a15"
|
"reference": "7f930484966350906185ba0a604728f7898b7ba0"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/config/zipball/f4ee0ebb91b16ca1ac105aa39f9284f3cac19a15",
|
"url": "https://api.github.com/repos/symfony/config/zipball/7f930484966350906185ba0a604728f7898b7ba0",
|
||||||
"reference": "f4ee0ebb91b16ca1ac105aa39f9284f3cac19a15",
|
"reference": "7f930484966350906185ba0a604728f7898b7ba0",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.1.3",
|
"php": "^7.2.5",
|
||||||
"symfony/filesystem": "~3.4|~4.0",
|
"symfony/filesystem": "^4.4|^5.0",
|
||||||
"symfony/polyfill-ctype": "~1.8"
|
"symfony/polyfill-ctype": "~1.8"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"symfony/finder": "<3.4"
|
"symfony/finder": "<4.4"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"symfony/dependency-injection": "~3.4|~4.0",
|
"symfony/event-dispatcher": "^4.4|^5.0",
|
||||||
"symfony/event-dispatcher": "~3.4|~4.0",
|
"symfony/finder": "^4.4|^5.0",
|
||||||
"symfony/finder": "~3.4|~4.0",
|
"symfony/messenger": "^4.4|^5.0",
|
||||||
"symfony/messenger": "~4.1",
|
"symfony/service-contracts": "^1.1|^2",
|
||||||
"symfony/yaml": "~3.4|~4.0"
|
"symfony/yaml": "^4.4|^5.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"symfony/yaml": "To use the yaml reference dumper"
|
"symfony/yaml": "To use the yaml reference dumper"
|
||||||
@@ -2159,7 +2214,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "4.3-dev"
|
"dev-master": "5.0-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -2186,31 +2241,32 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony Config Component",
|
"description": "Symfony Config Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-10-30T13:18:51+00:00"
|
"time": "2019-12-18T13:50:31+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/console",
|
"name": "symfony/console",
|
||||||
"version": "v4.3.6",
|
"version": "v4.4.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/console.git",
|
"url": "https://github.com/symfony/console.git",
|
||||||
"reference": "136c4bd62ea871d00843d1bc0316de4c4a84bb78"
|
"reference": "82437719dab1e6bdd28726af14cb345c2ec816d0"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/console/zipball/136c4bd62ea871d00843d1bc0316de4c4a84bb78",
|
"url": "https://api.github.com/repos/symfony/console/zipball/82437719dab1e6bdd28726af14cb345c2ec816d0",
|
||||||
"reference": "136c4bd62ea871d00843d1bc0316de4c4a84bb78",
|
"reference": "82437719dab1e6bdd28726af14cb345c2ec816d0",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.1.3",
|
"php": "^7.1.3",
|
||||||
"symfony/polyfill-mbstring": "~1.0",
|
"symfony/polyfill-mbstring": "~1.0",
|
||||||
"symfony/polyfill-php73": "^1.8",
|
"symfony/polyfill-php73": "^1.8",
|
||||||
"symfony/service-contracts": "^1.1"
|
"symfony/service-contracts": "^1.1|^2"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"symfony/dependency-injection": "<3.4",
|
"symfony/dependency-injection": "<3.4",
|
||||||
"symfony/event-dispatcher": "<4.3",
|
"symfony/event-dispatcher": "<4.3|>=5",
|
||||||
|
"symfony/lock": "<4.4",
|
||||||
"symfony/process": "<3.3"
|
"symfony/process": "<3.3"
|
||||||
},
|
},
|
||||||
"provide": {
|
"provide": {
|
||||||
@@ -2218,12 +2274,12 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"psr/log": "~1.0",
|
"psr/log": "~1.0",
|
||||||
"symfony/config": "~3.4|~4.0",
|
"symfony/config": "^3.4|^4.0|^5.0",
|
||||||
"symfony/dependency-injection": "~3.4|~4.0",
|
"symfony/dependency-injection": "^3.4|^4.0|^5.0",
|
||||||
"symfony/event-dispatcher": "^4.3",
|
"symfony/event-dispatcher": "^4.3",
|
||||||
"symfony/lock": "~3.4|~4.0",
|
"symfony/lock": "^4.4|^5.0",
|
||||||
"symfony/process": "~3.4|~4.0",
|
"symfony/process": "^3.4|^4.0|^5.0",
|
||||||
"symfony/var-dumper": "^4.3"
|
"symfony/var-dumper": "^4.3|^5.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"psr/log": "For using the console logger",
|
"psr/log": "For using the console logger",
|
||||||
@@ -2234,7 +2290,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "4.3-dev"
|
"dev-master": "4.4-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -2261,41 +2317,41 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony Console Component",
|
"description": "Symfony Console Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-10-30T12:58:49+00:00"
|
"time": "2019-12-17T10:32:23+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/dependency-injection",
|
"name": "symfony/dependency-injection",
|
||||||
"version": "v4.3.6",
|
"version": "v5.0.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/dependency-injection.git",
|
"url": "https://github.com/symfony/dependency-injection.git",
|
||||||
"reference": "fc036941dfafa037a7485714b62593c7eaf68edd"
|
"reference": "f9dbfbf487d08f60b1c83220edcd16559d1e40a2"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/fc036941dfafa037a7485714b62593c7eaf68edd",
|
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f9dbfbf487d08f60b1c83220edcd16559d1e40a2",
|
||||||
"reference": "fc036941dfafa037a7485714b62593c7eaf68edd",
|
"reference": "f9dbfbf487d08f60b1c83220edcd16559d1e40a2",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.1.3",
|
"php": "^7.2.5",
|
||||||
"psr/container": "^1.0",
|
"psr/container": "^1.0",
|
||||||
"symfony/service-contracts": "^1.1.6"
|
"symfony/service-contracts": "^1.1.6|^2"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"symfony/config": "<4.3",
|
"symfony/config": "<5.0",
|
||||||
"symfony/finder": "<3.4",
|
"symfony/finder": "<4.4",
|
||||||
"symfony/proxy-manager-bridge": "<3.4",
|
"symfony/proxy-manager-bridge": "<4.4",
|
||||||
"symfony/yaml": "<3.4"
|
"symfony/yaml": "<4.4"
|
||||||
},
|
},
|
||||||
"provide": {
|
"provide": {
|
||||||
"psr/container-implementation": "1.0",
|
"psr/container-implementation": "1.0",
|
||||||
"symfony/service-implementation": "1.0"
|
"symfony/service-implementation": "1.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"symfony/config": "^4.3",
|
"symfony/config": "^5.0",
|
||||||
"symfony/expression-language": "~3.4|~4.0",
|
"symfony/expression-language": "^4.4|^5.0",
|
||||||
"symfony/yaml": "~3.4|~4.0"
|
"symfony/yaml": "^4.4|^5.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"symfony/config": "",
|
"symfony/config": "",
|
||||||
@@ -2307,7 +2363,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "4.3-dev"
|
"dev-master": "5.0-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -2334,30 +2390,30 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony DependencyInjection Component",
|
"description": "Symfony DependencyInjection Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-10-28T17:07:32+00:00"
|
"time": "2019-12-19T16:01:11+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/filesystem",
|
"name": "symfony/filesystem",
|
||||||
"version": "v4.3.6",
|
"version": "v5.0.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/filesystem.git",
|
"url": "https://github.com/symfony/filesystem.git",
|
||||||
"reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263"
|
"reference": "1d71f670bc5a07b9ccc97dc44f932177a322d4e6"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/9abbb7ef96a51f4d7e69627bc6f63307994e4263",
|
"url": "https://api.github.com/repos/symfony/filesystem/zipball/1d71f670bc5a07b9ccc97dc44f932177a322d4e6",
|
||||||
"reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263",
|
"reference": "1d71f670bc5a07b9ccc97dc44f932177a322d4e6",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.1.3",
|
"php": "^7.2.5",
|
||||||
"symfony/polyfill-ctype": "~1.8"
|
"symfony/polyfill-ctype": "~1.8"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "4.3-dev"
|
"dev-master": "5.0-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -2384,20 +2440,20 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony Filesystem Component",
|
"description": "Symfony Filesystem Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-08-20T14:07:54+00:00"
|
"time": "2019-11-26T23:25:11+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/finder",
|
"name": "symfony/finder",
|
||||||
"version": "v4.3.6",
|
"version": "v4.4.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/finder.git",
|
"url": "https://github.com/symfony/finder.git",
|
||||||
"reference": "72a068f77e317ae77c0a0495236ad292cfb5ce6f"
|
"reference": "ce8743441da64c41e2a667b8eb66070444ed911e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/finder/zipball/72a068f77e317ae77c0a0495236ad292cfb5ce6f",
|
"url": "https://api.github.com/repos/symfony/finder/zipball/ce8743441da64c41e2a667b8eb66070444ed911e",
|
||||||
"reference": "72a068f77e317ae77c0a0495236ad292cfb5ce6f",
|
"reference": "ce8743441da64c41e2a667b8eb66070444ed911e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2406,7 +2462,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "4.3-dev"
|
"dev-master": "4.4-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -2433,20 +2489,20 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony Finder Component",
|
"description": "Symfony Finder Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-10-30T12:53:54+00:00"
|
"time": "2019-11-17T21:56:56+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-ctype",
|
"name": "symfony/polyfill-ctype",
|
||||||
"version": "v1.12.0",
|
"version": "v1.13.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||||
"reference": "550ebaac289296ce228a706d0867afc34687e3f4"
|
"reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4",
|
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3",
|
||||||
"reference": "550ebaac289296ce228a706d0867afc34687e3f4",
|
"reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2458,7 +2514,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "1.12-dev"
|
"dev-master": "1.13-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -2491,20 +2547,20 @@
|
|||||||
"polyfill",
|
"polyfill",
|
||||||
"portable"
|
"portable"
|
||||||
],
|
],
|
||||||
"time": "2019-08-06T08:03:45+00:00"
|
"time": "2019-11-27T13:56:44+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-mbstring",
|
"name": "symfony/polyfill-mbstring",
|
||||||
"version": "v1.12.0",
|
"version": "v1.13.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||||
"reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17"
|
"reference": "7b4aab9743c30be783b73de055d24a39cf4b954f"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17",
|
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f",
|
||||||
"reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17",
|
"reference": "7b4aab9743c30be783b73de055d24a39cf4b954f",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2516,7 +2572,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "1.12-dev"
|
"dev-master": "1.13-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -2550,20 +2606,20 @@
|
|||||||
"portable",
|
"portable",
|
||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"time": "2019-08-06T08:03:45+00:00"
|
"time": "2019-11-27T14:18:11+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-php73",
|
"name": "symfony/polyfill-php73",
|
||||||
"version": "v1.12.0",
|
"version": "v1.13.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-php73.git",
|
"url": "https://github.com/symfony/polyfill-php73.git",
|
||||||
"reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188"
|
"reference": "4b0e2222c55a25b4541305a053013d5647d3a25f"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188",
|
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f",
|
||||||
"reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188",
|
"reference": "4b0e2222c55a25b4541305a053013d5647d3a25f",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2572,7 +2628,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "1.12-dev"
|
"dev-master": "1.13-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -2608,24 +2664,24 @@
|
|||||||
"portable",
|
"portable",
|
||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"time": "2019-08-06T08:03:45+00:00"
|
"time": "2019-11-27T16:25:15+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/service-contracts",
|
"name": "symfony/service-contracts",
|
||||||
"version": "v1.1.7",
|
"version": "v2.0.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/service-contracts.git",
|
"url": "https://github.com/symfony/service-contracts.git",
|
||||||
"reference": "ffcde9615dc5bb4825b9f6aed07716f1f57faae0"
|
"reference": "144c5e51266b281231e947b51223ba14acf1a749"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffcde9615dc5bb4825b9f6aed07716f1f57faae0",
|
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749",
|
||||||
"reference": "ffcde9615dc5bb4825b9f6aed07716f1f57faae0",
|
"reference": "144c5e51266b281231e947b51223ba14acf1a749",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.1.3",
|
"php": "^7.2.5",
|
||||||
"psr/container": "^1.0"
|
"psr/container": "^1.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
@@ -2634,7 +2690,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "1.1-dev"
|
"dev-master": "2.0-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -2666,7 +2722,7 @@
|
|||||||
"interoperability",
|
"interoperability",
|
||||||
"standards"
|
"standards"
|
||||||
],
|
],
|
||||||
"time": "2019-09-17T11:12:18+00:00"
|
"time": "2019-11-18T17:27:11+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "theseer/directoryscanner",
|
"name": "theseer/directoryscanner",
|
||||||
@@ -2888,31 +2944,29 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "webmozart/assert",
|
"name": "webmozart/assert",
|
||||||
"version": "1.5.0",
|
"version": "1.6.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/webmozart/assert.git",
|
"url": "https://github.com/webmozart/assert.git",
|
||||||
"reference": "88e6d84706d09a236046d686bbea96f07b3a34f4"
|
"reference": "573381c0a64f155a0d9a23f4b0c797194805b925"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4",
|
"url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925",
|
||||||
"reference": "88e6d84706d09a236046d686bbea96f07b3a34f4",
|
"reference": "573381c0a64f155a0d9a23f4b0c797194805b925",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^5.3.3 || ^7.0",
|
"php": "^5.3.3 || ^7.0",
|
||||||
"symfony/polyfill-ctype": "^1.8"
|
"symfony/polyfill-ctype": "^1.8"
|
||||||
},
|
},
|
||||||
|
"conflict": {
|
||||||
|
"vimeo/psalm": "<3.6.0"
|
||||||
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^4.8.36 || ^7.5.13"
|
"phpunit/phpunit": "^4.8.36 || ^7.5.13"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "1.3-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"Webmozart\\Assert\\": "src/"
|
"Webmozart\\Assert\\": "src/"
|
||||||
@@ -2934,7 +2988,7 @@
|
|||||||
"check",
|
"check",
|
||||||
"validate"
|
"validate"
|
||||||
],
|
],
|
||||||
"time": "2019-08-24T08:43:50+00:00"
|
"time": "2019-11-24T13:36:37+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
|||||||
@@ -112,11 +112,14 @@ if (! is_null($month) && ! is_null($year)) {
|
|||||||
|
|
||||||
eval("echo \"" . \Froxlor\UI\Template::getTemplate('traffic/traffic_details') . "\";");
|
eval("echo \"" . \Froxlor\UI\Template::getTemplate('traffic/traffic_details') . "\";");
|
||||||
} else {
|
} else {
|
||||||
$result_stmt = Database::prepare("SELECT `month`, `year`, SUM(`http`) AS http, SUM(`ftp_up`) AS ftp_up, SUM(`ftp_down`) AS ftp_down, SUM(`mail`) AS mail
|
$result_stmt = Database::prepare("
|
||||||
|
SELECT `month`, `year`, SUM(`http`) AS http, SUM(`ftp_up`) AS ftp_up, SUM(`ftp_down`) AS ftp_down, SUM(`mail`) AS mail
|
||||||
FROM `" . TABLE_PANEL_TRAFFIC . "`
|
FROM `" . TABLE_PANEL_TRAFFIC . "`
|
||||||
WHERE `customerid` = :customerid
|
WHERE `customerid` = :customerid
|
||||||
GROUP BY `year` DESC, `month` DESC
|
GROUP BY `year`, `month`
|
||||||
LIMIT 12");
|
ORDER BY `year` DESC, `month` DESC
|
||||||
|
LIMIT 12
|
||||||
|
");
|
||||||
Database::pexecute($result_stmt, array(
|
Database::pexecute($result_stmt, array(
|
||||||
"customerid" => $userinfo['customerid']
|
"customerid" => $userinfo['customerid']
|
||||||
));
|
));
|
||||||
|
|||||||
@@ -271,6 +271,9 @@ CREATE TABLE `panel_domains` (
|
|||||||
`ssl_protocols` text,
|
`ssl_protocols` text,
|
||||||
`ssl_cipher_list` text,
|
`ssl_cipher_list` text,
|
||||||
`tlsv13_cipher_list` text,
|
`tlsv13_cipher_list` text,
|
||||||
|
`ssl_enabled` tinyint(1) DEFAULT '1',
|
||||||
|
`ssl_honorcipherorder` tinyint(1) DEFAULT '0',
|
||||||
|
`ssl_sessiontickets` tinyint(1) DEFAULT '1',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
KEY `customerid` (`customerid`),
|
KEY `customerid` (`customerid`),
|
||||||
KEY `parentdomain` (`parentdomainid`),
|
KEY `parentdomain` (`parentdomainid`),
|
||||||
@@ -569,6 +572,7 @@ opcache.interned_strings_buffer'),
|
|||||||
('system', 'stdsubdomain', ''),
|
('system', 'stdsubdomain', ''),
|
||||||
('system', 'awstats_path', '/usr/bin/'),
|
('system', 'awstats_path', '/usr/bin/'),
|
||||||
('system', 'awstats_conf', '/etc/awstats/'),
|
('system', 'awstats_conf', '/etc/awstats/'),
|
||||||
|
('system', 'awstats_logformat', '1'),
|
||||||
('system', 'defaultttl', '604800'),
|
('system', 'defaultttl', '604800'),
|
||||||
('system', 'mod_fcgid_defaultini', '1'),
|
('system', 'mod_fcgid_defaultini', '1'),
|
||||||
('system', 'ftpserver', 'proftpd'),
|
('system', 'ftpserver', 'proftpd'),
|
||||||
@@ -652,6 +656,9 @@ opcache.interned_strings_buffer'),
|
|||||||
('system', 'disable_le_selfcheck', '0'),
|
('system', 'disable_le_selfcheck', '0'),
|
||||||
('system', 'ssl_protocols', 'TLSv1,TLSv1.2'),
|
('system', 'ssl_protocols', 'TLSv1,TLSv1.2'),
|
||||||
('system', 'tlsv13_cipher_list', ''),
|
('system', 'tlsv13_cipher_list', ''),
|
||||||
|
('system', 'honorcipherorder', '0'),
|
||||||
|
('system', 'sessiontickets', '1'),
|
||||||
|
('system', 'sessionticketsenabled', '1'),
|
||||||
('system', 'logfiles_format', ''),
|
('system', 'logfiles_format', ''),
|
||||||
('system', 'logfiles_type', '1'),
|
('system', 'logfiles_type', '1'),
|
||||||
('system', 'logfiles_piped', '0'),
|
('system', 'logfiles_piped', '0'),
|
||||||
@@ -696,8 +703,8 @@ opcache.interned_strings_buffer'),
|
|||||||
('panel', 'password_special_char', '!?<>§$%+#=@'),
|
('panel', 'password_special_char', '!?<>§$%+#=@'),
|
||||||
('panel', 'customer_hide_options', ''),
|
('panel', 'customer_hide_options', ''),
|
||||||
('panel', 'is_configured', '0'),
|
('panel', 'is_configured', '0'),
|
||||||
('panel', 'version', '0.10.8'),
|
('panel', 'version', '0.10.12'),
|
||||||
('panel', 'db_version', '201911220');
|
('panel', 'db_version', '201912313');
|
||||||
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `panel_tasks`;
|
DROP TABLE IF EXISTS `panel_tasks`;
|
||||||
@@ -843,6 +850,7 @@ CREATE TABLE `panel_fpmdaemons` (
|
|||||||
`max_requests` int(4) NOT NULL DEFAULT '0',
|
`max_requests` int(4) NOT NULL DEFAULT '0',
|
||||||
`idle_timeout` int(4) NOT NULL DEFAULT '30',
|
`idle_timeout` int(4) NOT NULL DEFAULT '30',
|
||||||
`limit_extensions` varchar(255) NOT NULL default '.php',
|
`limit_extensions` varchar(255) NOT NULL default '.php',
|
||||||
|
`custom_config` text,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE KEY `reload` (`reload_cmd`),
|
UNIQUE KEY `reload` (`reload_cmd`),
|
||||||
UNIQUE KEY `config` (`config_dir`)
|
UNIQUE KEY `config` (`config_dir`)
|
||||||
|
|||||||
@@ -500,3 +500,69 @@ if (\Froxlor\Froxlor::isFroxlorVersion('0.10.7')) {
|
|||||||
showUpdateStep("Updating from 0.10.7 to 0.10.8", false);
|
showUpdateStep("Updating from 0.10.7 to 0.10.8", false);
|
||||||
\Froxlor\Froxlor::updateToVersion('0.10.8');
|
\Froxlor\Froxlor::updateToVersion('0.10.8');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (\Froxlor\Froxlor::isFroxlorVersion('0.10.8')) {
|
||||||
|
showUpdateStep("Updating from 0.10.8 to 0.10.9", false);
|
||||||
|
\Froxlor\Froxlor::updateToVersion('0.10.9');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (\Froxlor\Froxlor::isDatabaseVersion('201911220')) {
|
||||||
|
showUpdateStep("Adding enhanced SSL control over domains");
|
||||||
|
// customer domains
|
||||||
|
Database::query("ALTER TABLE `" . TABLE_PANEL_DOMAINS . "` ADD `ssl_enabled` tinyint(1) DEFAULT '1';");
|
||||||
|
Database::query("ALTER TABLE `" . TABLE_PANEL_DOMAINS . "` ADD `ssl_honorcipherorder` tinyint(1) DEFAULT '0' AFTER `ssl_enabled`;");
|
||||||
|
Database::query("ALTER TABLE `" . TABLE_PANEL_DOMAINS . "` ADD `ssl_sessiontickets` tinyint(1) DEFAULT '1' AFTER `ssl_honorcipherorder`;");
|
||||||
|
// as setting for froxlor vhost
|
||||||
|
Settings::AddNew("system.honorcipherorder", '0');
|
||||||
|
Settings::AddNew("system.sessiontickets", '1');
|
||||||
|
lastStepStatus(0);
|
||||||
|
\Froxlor\Froxlor::updateToDbVersion('201912100');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (\Froxlor\Froxlor::isFroxlorVersion('0.10.9')) {
|
||||||
|
showUpdateStep("Updating from 0.10.9 to 0.10.10", false);
|
||||||
|
\Froxlor\Froxlor::updateToVersion('0.10.10');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (\Froxlor\Froxlor::isDatabaseVersion('201912100')) {
|
||||||
|
showUpdateStep("Adding option to disable SSL sessiontickets for older systems");
|
||||||
|
Settings::AddNew("system.sessionticketsenabled", '1');
|
||||||
|
lastStepStatus(0);
|
||||||
|
\Froxlor\Froxlor::updateToDbVersion('201912310');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (\Froxlor\Froxlor::isDatabaseVersion('201912310')) {
|
||||||
|
showUpdateStep("Adding custom phpfpm pool configuration field");
|
||||||
|
Database::query("ALTER TABLE `" . TABLE_PANEL_FPMDAEMONS . "` ADD `custom_config` text AFTER `limit_extensions`;");
|
||||||
|
lastStepStatus(0);
|
||||||
|
\Froxlor\Froxlor::updateToDbVersion('201912311');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (\Froxlor\Froxlor::isFroxlorVersion('0.10.10')) {
|
||||||
|
showUpdateStep("Updating from 0.10.10 to 0.10.11", false);
|
||||||
|
\Froxlor\Froxlor::updateToVersion('0.10.11');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (\Froxlor\Froxlor::isDatabaseVersion('201912311')) {
|
||||||
|
showUpdateStep("Migrate logfiles_format setting");
|
||||||
|
$current_format = Settings::Set('system.logfiles_format');
|
||||||
|
if (!empty($current_format)) {
|
||||||
|
Settings::Set('system.logfiles_format', '"' . Settings::Get('system.logfiles_format') . '"');
|
||||||
|
lastStepStatus(0);
|
||||||
|
} else {
|
||||||
|
lastStepStatus(0, 'not needed');
|
||||||
|
}
|
||||||
|
\Froxlor\Froxlor::updateToDbVersion('201912312');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (\Froxlor\Froxlor::isDatabaseVersion('201912312')) {
|
||||||
|
showUpdateStep("Adding option change awstats LogFormat");
|
||||||
|
Settings::AddNew("system.awstats_logformat", '1');
|
||||||
|
lastStepStatus(0);
|
||||||
|
\Froxlor\Froxlor::updateToDbVersion('201912313');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (\Froxlor\Froxlor::isFroxlorVersion('0.10.11')) {
|
||||||
|
showUpdateStep("Updating from 0.10.11 to 0.10.12", false);
|
||||||
|
\Froxlor\Froxlor::updateToVersion('0.10.12');
|
||||||
|
}
|
||||||
|
|||||||
@@ -346,6 +346,15 @@ abstract class ApiCommand extends ApiParameter
|
|||||||
} else {
|
} else {
|
||||||
$order .= " ORDER BY ";
|
$order .= " ORDER BY ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$nat_fields = [
|
||||||
|
'`c`.`loginname`',
|
||||||
|
'`a`.`loginname`',
|
||||||
|
'`adminname`',
|
||||||
|
'`databasename`',
|
||||||
|
'`username`'
|
||||||
|
];
|
||||||
|
|
||||||
foreach ($orderby as $field => $by) {
|
foreach ($orderby as $field => $by) {
|
||||||
$sortfield = explode('.', $field);
|
$sortfield = explode('.', $field);
|
||||||
foreach ($sortfield as $id => $sfield) {
|
foreach ($sortfield as $id => $sfield) {
|
||||||
@@ -365,7 +374,7 @@ abstract class ApiCommand extends ApiParameter
|
|||||||
])) {
|
])) {
|
||||||
$by = 'ASC';
|
$by = 'ASC';
|
||||||
}
|
}
|
||||||
if (\Froxlor\Settings::Get('panel.natsorting') == 1) {
|
if (\Froxlor\Settings::Get('panel.natsorting') == 1 && in_array($field, $nat_fields)) {
|
||||||
// Acts similar to php's natsort(), found in one comment at http://my.opera.com/cpr/blog/show.dml/160556
|
// Acts similar to php's natsort(), found in one comment at http://my.opera.com/cpr/blog/show.dml/160556
|
||||||
$order .= "CONCAT( IF( ASCII( LEFT( " . $field . ", 5 ) ) > 57,
|
$order .= "CONCAT( IF( ASCII( LEFT( " . $field . ", 5 ) ) > 57,
|
||||||
LEFT( " . $field . ", 1 ), 0 ),
|
LEFT( " . $field . ", 1 ), 0 ),
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ class Certificates extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resou
|
|||||||
} else {
|
} else {
|
||||||
$certs_stmt_query .= "1 ";
|
$certs_stmt_query .= "1 ";
|
||||||
}
|
}
|
||||||
$certs_stmt = Database::prepare($certs_stmt_query . $this->getSearchWhere($query_fields) . $this->getOrderBy() . $this->getLimit());
|
$certs_stmt = Database::prepare($certs_stmt_query . $this->getSearchWhere($query_fields, true) . $this->getOrderBy() . $this->getLimit());
|
||||||
$qry_params = array_merge($qry_params, $query_fields);
|
$qry_params = array_merge($qry_params, $query_fields);
|
||||||
Database::pexecute($certs_stmt, $qry_params, true, true);
|
Database::pexecute($certs_stmt, $qry_params, true, true);
|
||||||
$result = array();
|
$result = array();
|
||||||
|
|||||||
@@ -168,14 +168,15 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
|
|||||||
* get ips connected to given domain as array
|
* get ips connected to given domain as array
|
||||||
*
|
*
|
||||||
* @param number $domain_id
|
* @param number $domain_id
|
||||||
|
* @param bool $ssl_only
|
||||||
|
* optional, return only ssl enabled ip's, default false
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
private function getIpsForDomain($domain_id = 0)
|
private function getIpsForDomain($domain_id = 0, $ssl_only = false)
|
||||||
{
|
{
|
||||||
$resultips_stmt = Database::prepare("
|
$resultips_stmt = Database::prepare("
|
||||||
SELECT `ips`.* FROM `" . TABLE_DOMAINTOIP . "` AS `dti`, `" . TABLE_PANEL_IPSANDPORTS . "` AS `ips`
|
SELECT `ips`.* FROM `" . TABLE_DOMAINTOIP . "` AS `dti`, `" . TABLE_PANEL_IPSANDPORTS . "` AS `ips`
|
||||||
WHERE `dti`.`id_ipandports` = `ips`.`id` AND `dti`.`id_domain` = :domainid
|
WHERE `dti`.`id_ipandports` = `ips`.`id` AND `dti`.`id_domain` = :domainid " . ($ssl_only ? " AND `ips`.`ssl` = '1'" : ""));
|
||||||
");
|
|
||||||
|
|
||||||
Database::pexecute($resultips_stmt, array(
|
Database::pexecute($resultips_stmt, array(
|
||||||
'domainid' => $domain_id
|
'domainid' => $domain_id
|
||||||
@@ -260,6 +261,8 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
|
|||||||
* optional, list of ssl-enabled ip/port id's to assign to this domain, default empty
|
* optional, list of ssl-enabled ip/port id's to assign to this domain, default empty
|
||||||
* @param bool $dont_use_default_ssl_ipandport_if_empty
|
* @param bool $dont_use_default_ssl_ipandport_if_empty
|
||||||
* optional, do NOT set the systems default ssl ip addresses if none are given via $ssl_ipandport parameter
|
* optional, do NOT set the systems default ssl ip addresses if none are given via $ssl_ipandport parameter
|
||||||
|
* @param bool $sslenabled
|
||||||
|
* optional, whether or not SSL is enabled for this domain, regardless of the assigned ssl-ips, default 1 (true)
|
||||||
* @param bool $http2
|
* @param bool $http2
|
||||||
* optional, whether to enable http/2 for this domain (requires to be enabled in the settings), default 0 (false)
|
* optional, whether to enable http/2 for this domain (requires to be enabled in the settings), default 0 (false)
|
||||||
* @param int $hsts_maxage
|
* @param int $hsts_maxage
|
||||||
@@ -270,6 +273,10 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
|
|||||||
* optional whether or not to preload HSTS header value
|
* optional whether or not to preload HSTS header value
|
||||||
* @param bool $ocsp_stapling
|
* @param bool $ocsp_stapling
|
||||||
* optional whether to enable ocsp-stapling for this domain. default 0 (false), requires SSL
|
* optional whether to enable ocsp-stapling for this domain. default 0 (false), requires SSL
|
||||||
|
* @param bool $honorcipherorder
|
||||||
|
* optional whether to honor the (server) cipher order for this domain. default 0 (false), requires SSL
|
||||||
|
* @param bool $sessiontickets
|
||||||
|
* optional whether to enable or disable TLS sessiontickets (RFC 5077) for this domain. default 1 (true), requires SSL
|
||||||
* @param bool $override_tls
|
* @param bool $override_tls
|
||||||
* optional whether or not to override system-tls settings like protocol, ssl-ciphers and if applicable tls-1.3 ciphers, requires change_serversettings flag for the admin, default false
|
* optional whether or not to override system-tls settings like protocol, ssl-ciphers and if applicable tls-1.3 ciphers, requires change_serversettings flag for the admin, default false
|
||||||
* @param array $ssl_protocols
|
* @param array $ssl_protocols
|
||||||
@@ -324,11 +331,14 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
|
|||||||
$letsencrypt = $this->getBoolParam('letsencrypt', true, 0);
|
$letsencrypt = $this->getBoolParam('letsencrypt', true, 0);
|
||||||
$dont_use_default_ssl_ipandport_if_empty = $this->getBoolParam('dont_use_default_ssl_ipandport_if_empty', true, 0);
|
$dont_use_default_ssl_ipandport_if_empty = $this->getBoolParam('dont_use_default_ssl_ipandport_if_empty', true, 0);
|
||||||
$p_ssl_ipandports = $this->getParam('ssl_ipandport', true, $dont_use_default_ssl_ipandport_if_empty ? array() : explode(',', Settings::Get('system.defaultsslip')));
|
$p_ssl_ipandports = $this->getParam('ssl_ipandport', true, $dont_use_default_ssl_ipandport_if_empty ? array() : explode(',', Settings::Get('system.defaultsslip')));
|
||||||
|
$sslenabled = $this->getBoolParam('sslenabled', true, 1);
|
||||||
$http2 = $this->getBoolParam('http2', true, 0);
|
$http2 = $this->getBoolParam('http2', true, 0);
|
||||||
$hsts_maxage = $this->getParam('hsts_maxage', true, 0);
|
$hsts_maxage = $this->getParam('hsts_maxage', true, 0);
|
||||||
$hsts_sub = $this->getBoolParam('hsts_sub', true, 0);
|
$hsts_sub = $this->getBoolParam('hsts_sub', true, 0);
|
||||||
$hsts_preload = $this->getBoolParam('hsts_preload', true, 0);
|
$hsts_preload = $this->getBoolParam('hsts_preload', true, 0);
|
||||||
$ocsp_stapling = $this->getBoolParam('ocsp_stapling', true, 0);
|
$ocsp_stapling = $this->getBoolParam('ocsp_stapling', true, 0);
|
||||||
|
$honorcipherorder = $this->getBoolParam('honorcipherorder', true, 0);
|
||||||
|
$sessiontickets = $this->getBoolParam('sessiontickets', true, 1);
|
||||||
|
|
||||||
$override_tls = $this->getBoolParam('override_tls', true, 0);
|
$override_tls = $this->getBoolParam('override_tls', true, 0);
|
||||||
$p_ssl_protocols = array();
|
$p_ssl_protocols = array();
|
||||||
@@ -344,7 +354,8 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
|
|||||||
}
|
}
|
||||||
|
|
||||||
// validation
|
// validation
|
||||||
if ($p_domain == Settings::Get('system.hostname')) {
|
$p_domain = strtolower($p_domain);
|
||||||
|
if ($p_domain == strtolower(Settings::Get('system.hostname'))) {
|
||||||
\Froxlor\UI\Response::standard_error('admin_domain_emailsystemhostname', '', true);
|
\Froxlor\UI\Response::standard_error('admin_domain_emailsystemhostname', '', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -712,7 +723,10 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
|
|||||||
'override_tls' => $override_tls,
|
'override_tls' => $override_tls,
|
||||||
'ssl_protocols' => implode(",", $ssl_protocols),
|
'ssl_protocols' => implode(",", $ssl_protocols),
|
||||||
'ssl_cipher_list' => $ssl_cipher_list,
|
'ssl_cipher_list' => $ssl_cipher_list,
|
||||||
'tlsv13_cipher_list' => $tlsv13_cipher_list
|
'tlsv13_cipher_list' => $tlsv13_cipher_list,
|
||||||
|
'sslenabled' => $sslenabled,
|
||||||
|
'honorcipherorder' => $honorcipherorder,
|
||||||
|
'sessiontickets' => $sessiontickets
|
||||||
);
|
);
|
||||||
|
|
||||||
$ins_stmt = Database::prepare("
|
$ins_stmt = Database::prepare("
|
||||||
@@ -760,7 +774,10 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
|
|||||||
`override_tls` = :override_tls,
|
`override_tls` = :override_tls,
|
||||||
`ssl_protocols` = :ssl_protocols,
|
`ssl_protocols` = :ssl_protocols,
|
||||||
`ssl_cipher_list` = :ssl_cipher_list,
|
`ssl_cipher_list` = :ssl_cipher_list,
|
||||||
`tlsv13_cipher_list` = :tlsv13_cipher_list
|
`tlsv13_cipher_list` = :tlsv13_cipher_list,
|
||||||
|
`ssl_enabled` = :sslenabled,
|
||||||
|
`ssl_honorcipherorder` = :honorcipherorder,
|
||||||
|
`ssl_sessiontickets`= :sessiontickets
|
||||||
");
|
");
|
||||||
Database::pexecute($ins_stmt, $ins_data, true, true);
|
Database::pexecute($ins_stmt, $ins_data, true, true);
|
||||||
$domainid = Database::lastInsertId();
|
$domainid = Database::lastInsertId();
|
||||||
@@ -894,6 +911,8 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
|
|||||||
* optional, list of ssl-enabled ip/port id's to assign to this domain, if left empty, the current set value is being used, to remove all ssl ips use $remove_ssl_ipandport
|
* optional, list of ssl-enabled ip/port id's to assign to this domain, if left empty, the current set value is being used, to remove all ssl ips use $remove_ssl_ipandport
|
||||||
* @param bool $remove_ssl_ipandport
|
* @param bool $remove_ssl_ipandport
|
||||||
* optional, if set to true and no $ssl_ipandport value is given, the ip's get removed, otherwise, the currently set value is used, default false
|
* optional, if set to true and no $ssl_ipandport value is given, the ip's get removed, otherwise, the currently set value is used, default false
|
||||||
|
* @param bool $sslenabled
|
||||||
|
* optional, whether or not SSL is enabled for this domain, regardless of the assigned ssl-ips, default 1 (true)
|
||||||
* @param bool $http2
|
* @param bool $http2
|
||||||
* optional, whether to enable http/2 for this domain (requires to be enabled in the settings), default 0 (false)
|
* optional, whether to enable http/2 for this domain (requires to be enabled in the settings), default 0 (false)
|
||||||
* @param int $hsts_maxage
|
* @param int $hsts_maxage
|
||||||
@@ -904,6 +923,10 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
|
|||||||
* optional whether or not to preload HSTS header value
|
* optional whether or not to preload HSTS header value
|
||||||
* @param bool $ocsp_stapling
|
* @param bool $ocsp_stapling
|
||||||
* optional whether to enable ocsp-stapling for this domain. default 0 (false), requires SSL
|
* optional whether to enable ocsp-stapling for this domain. default 0 (false), requires SSL
|
||||||
|
* @param bool $honorcipherorder
|
||||||
|
* optional whether to honor the (server) cipher order for this domain. default 0 (false), requires SSL
|
||||||
|
* @param bool $sessiontickets
|
||||||
|
* optional whether to enable or disable TLS sessiontickets (RFC 5077) for this domain. default 1 (true), requires SSL
|
||||||
*
|
*
|
||||||
* @access admin
|
* @access admin
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
@@ -964,11 +987,14 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
|
|||||||
$p_ssl_ipandports = $this->getParam('ssl_ipandport', true, $remove_ssl_ipandport ? array(
|
$p_ssl_ipandports = $this->getParam('ssl_ipandport', true, $remove_ssl_ipandport ? array(
|
||||||
- 1
|
- 1
|
||||||
) : null);
|
) : null);
|
||||||
|
$sslenabled = $this->getBoolParam('sslenabled', true, $result['ssl_enabled']);
|
||||||
$http2 = $this->getBoolParam('http2', true, $result['http2']);
|
$http2 = $this->getBoolParam('http2', true, $result['http2']);
|
||||||
$hsts_maxage = $this->getParam('hsts_maxage', true, $result['hsts']);
|
$hsts_maxage = $this->getParam('hsts_maxage', true, $result['hsts']);
|
||||||
$hsts_sub = $this->getBoolParam('hsts_sub', true, $result['hsts_sub']);
|
$hsts_sub = $this->getBoolParam('hsts_sub', true, $result['hsts_sub']);
|
||||||
$hsts_preload = $this->getBoolParam('hsts_preload', true, $result['hsts_preload']);
|
$hsts_preload = $this->getBoolParam('hsts_preload', true, $result['hsts_preload']);
|
||||||
$ocsp_stapling = $this->getBoolParam('ocsp_stapling', true, $result['ocsp_stapling']);
|
$ocsp_stapling = $this->getBoolParam('ocsp_stapling', true, $result['ocsp_stapling']);
|
||||||
|
$honorcipherorder = $this->getBoolParam('honorcipherorder', true, $result['ssl_honorcipherorder']);
|
||||||
|
$sessiontickets = $this->getBoolParam('sessiontickets', true, $result['ssl_sessiontickets']);
|
||||||
|
|
||||||
$override_tls = $this->getBoolParam('override_tls', true, $result['override_tls']);
|
$override_tls = $this->getBoolParam('override_tls', true, $result['override_tls']);
|
||||||
|
|
||||||
@@ -1546,6 +1572,9 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
|
|||||||
$update_data['ssl_protocols'] = implode(",", $ssl_protocols);
|
$update_data['ssl_protocols'] = implode(",", $ssl_protocols);
|
||||||
$update_data['ssl_cipher_list'] = $ssl_cipher_list;
|
$update_data['ssl_cipher_list'] = $ssl_cipher_list;
|
||||||
$update_data['tlsv13_cipher_list'] = $tlsv13_cipher_list;
|
$update_data['tlsv13_cipher_list'] = $tlsv13_cipher_list;
|
||||||
|
$update_data['sslenabled'] = $sslenabled;
|
||||||
|
$update_data['honorcipherorder'] = $honorcipherorder;
|
||||||
|
$update_data['sessiontickets'] = $sessiontickets;
|
||||||
$update_data['id'] = $id;
|
$update_data['id'] = $id;
|
||||||
|
|
||||||
$update_stmt = Database::prepare("
|
$update_stmt = Database::prepare("
|
||||||
@@ -1588,7 +1617,10 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
|
|||||||
`override_tls` = :override_tls,
|
`override_tls` = :override_tls,
|
||||||
`ssl_protocols` = :ssl_protocols,
|
`ssl_protocols` = :ssl_protocols,
|
||||||
`ssl_cipher_list` = :ssl_cipher_list,
|
`ssl_cipher_list` = :ssl_cipher_list,
|
||||||
`tlsv13_cipher_list` = :tlsv13_cipher_list
|
`tlsv13_cipher_list` = :tlsv13_cipher_list,
|
||||||
|
`ssl_enabled` = :sslenabled,
|
||||||
|
`ssl_honorcipherorder` = :honorcipherorder,
|
||||||
|
`ssl_sessiontickets` = :sessiontickets
|
||||||
WHERE `id` = :id
|
WHERE `id` = :id
|
||||||
");
|
");
|
||||||
Database::pexecute($update_stmt, $update_data, true, true);
|
Database::pexecute($update_stmt, $update_data, true, true);
|
||||||
@@ -1599,10 +1631,15 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
|
|||||||
$_update_data['openbasedir'] = $openbasedir;
|
$_update_data['openbasedir'] = $openbasedir;
|
||||||
$_update_data['mod_fcgid_starter'] = $mod_fcgid_starter;
|
$_update_data['mod_fcgid_starter'] = $mod_fcgid_starter;
|
||||||
$_update_data['mod_fcgid_maxrequests'] = $mod_fcgid_maxrequests;
|
$_update_data['mod_fcgid_maxrequests'] = $mod_fcgid_maxrequests;
|
||||||
|
$_update_data['notryfiles'] = $notryfiles;
|
||||||
|
$_update_data['writeaccesslog'] = $writeaccesslog;
|
||||||
|
$_update_data['writeerrorlog'] = $writeerrorlog;
|
||||||
$_update_data['override_tls'] = $override_tls;
|
$_update_data['override_tls'] = $override_tls;
|
||||||
$_update_data['ssl_protocols'] = implode(",", $ssl_protocols);
|
$_update_data['ssl_protocols'] = implode(",", $ssl_protocols);
|
||||||
$_update_data['ssl_cipher_list'] = $ssl_cipher_list;
|
$_update_data['ssl_cipher_list'] = $ssl_cipher_list;
|
||||||
$_update_data['tlsv13_cipher_list'] = $tlsv13_cipher_list;
|
$_update_data['tlsv13_cipher_list'] = $tlsv13_cipher_list;
|
||||||
|
$_update_data['honorcipherorder'] = $honorcipherorder;
|
||||||
|
$_update_data['sessiontickets'] = $sessiontickets;
|
||||||
$_update_data['parentdomainid'] = $id;
|
$_update_data['parentdomainid'] = $id;
|
||||||
|
|
||||||
// if php config is to be set for all subdomains, check here
|
// if php config is to be set for all subdomains, check here
|
||||||
@@ -1627,10 +1664,15 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn
|
|||||||
`openbasedir` = :openbasedir,
|
`openbasedir` = :openbasedir,
|
||||||
`mod_fcgid_starter` = :mod_fcgid_starter,
|
`mod_fcgid_starter` = :mod_fcgid_starter,
|
||||||
`mod_fcgid_maxrequests` = :mod_fcgid_maxrequests,
|
`mod_fcgid_maxrequests` = :mod_fcgid_maxrequests,
|
||||||
|
`notryfiles` = :notryfiles,
|
||||||
|
`writeaccesslog` = :writeaccesslog,
|
||||||
|
`writeerrorlog` = :writeerrorlog,
|
||||||
`override_tls` = :override_tls,
|
`override_tls` = :override_tls,
|
||||||
`ssl_protocols` = :ssl_protocols,
|
`ssl_protocols` = :ssl_protocols,
|
||||||
`ssl_cipher_list` = :ssl_cipher_list,
|
`ssl_cipher_list` = :ssl_cipher_list,
|
||||||
`tlsv13_cipher_list` = :tlsv13_cipher_list
|
`tlsv13_cipher_list` = :tlsv13_cipher_list,
|
||||||
|
`ssl_honorcipherorder` = :honorcipherorder,
|
||||||
|
`ssl_sessiontickets` = :sessiontickets
|
||||||
" . $update_phpconfig . $upd_specialsettings . $updatechildren . $update_sslredirect . "
|
" . $update_phpconfig . $upd_specialsettings . $updatechildren . $update_sslredirect . "
|
||||||
WHERE `parentdomainid` = :parentdomainid
|
WHERE `parentdomainid` = :parentdomainid
|
||||||
");
|
");
|
||||||
|
|||||||
@@ -106,10 +106,12 @@ class Emails extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt
|
|||||||
);
|
);
|
||||||
$email_check = Database::pexecute_first($stmt, $params, true, true);
|
$email_check = Database::pexecute_first($stmt, $params, true, true);
|
||||||
|
|
||||||
if (strtolower($email_check['email_full']) == strtolower($email_full)) {
|
if ($email_check) {
|
||||||
\Froxlor\UI\Response::standard_error('emailexistalready', $email_full, true);
|
if (strtolower($email_check['email_full']) == strtolower($email_full)) {
|
||||||
} elseif ($email_check['email'] == $email) {
|
\Froxlor\UI\Response::standard_error('emailexistalready', $email_full, true);
|
||||||
\Froxlor\UI\Response::standard_error('youhavealreadyacatchallforthisdomain', '', true);
|
} elseif ($email_check['email'] == $email) {
|
||||||
|
\Froxlor\UI\Response::standard_error('youhavealreadyacatchallforthisdomain', '', true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$stmt = Database::prepare("
|
$stmt = Database::prepare("
|
||||||
@@ -233,6 +235,19 @@ class Emails extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt
|
|||||||
$iscatchall = '1';
|
$iscatchall = '1';
|
||||||
$email_parts = explode('@', $result['email_full']);
|
$email_parts = explode('@', $result['email_full']);
|
||||||
$email = '@' . $email_parts[1];
|
$email = '@' . $email_parts[1];
|
||||||
|
// catchall check
|
||||||
|
$stmt = Database::prepare("
|
||||||
|
SELECT `email_full` FROM `" . TABLE_MAIL_VIRTUAL . "`
|
||||||
|
WHERE `email` = :email AND `customerid` = :cid AND `iscatchall` = '1'
|
||||||
|
");
|
||||||
|
$params = array(
|
||||||
|
"email" => $email,
|
||||||
|
"cid" => $customer['customerid']
|
||||||
|
);
|
||||||
|
$email_check = Database::pexecute_first($stmt, $params, true, true);
|
||||||
|
if ($email_check) {
|
||||||
|
\Froxlor\UI\Response::standard_error('youhavealreadyacatchallforthisdomain', '', true);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$iscatchall = '0';
|
$iscatchall = '0';
|
||||||
$email = $result['email_full'];
|
$email = $result['email_full'];
|
||||||
@@ -273,7 +288,7 @@ class Emails extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt
|
|||||||
* optional specify offset for resultset
|
* optional specify offset for resultset
|
||||||
* @param array $sql_orderby
|
* @param array $sql_orderby
|
||||||
* optional array with index = fieldname and value = ASC|DESC to order the resultset by one or more fields
|
* optional array with index = fieldname and value = ASC|DESC to order the resultset by one or more fields
|
||||||
*
|
*
|
||||||
* @access admin, customer
|
* @access admin, customer
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
* @return string json-encoded array count|list
|
* @return string json-encoded array count|list
|
||||||
|
|||||||
@@ -150,6 +150,8 @@ class FpmDaemons extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
* optional, default 0
|
* optional, default 0
|
||||||
* @param string $limit_extensions
|
* @param string $limit_extensions
|
||||||
* optional, limit execution to the following extensions, default '.php'
|
* optional, limit execution to the following extensions, default '.php'
|
||||||
|
* @param string $custom_config
|
||||||
|
* optional, custom settings appended to phpfpm pool configuration
|
||||||
*
|
*
|
||||||
* @access admin
|
* @access admin
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
@@ -173,6 +175,7 @@ class FpmDaemons extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
$max_requests = $this->getParam('max_requests', true, 0);
|
$max_requests = $this->getParam('max_requests', true, 0);
|
||||||
$idle_timeout = $this->getParam('idle_timeout', true, 0);
|
$idle_timeout = $this->getParam('idle_timeout', true, 0);
|
||||||
$limit_extensions = $this->getParam('limit_extensions', true, '.php');
|
$limit_extensions = $this->getParam('limit_extensions', true, '.php');
|
||||||
|
$custom_config = $this->getParam('custom_config', true, '');
|
||||||
|
|
||||||
// validation
|
// validation
|
||||||
$description = \Froxlor\Validate\Validate::validate($description, 'description', '', '', array(), true);
|
$description = \Froxlor\Validate\Validate::validate($description, 'description', '', '', array(), true);
|
||||||
@@ -206,7 +209,8 @@ class FpmDaemons extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
`max_spare_servers` = :max_spare_servers,
|
`max_spare_servers` = :max_spare_servers,
|
||||||
`max_requests` = :max_requests,
|
`max_requests` = :max_requests,
|
||||||
`idle_timeout` = :idle_timeout,
|
`idle_timeout` = :idle_timeout,
|
||||||
`limit_extensions` = :limit_extensions
|
`limit_extensions` = :limit_extensions,
|
||||||
|
`custom_config` = :custom_config
|
||||||
");
|
");
|
||||||
$ins_data = array(
|
$ins_data = array(
|
||||||
'desc' => $description,
|
'desc' => $description,
|
||||||
@@ -219,7 +223,8 @@ class FpmDaemons extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
'max_spare_servers' => $max_spare_servers,
|
'max_spare_servers' => $max_spare_servers,
|
||||||
'max_requests' => $max_requests,
|
'max_requests' => $max_requests,
|
||||||
'idle_timeout' => $idle_timeout,
|
'idle_timeout' => $idle_timeout,
|
||||||
'limit_extensions' => $limit_extensions
|
'limit_extensions' => $limit_extensions,
|
||||||
|
'custom_config' => $custom_config
|
||||||
);
|
);
|
||||||
Database::pexecute($ins_stmt, $ins_data);
|
Database::pexecute($ins_stmt, $ins_data);
|
||||||
$id = Database::lastInsertId();
|
$id = Database::lastInsertId();
|
||||||
@@ -261,6 +266,8 @@ class FpmDaemons extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
* optional, default 0
|
* optional, default 0
|
||||||
* @param string $limit_extensions
|
* @param string $limit_extensions
|
||||||
* optional, limit execution to the following extensions, default '.php'
|
* optional, limit execution to the following extensions, default '.php'
|
||||||
|
* @param string $custom_config
|
||||||
|
* optional, custom settings appended to phpfpm pool configuration
|
||||||
*
|
*
|
||||||
* @access admin
|
* @access admin
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
@@ -289,6 +296,7 @@ class FpmDaemons extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
$max_requests = $this->getParam('max_requests', true, $result['max_requests']);
|
$max_requests = $this->getParam('max_requests', true, $result['max_requests']);
|
||||||
$idle_timeout = $this->getParam('idle_timeout', true, $result['idle_timeout']);
|
$idle_timeout = $this->getParam('idle_timeout', true, $result['idle_timeout']);
|
||||||
$limit_extensions = $this->getParam('limit_extensions', true, $result['limit_extensions']);
|
$limit_extensions = $this->getParam('limit_extensions', true, $result['limit_extensions']);
|
||||||
|
$custom_config = $this->getParam('custom_config', true, $result['custom_config']);
|
||||||
|
|
||||||
// validation
|
// validation
|
||||||
$description = \Froxlor\Validate\Validate::validate($description, 'description', '', '', array(), true);
|
$description = \Froxlor\Validate\Validate::validate($description, 'description', '', '', array(), true);
|
||||||
@@ -322,7 +330,8 @@ class FpmDaemons extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
`max_spare_servers` = :max_spare_servers,
|
`max_spare_servers` = :max_spare_servers,
|
||||||
`max_requests` = :max_requests,
|
`max_requests` = :max_requests,
|
||||||
`idle_timeout` = :idle_timeout,
|
`idle_timeout` = :idle_timeout,
|
||||||
`limit_extensions` = :limit_extensions
|
`limit_extensions` = :limit_extensions,
|
||||||
|
`custom_config` = :custom_config
|
||||||
WHERE `id` = :id
|
WHERE `id` = :id
|
||||||
");
|
");
|
||||||
$upd_data = array(
|
$upd_data = array(
|
||||||
@@ -337,6 +346,7 @@ class FpmDaemons extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
'max_requests' => $max_requests,
|
'max_requests' => $max_requests,
|
||||||
'idle_timeout' => $idle_timeout,
|
'idle_timeout' => $idle_timeout,
|
||||||
'limit_extensions' => $limit_extensions,
|
'limit_extensions' => $limit_extensions,
|
||||||
|
'custom_config' => $custom_config,
|
||||||
'id' => $id
|
'id' => $id
|
||||||
);
|
);
|
||||||
Database::pexecute($upd_stmt, $upd_data, true, true);
|
Database::pexecute($upd_stmt, $upd_data, true, true);
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class Froxlor extends \Froxlor\Api\ApiCommand
|
|||||||
try {
|
try {
|
||||||
$latestversion = \Froxlor\Http\HttpClient::urlGet(UPDATE_URI, true, 3);
|
$latestversion = \Froxlor\Http\HttpClient::urlGet(UPDATE_URI, true, 3);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$latestversion = \Froxlor\Froxlor::getVersion()."|Version-check currently unavailable, please try again later";
|
$latestversion = \Froxlor\Froxlor::getVersion() . "|Version-check currently unavailable, please try again later";
|
||||||
}
|
}
|
||||||
$latestversion = explode('|', $latestversion);
|
$latestversion = explode('|', $latestversion);
|
||||||
|
|
||||||
@@ -216,7 +216,7 @@ class Froxlor extends \Froxlor\Api\ApiCommand
|
|||||||
*/
|
*/
|
||||||
public function updateSetting()
|
public function updateSetting()
|
||||||
{
|
{
|
||||||
// currently not implemented as it required validation too so no wrong settings are being stored via API
|
// currently not implemented as it requires validation too so no wrong settings are being stored via API
|
||||||
throw new \Exception("Not available yet.", 501);
|
throw new \Exception("Not available yet.", 501);
|
||||||
|
|
||||||
if ($this->isAdmin() && $this->getUserDetail('change_serversettings')) {
|
if ($this->isAdmin() && $this->getUserDetail('change_serversettings')) {
|
||||||
@@ -232,6 +232,17 @@ class Froxlor extends \Froxlor\Api\ApiCommand
|
|||||||
throw new \Exception("Not allowed to execute given command.", 403);
|
throw new \Exception("Not allowed to execute given command.", 403);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns a random password based on froxlor settings for min-length, included characters, etc.
|
||||||
|
*
|
||||||
|
* @access admin, customer
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function generatePassword()
|
||||||
|
{
|
||||||
|
return $this->response(200, "successfull", \Froxlor\System\Crypt::generatePassword());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* returns a list of all available api functions
|
* returns a list of all available api functions
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
* optional, php-settings-id, if empty the $domain value is used
|
* optional, php-settings-id, if empty the $domain value is used
|
||||||
* @param int $redirectcode
|
* @param int $redirectcode
|
||||||
* optional, redirect-code-id from TABLE_PANEL_REDIRECTCODES
|
* optional, redirect-code-id from TABLE_PANEL_REDIRECTCODES
|
||||||
|
* @param bool $sslenabled
|
||||||
|
* optional, whether or not SSL is enabled for this domain, regardless of the assigned ssl-ips, default 1 (true)
|
||||||
* @param bool $ssl_redirect
|
* @param bool $ssl_redirect
|
||||||
* optional, whether to generate a https-redirect or not, default false; requires SSL to be enabled
|
* optional, whether to generate a https-redirect or not, default false; requires SSL to be enabled
|
||||||
* @param bool $letsencrypt
|
* @param bool $letsencrypt
|
||||||
@@ -76,6 +78,7 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
$redirectcode = $this->getParam('redirectcode', true, Settings::Get('customredirect.default'));
|
$redirectcode = $this->getParam('redirectcode', true, Settings::Get('customredirect.default'));
|
||||||
$isemaildomain = $this->getParam('isemaildomain', true, 0);
|
$isemaildomain = $this->getParam('isemaildomain', true, 0);
|
||||||
if (Settings::Get('system.use_ssl')) {
|
if (Settings::Get('system.use_ssl')) {
|
||||||
|
$sslenabled = $this->getBoolParam('sslenabled', true, 1);
|
||||||
$ssl_redirect = $this->getBoolParam('ssl_redirect', true, 0);
|
$ssl_redirect = $this->getBoolParam('ssl_redirect', true, 0);
|
||||||
$letsencrypt = $this->getBoolParam('letsencrypt', true, 0);
|
$letsencrypt = $this->getBoolParam('letsencrypt', true, 0);
|
||||||
$http2 = $this->getBoolParam('http2', true, 0);
|
$http2 = $this->getBoolParam('http2', true, 0);
|
||||||
@@ -83,6 +86,7 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
$hsts_sub = $this->getBoolParam('hsts_sub', true, 0);
|
$hsts_sub = $this->getBoolParam('hsts_sub', true, 0);
|
||||||
$hsts_preload = $this->getBoolParam('hsts_preload', true, 0);
|
$hsts_preload = $this->getBoolParam('hsts_preload', true, 0);
|
||||||
} else {
|
} else {
|
||||||
|
$sslenabled = 0;
|
||||||
$ssl_redirect = 0;
|
$ssl_redirect = 0;
|
||||||
$letsencrypt = 0;
|
$letsencrypt = 0;
|
||||||
$http2 = 0;
|
$http2 = 0;
|
||||||
@@ -95,6 +99,7 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
$customer = $this->getCustomerData('subdomains');
|
$customer = $this->getCustomerData('subdomains');
|
||||||
|
|
||||||
// validation
|
// validation
|
||||||
|
$subdomain = strtolower($subdomain);
|
||||||
if (substr($subdomain, 0, 4) == 'xn--') {
|
if (substr($subdomain, 0, 4) == 'xn--') {
|
||||||
\Froxlor\UI\Response::standard_error('domain_nopunycode', '', true);
|
\Froxlor\UI\Response::standard_error('domain_nopunycode', '', true);
|
||||||
}
|
}
|
||||||
@@ -114,7 +119,7 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
'mydomain'
|
'mydomain'
|
||||||
), '', true);
|
), '', true);
|
||||||
}
|
}
|
||||||
if ($completedomain == Settings::Get('system.hostname')) {
|
if ($completedomain == strtolower(Settings::Get('system.hostname'))) {
|
||||||
\Froxlor\UI\Response::standard_error('admin_domain_emailsystemhostname', '', true);
|
\Froxlor\UI\Response::standard_error('admin_domain_emailsystemhostname', '', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -275,7 +280,8 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
`override_tls` = :override_tls,
|
`override_tls` = :override_tls,
|
||||||
`ssl_protocols` = :ssl_protocols,
|
`ssl_protocols` = :ssl_protocols,
|
||||||
`ssl_cipher_list` = :ssl_cipher_list,
|
`ssl_cipher_list` = :ssl_cipher_list,
|
||||||
`tlsv13_cipher_list` = :tlsv13_cipher_list
|
`tlsv13_cipher_list` = :tlsv13_cipher_list,
|
||||||
|
`ssl_enabled` = :sslenabled
|
||||||
");
|
");
|
||||||
$params = array(
|
$params = array(
|
||||||
"customerid" => $customer['customerid'],
|
"customerid" => $customer['customerid'],
|
||||||
@@ -305,7 +311,8 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
"override_tls" => $domain_check['override_tls'],
|
"override_tls" => $domain_check['override_tls'],
|
||||||
"ssl_protocols" => $domain_check['ssl_protocols'],
|
"ssl_protocols" => $domain_check['ssl_protocols'],
|
||||||
"ssl_cipher_list" => $domain_check['ssl_cipher_list'],
|
"ssl_cipher_list" => $domain_check['ssl_cipher_list'],
|
||||||
"tlsv13_cipher_list" => $domain_check['tlsv13_cipher_list']
|
"tlsv13_cipher_list" => $domain_check['tlsv13_cipher_list'],
|
||||||
|
"sslenabled" => $sslenabled
|
||||||
);
|
);
|
||||||
Database::pexecute($stmt, $params, true, true);
|
Database::pexecute($stmt, $params, true, true);
|
||||||
$subdomain_id = Database::lastInsertId();
|
$subdomain_id = Database::lastInsertId();
|
||||||
@@ -446,6 +453,8 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
* optional, php-settings-id, if empty the $domain value is used
|
* optional, php-settings-id, if empty the $domain value is used
|
||||||
* @param int $redirectcode
|
* @param int $redirectcode
|
||||||
* optional, redirect-code-id from TABLE_PANEL_REDIRECTCODES
|
* optional, redirect-code-id from TABLE_PANEL_REDIRECTCODES
|
||||||
|
* @param bool $sslenabled
|
||||||
|
* optional, whether or not SSL is enabled for this domain, regardless of the assigned ssl-ips, default 1 (true)
|
||||||
* @param bool $ssl_redirect
|
* @param bool $ssl_redirect
|
||||||
* optional, whether to generate a https-redirect or not, default false; requires SSL to be enabled
|
* optional, whether to generate a https-redirect or not, default false; requires SSL to be enabled
|
||||||
* @param bool $letsencrypt
|
* @param bool $letsencrypt
|
||||||
@@ -493,6 +502,7 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
$phpsettingid = $this->getParam('phpsettingid', true, $result['phpsettingid']);
|
$phpsettingid = $this->getParam('phpsettingid', true, $result['phpsettingid']);
|
||||||
$redirectcode = $this->getParam('redirectcode', true, \Froxlor\Domain\Domain::getDomainRedirectId($id));
|
$redirectcode = $this->getParam('redirectcode', true, \Froxlor\Domain\Domain::getDomainRedirectId($id));
|
||||||
if (Settings::Get('system.use_ssl')) {
|
if (Settings::Get('system.use_ssl')) {
|
||||||
|
$sslenabled = $this->getBoolParam('sslenabled', true, $result['ssl_enabled']);
|
||||||
$ssl_redirect = $this->getBoolParam('ssl_redirect', true, $result['ssl_redirect']);
|
$ssl_redirect = $this->getBoolParam('ssl_redirect', true, $result['ssl_redirect']);
|
||||||
$letsencrypt = $this->getBoolParam('letsencrypt', true, $result['letsencrypt']);
|
$letsencrypt = $this->getBoolParam('letsencrypt', true, $result['letsencrypt']);
|
||||||
$http2 = $this->getBoolParam('http2', true, $result['http2']);
|
$http2 = $this->getBoolParam('http2', true, $result['http2']);
|
||||||
@@ -500,6 +510,7 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
$hsts_sub = $this->getBoolParam('hsts_sub', true, $result['hsts_sub']);
|
$hsts_sub = $this->getBoolParam('hsts_sub', true, $result['hsts_sub']);
|
||||||
$hsts_preload = $this->getBoolParam('hsts_preload', true, $result['hsts_preload']);
|
$hsts_preload = $this->getBoolParam('hsts_preload', true, $result['hsts_preload']);
|
||||||
} else {
|
} else {
|
||||||
|
$sslenabled = 0;
|
||||||
$ssl_redirect = 0;
|
$ssl_redirect = 0;
|
||||||
$letsencrypt = 0;
|
$letsencrypt = 0;
|
||||||
$http2 = 0;
|
$http2 = 0;
|
||||||
@@ -610,14 +621,15 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
if ($path != $result['documentroot'] || $isemaildomain != $result['isemaildomain'] || $wwwserveralias != $result['wwwserveralias'] || $iswildcarddomain != $result['iswildcarddomain'] || $aliasdomain != $result['aliasdomain'] || $openbasedir_path != $result['openbasedir_path'] || $ssl_redirect != $result['ssl_redirect'] || $letsencrypt != $result['letsencrypt'] || $hsts_maxage != $result['hsts'] || $hsts_sub != $result['hsts_sub'] || $hsts_preload != $result['hsts_preload'] || $phpsettingid != $result['phpsettingid']) {
|
if ($path != $result['documentroot'] || $isemaildomain != $result['isemaildomain'] || $wwwserveralias != $result['wwwserveralias'] || $iswildcarddomain != $result['iswildcarddomain'] || $aliasdomain != $result['aliasdomain'] || $openbasedir_path != $result['openbasedir_path'] || $ssl_redirect != $result['ssl_redirect'] || $letsencrypt != $result['letsencrypt'] || $hsts_maxage != $result['hsts'] || $hsts_sub != $result['hsts_sub'] || $hsts_preload != $result['hsts_preload'] || $phpsettingid != $result['phpsettingid']) {
|
||||||
$stmt = Database::prepare("
|
$stmt = Database::prepare("
|
||||||
UPDATE `" . TABLE_PANEL_DOMAINS . "` SET
|
UPDATE `" . TABLE_PANEL_DOMAINS . "` SET
|
||||||
`documentroot`= :documentroot,
|
`documentroot` = :documentroot,
|
||||||
`isemaildomain`= :isemaildomain,
|
`isemaildomain` = :isemaildomain,
|
||||||
`wwwserveralias`= :wwwserveralias,
|
`wwwserveralias` = :wwwserveralias,
|
||||||
`iswildcarddomain`= :iswildcarddomain,
|
`iswildcarddomain` = :iswildcarddomain,
|
||||||
`aliasdomain`= :aliasdomain,
|
`aliasdomain` = :aliasdomain,
|
||||||
`openbasedir_path`= :openbasedir_path,
|
`openbasedir_path` = :openbasedir_path,
|
||||||
`ssl_redirect`= :ssl_redirect,
|
`ssl_enabled` = :sslenabled,
|
||||||
`letsencrypt`= :letsencrypt,
|
`ssl_redirect` = :ssl_redirect,
|
||||||
|
`letsencrypt` = :letsencrypt,
|
||||||
`http2` = :http2,
|
`http2` = :http2,
|
||||||
`hsts` = :hsts,
|
`hsts` = :hsts,
|
||||||
`hsts_sub` = :hsts_sub,
|
`hsts_sub` = :hsts_sub,
|
||||||
@@ -632,6 +644,7 @@ class SubDomains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
|
|||||||
"iswildcarddomain" => $iswildcarddomain,
|
"iswildcarddomain" => $iswildcarddomain,
|
||||||
"aliasdomain" => ($aliasdomain != 0 && $alias_check == 0) ? $aliasdomain : null,
|
"aliasdomain" => ($aliasdomain != 0 && $alias_check == 0) ? $aliasdomain : null,
|
||||||
"openbasedir_path" => $openbasedir_path,
|
"openbasedir_path" => $openbasedir_path,
|
||||||
|
"sslenabled" => $sslenabled,
|
||||||
"ssl_redirect" => $ssl_redirect,
|
"ssl_redirect" => $ssl_redirect,
|
||||||
"letsencrypt" => $letsencrypt,
|
"letsencrypt" => $letsencrypt,
|
||||||
"http2" => $http2,
|
"http2" => $http2,
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ class SysLog extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt
|
|||||||
if (count($customer_names) > 0) {
|
if (count($customer_names) > 0) {
|
||||||
$result_stmt = Database::prepare("
|
$result_stmt = Database::prepare("
|
||||||
SELECT * FROM `" . TABLE_PANEL_LOG . "`
|
SELECT * FROM `" . TABLE_PANEL_LOG . "`
|
||||||
WHERE `user` = :loginname OR `user` IN (" . implode(', ', $customer_names) . ")" . $this->getSearchWhere($query_fields, true) . $this->getOrderBy() . $this->getLimit());
|
WHERE `user` = :loginname OR `user` IN ('" . implode("', '", $customer_names) . "')" . $this->getSearchWhere($query_fields, true) . $this->getOrderBy() . $this->getLimit());
|
||||||
} else {
|
} else {
|
||||||
$result_stmt = Database::prepare("
|
$result_stmt = Database::prepare("
|
||||||
SELECT * FROM `" . TABLE_PANEL_LOG . "`
|
SELECT * FROM `" . TABLE_PANEL_LOG . "`
|
||||||
@@ -105,7 +105,7 @@ class SysLog extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt
|
|||||||
if (count($customer_names) > 0) {
|
if (count($customer_names) > 0) {
|
||||||
$result_stmt = Database::prepare("
|
$result_stmt = Database::prepare("
|
||||||
SELECT COUNT(*) as num_logs FROM `" . TABLE_PANEL_LOG . "`
|
SELECT COUNT(*) as num_logs FROM `" . TABLE_PANEL_LOG . "`
|
||||||
WHERE `user` = :loginname OR `user` IN (" . implode(', ', $customer_names) . ")
|
WHERE `user` = :loginname OR `user` IN ('" . implode("', '", $customer_names) . "')
|
||||||
");
|
");
|
||||||
} else {
|
} else {
|
||||||
$result_stmt = Database::prepare("
|
$result_stmt = Database::prepare("
|
||||||
@@ -190,13 +190,12 @@ class SysLog extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt
|
|||||||
}
|
}
|
||||||
if (count($customer_names) > 0) {
|
if (count($customer_names) > 0) {
|
||||||
$result_stmt = Database::prepare("
|
$result_stmt = Database::prepare("
|
||||||
DELETE FROM `" . TABLE_PANEL_LOG . "` WHERE `date` < :trunc AND `user` = :loginname OR `user` IN (" . implode(', ', $customer_names) . ")
|
DELETE FROM `" . TABLE_PANEL_LOG . "` WHERE `date` < :trunc AND `user` = :loginname OR `user` IN ('" . implode("', '", $customer_names) . "')
|
||||||
");
|
");
|
||||||
} else {
|
} else {
|
||||||
$result_stmt = Database::prepare("
|
$result_stmt = Database::prepare("
|
||||||
SELECT COUNT(*) as num_logs FROM `" . TABLE_PANEL_LOG . "`
|
DELETE FROM `" . TABLE_PANEL_LOG . "` WHERE `date` < :trunc AND `user` = :loginname
|
||||||
DELETE FROM `" . TABLE_PANEL_LOG . "` WHERE `date` < :trunc AND `user` = :loginname
|
");
|
||||||
");
|
|
||||||
}
|
}
|
||||||
$params = [
|
$params = [
|
||||||
'loginname' => $this->getUserDetail('loginname')
|
'loginname' => $this->getUserDetail('loginname')
|
||||||
|
|||||||
@@ -442,7 +442,9 @@ class Apache extends HttpConfigBase
|
|||||||
'loginname' => 'froxlor.panel',
|
'loginname' => 'froxlor.panel',
|
||||||
'documentroot' => $mypath,
|
'documentroot' => $mypath,
|
||||||
'customerroot' => $mypath,
|
'customerroot' => $mypath,
|
||||||
'parentdomainid' => 0
|
'parentdomainid' => 0,
|
||||||
|
'ssl_honorcipherorder' => Settings::Get('system.honorcipherorder'),
|
||||||
|
'ssl_sessiontickets' => Settings::Get('system.sessiontickets')
|
||||||
);
|
);
|
||||||
|
|
||||||
// override corresponding array values
|
// override corresponding array values
|
||||||
@@ -478,9 +480,12 @@ class Apache extends HttpConfigBase
|
|||||||
$this->virtualhosts_data[$vhosts_filename] .= ' SSLOpenSSLConfCmd DHParameters "' . $dhparams . '"' . "\n";
|
$this->virtualhosts_data[$vhosts_filename] .= ' SSLOpenSSLConfCmd DHParameters "' . $dhparams . '"' . "\n";
|
||||||
}
|
}
|
||||||
$this->virtualhosts_data[$vhosts_filename] .= ' SSLCompression Off' . "\n";
|
$this->virtualhosts_data[$vhosts_filename] .= ' SSLCompression Off' . "\n";
|
||||||
|
if (Settings::Get('system.sessionticketsenabled') == '1') {
|
||||||
|
$this->virtualhosts_data[$vhosts_filename] .= ' SSLSessionTickets ' . ($domain['ssl_sessiontickets'] == '1' ? 'on' : 'off') . "\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// this makes it more secure, thx to Marcel (08/2013)
|
|
||||||
$this->virtualhosts_data[$vhosts_filename] .= ' SSLHonorCipherOrder On' . "\n";
|
$this->virtualhosts_data[$vhosts_filename] .= ' SSLHonorCipherOrder ' . ($domain['ssl_honorcipherorder'] == '1' ? 'on' : 'off') . "\n";
|
||||||
$this->virtualhosts_data[$vhosts_filename] .= ' SSLCipherSuite ' . Settings::Get('system.ssl_cipher_list') . "\n";
|
$this->virtualhosts_data[$vhosts_filename] .= ' SSLCipherSuite ' . Settings::Get('system.ssl_cipher_list') . "\n";
|
||||||
$protocols = array_map('trim', explode(",", Settings::Get('system.ssl_protocols')));
|
$protocols = array_map('trim', explode(",", Settings::Get('system.ssl_protocols')));
|
||||||
if (in_array("TLSv1.3", $protocols) && ! empty(Settings::Get('system.tlsv13_cipher_list')) && Settings::Get('system.apache24') == 1) {
|
if (in_array("TLSv1.3", $protocols) && ! empty(Settings::Get('system.tlsv13_cipher_list')) && Settings::Get('system.apache24') == 1) {
|
||||||
@@ -755,7 +760,7 @@ class Apache extends HttpConfigBase
|
|||||||
$logtype = 'combined';
|
$logtype = 'combined';
|
||||||
if (Settings::Get('system.logfiles_format') != '') {
|
if (Settings::Get('system.logfiles_format') != '') {
|
||||||
$logtype = 'frx_custom';
|
$logtype = 'frx_custom';
|
||||||
$logfiles_text .= ' LogFormat "' . Settings::Get('system.logfiles_format') . '" ' . $logtype . "\n";
|
$logfiles_text .= ' LogFormat ' . Settings::Get('system.logfiles_format') . ' ' . $logtype . "\n";
|
||||||
}
|
}
|
||||||
if (Settings::Get('system.logfiles_type') == '2' && Settings::Get('system.logfiles_format') == '') {
|
if (Settings::Get('system.logfiles_type') == '2' && Settings::Get('system.logfiles_format') == '') {
|
||||||
$logtype = 'vhost_combined';
|
$logtype = 'vhost_combined';
|
||||||
@@ -986,9 +991,11 @@ class Apache extends HttpConfigBase
|
|||||||
$vhost_content .= ' SSLOpenSSLConfCmd DHParameters "' . $dhparams . '"' . "\n";
|
$vhost_content .= ' SSLOpenSSLConfCmd DHParameters "' . $dhparams . '"' . "\n";
|
||||||
}
|
}
|
||||||
$vhost_content .= ' SSLCompression Off' . "\n";
|
$vhost_content .= ' SSLCompression Off' . "\n";
|
||||||
|
if (Settings::Get('system.sessionticketsenabled') == '1') {
|
||||||
|
$vhost_content .= ' SSLSessionTickets ' . ($domain['ssl_sessiontickets'] == '1' ? 'on' : 'off') . "\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// this makes it more secure, thx to Marcel (08/2013)
|
$vhost_content .= ' SSLHonorCipherOrder ' . ($domain['ssl_honorcipherorder'] == '1' ? 'on' : 'off') . "\n";
|
||||||
$vhost_content .= ' SSLHonorCipherOrder On' . "\n";
|
|
||||||
$vhost_content .= ' SSLCipherSuite ' . $ssl_cipher_list . "\n";
|
$vhost_content .= ' SSLCipherSuite ' . $ssl_cipher_list . "\n";
|
||||||
$protocols = array_map('trim', explode(",", $ssl_protocols));
|
$protocols = array_map('trim', explode(",", $ssl_protocols));
|
||||||
if (in_array("TLSv1.3", $protocols) && ! empty($tlsv13_cipher_list) && Settings::Get('system.apache24') == 1) {
|
if (in_array("TLSv1.3", $protocols) && ! empty($tlsv13_cipher_list) && Settings::Get('system.apache24') == 1) {
|
||||||
@@ -1114,7 +1121,7 @@ class Apache extends HttpConfigBase
|
|||||||
// Create vhost without ssl
|
// Create vhost without ssl
|
||||||
$this->virtualhosts_data[$vhosts_filename] .= $this->getVhostContent($domain, false);
|
$this->virtualhosts_data[$vhosts_filename] .= $this->getVhostContent($domain, false);
|
||||||
|
|
||||||
if ($domain['ssl'] == '1' || $domain['ssl_redirect'] == '1') {
|
if ($domain['ssl_enabled'] == '1' && ($domain['ssl'] == '1' || $domain['ssl_redirect'] == '1')) {
|
||||||
// Adding ssl stuff if enabled
|
// Adding ssl stuff if enabled
|
||||||
$vhosts_filename_ssl = $this->getVhostFilename($domain, true);
|
$vhosts_filename_ssl = $this->getVhostFilename($domain, true);
|
||||||
$this->virtualhosts_data[$vhosts_filename_ssl] = '# Domain ID: ' . $domain['id'] . ' (SSL) - CustomerID: ' . $domain['customerid'] . ' - CustomerLogin: ' . $domain['loginname'] . "\n";
|
$this->virtualhosts_data[$vhosts_filename_ssl] = '# Domain ID: ' . $domain['id'] . ' (SSL) - CustomerID: ' . $domain['customerid'] . ' - CustomerLogin: ' . $domain['loginname'] . "\n";
|
||||||
|
|||||||
@@ -68,6 +68,11 @@ class DomainSSL
|
|||||||
'ssl_key_file' => \Froxlor\FileDir::makeCorrectFile($sslcertpath . '/' . $domain['domain'] . '.key')
|
'ssl_key_file' => \Froxlor\FileDir::makeCorrectFile($sslcertpath . '/' . $domain['domain'] . '.key')
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (! $this->validateCertificate($dom_certs)) {
|
||||||
|
\Froxlor\FroxlorLogger::getInstanceOf()->logAction(\Froxlor\FroxlorLogger::CRON_ACTION, LOG_ERR, 'Given SSL private key for ' . $domain['domain'] . ' does not seem to match the certificate. Cannot create ssl-directives');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (Settings::Get('system.webserver') == 'lighttpd') {
|
if (Settings::Get('system.webserver') == 'lighttpd') {
|
||||||
// put my.crt and my.key together for lighty.
|
// put my.crt and my.key together for lighty.
|
||||||
$dom_certs['ssl_cert_file'] = trim($dom_certs['ssl_cert_file']) . "\n" . trim($dom_certs['ssl_key_file']) . "\n";
|
$dom_certs['ssl_cert_file'] = trim($dom_certs['ssl_cert_file']) . "\n" . trim($dom_certs['ssl_key_file']) . "\n";
|
||||||
@@ -112,4 +117,9 @@ class DomainSSL
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function validateCertificate($dom_certs = array())
|
||||||
|
{
|
||||||
|
return openssl_x509_check_private_key($dom_certs['ssl_cert_file'], $dom_certs['ssl_key_file']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -432,7 +432,7 @@ class Lighttpd extends HttpConfigBase
|
|||||||
|
|
||||||
protected function getVhostContent($domain, $ssl_vhost = false, $ipid = 0)
|
protected function getVhostContent($domain, $ssl_vhost = false, $ipid = 0)
|
||||||
{
|
{
|
||||||
if ($ssl_vhost === true && $domain['ssl'] != '1' && $domain['ssl_redirect'] != '1') {
|
if ($ssl_vhost === true && $domain['ssl'] != '1' && $domain['ssl_enabled'] != '1' && $domain['ssl_redirect'] != '1') {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -586,7 +586,7 @@ class Lighttpd extends HttpConfigBase
|
|||||||
$ssl_settings .= 'ssl.use-sslv2 = "disable"' . "\n";
|
$ssl_settings .= 'ssl.use-sslv2 = "disable"' . "\n";
|
||||||
$ssl_settings .= 'ssl.use-sslv3 = "disable"' . "\n";
|
$ssl_settings .= 'ssl.use-sslv3 = "disable"' . "\n";
|
||||||
$ssl_settings .= 'ssl.cipher-list = "' . $ssl_cipher_list . '"' . "\n";
|
$ssl_settings .= 'ssl.cipher-list = "' . $ssl_cipher_list . '"' . "\n";
|
||||||
$ssl_settings .= 'ssl.honor-cipher-order = "enable"' . "\n";
|
$ssl_settings .= 'ssl.honor-cipher-order = ' . ($domain['ssl_honorcipherorder'] == '1' ? '"enable"' : '"disable"') . "\n";
|
||||||
$ssl_settings .= 'ssl.pemfile = "' . \Froxlor\FileDir::makeCorrectFile($domain['ssl_cert_file']) . '"' . "\n";
|
$ssl_settings .= 'ssl.pemfile = "' . \Froxlor\FileDir::makeCorrectFile($domain['ssl_cert_file']) . '"' . "\n";
|
||||||
|
|
||||||
if ($domain['ssl_ca_file'] != '') {
|
if ($domain['ssl_ca_file'] != '') {
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ class Nginx extends HttpConfigBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
$logtype = 'frx_custom';
|
$logtype = 'frx_custom';
|
||||||
$this->nginx_data[$vhosts_filename] = 'log_format ' . $logtype . ' "' . Settings::Get('system.logfiles_format') . '";' . "\n";
|
$this->nginx_data[$vhosts_filename] = 'log_format ' . $logtype . ' ' . Settings::Get('system.logfiles_format') . ';' . "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -226,7 +226,12 @@ class Nginx extends HttpConfigBase
|
|||||||
$aliases = " " . trim($aliases);
|
$aliases = " " . trim($aliases);
|
||||||
}
|
}
|
||||||
$this->nginx_data[$vhost_filename] .= "\t" . 'server_name ' . Settings::Get('system.hostname') . $aliases . ';' . "\n";
|
$this->nginx_data[$vhost_filename] .= "\t" . 'server_name ' . Settings::Get('system.hostname') . $aliases . ';' . "\n";
|
||||||
$this->nginx_data[$vhost_filename] .= "\t" . 'access_log /var/log/nginx/access.log;' . "\n";
|
|
||||||
|
$logtype = 'combined';
|
||||||
|
if (Settings::Get('system.logfiles_format') != '') {
|
||||||
|
$logtype = 'frx_custom';
|
||||||
|
}
|
||||||
|
$this->nginx_data[$vhost_filename] .= "\t" . 'access_log /var/log/nginx/access.log ' . $logtype . ';' . "\n";
|
||||||
|
|
||||||
if (Settings::Get('system.use_ssl') == '1' && Settings::Get('system.leenabled') == '1' && Settings::Get('system.le_froxlor_enabled') == '1') {
|
if (Settings::Get('system.use_ssl') == '1' && Settings::Get('system.leenabled') == '1' && Settings::Get('system.le_froxlor_enabled') == '1') {
|
||||||
$acmeConfFilename = Settings::Get('system.letsencryptacmeconf');
|
$acmeConfFilename = Settings::Get('system.letsencryptacmeconf');
|
||||||
@@ -272,6 +277,8 @@ class Nginx extends HttpConfigBase
|
|||||||
*/
|
*/
|
||||||
if ($row_ipsandports['ssl'] == '1') {
|
if ($row_ipsandports['ssl'] == '1') {
|
||||||
$row_ipsandports['domain'] = Settings::Get('system.hostname');
|
$row_ipsandports['domain'] = Settings::Get('system.hostname');
|
||||||
|
$row_ipsandports['ssl_honorcipherorder'] = Settings::Get('system.honorcipherorder');
|
||||||
|
$row_ipsandports['ssl_sessiontickets'] = Settings::Get('system.sessiontickets');
|
||||||
$this->nginx_data[$vhost_filename] .= $this->composeSslSettings($row_ipsandports);
|
$this->nginx_data[$vhost_filename] .= $this->composeSslSettings($row_ipsandports);
|
||||||
if ($row_ipsandports['ssl_specialsettings'] != '') {
|
if ($row_ipsandports['ssl_specialsettings'] != '') {
|
||||||
$this->nginx_data[$vhost_filename] .= $this->processSpecialConfigTemplate($row_ipsandports['ssl_specialsettings'], array(
|
$this->nginx_data[$vhost_filename] .= $this->processSpecialConfigTemplate($row_ipsandports['ssl_specialsettings'], array(
|
||||||
@@ -693,14 +700,17 @@ class Nginx extends HttpConfigBase
|
|||||||
if (! file_exists($dhparams)) {
|
if (! file_exists($dhparams)) {
|
||||||
\Froxlor\FileDir::safe_exec('openssl dhparam -out ' . escapeshellarg($dhparams) . ' 4096');
|
\Froxlor\FileDir::safe_exec('openssl dhparam -out ' . escapeshellarg($dhparams) . ' 4096');
|
||||||
}
|
}
|
||||||
$sslsettings .= 'ssl_dhparam ' . $dhparams . ';' . "\n";
|
$sslsettings .= "\t" . 'ssl_dhparam ' . $dhparams . ';' . "\n";
|
||||||
}
|
}
|
||||||
// When <1.11.0: Defaults to prime256v1, similar to first curve recommendation by Mozilla.
|
// When <1.11.0: Defaults to prime256v1, similar to first curve recommendation by Mozilla.
|
||||||
// (When specifyng just one, there's no fallback when specific curve is not supported by client.)
|
// (When specifyng just one, there's no fallback when specific curve is not supported by client.)
|
||||||
// When >1.11.0: Defaults to auto, using recommended curves provided by OpenSSL.
|
// When >1.11.0: Defaults to auto, using recommended curves provided by OpenSSL.
|
||||||
// see https://github.com/Froxlor/Froxlor/issues/652
|
// see https://github.com/Froxlor/Froxlor/issues/652
|
||||||
// $sslsettings .= "\t" . 'ssl_ecdh_curve secp384r1;' . "\n";
|
// $sslsettings .= "\t" . 'ssl_ecdh_curve secp384r1;' . "\n";
|
||||||
$sslsettings .= "\t" . 'ssl_prefer_server_ciphers on;' . "\n";
|
$sslsettings .= "\t" . 'ssl_prefer_server_ciphers ' . (isset($domain_or_ip['ssl_honorcipherorder']) && $domain_or_ip['ssl_honorcipherorder'] == '1' ? 'on' : 'off') . ';' . "\n";
|
||||||
|
if (Settings::Get('system.sessionticketsenabled') == '1') {
|
||||||
|
$sslsettings .= "\t" . 'ssl_session_tickets ' . (isset($domain_or_ip['ssl_sessiontickets']) && $domain_or_ip['ssl_sessiontickets'] == '1' ? 'on' : 'off') . ';' . "\n";
|
||||||
|
}
|
||||||
$sslsettings .= "\t" . 'ssl_session_cache shared:SSL:10m;' . "\n";
|
$sslsettings .= "\t" . 'ssl_session_cache shared:SSL:10m;' . "\n";
|
||||||
$sslsettings .= "\t" . 'ssl_certificate ' . \Froxlor\FileDir::makeCorrectFile($domain_or_ip['ssl_cert_file']) . ';' . "\n";
|
$sslsettings .= "\t" . 'ssl_certificate ' . \Froxlor\FileDir::makeCorrectFile($domain_or_ip['ssl_cert_file']) . ';' . "\n";
|
||||||
|
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ class Fpm
|
|||||||
$fpm_requests = (int) $this->fpm_cfg['max_requests'];
|
$fpm_requests = (int) $this->fpm_cfg['max_requests'];
|
||||||
$fpm_process_idle_timeout = (int) $this->fpm_cfg['idle_timeout'];
|
$fpm_process_idle_timeout = (int) $this->fpm_cfg['idle_timeout'];
|
||||||
$fpm_limit_extensions = $this->fpm_cfg['limit_extensions'];
|
$fpm_limit_extensions = $this->fpm_cfg['limit_extensions'];
|
||||||
|
$fpm_custom_config = $this->fpm_cfg['custom_config'];
|
||||||
|
|
||||||
if ($fpm_children == 0) {
|
if ($fpm_children == 0) {
|
||||||
$fpm_children = 1;
|
$fpm_children = 1;
|
||||||
@@ -260,6 +261,12 @@ class Fpm
|
|||||||
$fpm_config .= 'php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f ' . $this->domain['email'] . "\n";
|
$fpm_config .= 'php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f ' . $this->domain['email'] . "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// append custom phpfpm configuration
|
||||||
|
if (! empty($fpm_custom_config)) {
|
||||||
|
$fpm_config .= "\n; Custom Configuration\n";
|
||||||
|
$fpm_config .= \Froxlor\PhpHelper::replaceVariables($fpm_custom_config, $php_ini_variables);
|
||||||
|
}
|
||||||
|
|
||||||
fwrite($fh, $fpm_config, strlen($fpm_config));
|
fwrite($fh, $fpm_config, strlen($fpm_config));
|
||||||
fclose($fh);
|
fclose($fh);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,7 +137,11 @@ class TrafficCron extends \Froxlor\Cron\FroxlorCron
|
|||||||
$mysqlusage_all[$row_database['customerid']] = 0;
|
$mysqlusage_all[$row_database['customerid']] = 0;
|
||||||
}
|
}
|
||||||
// sum up result
|
// sum up result
|
||||||
$mysqlusage_all[$row_database['customerid']] += floatval($mysql_usage_row['customerusage']);
|
if ($mysql_usage_row) {
|
||||||
|
$mysqlusage_all[$row_database['customerid']] += floatval($mysql_usage_row['customerusage']);
|
||||||
|
} else {
|
||||||
|
\Froxlor\FroxlorLogger::getInstanceOf()->logAction(\Froxlor\FroxlorLogger::CRON_ACTION, LOG_WARNING, "Cannot get usage for database " . $row_database['databasename'] . ".");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
\Froxlor\FroxlorLogger::getInstanceOf()->logAction(\Froxlor\FroxlorLogger::CRON_ACTION, LOG_WARNING, "Seems like the database " . $row_database['databasename'] . " had been removed manually.");
|
\Froxlor\FroxlorLogger::getInstanceOf()->logAction(\Froxlor\FroxlorLogger::CRON_ACTION, LOG_WARNING, "Seems like the database " . $row_database['databasename'] . " had been removed manually.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ final class Froxlor
|
|||||||
{
|
{
|
||||||
|
|
||||||
// Main version variable
|
// Main version variable
|
||||||
const VERSION = '0.10.8';
|
const VERSION = '0.10.12';
|
||||||
|
|
||||||
// Database version (YYYYMMDDC where C is a daily counter)
|
// Database version (YYYYMMDDC where C is a daily counter)
|
||||||
const DBVERSION = '201911220';
|
const DBVERSION = '201912313';
|
||||||
|
|
||||||
// Distribution branding-tag (used for Debian etc.)
|
// Distribution branding-tag (used for Debian etc.)
|
||||||
const BRANDING = '';
|
const BRANDING = '';
|
||||||
|
|||||||
@@ -87,10 +87,13 @@ class FroxlorLogger
|
|||||||
self::$ml->pushHandler(new SyslogHandler('froxlor', LOG_USER, Logger::DEBUG));
|
self::$ml->pushHandler(new SyslogHandler('froxlor', LOG_USER, Logger::DEBUG));
|
||||||
break;
|
break;
|
||||||
case 'file':
|
case 'file':
|
||||||
if (empty(Settings::Get('logger.logfile')) || ! is_writeable(Settings::Get('logger.logfile'))) {
|
$logger_logfile = Settings::Get('logger.logfile');
|
||||||
|
// is_writable needs an existing file to check if it's actually writable
|
||||||
|
@touch($logger_logfile);
|
||||||
|
if (empty($logger_logfile) || ! is_writable($logger_logfile)) {
|
||||||
Settings::Set('logger.logfile', '/tmp/froxlor.log');
|
Settings::Set('logger.logfile', '/tmp/froxlor.log');
|
||||||
}
|
}
|
||||||
self::$ml->pushHandler(new StreamHandler(Settings::Get('logger.logfile'), Logger::DEBUG));
|
self::$ml->pushHandler(new StreamHandler($logger_logfile, Logger::DEBUG));
|
||||||
break;
|
break;
|
||||||
case 'mysql':
|
case 'mysql':
|
||||||
self::$ml->pushHandler(new MysqlHandler(Logger::DEBUG));
|
self::$ml->pushHandler(new MysqlHandler(Logger::DEBUG));
|
||||||
|
|||||||
@@ -37,20 +37,31 @@ class Statistics
|
|||||||
\Froxlor\FileDir::safe_exec('mkdir -p ' . escapeshellarg(Settings::Get('system.awstats_conf')));
|
\Froxlor\FileDir::safe_exec('mkdir -p ' . escapeshellarg(Settings::Get('system.awstats_conf')));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$logformat = Settings::Get('system.awstats_logformat');
|
||||||
|
if (! is_numeric($logformat)) {
|
||||||
|
// if LogFormat is NOT numeric (e.g. 1,2,3,4), we quote it.
|
||||||
|
// 1-4 are pre-defined formats by awstats which must not be quoted to work properly. So if
|
||||||
|
// it is not a integer, it is something customized and we simply quote it.
|
||||||
|
// Only escaping double-quote should be fine, as we only put the whole string under double-quote.
|
||||||
|
$logformat = '"' . str_replace('"', '\"', Settings::Get('system.awstats_logformat')) . '"';
|
||||||
|
}
|
||||||
|
|
||||||
// These are the variables we will replace
|
// These are the variables we will replace
|
||||||
$regex = array(
|
$regex = array(
|
||||||
'/\{LOG_FILE\}/',
|
'/\{LOG_FILE\}/',
|
||||||
'/\{SITE_DOMAIN\}/',
|
'/\{SITE_DOMAIN\}/',
|
||||||
'/\{HOST_ALIASES\}/',
|
'/\{HOST_ALIASES\}/',
|
||||||
'/\{CUSTOMER_DOCROOT\}/',
|
'/\{CUSTOMER_DOCROOT\}/',
|
||||||
'/\{AWSTATS_CONF\}/'
|
'/\{AWSTATS_CONF\}/',
|
||||||
|
'/\{AWSTATS_LOGFORMAT\}/'
|
||||||
);
|
);
|
||||||
$replace = array(
|
$replace = array(
|
||||||
\Froxlor\FileDir::makeCorrectFile($logFile),
|
\Froxlor\FileDir::makeCorrectFile($logFile),
|
||||||
$siteDomain,
|
$siteDomain,
|
||||||
$hostAliases,
|
$hostAliases,
|
||||||
$awstats_dir,
|
$awstats_dir,
|
||||||
\Froxlor\FileDir::makeCorrectDir(Settings::Get('system.awstats_conf'))
|
\Froxlor\FileDir::makeCorrectDir(Settings::Get('system.awstats_conf')),
|
||||||
|
$logformat
|
||||||
);
|
);
|
||||||
|
|
||||||
// File names
|
// File names
|
||||||
|
|||||||
@@ -374,7 +374,7 @@ class PhpHelper
|
|||||||
$returnval = array();
|
$returnval = array();
|
||||||
if (is_array($source)) {
|
if (is_array($source)) {
|
||||||
$source = array_map('trim', $source);
|
$source = array_map('trim', $source);
|
||||||
$source = array_filter($source, function ($value) {
|
$returnval = array_filter($source, function ($value) {
|
||||||
return $value !== '';
|
return $value !== '';
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -242,8 +242,8 @@ class Store
|
|||||||
$mysql_access_host_array = array_map('trim', explode(',', Settings::Get('system.mysql_access_host')));
|
$mysql_access_host_array = array_map('trim', explode(',', Settings::Get('system.mysql_access_host')));
|
||||||
$mysql_access_host_array[] = $newfieldvalue;
|
$mysql_access_host_array[] = $newfieldvalue;
|
||||||
$mysql_access_host_array = array_unique(\Froxlor\PhpHelper::arrayTrim($mysql_access_host_array));
|
$mysql_access_host_array = array_unique(\Froxlor\PhpHelper::arrayTrim($mysql_access_host_array));
|
||||||
$mysql_access_host = implode(',', $mysql_access_host_array);
|
|
||||||
\Froxlor\Database\DbManager::correctMysqlUsers($mysql_access_host_array);
|
\Froxlor\Database\DbManager::correctMysqlUsers($mysql_access_host_array);
|
||||||
|
$mysql_access_host = implode(',', $mysql_access_host_array);
|
||||||
Settings::Set('system.mysql_access_host', $mysql_access_host);
|
Settings::Set('system.mysql_access_host', $mysql_access_host);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -293,9 +293,11 @@ class Store
|
|||||||
'cleanMySQLAccessHost'
|
'cleanMySQLAccessHost'
|
||||||
), $mysql_access_host_array);
|
), $mysql_access_host_array);
|
||||||
|
|
||||||
$mysql_access_host_array = array_unique($mysql_access_host_array);
|
$mysql_access_host_array = array_unique(\Froxlor\PhpHelper::arrayTrim($mysql_access_host_array));
|
||||||
$newfieldvalue = implode(',', $mysql_access_host_array);
|
$newfieldvalue = implode(',', $mysql_access_host_array);
|
||||||
\Froxlor\Database\DbManager::correctMysqlUsers($mysql_access_host_array);
|
\Froxlor\Database\DbManager::correctMysqlUsers($mysql_access_host_array);
|
||||||
|
$mysql_access_host = implode(',', $mysql_access_host_array);
|
||||||
|
Settings::Set('system.mysql_access_host', $mysql_access_host);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $returnvalue;
|
return $returnvalue;
|
||||||
|
|||||||
@@ -180,6 +180,20 @@ return array(
|
|||||||
'image' => 'icons/domain_add.png',
|
'image' => 'icons/domain_add.png',
|
||||||
'visible' => \Froxlor\Settings::Get('system.use_ssl') == '1' ? true : false,
|
'visible' => \Froxlor\Settings::Get('system.use_ssl') == '1' ? true : false,
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
|
'sslenabled' => array(
|
||||||
|
'visible' => ($ssl_ipsandports != '' ? true : false),
|
||||||
|
'label' => $lng['admin']['domain_sslenabled'],
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'values' => array(
|
||||||
|
array(
|
||||||
|
'label' => $lng['panel']['yes'],
|
||||||
|
'value' => '1'
|
||||||
|
)
|
||||||
|
),
|
||||||
|
'value' => array(
|
||||||
|
'1'
|
||||||
|
)
|
||||||
|
),
|
||||||
'no_ssl_available_info' => array(
|
'no_ssl_available_info' => array(
|
||||||
'visible' => ($ssl_ipsandports == '' ? true : false),
|
'visible' => ($ssl_ipsandports == '' ? true : false),
|
||||||
'label' => 'SSL',
|
'label' => 'SSL',
|
||||||
@@ -356,6 +370,32 @@ return array(
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
'value' => array()
|
'value' => array()
|
||||||
|
),
|
||||||
|
'honorcipherorder' => array(
|
||||||
|
'visible' => ($ssl_ipsandports != '' ? true : false),
|
||||||
|
'label' => $lng['admin']['domain_honorcipherorder'],
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'values' => array(
|
||||||
|
array(
|
||||||
|
'label' => $lng['panel']['yes'],
|
||||||
|
'value' => '1'
|
||||||
|
)
|
||||||
|
),
|
||||||
|
'value' => array()
|
||||||
|
),
|
||||||
|
'sessiontickets' => array(
|
||||||
|
'visible' => ($ssl_ipsandports != '' ? true : false) && \Froxlor\Settings::Get('system.webserver') != 'lighttpd',
|
||||||
|
'label' => $lng['admin']['domain_sessiontickets'],
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'values' => array(
|
||||||
|
array(
|
||||||
|
'label' => $lng['panel']['yes'],
|
||||||
|
'value' => '1'
|
||||||
|
)
|
||||||
|
),
|
||||||
|
'value' => array(
|
||||||
|
'1'
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -212,6 +212,20 @@ return array(
|
|||||||
'image' => 'icons/domain_edit.png',
|
'image' => 'icons/domain_edit.png',
|
||||||
'visible' => \Froxlor\Settings::Get('system.use_ssl') == '1' ? true : false,
|
'visible' => \Froxlor\Settings::Get('system.use_ssl') == '1' ? true : false,
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
|
'sslenabled' => array(
|
||||||
|
'visible' => ($ssl_ipsandports != '' ? true : false),
|
||||||
|
'label' => $lng['admin']['domain_sslenabled'],
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'values' => array(
|
||||||
|
array(
|
||||||
|
'label' => $lng['panel']['yes'],
|
||||||
|
'value' => '1'
|
||||||
|
)
|
||||||
|
),
|
||||||
|
'value' => array(
|
||||||
|
$result['ssl_enabled']
|
||||||
|
)
|
||||||
|
),
|
||||||
'no_ssl_available_info' => array(
|
'no_ssl_available_info' => array(
|
||||||
'visible' => ($ssl_ipsandports == '' ? true : false),
|
'visible' => ($ssl_ipsandports == '' ? true : false),
|
||||||
'label' => 'SSL',
|
'label' => 'SSL',
|
||||||
@@ -290,7 +304,7 @@ return array(
|
|||||||
'label' => $lng['serversettings']['ssl']['ssl_protocols']['title'],
|
'label' => $lng['serversettings']['ssl']['ssl_protocols']['title'],
|
||||||
'desc' => $lng['serversettings']['ssl']['ssl_protocols']['description'],
|
'desc' => $lng['serversettings']['ssl']['ssl_protocols']['description'],
|
||||||
'type' => 'checkbox',
|
'type' => 'checkbox',
|
||||||
'value' => !empty($result['ssl_protocols']) ? explode(",", $result['ssl_protocols']) : explode(",", \Froxlor\Settings::Get('system.ssl_protocols')),
|
'value' => ! empty($result['ssl_protocols']) ? explode(",", $result['ssl_protocols']) : explode(",", \Froxlor\Settings::Get('system.ssl_protocols')),
|
||||||
'values' => array(
|
'values' => array(
|
||||||
array(
|
array(
|
||||||
'value' => 'TLSv1',
|
'value' => 'TLSv1',
|
||||||
@@ -316,14 +330,14 @@ return array(
|
|||||||
'label' => $lng['serversettings']['ssl']['ssl_cipher_list']['title'],
|
'label' => $lng['serversettings']['ssl']['ssl_cipher_list']['title'],
|
||||||
'desc' => $lng['serversettings']['ssl']['ssl_cipher_list']['description'],
|
'desc' => $lng['serversettings']['ssl']['ssl_cipher_list']['description'],
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'value' => !empty($result['ssl_cipher_list']) ? $result['ssl_cipher_list'] : \Froxlor\Settings::Get('system.ssl_cipher_list')
|
'value' => ! empty($result['ssl_cipher_list']) ? $result['ssl_cipher_list'] : \Froxlor\Settings::Get('system.ssl_cipher_list')
|
||||||
),
|
),
|
||||||
'tlsv13_cipher_list' => array(
|
'tlsv13_cipher_list' => array(
|
||||||
'visible' => (($ssl_ipsandports != '' ? true : false) && $userinfo['change_serversettings'] == '1' && \Froxlor\Settings::Get('system.webserver') == "apache2" && \Froxlor\Settings::Get('system.apache24') == 1 ? true : false),
|
'visible' => (($ssl_ipsandports != '' ? true : false) && $userinfo['change_serversettings'] == '1' && \Froxlor\Settings::Get('system.webserver') == "apache2" && \Froxlor\Settings::Get('system.apache24') == 1 ? true : false),
|
||||||
'label' => $lng['serversettings']['ssl']['tlsv13_cipher_list']['title'],
|
'label' => $lng['serversettings']['ssl']['tlsv13_cipher_list']['title'],
|
||||||
'desc' => $lng['serversettings']['ssl']['tlsv13_cipher_list']['description'],
|
'desc' => $lng['serversettings']['ssl']['tlsv13_cipher_list']['description'],
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'value' => !empty($result['tlsv13_cipher_list']) ? $result['tlsv13_cipher_list'] : \Froxlor\Settings::Get('system.tlsv13_cipher_list')
|
'value' => ! empty($result['tlsv13_cipher_list']) ? $result['tlsv13_cipher_list'] : \Froxlor\Settings::Get('system.tlsv13_cipher_list')
|
||||||
),
|
),
|
||||||
'ssl_specialsettings' => array(
|
'ssl_specialsettings' => array(
|
||||||
'visible' => ($userinfo['change_serversettings'] == '1' ? true : false),
|
'visible' => ($userinfo['change_serversettings'] == '1' ? true : false),
|
||||||
@@ -401,6 +415,34 @@ return array(
|
|||||||
'value' => array(
|
'value' => array(
|
||||||
$result['ocsp_stapling']
|
$result['ocsp_stapling']
|
||||||
)
|
)
|
||||||
|
),
|
||||||
|
'honorcipherorder' => array(
|
||||||
|
'visible' => ($ssl_ipsandports != '' ? true : false),
|
||||||
|
'label' => $lng['admin']['domain_honorcipherorder'],
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'values' => array(
|
||||||
|
array(
|
||||||
|
'label' => $lng['panel']['yes'],
|
||||||
|
'value' => '1'
|
||||||
|
)
|
||||||
|
),
|
||||||
|
'value' => array(
|
||||||
|
$result['ssl_honorcipherorder']
|
||||||
|
)
|
||||||
|
),
|
||||||
|
'sessiontickets' => array(
|
||||||
|
'visible' => ($ssl_ipsandports != '' ? true : false) && \Froxlor\Settings::Get('system.webserver') != 'lighttpd',
|
||||||
|
'label' => $lng['admin']['domain_sessiontickets'],
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'values' => array(
|
||||||
|
array(
|
||||||
|
'label' => $lng['panel']['yes'],
|
||||||
|
'value' => '1'
|
||||||
|
)
|
||||||
|
),
|
||||||
|
'value' => array(
|
||||||
|
$result['ssl_sessiontickets']
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -86,6 +86,13 @@ return array(
|
|||||||
'desc' => $lng['serversettings']['phpfpm_settings']['limit_extensions']['description'],
|
'desc' => $lng['serversettings']['phpfpm_settings']['limit_extensions']['description'],
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'value' => '.php'
|
'value' => '.php'
|
||||||
|
),
|
||||||
|
'custom_config' => array(
|
||||||
|
'label' => $lng['serversettings']['phpfpm_settings']['custom_config']['title'],
|
||||||
|
'desc' => $lng['serversettings']['phpfpm_settings']['custom_config']['description'],
|
||||||
|
'type' => 'textarea',
|
||||||
|
'cols' => 50,
|
||||||
|
'rows' => 7
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -87,6 +87,14 @@ return array(
|
|||||||
'desc' => $lng['serversettings']['phpfpm_settings']['limit_extensions']['description'],
|
'desc' => $lng['serversettings']['phpfpm_settings']['limit_extensions']['description'],
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'value' => $result['limit_extensions']
|
'value' => $result['limit_extensions']
|
||||||
|
),
|
||||||
|
'custom_config' => array(
|
||||||
|
'label' => $lng['serversettings']['phpfpm_settings']['custom_config']['title'],
|
||||||
|
'desc' => $lng['serversettings']['phpfpm_settings']['custom_config']['description'],
|
||||||
|
'type' => 'textarea',
|
||||||
|
'cols' => 50,
|
||||||
|
'rows' => 7,
|
||||||
|
'value' => $result['custom_config']
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -83,6 +83,19 @@ return array(
|
|||||||
'image' => 'icons/domain_add.png',
|
'image' => 'icons/domain_add.png',
|
||||||
'visible' => \Froxlor\Settings::Get('system.use_ssl') == '1' ? ($ssl_ipsandports != '' ? true : false) : false,
|
'visible' => \Froxlor\Settings::Get('system.use_ssl') == '1' ? ($ssl_ipsandports != '' ? true : false) : false,
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
|
'sslenabled' => array(
|
||||||
|
'label' => $lng['admin']['domain_sslenabled'],
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'values' => array(
|
||||||
|
array(
|
||||||
|
'label' => $lng['panel']['yes'],
|
||||||
|
'value' => '1'
|
||||||
|
)
|
||||||
|
),
|
||||||
|
'value' => array(
|
||||||
|
'1'
|
||||||
|
)
|
||||||
|
),
|
||||||
'ssl_redirect' => array(
|
'ssl_redirect' => array(
|
||||||
'label' => $lng['domains']['ssl_redirect']['title'],
|
'label' => $lng['domains']['ssl_redirect']['title'],
|
||||||
'desc' => $lng['domains']['ssl_redirect']['description'],
|
'desc' => $lng['domains']['ssl_redirect']['description'],
|
||||||
|
|||||||
@@ -99,6 +99,19 @@ return array(
|
|||||||
'image' => 'icons/domain_edit.png',
|
'image' => 'icons/domain_edit.png',
|
||||||
'visible' => \Froxlor\Settings::Get('system.use_ssl') == '1' ? ($ssl_ipsandports != '' ? (\Froxlor\Domain\Domain::domainHasSslIpPort($result['id']) ? true : false) : false) : false,
|
'visible' => \Froxlor\Settings::Get('system.use_ssl') == '1' ? ($ssl_ipsandports != '' ? (\Froxlor\Domain\Domain::domainHasSslIpPort($result['id']) ? true : false) : false) : false,
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
|
'sslenabled' => array(
|
||||||
|
'label' => $lng['admin']['domain_sslenabled'],
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'values' => array(
|
||||||
|
array(
|
||||||
|
'label' => $lng['panel']['yes'],
|
||||||
|
'value' => '1'
|
||||||
|
)
|
||||||
|
),
|
||||||
|
'value' => array(
|
||||||
|
$result['ssl_enabled']
|
||||||
|
)
|
||||||
|
),
|
||||||
'ssl_redirect' => array(
|
'ssl_redirect' => array(
|
||||||
'label' => $lng['domains']['ssl_redirect']['title'],
|
'label' => $lng['domains']['ssl_redirect']['title'],
|
||||||
'desc' => $lng['domains']['ssl_redirect']['description'] . ($result['temporary_ssl_redirect'] > 1 ? $lng['domains']['ssl_redirect_temporarilydisabled'] : ''),
|
'desc' => $lng['domains']['ssl_redirect']['description'] . ($result['temporary_ssl_redirect'] > 1 ? $lng['domains']['ssl_redirect_temporarilydisabled'] : ''),
|
||||||
|
|||||||
@@ -339,7 +339,7 @@ $lng['serversettings']['logfiles_directory']['description'] = 'Where should all
|
|||||||
$lng['serversettings']['logfiles_script']['title'] = 'Custom script to pipe log-files to';
|
$lng['serversettings']['logfiles_script']['title'] = 'Custom script to pipe log-files to';
|
||||||
$lng['serversettings']['logfiles_script']['description'] = 'You can specify a script here and use the placeholders <strong>{LOGFILE}, {DOMAIN} and {CUSTOMER}</strong> if needed. In case you want to use it you will need to activate the <strong>Pipe webserver logfiles</strong> option too. No prefixed pipe-character is needed.';
|
$lng['serversettings']['logfiles_script']['description'] = 'You can specify a script here and use the placeholders <strong>{LOGFILE}, {DOMAIN} and {CUSTOMER}</strong> if needed. In case you want to use it you will need to activate the <strong>Pipe webserver logfiles</strong> option too. No prefixed pipe-character is needed.';
|
||||||
$lng['serversettings']['logfiles_format']['title'] = 'Access-log format';
|
$lng['serversettings']['logfiles_format']['title'] = 'Access-log format';
|
||||||
$lng['serversettings']['logfiles_format']['description'] = 'Enter a custom log-format here according to your webservers specifications, leave empty for default';
|
$lng['serversettings']['logfiles_format']['description'] = 'Enter a custom log-format here according to your webservers specifications, leave empty for default. Depending on your format the string must be quoted.<br/>If used with nginx, it will look like <i>log_format frx_custom {CONFIGURED_VALUE}</i>.<br/>If used with Apache, it will look like <i>LogFormat {CONFIGURED_VALUE} frx_custom</i>.<br/><strong>Attention</strong>: The code won\'t be checked for any errors. If it contains errors, webserver might not start again!';
|
||||||
$lng['serversettings']['logfiles_type']['title'] = 'Access-log type';
|
$lng['serversettings']['logfiles_type']['title'] = 'Access-log type';
|
||||||
$lng['serversettings']['logfiles_type']['description'] = 'Choose between <strong>combined</strong> or <strong>vhost_combined</strong> here.';
|
$lng['serversettings']['logfiles_type']['description'] = 'Choose between <strong>combined</strong> or <strong>vhost_combined</strong> here.';
|
||||||
$lng['serversettings']['logfiles_piped']['title'] = 'Pipe webserver logfiles to specified script (see above)';
|
$lng['serversettings']['logfiles_piped']['title'] = 'Pipe webserver logfiles to specified script (see above)';
|
||||||
@@ -2082,3 +2082,16 @@ $lng['admin']['domain_override_tls'] = 'Override system TLS settings';
|
|||||||
$lng['domains']['isaliasdomainof'] = 'Is aliasdomain for %s';
|
$lng['domains']['isaliasdomainof'] = 'Is aliasdomain for %s';
|
||||||
$lng['serversettings']['apply_specialsettings_default']['title'] = 'Default value for "' . $lng['admin']['specialsettingsforsubdomains'] . "' setting when editing a domain";
|
$lng['serversettings']['apply_specialsettings_default']['title'] = 'Default value for "' . $lng['admin']['specialsettingsforsubdomains'] . "' setting when editing a domain";
|
||||||
$lng['serversettings']['apply_phpconfigs_default']['title'] = 'Default value for "' . $lng['admin']['phpsettingsforsubdomains'] . "' setting when editing a domain";
|
$lng['serversettings']['apply_phpconfigs_default']['title'] = 'Default value for "' . $lng['admin']['phpsettingsforsubdomains'] . "' setting when editing a domain";
|
||||||
|
$lng['admin']['domain_sslenabled'] = 'Enable usage of SSL';
|
||||||
|
$lng['admin']['domain_honorcipherorder'] = 'Honor the (server) cipher order, default <strong>no</strong>';
|
||||||
|
$lng['admin']['domain_sessiontickets'] = 'Enable TLS sessiontickets (RFC 5077), default <strong>yes</strong>';
|
||||||
|
|
||||||
|
$lng['admin']['domain_sessionticketsenabled']['title'] = 'Enable usage of TLS sessiontickets globally';
|
||||||
|
$lng['admin']['domain_sessionticketsenabled']['description'] = 'Default <strong>yes</strong><br>Requires apache-2.4.11+ or nginx-1.5.9+';
|
||||||
|
|
||||||
|
$lng['serversettings']['phpfpm_settings']['restart_note'] = 'Attention: The config won\'t be checked for any errors. If it contains errors, PHP-FPM might not start again!';
|
||||||
|
$lng['serversettings']['phpfpm_settings']['custom_config']['title'] = 'Custom configuration';
|
||||||
|
$lng['serversettings']['phpfpm_settings']['custom_config']['description'] = 'Add custom configuration to each PHP-FPM version instance, for example <i>pm.status_path = /status</i> for monitoring. Variables below can be used here. ' . ' <strong>' . $lng['serversettings']['phpfpm_settings']['restart_note'] . '</strong>';
|
||||||
|
|
||||||
|
$lng['serversettings']['awstats']['logformat']['title'] = 'LogFormat setting';
|
||||||
|
$lng['serversettings']['awstats']['logformat']['description'] = 'If you use customized logformat for your webserver, you need change the awstats LogFormat too.<br/>Default is 1. For more information check documentation <a target="_blank" href="https://awstats.sourceforge.io/docs/awstats_config.html#LogFormat">here</a>.';
|
||||||
|
|||||||
@@ -335,7 +335,7 @@ $lng['serversettings']['logfiles_directory']['description'] = 'Wo sollen die Log
|
|||||||
$lng['serversettings']['logfiles_script']['title'] = 'Eigenes Script zu dem Log-Files übergeben werden';
|
$lng['serversettings']['logfiles_script']['title'] = 'Eigenes Script zu dem Log-Files übergeben werden';
|
||||||
$lng['serversettings']['logfiles_script']['description'] = 'Hier kann ein Script an das die Loginhalte übergeben werden hinterlegt und die Platzhalter <strong>{LOGFILE}, {DOMAIN} und {CUSTOMER}</strong> genutzt werden, sofern nötig. Falls ein Script angegeben wird, muss die Option <strong>Webserver Logdateien umleiten</strong> gesetzt werden';
|
$lng['serversettings']['logfiles_script']['description'] = 'Hier kann ein Script an das die Loginhalte übergeben werden hinterlegt und die Platzhalter <strong>{LOGFILE}, {DOMAIN} und {CUSTOMER}</strong> genutzt werden, sofern nötig. Falls ein Script angegeben wird, muss die Option <strong>Webserver Logdateien umleiten</strong> gesetzt werden';
|
||||||
$lng['serversettings']['logfiles_format']['title'] = 'Access-Log Format';
|
$lng['serversettings']['logfiles_format']['title'] = 'Access-Log Format';
|
||||||
$lng['serversettings']['logfiles_format']['description'] = 'Hier kann ein angepasstes Log-format entsprechend der Webserver-Dokumentation angegeben werden, leer lassen für Standard';
|
$lng['serversettings']['logfiles_format']['description'] = 'Hier kann ein angepasstes Log-format entsprechend der Webserver-Dokumentation angegeben werden, leer lassen für Standard. Abhängig vom LogFormat muss die Angabe unter Anführungszeichen stehen.<br/>Wenn verwendet mit nginx, so kann es wie folgt aussehen: <i>log_format frx_custom {EINGESTELLTES_FORMAT}</i>.<br/>Wenn verwendet mit Apache, so kann es wie folgt aussehen: <i>LogFormat {EINGESTELLTES_FORMAT} frx_custom</i>.<br /><strong>ACHTUNG:</strong> Der Code wird nicht auf Fehler geprüft. Etwaige Fehler werden auch übernommen und der Webserver könnte nicht mehr starten!';
|
||||||
$lng['serversettings']['logfiles_type']['title'] = 'Access-Log Typ';
|
$lng['serversettings']['logfiles_type']['title'] = 'Access-Log Typ';
|
||||||
$lng['serversettings']['logfiles_type']['description'] = 'Wähle zwischen <strong>combined</strong> oder <strong>vhost_combined</strong>.';
|
$lng['serversettings']['logfiles_type']['description'] = 'Wähle zwischen <strong>combined</strong> oder <strong>vhost_combined</strong>.';
|
||||||
$lng['serversettings']['logfiles_piped']['title'] = 'Webserver Logdateien zu eigenem Script umleiten (siehe oben)';
|
$lng['serversettings']['logfiles_piped']['title'] = 'Webserver Logdateien zu eigenem Script umleiten (siehe oben)';
|
||||||
@@ -1729,3 +1729,16 @@ $lng['admin']['domain_override_tls'] = 'Überschreibe System TLS Einstellungen';
|
|||||||
$lng['domains']['isaliasdomainof'] = 'Ist Aliasdomain für %s';
|
$lng['domains']['isaliasdomainof'] = 'Ist Aliasdomain für %s';
|
||||||
$lng['serversettings']['apply_specialsettings_default']['title'] = 'Standardwert für "' . $lng['admin']['specialsettingsforsubdomains'] . "' Einstellung beim Bearbeiten einer Domain";
|
$lng['serversettings']['apply_specialsettings_default']['title'] = 'Standardwert für "' . $lng['admin']['specialsettingsforsubdomains'] . "' Einstellung beim Bearbeiten einer Domain";
|
||||||
$lng['serversettings']['apply_phpconfigs_default']['title'] = 'Standardwert für "' . $lng['admin']['phpsettingsforsubdomains'] . "' Einstellung beim Bearbeiten einer Domain";
|
$lng['serversettings']['apply_phpconfigs_default']['title'] = 'Standardwert für "' . $lng['admin']['phpsettingsforsubdomains'] . "' Einstellung beim Bearbeiten einer Domain";
|
||||||
|
$lng['admin']['domain_sslenabled'] = 'Aktiviere Nutzung von SSL';
|
||||||
|
$lng['admin']['domain_honorcipherorder'] = 'Bevorzuge die serverseitige Cipher Reihenfolge, Standardwert <strong>nein</strong>';
|
||||||
|
$lng['admin']['domain_sessiontickets'] = 'Aktiviere TLS Sessiontickets (RFC 5077), Standardwert <strong>ja</strong>';
|
||||||
|
|
||||||
|
$lng['admin']['domain_sessionticketsenabled']['title'] = 'Aktiviere Nutzung von TLS Sessiontickets systemweit';
|
||||||
|
$lng['admin']['domain_sessionticketsenabled']['description'] = 'Standardwert <strong>yes</strong><br>Erfordert apache-2.4.11+ oder nginx-1.5.9+';
|
||||||
|
|
||||||
|
$lng['serversettings']['phpfpm_settings']['restart_note'] = 'Achtung: Der Code wird nicht auf Fehler geprüft. Bei etwaigen Fehlern könnte der PHP-FPM-Prozess nicht mehr starten!';
|
||||||
|
$lng['serversettings']['phpfpm_settings']['custom_config']['title'] = 'Benutzerdefinierte Konfiguration';
|
||||||
|
$lng['serversettings']['phpfpm_settings']['custom_config']['description'] = 'Füge eine benutzerdefinierte Einstellungen zur PHP-FPM Instanz hinzu, beispielsweise <i>pm.status_path = /status</i> für Monitoring. Unten ersichtliche Variablen können verwendet werden.' . ' <strong>' . $lng['serversettings']['phpfpm_settings']['restart_note'] . '</strong>';
|
||||||
|
|
||||||
|
$lng['serversettings']['awstats']['logformat']['title'] = 'LogFormat Einstellung';
|
||||||
|
$lng['serversettings']['awstats']['logformat']['description'] = 'Wenn ein benutzerdefiniertes LogFormat beim Webserver verwendet wird, muss LogFormat von awstats ebenso angepasst werden.<br/>Standard ist 1. Für weitere Informationen siehe Dokumentation unter <a target="_blank" href="https://awstats.sourceforge.io/docs/awstats_config.html#LogFormat">hier</a>.';
|
||||||
|
|||||||
@@ -21,4 +21,78 @@ $header
|
|||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<article>
|
||||||
|
<header>
|
||||||
|
<h3>
|
||||||
|
{$lng['admin']['templates']['template_replace_vars']}
|
||||||
|
</h3>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
|
||||||
|
<table class="full">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{$lng['panel']['variable']}</th>
|
||||||
|
<th>{$lng['panel']['description']}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><em>{PEAR_DIR}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['pear_dir']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{OPEN_BASEDIR_C}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['open_basedir_c']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{OPEN_BASEDIR}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['open_basedir']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{OPEN_BASEDIR_GLOBAL}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['open_basedir_global']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{TMP_DIR}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['tmp_dir']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{CUSTOMER_EMAIL}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['customer_email']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{ADMIN_EMAIL}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['admin_email']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{DOMAIN}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['domain']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{CUSTOMER}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['customer']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{ADMIN}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['admin']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{DOCUMENT_ROOT}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['docroot']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{CUSTOMER_HOMEDIR}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['homedir']}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</article>
|
||||||
|
|
||||||
$footer
|
$footer
|
||||||
|
|||||||
@@ -22,4 +22,78 @@ $header
|
|||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<article>
|
||||||
|
<header>
|
||||||
|
<h3>
|
||||||
|
{$lng['admin']['templates']['template_replace_vars']}
|
||||||
|
</h3>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
|
||||||
|
<table class="full">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{$lng['panel']['variable']}</th>
|
||||||
|
<th>{$lng['panel']['description']}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><em>{PEAR_DIR}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['pear_dir']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{OPEN_BASEDIR_C}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['open_basedir_c']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{OPEN_BASEDIR}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['open_basedir']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{OPEN_BASEDIR_GLOBAL}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['open_basedir_global']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{TMP_DIR}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['tmp_dir']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{CUSTOMER_EMAIL}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['customer_email']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{ADMIN_EMAIL}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['admin_email']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{DOMAIN}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['domain']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{CUSTOMER}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['customer']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{ADMIN}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['admin']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{DOCUMENT_ROOT}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['docroot']}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><em>{CUSTOMER_HOMEDIR}</em></td>
|
||||||
|
<td>{$lng['admin']['phpconfig']['homedir']}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</article>
|
||||||
|
|
||||||
$footer
|
$footer
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ Include "{AWSTATS_CONF}awstats.model.conf"
|
|||||||
|
|
||||||
LogFile="{LOG_FILE}"
|
LogFile="{LOG_FILE}"
|
||||||
LogType=W
|
LogType=W
|
||||||
LogFormat = 1
|
LogFormat = {AWSTATS_LOGFORMAT}
|
||||||
LogSeparator=" "
|
LogSeparator=" "
|
||||||
SiteDomain="{SITE_DOMAIN}"
|
SiteDomain="{SITE_DOMAIN}"
|
||||||
HostAliases="{HOST_ALIASES}"
|
HostAliases="{HOST_ALIASES}"
|
||||||
|
|||||||
@@ -61,12 +61,17 @@ class CustomersTest extends TestCase
|
|||||||
$this->assertEquals(15, $result['subdomains']);
|
$this->assertEquals(15, $result['subdomains']);
|
||||||
$this->assertEquals('secret', $result['custom_notes']);
|
$this->assertEquals('secret', $result['custom_notes']);
|
||||||
|
|
||||||
// validate that the std-subdomain has been added
|
$stdsubdomain = $result['standardsubdomain'] ?? false;
|
||||||
$json_result = SubDomains::getLocal($admin_userdata, array(
|
if (! $stdsubdomain) {
|
||||||
'id' => $result['standardsubdomain']
|
$this->fail('No standardsubdomain where there should be one');
|
||||||
))->get();
|
} else {
|
||||||
$result = json_decode($json_result, true)['data'];
|
// validate that the std-subdomain has been added
|
||||||
$this->assertEquals('test1.dev.froxlor.org', $result['domain']);
|
$json_result = SubDomains::getLocal($admin_userdata, array(
|
||||||
|
'id' => $result['standardsubdomain']
|
||||||
|
))->get();
|
||||||
|
$result = json_decode($json_result, true)['data'];
|
||||||
|
$this->assertEquals('test1.dev.froxlor.org', $result['domain']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAdminCustomersAddEmptyMail()
|
public function testAdminCustomersAddEmptyMail()
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class DomainsTest extends TestCase
|
|||||||
))->get();
|
))->get();
|
||||||
$customer_userdata = json_decode($json_result, true)['data'];
|
$customer_userdata = json_decode($json_result, true)['data'];
|
||||||
$data = [
|
$data = [
|
||||||
'domain' => 'test.local',
|
'domain' => 'TEST.local',
|
||||||
'customerid' => $customer_userdata['customerid'],
|
'customerid' => $customer_userdata['customerid'],
|
||||||
'override_tls' => 1,
|
'override_tls' => 1,
|
||||||
'ssl_protocols' => array(
|
'ssl_protocols' => array(
|
||||||
@@ -38,6 +38,7 @@ class DomainsTest extends TestCase
|
|||||||
$result = json_decode($json_result, true)['data'];
|
$result = json_decode($json_result, true)['data'];
|
||||||
$this->assertEquals($customer_userdata['documentroot'] . 'test.local/', $result['documentroot']);
|
$this->assertEquals($customer_userdata['documentroot'] . 'test.local/', $result['documentroot']);
|
||||||
$this->assertTrue(in_array('TLSv1.3', explode(",", $result['ssl_protocols'])));
|
$this->assertTrue(in_array('TLSv1.3', explode(",", $result['ssl_protocols'])));
|
||||||
|
$this->assertEquals('0', $result['isemaildomain']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
use Froxlor\Settings;
|
||||||
use Froxlor\Api\Commands\Admins;
|
use Froxlor\Api\Commands\Admins;
|
||||||
use Froxlor\Api\Commands\Customers;
|
use Froxlor\Api\Commands\Customers;
|
||||||
use Froxlor\Api\Commands\Mysqls;
|
use Froxlor\Api\Commands\Mysqls;
|
||||||
use Froxlor\Database\Database;
|
use Froxlor\Database\Database;
|
||||||
|
use Froxlor\Settings\Store;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -15,6 +17,7 @@ use Froxlor\Database\Database;
|
|||||||
* @covers \Froxlor\Api\Commands\Admins
|
* @covers \Froxlor\Api\Commands\Admins
|
||||||
* @covers \Froxlor\Database\DbManager
|
* @covers \Froxlor\Database\DbManager
|
||||||
* @covers \Froxlor\Database\Manager\DbManagerMySQL
|
* @covers \Froxlor\Database\Manager\DbManagerMySQL
|
||||||
|
* @covers \Froxlor\Settings\Store
|
||||||
*/
|
*/
|
||||||
class MysqlsTest extends TestCase
|
class MysqlsTest extends TestCase
|
||||||
{
|
{
|
||||||
@@ -113,15 +116,24 @@ class MysqlsTest extends TestCase
|
|||||||
{
|
{
|
||||||
global $admin_userdata;
|
global $admin_userdata;
|
||||||
|
|
||||||
|
$newPwd = \Froxlor\System\Crypt::generatePassword();
|
||||||
$data = [
|
$data = [
|
||||||
'dbname' => 'test1sql1',
|
'dbname' => 'test1sql1',
|
||||||
'mysql_password' => \Froxlor\System\Crypt::generatePassword(),
|
'mysql_password' => $newPwd,
|
||||||
'description' => 'testdb-upd',
|
'description' => 'testdb-upd',
|
||||||
'loginname' => 'test1'
|
'loginname' => 'test1'
|
||||||
];
|
];
|
||||||
$json_result = Mysqls::getLocal($admin_userdata, $data)->update();
|
$json_result = Mysqls::getLocal($admin_userdata, $data)->update();
|
||||||
$result = json_decode($json_result, true)['data'];
|
$result = json_decode($json_result, true)['data'];
|
||||||
$this->assertEquals('testdb-upd', $result['description']);
|
$this->assertEquals('testdb-upd', $result['description']);
|
||||||
|
|
||||||
|
// test connection
|
||||||
|
try {
|
||||||
|
$test_conn = new \PDO("mysql:host=127.0.0.1", 'test1sql1', $newPwd);
|
||||||
|
unset($test_conn);
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
$this->fail($e->getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -174,6 +186,24 @@ class MysqlsTest extends TestCase
|
|||||||
*
|
*
|
||||||
* @depends testCustomerMysqlsAdd
|
* @depends testCustomerMysqlsAdd
|
||||||
*/
|
*/
|
||||||
|
public function testStoreSettingIpAddress()
|
||||||
|
{
|
||||||
|
// this settings test is here because it directly changes mysql users / privileges
|
||||||
|
$fielddata = array(
|
||||||
|
'label' => 'serversettings.ipaddress',
|
||||||
|
'settinggroup' => 'system',
|
||||||
|
'varname' => 'ipaddress'
|
||||||
|
);
|
||||||
|
Store::storeSettingIpAddress('system_system_ipaddress', $fielddata, '82.149.225.47');
|
||||||
|
|
||||||
|
$mysql_access_hosts = Settings::Get('system.mysql_access_host');
|
||||||
|
$this->assertTrue(strpos($mysql_access_hosts, '82.149.225.47') !== false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @depends testStoreSettingIpAddress
|
||||||
|
*/
|
||||||
public function testGetAllSqlUsers()
|
public function testGetAllSqlUsers()
|
||||||
{
|
{
|
||||||
\Froxlor\Database\Database::needRoot(true);
|
\Froxlor\Database\Database::needRoot(true);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class SubDomainsTest extends TestCase
|
|||||||
$customer_userdata = json_decode($json_result, true)['data'];
|
$customer_userdata = json_decode($json_result, true)['data'];
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'subdomain' => 'mysub',
|
'subdomain' => 'mySub',
|
||||||
'domain' => 'test2.local'
|
'domain' => 'test2.local'
|
||||||
];
|
];
|
||||||
$json_result = SubDomains::getLocal($customer_userdata, $data)->add();
|
$json_result = SubDomains::getLocal($customer_userdata, $data)->add();
|
||||||
@@ -47,7 +47,7 @@ class SubDomainsTest extends TestCase
|
|||||||
$reseller_userdata['adminsession'] = 1;
|
$reseller_userdata['adminsession'] = 1;
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'subdomain' => 'mysub2',
|
'subdomain' => 'mySub2',
|
||||||
'domain' => 'test2.local',
|
'domain' => 'test2.local',
|
||||||
'customerid' => 1
|
'customerid' => 1
|
||||||
];
|
];
|
||||||
|
|||||||
Reference in New Issue
Block a user