mirror of
https://github.com/digitalocean/nginxconfig.io
synced 2024-11-10 04:24:12 +00:00
Set the PHP server config per site (#232)
* Set up the php server per site. * Backwards compatibility logic for old config URLs. * Remove php global config tab. * Fix util import in website.conf.js * Fix eslint fails. * Move global php i18n keys to domain * Remove unnecessary domains verification and set fastcgi_pass in unified mode. * Convert return statement to logic operator in php_ustream.js * Move php upstream to outside the server blocks * Remove unnecessary watcher from php domain section * Fix upstream config context and conditional append * Separate backwards compatibility logic. * Remove unused i18n key from php domain and update copyright of these files * Replace all dots for underscore in php_upstream helper * Fix missing space and remove upstream comment from php config. * Fix selects $refs and watch the enable status for phpServer and phpBackupServer. * Change copyright year for all modified files. * Backwards compatibility logic for old config URLs after angularBackwardsCompatibility * Deep merge old php global config from data url, and add safe disable for phpConfigs * Move deep merge function to new helper * Fix missing disable wordpressRules and convert function declaration to arrows in deep merge helper * Fix missing css class in php domain-section
This commit is contained in:
parent
4cfdcdb8d1
commit
1fb756ca77
29 changed files with 385 additions and 507 deletions
|
@ -27,7 +27,6 @@ THE SOFTWARE.
|
|||
import sslProfiles from '../../util/ssl_profiles';
|
||||
import websiteConf from './website.conf';
|
||||
import shareQuery from '../../util/share_query';
|
||||
import phpPath from '../../util/php_path';
|
||||
|
||||
export default (domains, global) => {
|
||||
const config = {};
|
||||
|
@ -51,14 +50,6 @@ export default (domains, global) => {
|
|||
// HTTP (kv so we can use the same key multiple times)
|
||||
config.http = [];
|
||||
|
||||
if (global.php.phpBackupServer.computed)
|
||||
config.http.push(['upstream php', {
|
||||
server: [
|
||||
phpPath(global),
|
||||
`${phpPath(global, true)} backup`,
|
||||
],
|
||||
}]);
|
||||
|
||||
config.http.push(['charset', 'utf-8']);
|
||||
config.http.push(['sendfile', 'on']);
|
||||
config.http.push(['tcp_nopush', 'on']);
|
||||
|
|
|
@ -24,9 +24,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import phpPath from '../../util/php_path';
|
||||
|
||||
export default (domains, global) => {
|
||||
export default (domains) => {
|
||||
const legacyRouting = domains.some(d => d.routing.legacyPhpRouting.computed);
|
||||
const config = {};
|
||||
|
||||
|
@ -43,8 +41,6 @@ export default (domains, global) => {
|
|||
config.include = 'fastcgi_params';
|
||||
|
||||
config['# fastcgi settings'] = '';
|
||||
config.fastcgi_pass = domains.some(d => d.php.php.computed) && global.php.phpBackupServer.computed !== ''
|
||||
? 'php' : phpPath(global);
|
||||
config.fastcgi_index = 'index.php';
|
||||
config.fastcgi_buffers = '8 16k';
|
||||
config.fastcgi_buffer_size = '32k';
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 DigitalOcean
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
|
@ -38,6 +38,8 @@ import drupalConf from './drupal.conf';
|
|||
import magentoConf from './magento.conf';
|
||||
import joomlaConf from './joomla.conf';
|
||||
import letsEncryptConf from './letsencrypt.conf';
|
||||
import phpPath from '../../util/php_path';
|
||||
import phpUpstream from '../../util/php_upstream';
|
||||
|
||||
const sslConfig = (domain, global) => {
|
||||
const config = [];
|
||||
|
@ -176,8 +178,8 @@ export default (domain, domains, global) => {
|
|||
// Restrict Methods
|
||||
if (Object.keys(domain.restrict).find(k => domain.restrict[k].computed && k !== 'responseCode')) {
|
||||
const allowedKeys = Object.keys(domain.restrict)
|
||||
.filter(k => !domain.restrict[k].computed && k !== 'responseCode')
|
||||
.map(e => e.replace('Method', '').toUpperCase());
|
||||
.filter(k => !domain.restrict[k].computed && k !== 'responseCode')
|
||||
.map(e => e.replace('Method', '').toUpperCase());
|
||||
|
||||
serverConfig.push(['# restrict methods', '']);
|
||||
serverConfig.push([`if ($request_method !~ ^(${allowedKeys.join('|')})$)`, {
|
||||
|
@ -284,15 +286,36 @@ export default (domain, domains, global) => {
|
|||
|
||||
// PHP
|
||||
if (domain.php.php.computed) {
|
||||
if (domain.php.phpBackupServer.computed) {
|
||||
config.push([`upstream ${phpUpstream(domain)}`, {
|
||||
server: [
|
||||
phpPath(domain),
|
||||
`${phpPath(domain, true)} backup`,
|
||||
],
|
||||
}]);
|
||||
}
|
||||
|
||||
serverConfig.push(['# handle .php', '']);
|
||||
|
||||
const loc = `location ~ ${domain.routing.legacyPhpRouting.computed ? '[^/]\\.php(/|$)' : '\\.php$'}`;
|
||||
|
||||
const fastcgiPass = {
|
||||
fastcgi_pass: domain.php.phpBackupServer.computed !== ''
|
||||
? phpUpstream(domain) : phpPath(domain),
|
||||
};
|
||||
|
||||
if (global.tools.modularizedStructure.computed || domain.php.wordPressRules.computed) {
|
||||
// Modularized
|
||||
serverConfig.push([loc, { include: 'nginxconfig.io/php_fastcgi.conf' }]);
|
||||
serverConfig.push([loc, {
|
||||
...fastcgiPass,
|
||||
include: 'nginxconfig.io/php_fastcgi.conf',
|
||||
}]);
|
||||
} else {
|
||||
// Unified
|
||||
serverConfig.push([loc, phpConf(domains, global)]);
|
||||
serverConfig.push([loc, {
|
||||
...fastcgiPass,
|
||||
...phpConf(domains),
|
||||
}]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 DigitalOcean
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
|
@ -73,7 +73,7 @@ export default (domains, global) => {
|
|||
|
||||
// PHP
|
||||
if (domains.some(d => d.php.php.computed))
|
||||
files['nginxconfig.io/php_fastcgi.conf'] = toConf(phpConf(domains, global));
|
||||
files['nginxconfig.io/php_fastcgi.conf'] = toConf(phpConf(domains));
|
||||
|
||||
// Python
|
||||
if (domains.some(d => d.python.python.computed))
|
||||
|
@ -102,7 +102,7 @@ export default (domains, global) => {
|
|||
} else {
|
||||
// PHP
|
||||
if (domains.some(d => d.php.wordPressRules.computed))
|
||||
files['nginxconfig.io/php_fastcgi.conf'] = toConf(phpConf(domains, global));
|
||||
files['nginxconfig.io/php_fastcgi.conf'] = toConf(phpConf(domains));
|
||||
}
|
||||
|
||||
return files;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 DigitalOcean
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
|
@ -39,4 +39,18 @@ export default {
|
|||
enableMagentoRules: `${common.enable} ${common.magento}-specific rules`,
|
||||
joomlaRules: `${common.joomla} rules`,
|
||||
enableJoomlaRules: `${common.enable} ${common.joomla}-specific rules`,
|
||||
phpServer: `${common.php} server`,
|
||||
phpBackupServer: `${common.php} backup server`,
|
||||
tcp: 'TCP',
|
||||
hhvmSocket: 'HHVM socket',
|
||||
php5Socket: '5.x socket',
|
||||
php70Socket: '7.0 socket',
|
||||
php71Socket: '7.1 socket',
|
||||
php72Socket: '7.2 socket',
|
||||
php73Socket: '7.3 socket',
|
||||
php74Socket: '7.4 socket',
|
||||
php80Socket: '8.0 socket',
|
||||
phpSocket: 'PHP socket',
|
||||
custom: 'Custom',
|
||||
disabled: 'Disabled',
|
||||
};
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 DigitalOcean
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
|
@ -28,11 +28,10 @@ import https from './https';
|
|||
import logging from './logging';
|
||||
import nginx from './nginx';
|
||||
import performance from './performance';
|
||||
import php from './php';
|
||||
import python from './python';
|
||||
import reverseProxy from './reverse_proxy';
|
||||
import security from './security';
|
||||
import tools from './tools';
|
||||
import docker from './docker';
|
||||
|
||||
export default { https, logging, nginx, performance, php, python, reverseProxy, security, tools, docker };
|
||||
export default { https, logging, nginx, performance, python, reverseProxy, security, tools, docker };
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
/*
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions :
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import common from '../../common';
|
||||
|
||||
export default {
|
||||
phpServer: `${common.php} server`,
|
||||
phpMustBeEnabledOnOneSite: `${common.php} must be enabled on at least one site to configure global ${common.php} settings.`,
|
||||
phpBackupServer: `${common.php} backup server`,
|
||||
tcp: 'TCP',
|
||||
hhvmSocket: 'HHVM socket',
|
||||
php5Socket: '5.x socket',
|
||||
php70Socket: '7.0 socket',
|
||||
php71Socket: '7.1 socket',
|
||||
php72Socket: '7.2 socket',
|
||||
php73Socket: '7.3 socket',
|
||||
php74Socket: '7.4 socket',
|
||||
php80Socket: '8.0 socket',
|
||||
phpSocket: 'PHP socket',
|
||||
custom: 'Custom',
|
||||
disabled: 'Disabled',
|
||||
};
|
|
@ -39,4 +39,18 @@ export default {
|
|||
enableMagentoRules: `${common.enable} les règles spécifiques à ${common.magento}`,
|
||||
joomlaRules: `Règles ${common.joomla}`,
|
||||
enableJoomlaRules: `${common.enable} les règles spécifiques à ${common.joomla}`,
|
||||
phpServer: `Serveur ${common.php}`,
|
||||
phpBackupServer: `Serveur de sauvegarde ${common.php}`,
|
||||
tcp: 'TCP',
|
||||
hhvmSocket: 'Socket HHVM',
|
||||
php5Socket: 'Socket 5.x',
|
||||
php70Socket: 'Socket 7.0',
|
||||
php71Socket: 'Socket 7.1',
|
||||
php72Socket: 'Socket 7.2',
|
||||
php73Socket: 'Socket 7.3',
|
||||
php74Socket: 'Socket 7.4',
|
||||
php80Socket: 'Socket 8.0',
|
||||
phpSocket: 'Socket PHP',
|
||||
custom: 'Custom', // TODO: translate
|
||||
disabled: 'Désactivé',
|
||||
};
|
||||
|
|
|
@ -28,11 +28,10 @@ import https from './https';
|
|||
import logging from './logging';
|
||||
import nginx from './nginx';
|
||||
import performance from './performance';
|
||||
import php from './php';
|
||||
import python from './python';
|
||||
import reverseProxy from './reverse_proxy';
|
||||
import security from './security';
|
||||
import tools from './tools';
|
||||
import docker from './docker';
|
||||
|
||||
export default { https, logging, nginx, performance, php, python, reverseProxy, security, tools, docker };
|
||||
export default { https, logging, nginx, performance, python, reverseProxy, security, tools, docker };
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
/*
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions :
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import common from '../../common';
|
||||
|
||||
export default {
|
||||
phpServer: `Serveur ${common.php}`,
|
||||
phpMustBeEnabledOnOneSite: `${common.php} doit être activé sur au moins un site pour configurer les paramètres globaux de ${common.php}.`,
|
||||
phpBackupServer: `Serveur de sauvegarde ${common.php}`,
|
||||
tcp: 'TCP',
|
||||
hhvmSocket: 'Socket HHVM',
|
||||
php5Socket: 'Socket 5.x',
|
||||
php70Socket: 'Socket 7.0',
|
||||
php71Socket: 'Socket 7.1',
|
||||
php72Socket: 'Socket 7.2',
|
||||
php73Socket: 'Socket 7.3',
|
||||
php74Socket: 'Socket 7.4',
|
||||
php80Socket: 'Socket 8.0',
|
||||
phpSocket: 'Socket PHP',
|
||||
custom: 'Custom', // TODO: translate
|
||||
disabled: 'Désactivé',
|
||||
};
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 DigitalOcean
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
|
@ -39,4 +39,18 @@ export default {
|
|||
enableMagentoRules: `${common.enable} regras específicas do ${common.magento}`,
|
||||
joomlaRules: `Regras do ${common.joomla}`,
|
||||
enableJoomlaRules: `${common.enable} regras específicas do ${common.joomla}`,
|
||||
phpServer: `Servidor ${common.php}`,
|
||||
phpBackupServer: `Servidor de backup ${common.php}`,
|
||||
tcp: 'TCP',
|
||||
hhvmSocket: 'Socket HHVM',
|
||||
php5Socket: 'Socket 5.x',
|
||||
php70Socket: 'Socket 7.0',
|
||||
php71Socket: 'Socket 7.1',
|
||||
php72Socket: 'Socket 7.2',
|
||||
php73Socket: 'Socket 7.3',
|
||||
php74Socket: 'Socket 7.4',
|
||||
php80Socket: 'Socket 8.0',
|
||||
phpSocket: 'Socket PHP',
|
||||
custom: 'Custom', // TODO: translate
|
||||
disabled: 'Desabilitado',
|
||||
};
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 DigitalOcean
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
|
@ -28,11 +28,10 @@ import https from './https';
|
|||
import logging from './logging';
|
||||
import nginx from './nginx';
|
||||
import performance from './performance';
|
||||
import php from './php';
|
||||
import python from './python';
|
||||
import reverseProxy from './reverse_proxy';
|
||||
import security from './security';
|
||||
import tools from './tools';
|
||||
import docker from './docker';
|
||||
|
||||
export default { https, logging, nginx, performance, php, python, reverseProxy, security, tools, docker };
|
||||
export default { https, logging, nginx, performance, python, reverseProxy, security, tools, docker };
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
/*
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions :
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import common from '../../common';
|
||||
|
||||
export default {
|
||||
phpServer: `Servidor ${common.php}`,
|
||||
phpMustBeEnabledOnOneSite: `O ${common.php} deve estar habilitado em pelo menos um site para definir as configurações globais do ${common.php}.`,
|
||||
phpBackupServer: `Servidor de backup ${common.php}`,
|
||||
tcp: 'TCP',
|
||||
hhvmSocket: 'Socket HHVM',
|
||||
php5Socket: 'Socket 5.x',
|
||||
php70Socket: 'Socket 7.0',
|
||||
php71Socket: 'Socket 7.1',
|
||||
php72Socket: 'Socket 7.2',
|
||||
php73Socket: 'Socket 7.3',
|
||||
php74Socket: 'Socket 7.4',
|
||||
php80Socket: 'Socket 8.0',
|
||||
phpSocket: 'Socket PHP',
|
||||
custom: 'Custom', // TODO: translate
|
||||
disabled: 'Desabilitado',
|
||||
};
|
|
@ -39,4 +39,18 @@ export default {
|
|||
enableMagentoRules: `${common.enable} ${common.magento}-специфичные правила`,
|
||||
joomlaRules: `${common.joomla} правила`,
|
||||
enableJoomlaRules: `${common.enable} ${common.joomla}-специфичные правила`,
|
||||
phpServer: `${common.php} сервер`,
|
||||
phpBackupServer: `${common.php} бекап сервер`,
|
||||
tcp: 'TCP',
|
||||
hhvmSocket: 'HHVM сокет',
|
||||
php5Socket: '5.x сокет',
|
||||
php70Socket: '7.0 сокет',
|
||||
php71Socket: '7.1 сокет',
|
||||
php72Socket: '7.2 сокет',
|
||||
php73Socket: '7.3 сокет',
|
||||
php74Socket: '7.4 сокет',
|
||||
php80Socket: '8.0 сокет',
|
||||
phpSocket: 'PHP сокет',
|
||||
custom: 'Другой',
|
||||
disabled: 'Выключено',
|
||||
};
|
||||
|
|
|
@ -28,11 +28,10 @@ import https from './https';
|
|||
import logging from './logging';
|
||||
import nginx from './nginx';
|
||||
import performance from './performance';
|
||||
import php from './php';
|
||||
import python from './python';
|
||||
import reverseProxy from './reverse_proxy';
|
||||
import security from './security';
|
||||
import tools from './tools';
|
||||
import docker from './docker';
|
||||
|
||||
export default { https, logging, nginx, performance, php, python, reverseProxy, security, tools, docker };
|
||||
export default { https, logging, nginx, performance, python, reverseProxy, security, tools, docker };
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
/*
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions :
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import common from '../../common';
|
||||
|
||||
export default {
|
||||
phpServer: `${common.php} сервер`,
|
||||
phpMustBeEnabledOnOneSite: `${common.php} должен быть включен как минимум на одном сайте, чтобы сконфигурировать глобальные настройки ${common.php}.`,
|
||||
phpBackupServer: `${common.php} бекап сервер`,
|
||||
tcp: 'TCP',
|
||||
hhvmSocket: 'HHVM сокет',
|
||||
php5Socket: '5.x сокет',
|
||||
php70Socket: '7.0 сокет',
|
||||
php71Socket: '7.1 сокет',
|
||||
php72Socket: '7.2 сокет',
|
||||
php73Socket: '7.3 сокет',
|
||||
php74Socket: '7.4 сокет',
|
||||
php80Socket: '8.0 сокет',
|
||||
phpSocket: 'PHP сокет',
|
||||
custom: 'Другой',
|
||||
disabled: 'Выключено',
|
||||
};
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 DigitalOcean
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
|
@ -39,4 +39,18 @@ export default {
|
|||
enableMagentoRules: `${common.enable} ${common.magento}专属规则`,
|
||||
joomlaRules: `${common.joomla} 规则`,
|
||||
enableJoomlaRules: `${common.enable} ${common.joomla}专属规则`,
|
||||
phpServer: `${common.php} 服务`,
|
||||
phpBackupServer: `${common.php}备份服务器`,
|
||||
tcp: 'TCP',
|
||||
hhvmSocket: 'HHVM socket',
|
||||
php5Socket: '5.x socket',
|
||||
php70Socket: '7.0 socket',
|
||||
php71Socket: '7.1 socket',
|
||||
php72Socket: '7.2 socket',
|
||||
php73Socket: '7.3 socket',
|
||||
php74Socket: '7.4 socket',
|
||||
php80Socket: '8.0 socket',
|
||||
phpSocket: 'PHP socket',
|
||||
custom: '自定义',
|
||||
disabled: '禁用',
|
||||
};
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 DigitalOcean
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
|
@ -28,11 +28,10 @@ import https from './https';
|
|||
import logging from './logging';
|
||||
import nginx from './nginx';
|
||||
import performance from './performance';
|
||||
import php from './php';
|
||||
import python from './python';
|
||||
import reverseProxy from './reverse_proxy';
|
||||
import security from './security';
|
||||
import tools from './tools';
|
||||
import docker from './docker';
|
||||
|
||||
export default { https, logging, nginx, performance, php, python, reverseProxy, security, tools, docker };
|
||||
export default { https, logging, nginx, performance, python, reverseProxy, security, tools, docker };
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 DigitalOcean
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
|
@ -39,4 +39,18 @@ export default {
|
|||
enableMagentoRules: `${common.enable} ${common.magento}專屬規則`,
|
||||
joomlaRules: `${common.joomla} 規則`,
|
||||
enableJoomlaRules: `${common.enable} ${common.joomla}專屬規則`,
|
||||
phpServer: `${common.php} 服務`,
|
||||
phpBackupServer: `${common.php}備份服務器`,
|
||||
tcp: 'TCP',
|
||||
hhvmSocket: 'HHVM socket',
|
||||
php5Socket: '5.x socket',
|
||||
php70Socket: '7.0 socket',
|
||||
php71Socket: '7.1 socket',
|
||||
php72Socket: '7.2 socket',
|
||||
php73Socket: '7.3 socket',
|
||||
php74Socket: '7.4 socket',
|
||||
php80Socket: '8.0 socket',
|
||||
phpSocket: 'PHP socket',
|
||||
custom: '自定义',
|
||||
disabled: '禁用',
|
||||
};
|
||||
|
|
|
@ -28,11 +28,10 @@ import https from './https';
|
|||
import logging from './logging';
|
||||
import nginx from './nginx';
|
||||
import performance from './performance';
|
||||
import php from './php';
|
||||
import python from './python';
|
||||
import reverseProxy from './reverse_proxy';
|
||||
import security from './security';
|
||||
import tools from './tools';
|
||||
import docker from './docker';
|
||||
|
||||
export default { https, logging, nginx, performance, php, python, reverseProxy, security, tools, docker };
|
||||
export default { https, logging, nginx, performance, python, reverseProxy, security, tools, docker };
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!--
|
||||
Copyright 2020 DigitalOcean
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
|
@ -65,6 +65,54 @@ THE SOFTWARE.
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="phpServerEnabled" class="field is-horizontal is-aligned-top">
|
||||
<div class="field-label has-margin-top">
|
||||
<label class="label">{{ $t('templates.domainSections.php.phpServer') }}</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="field">
|
||||
<div :class="`control${phpServerChanged ? ' is-changed' : ''}`">
|
||||
<VueSelect ref="phpServerSelect"
|
||||
v-model="phpServer"
|
||||
:options="phpServerOptions"
|
||||
:clearable="false"
|
||||
:reduce="s => s.value"
|
||||
></VueSelect>
|
||||
</div>
|
||||
|
||||
<div v-if="phpServerCustomEnabled"
|
||||
:class="`control${phpServerCustomChanged ? ' is-changed' : ''}`"
|
||||
>
|
||||
<input v-model="phpServerCustom" class="input" type="text" :placeholder="$props.data.phpServerCustom.default" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="phpBackupServerEnabled" class="field is-horizontal is-aligned-top">
|
||||
<div class="field-label has-margin-top">
|
||||
<label class="label">{{ $t('templates.domainSections.php.phpBackupServer') }}</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="field">
|
||||
<div :class="`control${phpBackupServerChanged ? ' is-changed' : ''}`">
|
||||
<VueSelect ref="phpBackupServerSelect"
|
||||
v-model="phpBackupServer"
|
||||
:options="phpBackupServerOptions"
|
||||
:clearable="false"
|
||||
:reduce="s => s.value"
|
||||
></VueSelect>
|
||||
</div>
|
||||
|
||||
<div v-if="phpBackupServerCustomEnabled"
|
||||
:class="`control${phpBackupServerCustomChanged ? ' is-changed' : ''}`"
|
||||
>
|
||||
<input v-model="phpBackupServerCustom" class="input" type="text" :placeholder="$props.data.phpBackupServerCustom.default" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="wordPressRulesEnabled" class="field is-horizontal">
|
||||
<div class="field-label">
|
||||
<label class="label">{{ $t('templates.domainSections.php.wordPressRules') }}</label>
|
||||
|
@ -141,10 +189,47 @@ THE SOFTWARE.
|
|||
|
||||
<script>
|
||||
import PrettyCheck from 'pretty-checkbox-vue/check';
|
||||
import VueSelect from 'vue-select';
|
||||
import delegatedFromDefaults from '../../util/delegated_from_defaults';
|
||||
import computedFromDefaults from '../../util/computed_from_defaults';
|
||||
|
||||
// Value -> i18n key
|
||||
const serverOptions = {
|
||||
'127.0.0.1:9000': 'templates.domainSections.php.tcp',
|
||||
'/var/run/hhvm/sock': 'templates.domainSections.php.hhvmSocket',
|
||||
'/var/run/hhvm/hhvm.sock': 'templates.domainSections.php.hhvmSocket',
|
||||
'/var/run/php5-fpm.sock': 'templates.domainSections.php.php5Socket',
|
||||
'/var/run/php/php7.1-fpm.sock': 'templates.domainSections.php.php71Socket',
|
||||
'/var/run/php/php7.2-fpm.sock': 'templates.domainSections.php.php72Socket',
|
||||
'/var/run/php/php7.0-fpm.sock': 'templates.domainSections.php.php70Socket',
|
||||
'/var/run/php/php7.3-fpm.sock': 'templates.domainSections.php.php73Socket',
|
||||
'/var/run/php/php7.4-fpm.sock': 'templates.domainSections.php.php74Socket',
|
||||
'/var/run/php/php8.0-fpm.sock': 'templates.domainSections.php.php80Socket',
|
||||
'/var/run/php/php-fpm.sock': 'templates.domainSections.php.phpSocket',
|
||||
'custom': 'templates.domainSections.php.custom',
|
||||
};
|
||||
|
||||
const hiddenValues = ['', 'custom'];
|
||||
|
||||
const defaults = {
|
||||
phpServer: {
|
||||
default: '/var/run/php/php-fpm.sock',
|
||||
options: serverOptions,
|
||||
enabled: true,
|
||||
},
|
||||
phpServerCustom: {
|
||||
default: 'unix:/var/run/php/php-fpm.sock',
|
||||
enabled: false,
|
||||
},
|
||||
phpBackupServer: {
|
||||
default: '',
|
||||
options: { '': 'templates.domainSections.php.disabled', ...serverOptions },
|
||||
enabled: true,
|
||||
},
|
||||
phpBackupServerCustom: {
|
||||
default: 'unix:/var/run/php/php-fpm.sock',
|
||||
enabled: false,
|
||||
},
|
||||
php: {
|
||||
default: true,
|
||||
enabled: true,
|
||||
|
@ -174,11 +259,22 @@ THE SOFTWARE.
|
|||
delegated: delegatedFromDefaults(defaults), // Data the parent will present here
|
||||
components: {
|
||||
PrettyCheck,
|
||||
VueSelect,
|
||||
},
|
||||
props: {
|
||||
data: Object, // Data delegated back to us from parent
|
||||
},
|
||||
computed: computedFromDefaults(defaults, 'php'), // Getters & setters for the delegated data
|
||||
computed: {
|
||||
...computedFromDefaults(defaults, 'php'), // Getters & setters for the delegated data
|
||||
phpServerOptions() {
|
||||
return Object.entries(this.$props.data.phpServer.options)
|
||||
.map(([key, value]) => this.formattedOption(key, value));
|
||||
},
|
||||
phpBackupServerOptions() {
|
||||
return Object.entries(this.$props.data.phpBackupServer.options)
|
||||
.map(([key, value]) => this.formattedOption(key, value));
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
// If the Reverse proxy or Python is enabled, PHP will be forced off
|
||||
'$parent.$props.data': {
|
||||
|
@ -198,6 +294,10 @@ THE SOFTWARE.
|
|||
'$props.data.php': {
|
||||
handler(data) {
|
||||
if (data.computed) {
|
||||
this.$props.data.phpServer.enabled = true;
|
||||
this.$props.data.phpServer.computed = this.$props.data.phpServer.value;
|
||||
this.$props.data.phpBackupServer.enabled = true;
|
||||
this.$props.data.phpBackupServer.computed = this.$props.data.phpBackupServer.value;
|
||||
this.$props.data.wordPressRules.enabled = true;
|
||||
this.$props.data.wordPressRules.computed = this.$props.data.wordPressRules.value;
|
||||
this.$props.data.drupalRules.enabled = true;
|
||||
|
@ -207,6 +307,10 @@ THE SOFTWARE.
|
|||
this.$props.data.joomlaRules.enabled = true;
|
||||
this.$props.data.joomlaRules.computed = this.$props.data.joomlaRules.value;
|
||||
} else {
|
||||
this.$props.data.phpServer.enabled = false;
|
||||
this.$props.data.phpServer.computed = '';
|
||||
this.$props.data.phpBackupServer.enabled = false;
|
||||
this.$props.data.phpBackupServer.computed = '';
|
||||
this.$props.data.wordPressRules.enabled = false;
|
||||
this.$props.data.wordPressRules.computed = false;
|
||||
this.$props.data.drupalRules.enabled = false;
|
||||
|
@ -219,6 +323,61 @@ THE SOFTWARE.
|
|||
},
|
||||
deep: true,
|
||||
},
|
||||
// Check server selection is valid
|
||||
'$props.data.phpServer': {
|
||||
handler(data) {
|
||||
if (data.enabled) {
|
||||
// This might cause recursion, but seems not to
|
||||
if (!Object.keys(data.options).includes(data.computed))
|
||||
data.computed = data.default;
|
||||
|
||||
// Show the custom box
|
||||
this.$props.data.phpServerCustom.enabled = data.computed === 'custom';
|
||||
return;
|
||||
}
|
||||
|
||||
// Hide custom if disabled
|
||||
this.$props.data.phpServerCustom.enabled = false;
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
// Check backup server selection is valid
|
||||
'$props.data.phpBackupServer': {
|
||||
handler(data) {
|
||||
if (data.enabled) {
|
||||
// This might cause recursion, but seems not to
|
||||
if (!Object.keys(data.options).includes(data.computed))
|
||||
data.computed = data.default;
|
||||
|
||||
// Show the custom box
|
||||
this.$props.data.phpBackupServerCustom.enabled = data.computed === 'custom';
|
||||
return;
|
||||
}
|
||||
|
||||
// Hide custom if disabled
|
||||
this.$props.data.phpBackupServerCustom.enabled = false;
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
// Ensure 'Custom'/'Disabled' get translated in VueSelect on language switch
|
||||
'$i18n.locale'() {
|
||||
if (!this.$refs.phpServerSelect)
|
||||
return false;
|
||||
const updated = this.phpServerOptions
|
||||
.find(x => x.value === this.$refs.phpServerSelect.$data._value.value);
|
||||
if (updated) this.$refs.phpServerSelect.$data._value = updated;
|
||||
const updatedBackup = this.phpBackupServerOptions
|
||||
.find(x => x.value === this.$refs.phpBackupServerSelect.$data._value.value);
|
||||
if (updatedBackup) this.$refs.phpBackupServerSelect.$data._value = updatedBackup;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
formattedOption(key, value) {
|
||||
return {
|
||||
label: `${this.$t(value)}${hiddenValues.includes(key) ? '' : `: ${key}`}`,
|
||||
value: key,
|
||||
};
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 DigitalOcean
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
|
@ -26,7 +26,6 @@ THE SOFTWARE.
|
|||
|
||||
export { default as HTTPS } from './https';
|
||||
export { default as Security } from './security';
|
||||
export { default as PHP } from './php';
|
||||
export { default as Python } from './python';
|
||||
export { default as ReverseProxy } from './reverse_proxy';
|
||||
export { default as Performance } from './performance';
|
||||
|
|
|
@ -1,238 +0,0 @@
|
|||
<!--
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions :
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
-->
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<div v-if="!phpServerEnabled" class="field is-horizontal is-aligned-top">
|
||||
<div class="field-label">
|
||||
<label class="label">{{ $t('templates.globalSections.php.phpServer') }}</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<label class="text">
|
||||
{{ $t('templates.globalSections.php.phpMustBeEnabledOnOneSite') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template v-else>
|
||||
<div class="field is-horizontal is-aligned-top">
|
||||
<div class="field-label has-margin-top">
|
||||
<label class="label">{{ $t('templates.globalSections.php.phpServer') }}</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="field">
|
||||
<div :class="`control${phpServerChanged ? ' is-changed' : ''}`">
|
||||
<VueSelect v-model="phpServer"
|
||||
:options="phpServerOptions"
|
||||
:clearable="false"
|
||||
:reduce="s => s.value"
|
||||
></VueSelect>
|
||||
</div>
|
||||
|
||||
<div v-if="phpServerCustomEnabled"
|
||||
:class="`control${phpServerCustomChanged ? ' is-changed' : ''}`"
|
||||
>
|
||||
<input v-model="phpServerCustom" class="input" type="text" :placeholder="$props.data.phpServerCustom.default" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field is-horizontal is-aligned-top">
|
||||
<div class="field-label has-margin-top">
|
||||
<label class="label">{{ $t('templates.globalSections.php.phpBackupServer') }}</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="field">
|
||||
<div :class="`control${phpBackupServerChanged ? ' is-changed' : ''}`">
|
||||
<VueSelect ref="phpBackupServerSelect"
|
||||
v-model="phpBackupServer"
|
||||
:options="phpBackupServerOptions"
|
||||
:clearable="false"
|
||||
:reduce="s => s.value"
|
||||
></VueSelect>
|
||||
</div>
|
||||
|
||||
<div v-if="phpBackupServerCustomEnabled"
|
||||
:class="`control${phpBackupServerCustomChanged ? ' is-changed' : ''}`"
|
||||
>
|
||||
<input v-model="phpBackupServerCustom" class="input" type="text" :placeholder="$props.data.phpBackupServerCustom.default" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import VueSelect from 'vue-select';
|
||||
import delegatedFromDefaults from '../../util/delegated_from_defaults';
|
||||
import computedFromDefaults from '../../util/computed_from_defaults';
|
||||
|
||||
// Value -> i18n key
|
||||
const serverOptions = {
|
||||
'127.0.0.1:9000': 'templates.globalSections.php.tcp',
|
||||
'/var/run/hhvm/sock': 'templates.globalSections.php.hhvmSocket',
|
||||
'/var/run/hhvm/hhvm.sock': 'templates.globalSections.php.hhvmSocket',
|
||||
'/var/run/php5-fpm.sock': 'templates.globalSections.php.php5Socket',
|
||||
'/var/run/php/php7.1-fpm.sock': 'templates.globalSections.php.php71Socket',
|
||||
'/var/run/php/php7.2-fpm.sock': 'templates.globalSections.php.php72Socket',
|
||||
'/var/run/php/php7.0-fpm.sock': 'templates.globalSections.php.php70Socket',
|
||||
'/var/run/php/php7.3-fpm.sock': 'templates.globalSections.php.php73Socket',
|
||||
'/var/run/php/php7.4-fpm.sock': 'templates.globalSections.php.php74Socket',
|
||||
'/var/run/php/php8.0-fpm.sock': 'templates.globalSections.php.php80Socket',
|
||||
'/var/run/php/php-fpm.sock': 'templates.globalSections.php.phpSocket',
|
||||
'custom': 'templates.globalSections.php.custom',
|
||||
};
|
||||
const hiddenValues = ['', 'custom'];
|
||||
|
||||
const defaults = {
|
||||
phpServer: {
|
||||
default: '/var/run/php/php-fpm.sock',
|
||||
options: serverOptions,
|
||||
enabled: true,
|
||||
},
|
||||
phpServerCustom: {
|
||||
default: 'unix:/var/run/php/php-fpm.sock',
|
||||
enabled: false,
|
||||
},
|
||||
phpBackupServer: {
|
||||
default: '',
|
||||
options: { '': 'templates.globalSections.php.disabled', ...serverOptions },
|
||||
enabled: true,
|
||||
},
|
||||
phpBackupServerCustom: {
|
||||
default: 'unix:/var/run/php/php-fpm.sock',
|
||||
enabled: false,
|
||||
},
|
||||
};
|
||||
|
||||
export default {
|
||||
name: 'GlobalPHP', // Component name
|
||||
display: 'common.php', // Display name for tab (i18n key)
|
||||
key: 'php', // Key for data in parent
|
||||
delegated: delegatedFromDefaults(defaults), // Data the parent will present here
|
||||
components: {
|
||||
VueSelect,
|
||||
},
|
||||
props: {
|
||||
data: Object, // Data delegated back to us from parent
|
||||
},
|
||||
computed: {
|
||||
...computedFromDefaults(defaults, 'php'), // Getters & setters for the delegated data
|
||||
phpServerOptions() {
|
||||
return Object.entries(this.$props.data.phpServer.options)
|
||||
.map(([key, value]) => this.formattedOption(key, value));
|
||||
},
|
||||
phpBackupServerOptions() {
|
||||
return Object.entries(this.$props.data.phpBackupServer.options)
|
||||
.map(([key, value]) => this.formattedOption(key, value));
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
// Check server selection is valid
|
||||
'$props.data.phpServer': {
|
||||
handler(data) {
|
||||
if (data.enabled) {
|
||||
// This might cause recursion, but seems not to
|
||||
if (!Object.keys(data.options).includes(data.computed))
|
||||
data.computed = data.default;
|
||||
|
||||
// Show the custom box
|
||||
this.$props.data.phpServerCustom.enabled = data.computed === 'custom';
|
||||
return;
|
||||
}
|
||||
|
||||
// Hide custom if disabled
|
||||
this.$props.data.phpServerCustom.enabled = false;
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
// Check backup server selection is valid
|
||||
'$props.data.phpBackupServer': {
|
||||
handler(data) {
|
||||
if (data.enabled) {
|
||||
// This might cause recursion, but seems not to
|
||||
if (!Object.keys(data.options).includes(data.computed))
|
||||
data.computed = data.default;
|
||||
|
||||
// Show the custom box
|
||||
this.$props.data.phpBackupServerCustom.enabled = data.computed === 'custom';
|
||||
return;
|
||||
}
|
||||
|
||||
// Hide custom if disabled
|
||||
this.$props.data.phpBackupServerCustom.enabled = false;
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
// Enable PHP server settings if any site uses PHP
|
||||
'$parent.$parent.$data.domains': {
|
||||
handler(data) {
|
||||
for (const domain of data) {
|
||||
if (domain && domain.php && domain.php.php && domain.php.php.computed) {
|
||||
this.$props.data.phpServer.enabled = true;
|
||||
this.$props.data.phpServer.computed = this.$props.data.phpServer.value;
|
||||
this.$props.data.phpBackupServer.enabled = true;
|
||||
this.$props.data.phpBackupServer.computed = this.$props.data.phpBackupServer.value;
|
||||
return;
|
||||
}
|
||||
}
|
||||
this.$props.data.phpServer.enabled = false;
|
||||
this.$props.data.phpServer.computed = '';
|
||||
this.$props.data.phpBackupServer.enabled = false;
|
||||
this.$props.data.phpBackupServer.computed = '';
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
// Ensure 'Custom'/'Disabled' get translated in VueSelect on language switch
|
||||
'$i18n.locale'() {
|
||||
if (!this.$refs.phpServerOptions)
|
||||
return false;
|
||||
const updated = this.phpServerOptions
|
||||
.find(x => x.value === this.$refs.phpServerOptions.$data._value.value);
|
||||
if (updated) this.$refs.phpServerOptions.$data._value = updated;
|
||||
|
||||
const updatedBackup = this.phpBackupServerOptions
|
||||
.find(x => x.value === this.$refs.phpBackupServerSelect.$data._value.value);
|
||||
if (updatedBackup) this.$refs.phpBackupServerSelect.$data._value = updatedBackup;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
formattedOption(key, value) {
|
||||
return {
|
||||
label: `${this.$t(value)}${hiddenValues.includes(key) ? '' : `: ${key}`}`,
|
||||
value: key,
|
||||
};
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 DigitalOcean
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
|
@ -24,22 +24,15 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import common from '../../common';
|
||||
|
||||
export default {
|
||||
phpServer: `${common.php} 服務`,
|
||||
phpMustBeEnabledOnOneSite: `必須在至少一個網站上啟用${common.php}才能配寘全域${common.php}設定。`,
|
||||
phpBackupServer: `${common.php}備份服務器`,
|
||||
tcp: 'TCP',
|
||||
hhvmSocket: 'HHVM socket',
|
||||
php5Socket: '5.x socket',
|
||||
php70Socket: '7.0 socket',
|
||||
php71Socket: '7.1 socket',
|
||||
php72Socket: '7.2 socket',
|
||||
php73Socket: '7.3 socket',
|
||||
php74Socket: '7.4 socket',
|
||||
php80Socket: '8.0 socket',
|
||||
phpSocket: 'PHP socket',
|
||||
custom: '自定义',
|
||||
disabled: '禁用',
|
||||
export default (target, source) => {
|
||||
const merge = (target, source) => {
|
||||
Object.keys(source).forEach((key) => {
|
||||
if (source[key] && typeof source[key] === 'object') {
|
||||
merge(target[key] = target[key] || {}, source[key]);
|
||||
return;
|
||||
}
|
||||
target[key] = source[key];
|
||||
});
|
||||
};
|
||||
merge(target, source);
|
||||
};
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 DigitalOcean
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
|
@ -28,7 +28,8 @@ import qs from 'qs';
|
|||
import clone from 'clone';
|
||||
import Domain from '../templates/domain';
|
||||
import isObject from './is_object';
|
||||
import backwardsCompatibility from './backwards_compatibility';
|
||||
import angularBackwardsCompatibility from './angular_backwards_compatibility';
|
||||
import vueBackwardsCompatibility from './vue_backwards_compatibility';
|
||||
|
||||
const applyCategories = (categories, target) => {
|
||||
// Work through each potential category
|
||||
|
@ -86,7 +87,10 @@ export default (query, domains, global, nextTick) => new Promise(resolve => {
|
|||
});
|
||||
|
||||
// Handle converting nginxconfig.io-angular params to the current version
|
||||
backwardsCompatibility(data);
|
||||
angularBackwardsCompatibility(data);
|
||||
|
||||
// Handle converting vue params to the current version
|
||||
vueBackwardsCompatibility(data);
|
||||
|
||||
// Handle domains
|
||||
if ('domains' in data && isObject(data.domains)) {
|
||||
|
|
|
@ -24,8 +24,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export default (global, backup = false) => {
|
||||
export default (domain, backup = false) => {
|
||||
const key = `php${backup ? 'Backup' : ''}Server`;
|
||||
if (global.php[key].computed === 'custom') return global.php[`${key}Custom`].computed;
|
||||
return (global.php[key].computed[0] === '/' ? 'unix:' : '') + global.php[key].computed;
|
||||
if (domain.php[key].computed === 'custom') return domain.php[`${key}Custom`].computed;
|
||||
return (domain.php[key].computed[0] === '/' ? 'unix:' : '') + domain.php[key].computed;
|
||||
};
|
||||
|
|
|
@ -24,22 +24,4 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import common from '../../common';
|
||||
|
||||
export default {
|
||||
phpServer: `${common.php} 服务`,
|
||||
phpMustBeEnabledOnOneSite: `必须在至少一个站点上启用${common.php}才能配置全局${common.php}设置。`,
|
||||
phpBackupServer: `${common.php}备份服务器`,
|
||||
tcp: 'TCP',
|
||||
hhvmSocket: 'HHVM socket',
|
||||
php5Socket: '5.x socket',
|
||||
php70Socket: '7.0 socket',
|
||||
php71Socket: '7.1 socket',
|
||||
php72Socket: '7.2 socket',
|
||||
php73Socket: '7.3 socket',
|
||||
php74Socket: '7.4 socket',
|
||||
php80Socket: '8.0 socket',
|
||||
phpSocket: 'PHP socket',
|
||||
custom: '自定义',
|
||||
disabled: '禁用',
|
||||
};
|
||||
export default (domain) => `php_${domain.server.domain.computed.replace(/\./g, '_')}`;
|
71
src/nginxconfig/util/vue_backwards_compatibility.js
Normal file
71
src/nginxconfig/util/vue_backwards_compatibility.js
Normal file
|
@ -0,0 +1,71 @@
|
|||
/*
|
||||
Copyright 2021 DigitalOcean
|
||||
|
||||
This code is licensed under the MIT License.
|
||||
You may obtain a copy of the License at
|
||||
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions :
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import isObject from './is_object';
|
||||
import deepMerge from './deep_merge';
|
||||
|
||||
// Handle converting the old query format to our new query params
|
||||
export default data => {
|
||||
// Handle converting old domain settings to new ones
|
||||
if ('global' in data && isObject(data.global)) {
|
||||
// Handle specifics global data
|
||||
const mappedData = {
|
||||
php: {},
|
||||
};
|
||||
|
||||
// Keys to map
|
||||
const keysToMap = {
|
||||
php: [
|
||||
'phpServer',
|
||||
'phpServerCustom',
|
||||
'phpBackupServer',
|
||||
'phpBackupServerCustom',
|
||||
],
|
||||
};
|
||||
|
||||
for (const key in data.global) {
|
||||
if (!Object.prototype.hasOwnProperty.call(data.global, key)) continue;
|
||||
|
||||
// Skip if key doesn't need to be mapped
|
||||
if (!Object.prototype.hasOwnProperty.call(keysToMap, key)) continue;
|
||||
|
||||
for (const key2 in data.global[key]) {
|
||||
if (!Object.prototype.hasOwnProperty.call(data.global[key], key2)) continue;
|
||||
|
||||
if (keysToMap[key].includes(key2)) {
|
||||
mappedData[key][key2] = data.global[key][key2];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (const key in data.domains) {
|
||||
if (!Object.prototype.hasOwnProperty.call(data.domains, key)) continue;
|
||||
|
||||
// Deep merge the mapped data
|
||||
deepMerge(data.domains[key], mappedData);
|
||||
}
|
||||
}
|
||||
};
|
Loading…
Reference in a new issue