Marius Burkard
2016-07-10 e1ceb050e19c7574bca146a8da7047ee4ff456b5
install/update.php
@@ -120,6 +120,10 @@
      include_once $cmd_opt['autoinstall'];
   } elseif($path_parts['extension'] == 'ini') {
      $tmp = ini_to_array(file_get_contents('autoinstall.ini'));
      if(!is_array($tmp['install'])) $tmp['install'] = array();
      if(!is_array($tmp['ssl_cert'])) $tmp['ssl_cert'] = array();
      if(!is_array($tmp['expert'])) $tmp['expert'] = array();
      if(!is_array($tmp['update'])) $tmp['update'] = array();
      $autoinstall = $tmp['install'] + $tmp['ssl_cert'] + $tmp['expert'] + $tmp['update'];
      unset($tmp);
   }
@@ -133,7 +137,7 @@
//** Include the distribution-specific installer class library and configuration
if(is_file('dist/lib/'.$dist['baseid'].'.lib.php')) include_once 'dist/lib/'.$dist['baseid'].'.lib.php';
include_once 'dist/lib/'.$dist['id'].'.lib.php';
include_once 'dist/conf/'.$dist['id'].'.conf.php';
include_once 'dist/conf/'.$dist['confid'].'.conf.php';
//** Get hostname
exec('hostname -f', $tmp_out);
@@ -170,10 +174,8 @@
$conf['ispconfig_log_priority'] = $conf_old["log_priority"];
$inst = new installer();
if (!$inst->get_php_version()) die('ISPConfig requieres PHP '.$inst->min_php."\n");
$inst->is_update = true;
//** Detect the installed applications
$inst->find_installed_apps();
echo "This application will update ISPConfig 3 on your server.\n\n";
@@ -224,10 +226,10 @@
//** Test mysql root connection
$finished = false;
do {
   if(@mysql_connect($conf["mysql"]["host"], $conf["mysql"]["admin_user"], $conf["mysql"]["admin_password"])) {
   if(@mysqli_connect($conf["mysql"]["host"], $conf["mysql"]["admin_user"], $conf["mysql"]["admin_password"])) {
      $finished = true;
   } else {
      swriteln($inst->lng('Unable to connect to mysql server').' '.mysql_error());
      swriteln($inst->lng('Unable to connect to mysql server').' '.mysqli_connect_error());
      $conf["mysql"]["admin_password"] = $inst->free_query('MySQL root password', $conf['mysql']['admin_password'],'mysql_root_password');
   }
} while ($finished == false);
@@ -253,7 +255,7 @@
      $tmp_mysql_server_database = $inst->free_query('MySQL master server database name', $conf['mysql']['master_database'],'mysql_master_database');
      //* Initialize the MySQL server connection
      if(@mysql_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password, (int)$tmp_mysql_server_port)) {
      if(@mysqli_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password, $tmp_mysql_server_database, (int)$tmp_mysql_server_port)) {
         $conf['mysql']['master_host'] = $tmp_mysql_server_host;
         $conf['mysql']['master_port'] = $tmp_mysql_server_port;
         $conf['mysql']['master_admin_user'] = $tmp_mysql_server_admin_user;
@@ -261,7 +263,7 @@
         $conf['mysql']['master_database'] = $tmp_mysql_server_database;
         $finished = true;
      } else {
         swriteln($inst->lng('Unable to connect to mysql server').' '.mysql_error());
         swriteln($inst->lng('Unable to connect to mysql server').' '.mysqli_connect_error());
      }
   } while ($finished == false);
   unset($finished);
@@ -299,66 +301,76 @@
}
//}
//** Shall the services be reconfigured during update
$reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes', 'no'), 'yes','reconfigure_services');
//** Detect the installed applications
$inst->find_installed_apps();
if($reconfigure_services_answer == 'yes') {
$conf['services']['mail'] = $conf['postfix']['installed'];
if ($conf['powerdns']['installed'] || $conf['bind']['installed'] || $conf['mydns']['installed']) $conf['services']['dns'] = true;
if ($conf['apache']['installed'] || $conf['nginx']['installed']) $conf['services']['web'] = true;
$conf['services']['xmpp'] =  $conf['xmpp']['installed'];;
if ($conf['ufw']['installed'] || $conf['firewall']['installed']) $conf['services']['firewall'] = true;
$conf['services']['vserver'] = $conf['services']['vserver'];
$conf['services']['db'] = true;
//** Shall the services be reconfigured during update
$reconfigure_services_answer = $inst->simple_query('Reconfigure Services?', array('yes', 'no', 'selected'), 'yes','reconfigure_services');
if($reconfigure_services_answer == 'yes' || $reconfigure_services_answer == 'selected') {
   if($conf['services']['mail']) {
      //** Configure postfix
      swriteln('Configuring Postfix');
      $inst->configure_postfix('dont-create-certs');
      if($inst->reconfigure_app('Postfix and IMAP/POP3', $reconfigure_services_answer)) {
         swriteln('Configuring Postfix');
         $inst->configure_postfix('dont-create-certs');
         if($conf['dovecot']['installed'] == true) {
            //* Configure dovecot
            swriteln('Configuring Dovecot');
            $inst->configure_dovecot();
         } elseif ($conf['courier']['installed'] == true) {
            //** Configure saslauthd
            swriteln('Configuring SASL');
            $inst->configure_saslauthd();
            //** Configure PAM
            swriteln('Configuring PAM');
            $inst->configure_pam();
            //* Configure courier
            swriteln('Configuring Courier');
            $inst->configure_courier();
         }
      }
      //** Configure mailman
      if($conf['mailman']['installed'] == true) {
      if($conf['mailman']['installed'] == true && $inst->reconfigure_app('Mailman', $reconfigure_services_answer)) {
         swriteln('Configuring Mailman');
         $inst->configure_mailman('update');
      }
      //* Configure Jailkit
      swriteln('Configuring Jailkit');
      $inst->configure_jailkit();
      if($conf['dovecot']['installed'] == true) {
         //* Configure dovecot
         swriteln('Configuring Dovecot');
         $inst->configure_dovecot();
      } else {
         //** Configure saslauthd
         swriteln('Configuring SASL');
         $inst->configure_saslauthd();
         //** Configure PAM
         swriteln('Configuring PAM');
         $inst->configure_pam();
         //* Configure courier
         swriteln('Configuring Courier');
         $inst->configure_courier();
      //** Configure Spamasassin
      if($inst->reconfigure_app('Spamassassin', $reconfigure_services_answer)) {
         swriteln('Configuring Spamassassin');
         $inst->configure_spamassassin();
      }
      //** Configure Spamasassin
      swriteln('Configuring Spamassassin');
      $inst->configure_spamassassin();
      //** Configure Amavis
      if($conf['amavis']['installed'] == true) {
      if($conf['amavis']['installed'] == true && $inst->reconfigure_app('Amavisd', $reconfigure_services_answer)) {
         swriteln('Configuring Amavisd');
         $inst->configure_amavis();
      }
      //** Configure Getmail
      swriteln('Configuring Getmail');
      $inst->configure_getmail();
      if ($inst->reconfigure_app('Getmail', $reconfigure_services_answer)) {
         swriteln('Configuring Getmail');
         $inst->configure_getmail();
      }
   }
   if($conf['services']['web'] && $conf['pureftpd']['installed'] == true) {
      //** Configure Pureftpd
      swriteln('Configuring Pureftpd');
      $inst->configure_pureftpd();
   }
   if($conf['services']['dns']) {
   if($conf['services']['dns'] && $inst->reconfigure_app('DNS', $reconfigure_services_answer)) {
      //* Configure DNS
      if($conf['powerdns']['installed'] == true) {
         swriteln('Configuring PowerDNS');
@@ -366,6 +378,9 @@
      } elseif($conf['bind']['installed'] == true) {
         swriteln('Configuring BIND');
         $inst->configure_bind();
         if(!is_installed('haveged')) {
            swriteln("[INFO] haveged not detected - DNSSEC can fail");
         }
      } else {
         swriteln('Configuring MyDNS');
         $inst->configure_mydns();
@@ -373,37 +388,47 @@
   }
   if($conf['services']['web']) {
      if($conf['webserver']['server_type'] == 'apache'){
         //** Configure Apache
         swriteln('Configuring Apache');
         $inst->configure_apache();
         //** Configure vlogger
         swriteln('Configuring vlogger');
         $inst->configure_vlogger();
      } else {
         //** Configure nginx
         swriteln('Configuring nginx');
         $inst->configure_nginx();
      if($conf['pureftpd']['installed'] == true && $inst->reconfigure_app('Pureftpd', $reconfigure_services_answer)) {
         //** Configure Pureftpd
         swriteln('Configuring Pureftpd');
         $inst->configure_pureftpd();
      }
      //** Configure apps vhost
      swriteln('Configuring Apps vhost');
      $inst->configure_apps_vhost();
   }
      if($inst->reconfigure_app('Web-Server', $reconfigure_services_answer)) {
         if($conf['webserver']['server_type'] == 'apache'){
            //** Configure Apache
            swriteln('Configuring Apache');
            $inst->configure_apache();
    if($conf['services']['xmpp']) {
            //** Configure vlogger
            swriteln('Configuring vlogger');
            $inst->configure_vlogger();
         } else {
            //** Configure nginx
            swriteln('Configuring nginx');
            $inst->configure_nginx();
         }
         //** Configure apps vhost
         swriteln('Configuring Apps vhost');
         $inst->configure_apps_vhost();
         }
         //* Configure Jailkit
         if($inst->reconfigure_app('Jailkit', $reconfigure_services_answer)) {
            swriteln('Configuring Jailkit');
            $inst->configure_jailkit();
         }
      }
    if($conf['services']['xmpp'] && $inst->reconfigure_app('XMPP', $reconfigure_services_answer)) {
        //** Configure Metronome XMPP
        $inst->configure_xmpp('dont-create-certs');
    }
   //* Configure DBServer
   swriteln('Configuring Database');
   $inst->configure_dbserver();
   if($conf['services']['firewall']) {
   if($conf['services']['firewall'] && $inst->reconfigure_app('Firewall', $reconfigure_services_answer)) {
      if($conf['ufw']['installed'] == true) {
         //* Configure Ubuntu Firewall
         $conf['services']['firewall'] = true;
@@ -415,6 +440,10 @@
         $inst->configure_bastille_firewall();
      }
   }
   //* Configure DBServer
   swriteln('Configuring Database');
   $inst->configure_dbserver();
   /*
   if($conf['squid']['installed'] == true) {
@@ -520,7 +549,7 @@
//* Create md5 filelist
$md5_filename = '/usr/local/ispconfig/security/data/file_checksums_'.date('Y-m-d_h-i').'.md5';
exec('find /usr/local/ispconfig -type f -print0 | xargs -0 md5sum > '.$md5_filename);
exec('find /usr/local/ispconfig -type f -print0 | xargs -0 md5sum > '.$md5_filename . ' 2>/dev/null');
chmod($md5_filename,0700);
echo "Update finished.\n";