Marius Cramer
2014-10-09 f78f1e5d4e837b658b535d90c28c3a55df8e8a91
install/dist/lib/opensuse.lib.php
@@ -29,7 +29,23 @@
*/
class installer_dist extends installer_base {
   public function __construct() {
      //** check apache modules */
      $mods = getapachemodules();
      if(in_array('authz_compat', $mods, true)) {
         swriteln($inst->lng('    WARNING! You are using mod_authz_compat.'));
         swriteln($inst->lng('    Please make sure that your apache config uses the new auth syntax:'));
         swriteln($inst->lng('    <Directory />'));
         swriteln($inst->lng('    Options None'));
         swriteln($inst->lng('    AllowOverride None'));
         swriteln($inst->lng('    Require all denied'));
         swriteln($inst->lng('    </Directory>'."\n"));
         swriteln($inst->lng('    If it uses the old syntax (deny from all) ISPConfig would fail to work.'));
      }
   }
   public function configure_mailman($status = 'insert') {
      global $conf;
@@ -440,7 +456,6 @@
         'virtual_transport = lmtp:unix:private/dovecot-lmtp',
         'smtpd_sasl_type = dovecot',
         'smtpd_sasl_path = private/auth',
         'receive_override_options = no_address_mappings'
      );
      // Make a backup copy of the main.cf file
@@ -498,7 +513,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");
   }
@@ -1103,6 +1118,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
@@ -1280,93 +1298,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');
   }
}