vogelor
2010-05-01 99ca2fc66c92acc75ec2a8dc5989640735e17805
install/lib/installer_base.lib.php
@@ -1,7 +1,7 @@
<?php
/*
Copyright (c) 2007, Till Brehm, projektfarm Gmbh
Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
@@ -154,7 +154,7 @@
            caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' '".$conf['mysql']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/ispconfig3.sql' &> /dev/null", 
                        __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in ispconfig3.sql');
         } else {
            caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -p'".$conf['mysql']['admin_password']."' '".$conf['mysql']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/ispconfig3.sql' &> /dev/null",
            caselog("mysql --default-character-set=".$conf['mysql']['charset']." -h '".$conf['mysql']['host']."' -u '".$conf['mysql']['admin_user']."' -p'".$conf['mysql']['admin_password']."' '".$conf['mysql']['database']."' < '".ISPC_INSTALL_ROOT."/install/sql/ispconfig3.sql' &> /dev/null",
                        __FILE__, __LINE__, 'read in ispconfig3.sql', 'could not read in ispconfig3.sql');
         }
         $db_tables = $this->db->getTables();
@@ -218,6 +218,11 @@
      $tpl_ini_array['web']['group'] = $conf['apache']['group'];
      $tpl_ini_array['mail']['pop3_imap_daemon'] = ($conf['dovecot']['installed'] == true)?'dovecot':'courier';
      $tpl_ini_array['mail']['mail_filter_syntax'] = ($conf['dovecot']['installed'] == true)?'sieve':'maildrop';
      $tpl_ini_array['dns']['bind_user'] = $conf['bind']['bind_user'];
      $tpl_ini_array['dns']['bind_group'] = $conf['bind']['bind_group'];
      $tpl_ini_array['dns']['bind_zonefiles_dir'] = $conf['bind']['bind_zonefiles_dir'];
      $tpl_ini_array['dns']['named_conf_path'] = $conf['bind']['named_conf_path'];
      $tpl_ini_array['dns']['named_conf_local_path'] = $conf['bind']['named_conf_local_path'];
        
      $server_ini_content = array_to_ini($tpl_ini_array);
      $server_ini_content = mysql_real_escape_string($server_ini_content);
@@ -328,7 +333,14 @@
            if(!$this->dbmaster->query($query)) {
                $this->error('Unable to create database user in master database: '.$conf['mysql']['master_ispconfig_user'].' Error: '.$this->dbmaster->errorMessage);
            }
            $query = "GRANT SELECT, UPDATE (`action_status`, `response`) ON ".$conf['mysql']['master_database'].".`sys_remoteaction` "
                    ."TO '".$conf['mysql']['master_ispconfig_user']."'@'".$src_host."' "
                    ."IDENTIFIED BY '".$conf['mysql']['master_ispconfig_password']."';";
            if(!$this->dbmaster->query($query)) {
                $this->error('Unable to create database user in master database: '.$conf['mysql']['master_ispconfig_user'].' Error: '.$this->dbmaster->errorMessage);
            }
            $query = "GRANT SELECT, INSERT , DELETE ON ".$conf['mysql']['master_database'].".`monitor_data` "
                    ."TO '".$conf['mysql']['master_ispconfig_user']."'@'".$src_host."' "
                    ."IDENTIFIED BY '".$conf['mysql']['master_ispconfig_password']."';";
@@ -724,7 +736,7 @@
      
      // amavisd user config file
      $configfile = 'amavisd_user_config';
      if(is_file($conf["amavis"]["config_dir"].'/conf.d/50-user')) copy($conf["amavis"]["config_dir"].'/conf.d/50-user',$conf["courier"]["config_dir"].'/50-user~');
      if(is_file($conf["amavis"]["config_dir"].'/conf.d/50-user')) copy($conf["amavis"]["config_dir"].'/conf.d/50-user',$conf["amavis"]["config_dir"].'/50-user~');
      if(is_file($conf["amavis"]["config_dir"].'/conf.d/50-user~')) exec('chmod 400 '.$conf["amavis"]["config_dir"].'/conf.d/50-user~');
      $content = rf("tpl/".$configfile.".master");
      $content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
@@ -829,6 +841,18 @@
      //exec('mkdir -p '.$config_dir.'/conf/ChrootEveryone');
      exec('echo "yes" > '.$config_dir.'/conf/ChrootEveryone');
      exec('echo "yes" > '.$config_dir.'/conf/BrokenClientsCompatibility');
      if(is_file('/etc/default/pure-ftpd-common')) {
         replaceLine('/etc/default/pure-ftpd-common','STANDALONE_OR_INETD=inetd','STANDALONE_OR_INETD=standalone',1,0);
         replaceLine('/etc/default/pure-ftpd-common','VIRTUALCHROOT=false','VIRTUALCHROOT=true',1,0);
      }
      if(is_file('/etc/inetd.conf')) {
         replaceLine('/etc/inetd.conf','/usr/sbin/pure-ftpd-wrapper','#ftp     stream  tcp     nowait  root    /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper',0,0);
         if(is_file('/etc/init.d/openbsd-inetd')) exec('/etc/init.d/openbsd-inetd restart');
      }
      if(!is_file('/etc/pure-ftpd/conf/DontResolve')) exec("echo 'yes' > /etc/pure-ftpd/conf/DontResolve");
   }
   
   public function configure_mydns()
@@ -1059,9 +1083,9 @@
      
      //* Create the ispconfig apps vhost user and group
      
      $apps_vhost_user = $conf['web']['apps_vhost_user'];
      $apps_vhost_group = $conf['web']['apps_vhost_group'];
      $install_dir = $conf['web']['website_basedir'].'/apps';
      $apps_vhost_user = escapeshellcmd($conf['web']['apps_vhost_user']);
      $apps_vhost_group = escapeshellcmd($conf['web']['apps_vhost_group']);
      $install_dir = escapeshellcmd($conf['web']['website_basedir'].'/apps');
      
      $command = 'groupadd '.$apps_vhost_user;
      if(!is_group($apps_vhost_group)) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
@@ -1073,7 +1097,8 @@
      $command = 'adduser '.$conf['apache']['user'].' '.$apps_vhost_group;
      caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
      
      exec('mkdir -p '.escapeshellcmd($conf['web']['website_basedir'].'/apps'));
      exec('mkdir -p '.$install_dir);
      exec("chown $apps_vhost_user:$apps_vhost_group $install_dir");
      
      //* Copy the apps vhost file
        $vhost_conf_dir = $conf['apache']['vhost_conf_dir'];
@@ -1192,7 +1217,10 @@
      $content = str_replace('{language}', $conf['language'], $content);
      
      wf("$install_dir/server/lib/$configfile", $content);
      //* Create the config file for remote-actions
      $content = "<?php\n$maxid_remote_actions = 1\n?>";
      wf("$install_dir/server/lib/remote_actions.inc.php", $content);
      
      //* Enable the server modules and plugins.
      // TODO: Implement a selector which modules and plugins shall be enabled.
@@ -1294,6 +1322,10 @@
      //* make sure that the server config file (not the interface one) is only readable by the root user
      exec("chmod 600 $install_dir/server/lib/$configfile");
      exec("chown root:root $install_dir/server/lib/$configfile");
      exec("chmod 600 $install_dir/server/lib/remote_actions.inc.php");
      exec("chown root:root $install_dir/server/lib/remote_actions.inc.php");
      if(@is_file("$install_dir/server/lib/mysql_clientdb.conf")) {
         exec("chmod 600 $install_dir/server/lib/mysql_clientdb.conf");
         exec("chown root:root $install_dir/server/lib/mysql_clientdb.conf");
@@ -1368,10 +1400,30 @@
      if(!is_file('/var/log/ispconfig/ispconfig.log')) exec('touch /var/log/ispconfig/ispconfig.log');
      
      exec('mv /usr/local/ispconfig/server/scripts/run-getmail.sh /usr/local/bin/run-getmail.sh');
      exec('chown getmail /usr/local/bin/run-getmail.sh');
      if(is_user('getmail')) exec('chown getmail /usr/local/bin/run-getmail.sh');
      exec('chmod 744 /usr/local/bin/run-getmail.sh');
      //* Add Log-Rotation
      if (is_dir('/etc/logrotate.d')){
         unlink('/etc/logrotate.d/logispc3');
         $fh = fopen('/etc/logrotate.d/logispc3', 'w');
         fwrite($fh,
               "/var/log/ispconfig/ispconfig.log { \n" .
               "   weekly \n" .
               "   missingok \n" .
               "   rotate 4 \n" .
               "   compress \n" .
               "   delaycompress \n" .
               "} \n" .
               "/var/log/ispconfig/cron.log { \n" .
               "   weekly \n" .
               "   missingok \n" .
               "   rotate 4 \n" .
               "   compress \n" .
               "   delaycompress \n" .
               "}");
         fclose($fh);
      }
   }
   
   public function configure_dbserver()