Florian Schaal
2014-10-17 22e5abc44844ffb4aa6a6eaf301d6fde633908e9
install/dist/lib/opensuse.lib.php
@@ -430,6 +430,19 @@
   {
      global $conf;
      $virtual_transport = 'dovecot';
      // check if virtual_transport must be changed
      if ($this->is_update) {
         $tmp = $inst->db->queryOneRecord("SELECT * FROM ".$conf["mysql"]["database"].".server WHERE server_id = ".$conf['server_id']);
         $ini_array = ini_to_array(stripslashes($tmp['config']));
         // ini_array needs not to be checked, because already done in update.php -> updateDbAndIni()
         if(isset($ini_array['mail']['mailbox_virtual_uidgid_maps']) && $ini_array['mail']['mailbox_virtual_uidgid_maps'] == 'y') {
            $virtual_transport = 'lmtp:unix:private/dovecot-lmtp';
         }
      }
      $config_dir = $conf['dovecot']['config_dir'];
      //* Configure master.cf and add a line for deliver
@@ -453,10 +466,9 @@
      // Adding the amavisd commands to the postfix configuration
      $postconf_commands = array (
         'dovecot_destination_recipient_limit = 1',
         'virtual_transport = lmtp:unix:private/dovecot-lmtp',
         'virtual_transport = '.$virtual_transport,
         'smtpd_sasl_type = dovecot',
         'smtpd_sasl_path = private/auth',
         'receive_override_options = no_address_mappings'
      );
      // Make a backup copy of the main.cf file
@@ -514,7 +526,7 @@
      exec("chown root:root $config_dir/$configfile");
      
      // Dovecot shall ignore mounts in website directory
      exec("doveadm mount add '/srv/www/*' ignore");
      if(is_installed('doveadm')) exec("doveadm mount add '/srv/www/*' ignore > /dev/null 2> /dev/null");
   }
@@ -1119,6 +1131,9 @@
            $command = 'usermod -a -G ispapps '.$conf['nginx']['user'];
            caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
         }
         // add nobody user to www group, as the default php-fpm pool from opensuse runs as nobody
         $command = 'usermod -a -G www nobody';
         caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
      }
      //* Make the shell scripts executable
@@ -1296,93 +1311,11 @@
      //* Remove Domain module as its functions are available in the client module now
      if(@is_dir('/usr/local/ispconfig/interface/web/domain')) exec('rm -rf /usr/local/ispconfig/interface/web/domain');
      // Add symlink for patch tool
      if(!is_link('/usr/local/bin/ispconfig_patch')) exec('ln -s /usr/local/ispconfig/server/scripts/ispconfig_patch /usr/local/bin/ispconfig_patch');
   }
   public function configure_dbserver()
   {
      global $conf;
      //* If this server shall act as database server for client DB's, we configure this here
      $install_dir = $conf['ispconfig_install_dir'];
      // Create a file with the database login details which
      // are used to create the client databases.
      if(!is_dir("$install_dir/server/lib")) {
         $command = "mkdir $install_dir/server/lib";
         caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
      }
      $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/mysql_clientdb.conf.master', "tpl/mysql_clientdb.conf.master");
      $content = str_replace('{hostname}', $conf['mysql']['host'], $content);
      $content = str_replace('{username}', $conf['mysql']['admin_user'], $content);
      $content = str_replace('{password}', $conf['mysql']['admin_password'], $content);
      wf("$install_dir/server/lib/mysql_clientdb.conf", $content);
      exec('chmod 600 '."$install_dir/server/lib/mysql_clientdb.conf");
      exec('chown root:root '."$install_dir/server/lib/mysql_clientdb.conf");
   }
   public function install_crontab()
   {
      global $conf;
      //* Root Crontab
      exec('crontab -u root -l > crontab.txt');
      $existing_root_cron_jobs = file('crontab.txt');
      // remove existing ispconfig cronjobs, in case the syntax has changed
      foreach($existing_root_cron_jobs as $key => $val) {
         if(stristr($val, '/usr/local/ispconfig')) unset($existing_root_cron_jobs[$key]);
      }
      $root_cron_jobs = array(
         '* * * * * /usr/local/ispconfig/server/server.sh &> /dev/null',
         '30 00 * * * /usr/local/ispconfig/server/cron_daily.sh &> /dev/null'
      );
      if ($conf['nginx']['installed'] == true) {
         $root_cron_jobs[] = "0 0 * * * /usr/local/ispconfig/server/scripts/create_daily_nginx_access_logs.sh &> /dev/null";
      }
      foreach($root_cron_jobs as $cron_job) {
         if(!in_array($cron_job."\n", $existing_root_cron_jobs)) {
            $existing_root_cron_jobs[] = $cron_job."\n";
         }
      }
      file_put_contents('crontab.txt', $existing_root_cron_jobs);
      exec('crontab -u root crontab.txt &> /dev/null');
      unlink('crontab.txt');
      //* Getmail crontab
      if(is_user('getmail')) {
         $cf = $conf['getmail'];
         exec('crontab -u getmail -l > crontab.txt');
         $existing_cron_jobs = file('crontab.txt');
         $cron_jobs = array(
            '*/5 * * * * /usr/local/bin/run-getmail.sh > /dev/null 2>> /dev/null'
         );
         // remove existing ispconfig cronjobs, in case the syntax has changed
         foreach($existing_cron_jobs as $key => $val) {
            if(stristr($val, 'getmail')) unset($existing_cron_jobs[$key]);
         }
         foreach($cron_jobs as $cron_job) {
            if(!in_array($cron_job."\n", $existing_cron_jobs)) {
               $existing_cron_jobs[] = $cron_job."\n";
            }
         }
         file_put_contents('crontab.txt', $existing_cron_jobs);
         exec('crontab -u getmail crontab.txt &> /dev/null');
         unlink('crontab.txt');
      }
      exec('touch /var/log/ispconfig/cron.log');
      exec('chmod 660 /var/log/ispconfig/cron.log');
   }
}