| | |
| | | //* mysql-virtual_relayrecipientmaps.cf |
| | | $this->process_postfix_config('mysql-virtual_relayrecipientmaps.cf'); |
| | | |
| | | //* postfix-dkim |
| | | $full_file_name=$config_dir.'/tag_as_originating.re'; |
| | | if(is_file($full_file_name)) { |
| | | copy($full_file_name, $config_dir.$configfile.'~'); |
| | | } |
| | | wf($full_file_name, '/^/ FILTER amavis:[127.0.0.1]:10026'); |
| | | |
| | | $full_file_name=$config_dir.'/tag_as_foreign.re'; |
| | | if(is_file($full_file_name)) { |
| | | copy($full_file_name, $config_dir.$configfile.'~'); |
| | | } |
| | | wf($full_file_name, '/^/ FILTER amavis:[127.0.0.1]:10024'); |
| | | |
| | | //* Changing mode and group of the new created config files. |
| | | caselog('chmod o= '.$config_dir.'/mysql-virtual_*.cf* &> /dev/null', |
| | | __FILE__, __LINE__, 'chmod on mysql-virtual_*.cf*', 'chmod on mysql-virtual_*.cf* failed'); |
| | |
| | | { |
| | | global $conf; |
| | | |
| | | $virtual_transport = 'dovecot'; |
| | | |
| | | // check if virtual_transport must be changed |
| | | if ($this->is_update) { |
| | | $tmp = $this->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 |
| | |
| | | // Adding the amavisd commands to the postfix configuration |
| | | $postconf_commands = array ( |
| | | 'dovecot_destination_recipient_limit = 1', |
| | | 'virtual_transport = dovecot', |
| | | 'virtual_transport = '.$virtual_transport, |
| | | 'smtpd_sasl_type = dovecot', |
| | | 'smtpd_sasl_path = private/auth', |
| | | ); |
| | |
| | | // Append the configuration for amavisd to the master.cf file |
| | | if(is_file($conf["postfix"]["config_dir"].'/master.cf')) copy($conf["postfix"]["config_dir"].'/master.cf', $conf["postfix"]["config_dir"].'/master.cf~'); |
| | | $content = rf($conf["postfix"]["config_dir"].'/master.cf'); |
| | | // Only add the content if we had not addded it before |
| | | if(!stristr($content, "127.0.0.1:10025")) { |
| | | // Only add the content if we had not addded it before |
| | | if(!preg_match('/^amavis\s+unix\s+/m', $content)) { |
| | | unset($content); |
| | | $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/master_cf_amavis.master', "tpl/master_cf_amavis.master"); |
| | | af($conf["postfix"]["config_dir"].'/master.cf', $content); |
| | | $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/master_cf_amavis.master', 'tpl/master_cf_amavis.master'); |
| | | af($conf['postfix']['config_dir'].'/master.cf', $content); |
| | | $content = rf($conf['postfix']['config_dir'].'/master.cf'); |
| | | } |
| | | if(!preg_match('/^127.0.0.1:10025\s+/m', $content)) { |
| | | unset($content); |
| | | $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/master_cf_amavis10025.master', 'tpl/master_cf_amavis10025.master'); |
| | | af($conf['postfix']['config_dir'].'/master.cf', $content); |
| | | $content = rf($conf['postfix']['config_dir'].'/master.cf'); |
| | | } |
| | | if(!preg_match('/^127.0.0.1:10027\s+/m', $content)) { |
| | | unset($content); |
| | | $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/master_cf_amavis10027.master', 'tpl/master_cf_amavis10027.master'); |
| | | af($conf['postfix']['config_dir'].'/master.cf', $content); |
| | | } |
| | | unset($content); |
| | | |
| | |
| | | if($conf['apache']['installed'] == false) return; |
| | | //* Create the logging directory for the vhost logfiles |
| | | exec('mkdir -p /var/log/ispconfig/httpd'); |
| | | |
| | | //* enable apache logio module |
| | | exec('a2enmod logio'); |
| | | |
| | | //if(is_file('/etc/suphp.conf')) { |
| | | replaceLine('/etc/suphp.conf', 'php=php', 'x-httpd-suphp="php:/srv/www/cgi-bin/php5"', 0, 0); |
| | |
| | | caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); |
| | | $command = 'chown root:ispconfig '.$install_dir.'/security'; |
| | | caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); |
| | | $command = 'chown root:ispconfig '.$install_dir.'/security/ids.whitelist'; |
| | | caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); |
| | | $command = 'chown root:ispconfig '.$install_dir.'/security/ids.htmlfield'; |
| | | caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); |
| | | $command = 'chown root:ispconfig '.$install_dir.'/security/apache_directives.blacklist'; |
| | | caselog($command.' &> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); |
| | | |
| | | //* Make the global language file directory group writable |
| | | exec("chmod -R 770 $install_dir/interface/lib/lang"); |
| | |
| | | exec("chmod 600 $install_dir/server/lib/mysql_clientdb.conf"); |
| | | exec("chown root:root $install_dir/server/lib/mysql_clientdb.conf"); |
| | | } |
| | | |
| | | if(is_dir($install_dir.'/interface/invoices')) { |
| | | exec('chmod -R 770 '.escapeshellarg($install_dir.'/interface/invoices')); |
| | | exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices')); |
| | | } |
| | | |
| | | exec('chown -R root:root /usr/local/ispconfig/interface/ssl'); |
| | | |
| | | // TODO: FIXME: add the www-data user to the ispconfig group. This is just for testing |
| | | // and must be fixed as this will allow the apache user to read the ispconfig files. |
| | |
| | | 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'); |
| | | } |
| | | |
| | | } |