From b9fb59b7b2d30fd7e75399fd028afddfbe99bef4 Mon Sep 17 00:00:00 2001 From: Thom Pol Date: Sun, 31 Jul 2022 14:43:44 +0200 Subject: [PATCH] Clean up duplicate code, run update-alternatives for php-cgi-bin (#56) --- lib/os/class.ISPConfigDebian10OS.inc.php | 146 --------------------- lib/os/class.ISPConfigDebianOS.inc.php | 19 +-- lib/os/class.ISPConfigUbuntu2004OS.inc.php | 22 ---- lib/os/class.ISPConfigUbuntuOS.inc.php | 22 ---- 4 files changed, 11 insertions(+), 198 deletions(-) diff --git a/lib/os/class.ISPConfigDebian10OS.inc.php b/lib/os/class.ISPConfigDebian10OS.inc.php index ead4490..037072b 100644 --- a/lib/os/class.ISPConfigDebian10OS.inc.php +++ b/lib/os/class.ISPConfigDebian10OS.inc.php @@ -54,28 +54,6 @@ class ISPConfigDebian10OS extends ISPConfigDebianOS { return true; } - protected function setDefaultPHP() { - ISPConfigLog::info('Setting default system php version.', true); - $cmd = 'update-alternatives --set php /usr/bin/php' . $this->getSystemPHPVersion(); - $result = $this->exec($cmd); - if($result === false) { - throw new ISPConfigOSException('Command ' . $cmd . ' failed.'); - } - - if(ISPConfig::shallInstall('web')) { - // When --use-php-system is used, there is no alternative for php-fpm.sock. - if(ISPConfig::wantsPHP() === 'system') { - $cmd = 'update-alternatives --set php-cgi /usr/bin/php-cgi' . $this->getSystemPHPVersion(); - } else { - $cmd = 'update-alternatives --set php-cgi /usr/bin/php-cgi' . $this->getSystemPHPVersion() . ' ; update-alternatives --set php-fpm.sock /run/php/php' . $this->getSystemPHPVersion() . '-fpm.sock'; - } - $result = $this->exec($cmd); - if($result === false) { - throw new ISPConfigOSException('Command ' . $cmd . ' failed.'); - } - } - } - protected function getRoundcubePackages() { return array( 'roundcube/buster-backports', @@ -123,130 +101,6 @@ maxretry = 3'; return $jk_jail; } - protected function installPHPMyAdmin($mysql_root_pw) { - if(!ISPConfig::shallInstall('web') || !ISPConfig::shallInstall('pma')) { - return; - } - - ISPConfigLog::info('Installing package phpmyadmin', true); - - if(!is_dir('/usr/share/phpmyadmin')) { - mkdir('/usr/share/phpmyadmin', 0755, true); - } - if(!is_dir('/etc/phpmyadmin')) { - mkdir('/etc/phpmyadmin', 0755); - } - if(!is_dir('/var/lib/phpmyadmin/tmp')) { - mkdir('/var/lib/phpmyadmin/tmp', 0777, true); - } - touch('/etc/phpmyadmin/htpasswd.setup'); - - $cmd = 'chown -R www-data:www-data ' . escapeshellarg('/var/lib/phpmyadmin') . ' ; cd /tmp ; rm -f phpMyAdmin-4.9.0.1-all-languages.tar.gz ; wget "https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz" 2>/dev/null && tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz && cp -a phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/ && rm -f phpMyAdmin-4.9.0.1-all-languages.tar.gz && rm -rf phpMyAdmin-4.9.0.1-all-languages'; - $result = $this->exec($cmd); - if($result === false) { - throw new ISPConfigOSException('Command ' . $cmd . ' failed.'); - } - - copy('/usr/share/phpmyadmin/config.sample.inc.php', '/usr/share/phpmyadmin/config.inc.php'); - - $replacements = array( - '/^(?:\s*\/\/)?\s*\$cfg\[\'blowfish_secret\'\]\s*=.*$/m' => '$cfg[\'blowfish_secret\'] = \'' . substr(sha1(uniqid('pre', true)), 0, 32) . '\';', - '/^(?:\s*\/\/)?\s*\$cfg\[\'TempDir\'\]\s*=.*$/m' => '$cfg[\'TempDir\'] = \'/var/lib/phpmyadmin/tmp\';' - ); - $this->replaceContents('/usr/share/phpmyadmin/config.inc.php', $replacements, true); - - $contents = '# phpMyAdmin default Apache configuration - -Alias /phpmyadmin /usr/share/phpmyadmin - - - Options FollowSymLinks - DirectoryIndex index.php - - - AddType application/x-httpd-php .php - - php_flag magic_quotes_gpc Off - php_flag track_vars On - php_flag register_globals Off - php_value include_path . - - - - -# Authorize for setup - - - AuthType Basic - AuthName "phpMyAdmin Setup" - AuthUserFile /etc/phpmyadmin/htpasswd.setup - - Require valid-user - - -# Disallow web access to directories that don\'t need it - - Order Deny,Allow - Deny from All - - - Order Deny,Allow - Deny from All -'; - if(ISPConfig::$WEBSERVER === ISPC_WEBSERVER_APACHE) { - file_put_contents('/etc/apache2/conf-available/phpmyadmin.conf', $contents); - - $cmd = 'a2enconf phpmyadmin'; - $result = $this->exec($cmd); - if($result === false) { - throw new ISPConfigOSException('Command ' . $cmd . ' failed.'); - } - - $this->restartService('apache2'); - } - - $pma_pass = ISPConfigFunctions::generatePassword(15); - $pma_pass_enc = preg_replace('/[\'\\\\]/', '\\$1', $pma_pass); - - $queries = array( - 'CREATE DATABASE phpmyadmin;', - 'CREATE USER \'pma\'@\'localhost\' IDENTIFIED BY \'' . $pma_pass_enc . '\';', - 'GRANT ALL PRIVILEGES ON phpmyadmin.* TO \'pma\'@\'localhost\' IDENTIFIED BY \'' . $pma_pass_enc . '\' WITH GRANT OPTION;', - 'FLUSH PRIVILEGES;' - ); - - foreach($queries as $query) { - $cmd = 'mysql --defaults-file=/etc/mysql/debian.cnf -e ' . escapeshellarg($query) . ' 2>&1'; - $result = $this->exec($cmd); - if($result === false) { - ISPConfigLog::warn('Query ' . $query . ' failed.', true); - } - } - - $cmd = 'mysql --defaults-file=/etc/mysql/debian.cnf -D phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql'; - $result = $this->exec($cmd); - if($result === false) { - ISPConfigLog::warn('Command ' . $cmd . ' failed.', true); - } - - $uncomment = array( - array( - 'first_line' => '/^(?:\s*\/\/)?\s*\$cfg\[\'Servers\'\]\[\$i\]/', - 'last_line' => '/####nomatch###/', - 'search' => '/^(?:\s*\/\/)?\s*\$cfg\[\'Servers\'\]\[\$i\]/' - ) - ); - $this->uncommentLines('/usr/share/phpmyadmin/config.inc.php', $uncomment, '//'); - - $replacements = array( - '/^(?:\s*\/\/)?\s*(\$cfg\[\'Servers\'\]\[\$i\]\[\'controlhost\'\])\s*=.*$/m' => '$1 = \'localhost\';', - '/^(?:\s*\/\/)?\s*(\$cfg\[\'Servers\'\]\[\$i\]\[\'controlport\'\])\s*=.*$/m' => '$1 = \'\';', - '/^(?:\s*\/\/)?\s*(\$cfg\[\'Servers\'\]\[\$i\]\[\'controluser\'\])\s*=.*$/m' => '$1 = \'pma\';', - '/^(?:\s*\/\/)?\s*(\$cfg\[\'Servers\'\]\[\$i\]\[\'controlpass\'\])\s*=.*$/m' => '$1 = \'' . $pma_pass_enc . '\';', - ); - $this->replaceContents('/usr/share/phpmyadmin/config.inc.php', $replacements, false); - } - protected function getSystemPHPVersion() { return '7.3'; } diff --git a/lib/os/class.ISPConfigDebianOS.inc.php b/lib/os/class.ISPConfigDebianOS.inc.php index e4b69da..bc0ea9c 100644 --- a/lib/os/class.ISPConfigDebianOS.inc.php +++ b/lib/os/class.ISPConfigDebianOS.inc.php @@ -213,24 +213,27 @@ class ISPConfigDebianOS extends ISPConfigBaseOS { } protected function setDefaultPHP() { - ISPConfigLog::info('Setting default system php version.', true); - $cmd = 'update-alternatives --set php /usr/bin/php7.0'; + ISPConfigLog::info('Setting default system PHP version.', true); + $cmd = 'update-alternatives --set php /usr/bin/php' . $this->getSystemPHPVersion(); $result = $this->exec($cmd); if($result === false) { throw new ISPConfigOSException('Command ' . $cmd . ' failed.'); } if(ISPConfig::shallInstall('web')) { - // When --use-php-system is used, there is no alternative for php-fpm.sock. - if(ISPConfig::wantsPHP() === 'system') { - $cmd = 'update-alternatives --set php-cgi /usr/bin/php-cgi7.0'; - } else { - $cmd = 'update-alternatives --set php-cgi /usr/bin/php-cgi7.0 ; update-alternatives --set php-fpm.sock /run/php/php7.0-fpm.sock'; - } + $cmd = 'update-alternatives --set php-cgi /usr/bin/php-cgi' . $this->getSystemPHPVersion() . ' ; update-alternatives --set php-cgi-bin /usr/lib/cgi-bin/php' . $this->getSystemPHPVersion(); $result = $this->exec($cmd); if($result === false) { throw new ISPConfigOSException('Command ' . $cmd . ' failed.'); } + // When --use-php=system is given, there is no alternative for php-fpm.sock and it throws an error. + if(ISPConfig::wantsPHP() !== 'system') { + $cmd = 'update-alternatives --set php-fpm.sock /run/php/php' . $this->getSystemPHPVersion() . '-fpm.sock'; + $result = $this->exec($cmd); + if($result === false) { + throw new ISPConfigOSException('Command ' . $cmd . ' failed.'); + } + } } } diff --git a/lib/os/class.ISPConfigUbuntu2004OS.inc.php b/lib/os/class.ISPConfigUbuntu2004OS.inc.php index acc3129..5db54cd 100644 --- a/lib/os/class.ISPConfigUbuntu2004OS.inc.php +++ b/lib/os/class.ISPConfigUbuntu2004OS.inc.php @@ -98,28 +98,6 @@ maxretry = 3'; return $jk_jail; } - protected function setDefaultPHP() { - ISPConfigLog::info('Setting default system php version.', true); - $cmd = 'update-alternatives --set php /usr/bin/php7.4'; - $result = $this->exec($cmd); - if($result === false) { - throw new ISPConfigOSException('Command ' . $cmd . ' failed.'); - } - - if(ISPConfig::shallInstall('web')) { - // When --use-php-system is used, there is no alternative for php-fpm.sock. - if(ISPConfig::wantsPHP() === 'system') { - $cmd = 'update-alternatives --set php-cgi /usr/bin/php-cgi7.4'; - } else { - $cmd = 'update-alternatives --set php-cgi /usr/bin/php-cgi7.4 ; update-alternatives --set php-fpm.sock /run/php/php7.4-fpm.sock'; - } - $result = $this->exec($cmd); - if($result === false) { - throw new ISPConfigOSException('Command ' . $cmd . ' failed.'); - } - } - } - protected function getSystemPHPVersion() { return '7.4'; } diff --git a/lib/os/class.ISPConfigUbuntuOS.inc.php b/lib/os/class.ISPConfigUbuntuOS.inc.php index 90b5624..4792ecb 100644 --- a/lib/os/class.ISPConfigUbuntuOS.inc.php +++ b/lib/os/class.ISPConfigUbuntuOS.inc.php @@ -81,28 +81,6 @@ maxretry = 3'; return $jk_jail; } - protected function setDefaultPHP() { - ISPConfigLog::info('Setting default system php version.', true); - $cmd = 'update-alternatives --set php /usr/bin/php7.2'; - $result = $this->exec($cmd); - if($result === false) { - throw new ISPConfigOSException('Command ' . $cmd . ' failed.'); - } - - if(ISPConfig::shallInstall('web')) { - // When --use-php-system is used, there is no alternative for php-fpm.sock. - if(ISPConfig::wantsPHP() === 'system') { - $cmd = 'update-alternatives --set php-cgi /usr/bin/php-cgi7.2'; - } else { - $cmd = 'update-alternatives --set php-cgi /usr/bin/php-cgi7.2 ; update-alternatives --set php-fpm.sock /run/php/php7.2-fpm.sock'; - } - $result = $this->exec($cmd); - if($result === false) { - throw new ISPConfigOSException('Command ' . $cmd . ' failed.'); - } - } - } - protected function getSystemPHPVersion() { return '7.2'; } -- GitLab