diff --git a/install/install.php b/install/install.php index 9cc6bb5fa7db8127355fa62711428fe6bd4fbde3..64d05feecd8093a7df9b42af4ab563b96cfce7b8 100644 --- a/install/install.php +++ b/install/install.php @@ -508,6 +508,9 @@ if($conf['apparmor']['installed']){ if($install_mode == 'standard' || strtolower($inst->simple_query('Configure Firewall Server', array('y', 'n'), 'y','configure_firewall')) == 'y') { //* Check for Firewall + if(!isset($conf['firewall']['installed'])) { + $conf['firewall']['installed'] = false; + } if(!$conf['ufw']['installed'] && !$conf['firewall']['installed']) { $conf['ufw']['installed'] = $inst->force_configure_app('Ubuntu Firewall', ($install_mode == 'expert')); $conf['firewall']['installed'] = $inst->force_configure_app('Bastille Firewall', ($install_mode == 'expert')); @@ -631,12 +634,12 @@ swriteln('Detect IP addresses'); $inst->detect_ips(); swriteln('Restarting services ...'); -if($conf['mysql']['installed'] == true && $conf['mysql']['init_script'] != '') system($inst->getinitcommand($conf['mysql']['init_script'], 'restart').' >/dev/null 2>&1'); -if($conf['postfix']['installed'] == true && $conf['postfix']['init_script'] != '') system($inst->getinitcommand($conf['postfix']['init_script'], 'restart')); -if($conf['saslauthd']['installed'] == true && $conf['saslauthd']['init_script'] != '') system($inst->getinitcommand($conf['saslauthd']['init_script'], 'restart')); -if($conf['amavis']['installed'] == true && $conf['amavis']['init_script'] != '') system($inst->getinitcommand($conf['amavis']['init_script'], 'restart')); -if($conf['rspamd']['installed'] == true && $conf['rspamd']['init_script'] != '') system($inst->getinitcommand($conf['rspamd']['init_script'], 'restart')); -if($conf['clamav']['installed'] == true && $conf['clamav']['init_script'] != '' && $conf['amavis']['installed'] == true) system($inst->getinitcommand($conf['clamav']['init_script'], 'restart')); +if($conf['mysql']['installed'] == true && isset($conf['mysql']['init_script']) && $conf['mysql']['init_script'] != '') system($inst->getinitcommand($conf['mysql']['init_script'], 'restart').' >/dev/null 2>&1'); +if($conf['postfix']['installed'] == true && isset($conf['postfix']['init_script']) && $conf['postfix']['init_script'] != '') system($inst->getinitcommand($conf['postfix']['init_script'], 'restart')); +if($conf['saslauthd']['installed'] == true && isset($conf['saslauthd']['init_script']) && $conf['saslauthd']['init_script'] != '') system($inst->getinitcommand($conf['saslauthd']['init_script'], 'restart')); +if($conf['amavis']['installed'] == true && isset($conf['amavis']['init_script']) && $conf['amavis']['init_script'] != '') system($inst->getinitcommand($conf['amavis']['init_script'], 'restart')); +if($conf['rspamd']['installed'] == true && isset($conf['rspamd']['init_script']) && $conf['rspamd']['init_script'] != '') system($inst->getinitcommand($conf['rspamd']['init_script'], 'restart')); +if($conf['clamav']['installed'] == true && isset($conf['clamav']['init_script']) && $conf['clamav']['init_script'] != '' && $conf['amavis']['installed'] == true) system($inst->getinitcommand($conf['clamav']['init_script'], 'restart')); if($conf['courier']['installed'] == true){ if($conf['courier']['courier-authdaemon'] != '') system($inst->getinitcommand($conf['courier']['courier-authdaemon'], 'restart')); if($conf['courier']['courier-imap'] != '') system($inst->getinitcommand($conf['courier']['courier-imap'], 'restart')); @@ -644,22 +647,22 @@ if($conf['courier']['installed'] == true){ if($conf['courier']['courier-pop'] != '') system($inst->getinitcommand($conf['courier']['courier-pop'], 'restart')); if($conf['courier']['courier-pop-ssl'] != '') system($inst->getinitcommand($conf['courier']['courier-pop-ssl'], 'restart')); } -if($conf['dovecot']['installed'] == true && $conf['dovecot']['init_script'] != '') system($inst->getinitcommand($conf['dovecot']['init_script'], 'restart')); -if($conf['mailman']['installed'] == true && $conf['mailman']['init_script'] != '') system('nohup '.$inst->getinitcommand($conf['mailman']['init_script'], 'restart').' >/dev/null 2>&1 &'); -if($conf['apache']['installed'] == true && $conf['apache']['init_script'] != '') system($inst->getinitcommand($conf['apache']['init_script'], 'restart')); +if($conf['dovecot']['installed'] == true && isset($conf['dovecot']['init_script']) && $conf['dovecot']['init_script'] != '') system($inst->getinitcommand($conf['dovecot']['init_script'], 'restart')); +if($conf['mailman']['installed'] == true && isset($conf['mailman']['init_script']) && $conf['mailman']['init_script'] != '') system('nohup '.$inst->getinitcommand($conf['mailman']['init_script'], 'restart').' >/dev/null 2>&1 &'); +if($conf['apache']['installed'] == true && isset($conf['apache']['init_script']) && $conf['apache']['init_script'] != '') system($inst->getinitcommand($conf['apache']['init_script'], 'restart')); //* Reload is enough for nginx if($conf['nginx']['installed'] == true){ if($conf['nginx']['php_fpm_init_script'] != '') system($inst->getinitcommand($conf['nginx']['php_fpm_init_script'], 'reload')); - if($conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'reload')); + if(isset($conf['nginx']['init_script']) && $conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'reload')); } -if($conf['pureftpd']['installed'] == true && $conf['pureftpd']['init_script'] != '') system($inst->getinitcommand($conf['pureftpd']['init_script'], 'restart')); -if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '') system($inst->getinitcommand($conf['mydns']['init_script'], 'restart').' &> /dev/null'); -if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '') system($inst->getinitcommand($conf['powerdns']['init_script'], 'restart').' &> /dev/null'); -if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '') system($inst->getinitcommand($conf['bind']['init_script'], 'restart').' &> /dev/null'); -//if($conf['squid']['installed'] == true && $conf['squid']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['squid']['init_script'])) system($conf['init_scripts'].'/'.$conf['squid']['init_script'].' restart &> /dev/null'); -if($conf['nginx']['installed'] == true && $conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'restart').' &> /dev/null'); -if($conf['ufw']['installed'] == true && $conf['ufw']['init_script'] != '') system($inst->getinitcommand($conf['ufw']['init_script'], 'restart').' &> /dev/null'); -if($conf['xmpp']['installed'] == true && $conf['xmpp']['init_script'] != '') system($inst->getinitcommand($conf['xmpp']['init_script'], 'restart').' &> /dev/null'); +if($conf['pureftpd']['installed'] == true && isset($conf['pureftpd']['init_script']) && $conf['pureftpd']['init_script'] != '') system($inst->getinitcommand($conf['pureftpd']['init_script'], 'restart')); +if($conf['mydns']['installed'] == true && isset($conf['mydns']['init_script']) && $conf['mydns']['init_script'] != '') system($inst->getinitcommand($conf['mydns']['init_script'], 'restart').' &> /dev/null'); +if($conf['powerdns']['installed'] == true && isset($conf['powerdns']['init_script']) && $conf['powerdns']['init_script'] != '') system($inst->getinitcommand($conf['powerdns']['init_script'], 'restart').' &> /dev/null'); +if($conf['bind']['installed'] == true && isset($conf['bind']['init_script']) && $conf['bind']['init_script'] != '') system($inst->getinitcommand($conf['bind']['init_script'], 'restart').' &> /dev/null'); +//if($conf['squid']['installed'] == true && isset($conf['squid']['init_script']) && $conf['squid']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['squid']['init_script'])) system($conf['init_scripts'].'/'.$conf['squid']['init_script'].' restart &> /dev/null'); +if($conf['nginx']['installed'] == true && isset($conf['nginx']['init_script']) && $conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'restart').' &> /dev/null'); +if($conf['ufw']['installed'] == true && isset($conf['ufw']['init_script']) && $conf['ufw']['init_script'] != '') system($inst->getinitcommand($conf['ufw']['init_script'], 'restart').' &> /dev/null'); +if($conf['xmpp']['installed'] == true && isset($conf['xmpp']['init_script']) && $conf['xmpp']['init_script'] != '') system($inst->getinitcommand($conf['xmpp']['init_script'], 'restart').' &> /dev/null'); $inst->create_mount_script(); diff --git a/install/lib/classes/tpl.inc.php b/install/lib/classes/tpl.inc.php index 5bd8ded1f8818f2e1bb8b6d473d479facc1a0db0..2bea1e1fd5474a0dcdfcc53da56a67fcf9e031a7 100644 --- a/install/lib/classes/tpl.inc.php +++ b/install/lib/classes/tpl.inc.php @@ -931,7 +931,7 @@ if (!defined('vlibTemplateClassLoaded')) { { array_push($this->_namespace, $varname); $tempvar = count($this->_namespace) - 1; - $retstr = "for (\$_".$tempvar."=0 ; \$_".$tempvar." < count(\$this->_arrvars"; + $retstr = "for (\$_".$tempvar."=0 ; \$_".$tempvar." < \$this->_tpl_count(\$this->_arrvars"; for ($i=0; $i < count($this->_namespace); $i++) { $retstr .= "['".$this->_namespace[$i]."']"; if ($this->_namespace[$i] != $varname) $retstr .= "[\$_".$i."]"; @@ -1170,7 +1170,15 @@ if (!defined('vlibTemplateClassLoaded')) { array_push($this->_currentincludedir, dirname($this->_tmplfilename)); $this->_includedepth++; - $success = @eval($this->_tmplfilep); + try { + $success = @eval($this->_tmplfilep); + } catch(Exception $ex) { + print $this->_tmplfilep; + throw $ex; + } catch(TypeError $ex) { + print $this->_tmplfilep; + throw $ex; + } $this->_includedepth--; array_pop($this->_currentincludedir); @@ -1268,6 +1276,27 @@ if (!defined('vlibTemplateClassLoaded')) { return $return; } + /** + * Used during in evaled code to replace PHP count function for PHP 8 compatibility + * @var variable to be counted + */ + private function _tpl_count($var) + { + $retvar = 0; + if(isset($var)) { + if(is_array($var)) { + $retvar = count($var); + } elseif(is_null($var)) { + $retvar = 0; + } else { + $retvar = 1; + } + } else { + $retvar = 0; + } + return $retvar; + } + /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The following functions have no use and are included just so that if the user is making use of vlibTemplateCache functions, this doesn't crash when changed to diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 46b14a58a26ddf894a2c9a628e1f042606fc93e1..b3610db6107140a9a0f7a4bb049e9bdb28ea4536 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -83,13 +83,13 @@ class installer_base { global $autoinstall, $autoupdate; $finished = false; do { - if($name != '' && $autoinstall[$name] != '') { + if($name != '' && isset($autoinstall[$name]) && $autoinstall[$name] != '') { if($autoinstall[$name] == 'default') { $input = $default; } else { $input = $autoinstall[$name]; } - } elseif($name != '' && $autoupdate[$name] != '') { + } elseif($name != '' && isset($autoupdate[$name]) && $autoupdate[$name] != '') { if($autoupdate[$name] == 'default') { $input = $default; } else { @@ -126,13 +126,13 @@ class installer_base { public function free_query($query, $default, $name = '') { global $autoinstall, $autoupdate; - if($name != '' && $autoinstall[$name] != '') { + if($name != '' && isset($autoinstall[$name]) && $autoinstall[$name] != '') { if($autoinstall[$name] == 'default') { $input = $default; } else { $input = $autoinstall[$name]; } - } elseif($name != '' && $autoupdate[$name] != '') { + } elseif($name != '' && isset($autoupdate[$name]) && $autoupdate[$name] != '') { if($autoupdate[$name] == 'default') { $input = $default; } else { @@ -249,7 +249,7 @@ class installer_base { $msg = ''; if(version_compare(phpversion(), '5.4', '<')) $msg .= "PHP Version 5.4 or newer is required. The currently used PHP version is ".phpversion().".\n"; - if(version_compare(phpversion(), '8.0', '>=')) $msg .= "PHP Version 8 is not supported yet. Change PHP version back to the default version of the OS. The currently used PHP version is ".phpversion().".\n"; + if(version_compare(phpversion(), '8.2', '>=')) $msg .= "PHP Version 8.2+ is not supported yet. Change PHP version back to the default version of the OS. The currently used PHP version is ".phpversion().".\n"; if(!function_exists('curl_init')) $msg .= "PHP Curl Module is missing.\n"; if(!function_exists('mysqli_connect')) $msg .= "PHP MySQLi Module is nmissing.\n"; if(!function_exists('mb_detect_encoding')) $msg .= "PHP Multibyte Module (MB) is missing.\n"; @@ -1521,7 +1521,7 @@ class installer_base { } $new_options[] = $value; } - if ($configure_lmtp && $conf['mail']['content_filter'] === 'amavisd') { + if ($configure_lmtp && (!isset($conf['mail']['content_filter']) || $conf['mail']['content_filter'] === 'amavisd')) { for ($i = 0; isset($new_options[$i]); $i++) { if ($new_options[$i] == 'reject_unlisted_recipient') { array_splice($new_options, $i+1, 0, array("check_recipient_access proxy:mysql:${config_dir}/mysql-verify_recipients.cf")); @@ -1928,10 +1928,10 @@ class installer_base { } $tpl->setVar('dkim_path', $mail_config['dkim_path']); - $tpl->setVar('rspamd_redis_servers', $mail_config['rspamd_redis_servers']); - $tpl->setVar('rspamd_redis_password', $mail_config['rspamd_redis_password']); - $tpl->setVar('rspamd_redis_bayes_servers', $mail_config['rspamd_redis_bayes_servers']); - $tpl->setVar('rspamd_redis_bayes_password', $mail_config['rspamd_redis_bayes_password']); + $tpl->setVar('rspamd_redis_servers', (isset($mail_config['rspamd_redis_servers']) ? $mail_config['rspamd_redis_servers'] : '')); + $tpl->setVar('rspamd_redis_password', (isset($mail_config['rspamd_redis_password']) ? $mail_config['rspamd_redis_password'] : '')); + $tpl->setVar('rspamd_redis_bayes_servers', (isset($mail_config['rspamd_redis_bayes_servers']) ? $mail_config['rspamd_redis_bayes_servers'] : '')); + $tpl->setVar('rspamd_redis_bayes_password', (isset($mail_config['rspamd_redis_bayes_password']) ? $mail_config['rspamd_redis_bayes_password'] : '')); if(count($local_addrs) > 0) { $tpl->setLoop('local_addrs', $local_addrs); } @@ -3031,12 +3031,15 @@ class installer_base { $hook = $pre_hook . $renew_hook; } + $which_certbot = shell_exec('which certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot letsencrypt'); + // Get the default LE client name and version - $le_client = explode("\n", shell_exec('which certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot letsencrypt')); + $le_client = explode("\n", $which_certbot ? $which_certbot : ''); $le_client = reset($le_client); + $which_acme = shell_exec('which acme.sh /usr/local/ispconfig/server/scripts/acme.sh /root/.acme.sh/acme.sh'); // Check for Neilpang acme.sh as well - $acme = explode("\n", shell_exec('which acme.sh /usr/local/ispconfig/server/scripts/acme.sh /root/.acme.sh/acme.sh')); + $acme = explode("\n", $which_acme ? $which_acme : ''); $acme = reset($acme); if((!$acme || !is_executable($acme)) && (!$le_client || !is_executable($le_client))) { diff --git a/install/lib/mysql.lib.php b/install/lib/mysql.lib.php index 1085ed0d5b2c04cd97bcc5968f371afec5e0dc35..4d9e71f44a1a8c62758b70915562287964d95000 100644 --- a/install/lib/mysql.lib.php +++ b/install/lib/mysql.lib.php @@ -64,9 +64,11 @@ class db public function __destruct() { if($this->_iConnId) mysqli_close($this->_iConnId); } - + private function do_connect() { global $conf; + + mysqli_report(MYSQLI_REPORT_OFF); if($this->_iConnId) return true; $this->dbHost = $conf['mysql']['host']; @@ -77,7 +79,7 @@ class db $this->dbCharset = $conf["mysql"]["charset"]; $this->dbNewLink = false; $this->dbClientFlags = null; - + $this->_iConnId = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPass, '', (int)$this->dbPort); $try = 0; while((!is_object($this->_iConnId) || mysqli_connect_error()) && $try < 5) { @@ -92,19 +94,19 @@ class db $this->_sqlerror('Zugriff auf Datenbankserver fehlgeschlagen! / Database server not accessible!'); return false; } - + if($this->dbName) $this->setDBName($this->dbName); $this->_setCharset(); } - + public function setDBData($host, $user, $password, $port) { $this->dbHost = $host; $this->dbUser = $user; $this->dbPass = $password; $this->dbPort = $port; } - + public function setDBName($name) { $this->dbName = $name; $this->_iConnId = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPass, '', (int)$this->dbPort); @@ -114,7 +116,7 @@ class db return false; } } - + public function close() { if($this->_iConnId) mysqli_close($this->_iConnId); $this->_iConnId = null; @@ -192,7 +194,7 @@ class db } private function _query($sQuery = '') { - + $aArgs = func_get_args(); $this->do_connect(); @@ -284,7 +286,7 @@ class db * @return array result row or NULL if none found */ public function queryOneRecord($sQuery = '') { - + $aArgs = func_get_args(); if(!empty($aArgs)) { $sQuery = array_shift($aArgs); @@ -293,7 +295,7 @@ class db } array_unshift($aArgs, $sQuery); } - + $oResult = call_user_func_array([&$this, 'query'], $aArgs); if(!$oResult) return null; @@ -534,7 +536,7 @@ class db if($debug == 1) echo "mySQL Error Message: ".$this->errorMessage; } } - + /* TODO: rewrite SQL */ function update($tablename, $form, $bedingung, $debug = 0) { @@ -761,14 +763,14 @@ class db break; } } - + /** * Get the database type (mariadb or mysql) * * @access public * @return string 'mariadb' or string 'mysql' */ - + public function getDatabaseType() { $tmp = $this->queryOneRecord('SELECT VERSION() as version'); if(stristr($tmp['version'],'mariadb')) { @@ -777,7 +779,7 @@ class db return 'mysql'; } } - + /** * Get the database version * @@ -785,7 +787,7 @@ class db * @param bool $major_version_only = true will return the major version only, e.g. 8 for MySQL 8 * @return string version number */ - + public function getDatabaseVersion($major_version_only = false) { $tmp = $this->queryOneRecord('SELECT VERSION() as version'); $version = explode('-', $tmp['version']); diff --git a/install/tpl/config.inc.php.master b/install/tpl/config.inc.php.master index bd5cc8f47fb0206e122361c6d60cb520e2e60bcf..aa9329fb7b2a6625fe1fbcf76dce81922c8eaf5e 100644 --- a/install/tpl/config.inc.php.master +++ b/install/tpl/config.inc.php.master @@ -56,7 +56,7 @@ $revision = str_replace(array('Revision:','$',' '), '', $svn_revision); //** Application define('ISPC_APP_TITLE', 'ISPConfig'); define('ISPC_APP_VERSION', '3.2dev'); -define('DEVSYSTEM', 0); +define('DEVSYSTEM', false); //** Database diff --git a/install/update.php b/install/update.php index 56316546ac34ae3bdf568c1c3554e35cbd2f59d3..35a68cccb6b70a4fc9d977431ca5d52f67fee3b1 100644 --- a/install/update.php +++ b/install/update.php @@ -562,7 +562,7 @@ if($conf['apache']['installed'] == true) { if ($inst->install_ispconfig_interface) { //** Customise the port ISPConfig runs on $ispconfig_port_number = get_ispconfig_port_number(); - if($autoupdate['ispconfig_port'] == 'default') $autoupdate['ispconfig_port'] = $ispconfig_port_number; + if(isset($autoupdate['ispconfig_port']) && $autoupdate['ispconfig_port'] == 'default') $autoupdate['ispconfig_port'] = $ispconfig_port_number; if($conf['webserver']['server_type'] == 'nginx'){ $conf['nginx']['vhost_port'] = $inst->free_query('ISPConfig Port', $ispconfig_port_number,'ispconfig_port'); } else { @@ -607,13 +607,13 @@ if($update_crontab_answer == 'yes') { //** Restart services: if($reconfigure_services_answer == 'yes') { swriteln('Restarting services ...'); - if($conf['mysql']['installed'] == true && $conf['mysql']['init_script'] != '') system($inst->getinitcommand($conf['mysql']['init_script'], 'restart').' >/dev/null 2>&1'); + if($conf['mysql']['installed'] == true && isset($conf['mysql']['init_script']) && $conf['mysql']['init_script'] != '') system($inst->getinitcommand($conf['mysql']['init_script'], 'restart').' >/dev/null 2>&1'); if($conf['services']['mail']) { - if($conf['postfix']['installed'] == true && $conf['postfix']['init_script'] != '') system($inst->getinitcommand($conf['postfix']['init_script'], 'restart')); - if($conf['saslauthd']['installed'] == true && $conf['saslauthd']['init_script'] != '') system($inst->getinitcommand($conf['saslauthd']['init_script'], 'restart')); - if($conf['amavis']['installed'] == true && $conf['amavis']['init_script'] != '') system($inst->getinitcommand($conf['amavis']['init_script'], 'restart')); - if($conf['rspamd']['installed'] == true && $conf['rspamd']['init_script'] != '') system($inst->getinitcommand($conf['rspamd']['init_script'], 'restart')); - if($conf['clamav']['installed'] == true && $conf['clamav']['init_script'] != '' && $conf['amavis']['installed'] == true) system($inst->getinitcommand($conf['clamav']['init_script'], 'restart')); + if($conf['postfix']['installed'] == true && isset($conf['postfix']['init_script']) && $conf['postfix']['init_script'] != '') system($inst->getinitcommand($conf['postfix']['init_script'], 'restart')); + if($conf['saslauthd']['installed'] == true && isset($conf['saslauthd']['init_script']) && $conf['saslauthd']['init_script'] != '') system($inst->getinitcommand($conf['saslauthd']['init_script'], 'restart')); + if($conf['amavis']['installed'] == true && isset($conf['amavis']['init_script']) && $conf['amavis']['init_script'] != '') system($inst->getinitcommand($conf['amavis']['init_script'], 'restart')); + if($conf['rspamd']['installed'] == true && isset($conf['rspamd']['init_script']) && $conf['rspamd']['init_script'] != '') system($inst->getinitcommand($conf['rspamd']['init_script'], 'restart')); + if($conf['clamav']['installed'] == true && isset($conf['clamav']['init_script']) && $conf['clamav']['init_script'] != '' && $conf['amavis']['installed'] == true) system($inst->getinitcommand($conf['clamav']['init_script'], 'restart')); if($conf['courier']['installed'] == true){ if($conf['courier']['courier-authdaemon'] != '') system($inst->getinitcommand($conf['courier']['courier-authdaemon'], 'restart')); if($conf['courier']['courier-imap'] != '') system($inst->getinitcommand($conf['courier']['courier-imap'], 'restart')); @@ -621,8 +621,8 @@ if($reconfigure_services_answer == 'yes') { if($conf['courier']['courier-pop'] != '') system($inst->getinitcommand($conf['courier']['courier-pop'], 'restart')); if($conf['courier']['courier-pop-ssl'] != '') system($inst->getinitcommand($conf['courier']['courier-pop-ssl'], 'restart')); } - if($conf['dovecot']['installed'] == true && $conf['dovecot']['init_script'] != '') system($inst->getinitcommand($conf['dovecot']['init_script'], 'restart')); - if($conf['mailman']['installed'] == true && $conf['mailman']['init_script'] != '') system('nohup '.$inst->getinitcommand($conf['mailman']['init_script'], 'restart').' >/dev/null 2>&1 &'); + if($conf['dovecot']['installed'] == true && isset($conf['dovecot']['init_script']) && $conf['dovecot']['init_script'] != '') system($inst->getinitcommand($conf['dovecot']['init_script'], 'restart')); + if($conf['mailman']['installed'] == true && isset($conf['mailman']['init_script']) && $conf['mailman']['init_script'] != '') system('nohup '.$inst->getinitcommand($conf['mailman']['init_script'], 'restart').' >/dev/null 2>&1 &'); } if($conf['services']['web'] || $inst->install_ispconfig_interface) { if($conf['webserver']['server_type'] == 'apache') { @@ -636,27 +636,27 @@ if($reconfigure_services_answer == 'yes') { //* Reload is enough for nginx if($conf['webserver']['server_type'] == 'nginx'){ if($conf['nginx']['php_fpm_init_script'] != '') system($inst->getinitcommand($conf['nginx']['php_fpm_init_script'], 'reload')); - if($conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'reload')); + if(isset($conf['nginx']['init_script']) && $conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'reload')); } - if($conf['pureftpd']['installed'] == true && $conf['pureftpd']['init_script'] != '') system($inst->getinitcommand($conf['pureftpd']['init_script'], 'restart')); + if($conf['pureftpd']['installed'] == true && isset($conf['pureftpd']['init_script']) && $conf['pureftpd']['init_script'] != '') system($inst->getinitcommand($conf['pureftpd']['init_script'], 'restart')); } if($conf['services']['dns']) { - if($conf['mydns']['installed'] == true && $conf['mydns']['init_script'] != '') system($inst->getinitcommand($conf['mydns']['init_script'], 'restart').' &> /dev/null'); - if($conf['powerdns']['installed'] == true && $conf['powerdns']['init_script'] != '') system($inst->getinitcommand($conf['powerdns']['init_script'], 'restart').' &> /dev/null'); - if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '') system($inst->getinitcommand($conf['bind']['init_script'], 'restart').' &> /dev/null'); + if($conf['mydns']['installed'] == true && isset($conf['mydns']['init_script']) && $conf['mydns']['init_script'] != '') system($inst->getinitcommand($conf['mydns']['init_script'], 'restart').' &> /dev/null'); + if($conf['powerdns']['installed'] == true && isset($conf['powerdns']['init_script']) && $conf['powerdns']['init_script'] != '') system($inst->getinitcommand($conf['powerdns']['init_script'], 'restart').' &> /dev/null'); + if($conf['bind']['installed'] == true && isset($conf['bind']['init_script']) && $conf['bind']['init_script'] != '') system($inst->getinitcommand($conf['bind']['init_script'], 'restart').' &> /dev/null'); } if($conf['services']['xmpp']) { - if($conf['xmpp']['installed'] == true && $conf['xmpp']['init_script'] != '') system($inst->getinitcommand($conf['xmpp']['init_script'], 'restart').' &> /dev/null'); + if($conf['xmpp']['installed'] == true && isset($conf['xmpp']['init_script']) && $conf['xmpp']['init_script'] != '') system($inst->getinitcommand($conf['xmpp']['init_script'], 'restart').' &> /dev/null'); } if($conf['services']['proxy']) { - // if($conf['squid']['installed'] == true && $conf['squid']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['squid']['init_script'])) system($conf['init_scripts'].'/'.$conf['squid']['init_script'].' restart &> /dev/null'); - if($conf['nginx']['installed'] == true && $conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'restart').' &> /dev/null'); + // if($conf['squid']['installed'] == true && isset($conf['squid']['init_script']) && $conf['squid']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['squid']['init_script'])) system($conf['init_scripts'].'/'.$conf['squid']['init_script'].' restart &> /dev/null'); + if($conf['nginx']['installed'] == true && isset($conf['nginx']['init_script']) && $conf['nginx']['init_script'] != '') system($inst->getinitcommand($conf['nginx']['init_script'], 'restart').' &> /dev/null'); } if($conf['services']['firewall']) { - if($conf['ufw']['installed'] == true && $conf['ufw']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['ufw']['init_script'])) system($conf['init_scripts'].'/'.$conf['ufw']['init_script'].' restart &> /dev/null'); + if($conf['ufw']['installed'] == true && isset($conf['ufw']['init_script']) && $conf['ufw']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['ufw']['init_script'])) system($conf['init_scripts'].'/'.$conf['ufw']['init_script'].' restart &> /dev/null'); } } diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php index 6a8e563d80fade4e9ccb9482004017b8e6149c5e..0350e28051af0ed1f70a057fad759d7c0806632f 100644 --- a/interface/lib/app.inc.php +++ b/interface/lib/app.inc.php @@ -39,8 +39,8 @@ ob_start('ob_gzhandler'); if(isset($conf['timezone']) && $conf['timezone'] != '') date_default_timezone_set($conf['timezone']); //* Set error reporting level when we are not on a developer system -if(DEVSYSTEM == 0) { - @ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_DEPRECATED); +if(DEVSYSTEM !== true) { + @ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_WARNING); } /* diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index cd9c333b22040081932c4d8a70902c2809ef1e48..78eee8c9971a7353cb0517889b16f7b2cba247ac 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -82,6 +82,8 @@ class db $this->dbClientFlags = ($flags !== NULL) ? $flags : $conf['db_client_flags']; $this->_iConnId = mysqli_init(); + mysqli_report(MYSQLI_REPORT_OFF); + mysqli_real_connect($this->_iConnId, $this->dbHost, $this->dbUser, $this->dbPass, '', (int)$this->dbPort, NULL, $this->dbClientFlags); for($try=0;(!is_object($this->_iConnId) || mysqli_connect_errno()) && $try < 5;++$try) { sleep($try); @@ -524,7 +526,7 @@ class db $sString = ''; } - $cur_encoding = mb_detect_encoding($sString); + $cur_encoding = mb_detect_encoding($sString, "auto"); if($cur_encoding != "UTF-8") { if($cur_encoding != 'ASCII') { if(is_object($app) && method_exists($app, 'log')) $app->log('String ' . substr($sString, 0, 25) . '... is ' . $cur_encoding . '.', LOGLEVEL_DEBUG); diff --git a/interface/lib/classes/listform.inc.php b/interface/lib/classes/listform.inc.php index 4b92daa73c2cba5cc8b7ec01ee170a452e20a3c8..1206e3668a88bc3cc7133ac194188e1c07caa277 100644 --- a/interface/lib/classes/listform.inc.php +++ b/interface/lib/classes/listform.inc.php @@ -80,7 +80,7 @@ class listform { private function getDatasourceData($field) { - global $app; + global $app, $api; $values = array(); if($field['datasource']['type'] == 'SQL') { @@ -97,7 +97,8 @@ class listform { $querystring = str_replace("{AUTHSQL}", $app->tform->getAuthSQL('r'), $querystring); $querystring = str_replace("{AUTHSQL-A}", $app->tform->getAuthSQL('r', 'a'), $querystring); $querystring = str_replace("{AUTHSQL-B}", $app->tform->getAuthSQL('r', 'b'), $querystring); - $querystring = preg_replace_callback('@{AUTHSQL::(.+?)}@', create_function('$matches','global $app; $tmp = $app->tform->getAuthSQL("r", $matches[1]); return $tmp;'), $querystring); + //$querystring = preg_replace_callback('@{AUTHSQL::(.+?)}@', create_function('$matches','global $app; $tmp = $app->tform->getAuthSQL("r", $matches[1]); return $tmp;'), $querystring); + $querystring = preg_replace_callback('@{AUTHSQL::(.+?)}@', function($matches) {global $app; $tmp = $app->tform->getAuthSQL("r", $matches[1]); return $tmp;}, $querystring); //* Getting the records $tmp_records = $app->db->queryAllRecords($querystring); @@ -195,9 +196,9 @@ class listform { if(@is_array($this->listDef['item'])) { foreach($this->listDef['item'] as $i) { $field = $i['field']; - $table = $i['table']; + $table = (isset($i['table']))?$i['table']:''; - $searchval = $_SESSION['search'][$list_name][$search_prefix.$field]; + $searchval = (isset($_SESSION['search'][$list_name][$search_prefix.$field]))?$_SESSION['search'][$list_name][$search_prefix.$field]:''; // IDN if($searchval != ''){ if(is_array($i['filters'])) { @@ -325,7 +326,7 @@ class listform { if($this->searchChanged == 1) $_SESSION['search'][$list_name]['page'] = 0; $sql_von = $app->functions->intval($_SESSION['search'][$list_name]['page'] * $records_per_page); - $record_count = $app->db->queryOneRecord("SELECT count(*) AS anzahl FROM ??".($app->listform->listDef['additional_tables'] != ''? ','.$app->listform->listDef['additional_tables'] : '')." WHERE $sql_where", $table); + $record_count = $app->db->queryOneRecord("SELECT count(*) AS anzahl FROM ??".(isset($app->listform->listDef['additional_tables']) && $app->listform->listDef['additional_tables'] != ''? ','.$app->listform->listDef['additional_tables'] : '')." WHERE $sql_where", $table); $pages = $app->functions->intval(($record_count['anzahl'] - 1) / $records_per_page); diff --git a/interface/lib/classes/listform_actions.inc.php b/interface/lib/classes/listform_actions.inc.php index 86eebd3d6465922cca3f236e2dd5123209674b80..7ffc84c32b90f36d8c4e71df9890aefbc5140f4e 100644 --- a/interface/lib/classes/listform_actions.inc.php +++ b/interface/lib/classes/listform_actions.inc.php @@ -135,7 +135,7 @@ class listform_actions { } } - if($_SESSION['search'][$_SESSION['s']['module']['name'].$app->listform->listDef["name"].$app->listform->listDef['table']]['order_in_php']) $php_sort = true; + if(@$_SESSION['search'][$_SESSION['s']['module']['name'].$app->listform->listDef["name"].$app->listform->listDef['table']]['order_in_php']) $php_sort = true; // Getting Datasets from DB $records = $app->db->queryAllRecords($this->getQueryString($php_sort)); @@ -189,7 +189,7 @@ class listform_actions { //* substitute value for select fields if(is_array($app->listform->listDef['item']) && count($app->listform->listDef['item']) > 0) { foreach($app->listform->listDef['item'] as $field) { - if($rec['active'] == 'n') $rec['warn_inactive'] = 'y'; + if(isset($rec['active']) && $rec['active'] == 'n') $rec['warn_inactive'] = 'y'; $key = $field['field']; if(isset($field['formtype']) && $field['formtype'] == 'SELECT') { if(strtolower($rec[$key]) == 'y' or strtolower($rec[$key]) == 'n') { @@ -226,7 +226,7 @@ class listform_actions { } $sql_where = $app->listform->getSearchSQL($sql_where); - if($app->listform->listDef['join_sql']) $sql_where .= ' AND '.$app->listform->listDef['join_sql']; + if(isset($app->listform->listDef['join_sql'])) $sql_where .= ' AND '.$app->listform->listDef['join_sql']; $app->tpl->setVar($app->listform->searchValues); $order_by_sql = $this->SQLOrderBy; @@ -245,8 +245,9 @@ class listform_actions { $table_selects = array(); $table_selects[] = trim($app->listform->listDef['table']).'.*'; - $app->listform->listDef['additional_tables'] = trim($app->listform->listDef['additional_tables']); - if($app->listform->listDef['additional_tables'] != ''){ + + if(isset($app->listform->listDef['additional_tables']) && trim($app->listform->listDef['additional_tables']) != ''){ + $app->listform->listDef['additional_tables'] = trim($app->listform->listDef['additional_tables']); $additional_tables = explode(',', $app->listform->listDef['additional_tables']); foreach($additional_tables as $additional_table){ $table_selects[] = trim($additional_table).'.*'; @@ -254,7 +255,7 @@ class listform_actions { } $select = implode(', ', $table_selects); - $sql = 'SELECT '.$select.$extselect.' FROM '.$app->listform->listDef['table'].($app->listform->listDef['additional_tables'] != ''? ','.$app->listform->listDef['additional_tables'] : '')."$join WHERE $sql_where $order_by_sql"; + $sql = 'SELECT '.$select.$extselect.' FROM '.$app->listform->listDef['table'].(isset($app->listform->listDef['additional_tables']) && $app->listform->listDef['additional_tables'] != ''? ','.$app->listform->listDef['additional_tables'] : '')."$join WHERE $sql_where $order_by_sql"; if($no_limit == false) $sql .= " $limit_sql"; //echo $sql; return $sql; diff --git a/interface/lib/classes/simplepie.inc.php b/interface/lib/classes/simplepie.inc.php index a2b80ed25b71755c81e56722f453d85d95207630..64f4d946f9ae58e8a4d358ce0b246264ab7efd16 100644 --- a/interface/lib/classes/simplepie.inc.php +++ b/interface/lib/classes/simplepie.inc.php @@ -13186,8 +13186,8 @@ class SimplePie_Parse_Date */ function __construct() { - $this->day_pcre = '(' . implode(array_keys($this->day), '|') . ')'; - $this->month_pcre = '(' . implode(array_keys($this->month), '|') . ')'; + $this->day_pcre = '(' . implode('|', array_keys($this->day)) . ')'; + $this->month_pcre = '(' . implode('|', array_keys($this->month)) . ')'; static $cache; if (!isset($cache[get_class($this)])) @@ -13338,9 +13338,9 @@ class SimplePie_Parse_Date } // Convert the number of seconds to an integer, taking decimals into account - $second = @round($match[6] + $match[7] / @pow(10, strlen($match[7]))); + $second = @round((int)$match[6] + (int)$match[7] / @pow(10, strlen($match[7]))); - return gmmktime($match[4], $match[5], $second, $match[2], $match[3], $match[1]) - $timezone; + return gmmktime((int)$match[4], (int)$match[5], (int)$second, (int)$match[2], (int)$match[3], (int)$match[1]) - $timezone; } else { diff --git a/interface/lib/classes/system.inc.php b/interface/lib/classes/system.inc.php index 9cb171cae5d2f230ede4b117bc1b6900625f1d69..c33137d6c1791fc3b9a77344ffed0b0fb3a0e8fa 100644 --- a/interface/lib/classes/system.inc.php +++ b/interface/lib/classes/system.inc.php @@ -33,6 +33,7 @@ class system { var $client_service = null; private $_last_exec_out = null; private $_last_exec_retcode = null; + private $server_count = null; public function has_service($userid, $service) { global $app; diff --git a/interface/lib/classes/tform_base.inc.php b/interface/lib/classes/tform_base.inc.php index cfaf0958d5f5ed39f4d90147501fc871807bec9d..3b35a722d291a7a99246540e6c02b219c8748fb5 100644 --- a/interface/lib/classes/tform_base.inc.php +++ b/interface/lib/classes/tform_base.inc.php @@ -276,7 +276,8 @@ class tform_base { unset($tmp_recordid); $querystring = str_replace("{AUTHSQL}", $this->getAuthSQL('r'), $querystring); - $querystring = preg_replace_callback('@{AUTHSQL::(.+?)}@', create_function('$matches','global $app; $tmp = $app->tform->getAuthSQL("r", $matches[1]); return $tmp;'), $querystring); + //$querystring = preg_replace_callback('@{AUTHSQL::(.+?)}@', create_function('$matches','global $app; $tmp = $app->tform->getAuthSQL("r", $matches[1]); return $tmp;'), $querystring); + $querystring = preg_replace_callback('@{AUTHSQL::(.+?)}@', function($matches) {global $app; $tmp = $app->tform->getAuthSQL("r", $matches[1]); return $tmp;}, $querystring); // Getting the records $tmp_records = $app->db->queryAllRecords($querystring); @@ -1584,7 +1585,7 @@ class tform_base { // Set form title $form_hint = $this->lng($this->formDef["title"]); - if($this->formDef["description"] != '') $form_hint .= '