diff --git a/lib/class.ISPConfig.inc.php b/lib/class.ISPConfig.inc.php index 78586571e1a8b156bac5258a033502ccd9215279..8e03c7aa1b003c84202c6cfd0c1944e75a6d89e2 100644 --- a/lib/class.ISPConfig.inc.php +++ b/lib/class.ISPConfig.inc.php @@ -291,11 +291,6 @@ Possible arguments are: try { $os = ISPConfigBaseOS::getOSVersion(); - if(!self::wantsAmavis() && (!isset($_GET['channel']) || $_GET['channel'] !== 'dev')) { - ISPConfigLog::info('NOTE: Installing ISPConfig stable with rspamd is not supported until 3.1.15 release (due to rspamd support). Please use --channel=dev to install stable-3.1 git development branch or --use-amavis to use amavis instead of rspamd.', true); - exit; - } - ISPConfigLog::info('Starting perfect server setup for ' . $os['NAME'], true); $installer = ISPConfigBaseOS::getOSInstance(); $installer->runPerfectSetup(); diff --git a/lib/os/class.ISPConfigBaseOS.inc.php b/lib/os/class.ISPConfigBaseOS.inc.php index a87954034b6fdf3312d3a3b414105339bb7272fa..ac64fe9d939918b6c8a00190a9b63279d639a2a7 100644 --- a/lib/os/class.ISPConfigBaseOS.inc.php +++ b/lib/os/class.ISPConfigBaseOS.inc.php @@ -86,7 +86,7 @@ class ISPConfigBaseOS { while($result === false && $tries > 0) { $return_var = 0; $output = array(); - $tmp = exec($cmd, $output, $return_var); + exec($cmd, $output, $return_var); ISPConfigLog::debug('CMD: ' . $cmd . ' returned code ' . $return_var); if($return_var === 0 || (!empty($returncodes_ok) && is_array($returncodes_ok) && in_array($return_var, $returncodes_ok, true))) { $result = implode("\n", $output); @@ -99,6 +99,23 @@ class ISPConfigBaseOS { return $result; } + public function passthru($cmd, $returncodes_ok = array(), $tries = 1, $retry_codes = null) { + $result = false; + while($result === false && $tries > 0) { + $return_var = 0; + passthru($cmd, $return_var); + ISPConfigLog::debug('CMD: ' . $cmd . ' returned code ' . $return_var); + if($return_var === 0 || (!empty($returncodes_ok) && is_array($returncodes_ok) && in_array($return_var, $returncodes_ok, true))) { + $result = true; + } elseif(is_array($retry_codes) && !empty($retry_codes) && !in_array($return_var, $retry_codes)) { + break; + } + $tries--; + } + + return $result; + } + protected function addLines($file, $entries, $add_if_existing = false) { if(!is_array($entries)) { $entries = array($entries); diff --git a/lib/os/class.ISPConfigDebianOS.inc.php b/lib/os/class.ISPConfigDebianOS.inc.php index 9fc0944503db09b3f02a7c96ee15ccd433563fca..44ce32f4d1cfd054cabad20fb5591f4bf916d490 100644 --- a/lib/os/class.ISPConfigDebianOS.inc.php +++ b/lib/os/class.ISPConfigDebianOS.inc.php @@ -1123,7 +1123,11 @@ mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"'; $cmd .= ' ; wget -O ispconfig.tar.gz "https://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz" >/dev/null 2>&1 ; tar xzf ispconfig.tar.gz'; } $cmd .= ' ; cd ispconfig3_install ; cd install ; php -q install.php ' . $ai_argument . ' 2>&1 ; cd /tmp ; rm -rf ispconfig3_install 2>&1'; - $result = $this->exec($cmd); + if(ISPConfig::wantsInteractive()) { + $result = $this->passthru($cmd); + } else { + $result = $this->exec($cmd); + } if($result === false) { throw new ISPConfigOSException('Command ' . $cmd . ' failed.'); }