From c1fcaed2ee8f05a5030fe4e8e211ca4eae7a9489 Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Tue, 11 Jun 2013 11:44:57 -0400
Subject: [PATCH] - Fixed FS#2921 - RBL list field in server config can not be empty.
---
install/dist/lib/opensuse.lib.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 150 insertions(+), 11 deletions(-)
diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php
index 88f508a..197aa15 100644
--- a/install/dist/lib/opensuse.lib.php
+++ b/install/dist/lib/opensuse.lib.php
@@ -29,6 +29,83 @@
*/
class installer_dist extends installer_base {
+
+ public function configure_mailman($status = 'insert') {
+ global $conf;
+
+ $config_dir = $conf['mailman']['config_dir'].'/';
+ $full_file_name = $config_dir.'mm_cfg.py';
+ //* Backup exiting file
+ if(is_file($full_file_name)) {
+ copy($full_file_name, $config_dir.'mm_cfg.py~');
+ }
+
+ // load files
+ $content = rf('tpl/mm_cfg.py.master');
+ $old_file = rf($full_file_name);
+
+ $old_options = array();
+ $lines = explode("\n", $old_file);
+ foreach ($lines as $line)
+ {
+ if (trim($line) != '' && substr($line, 0, 1) != '#')
+ {
+ @list($key, $value) = @explode("=", $line);
+ if (!empty($value))
+ {
+ $key = rtrim($key);
+ $old_options[$key] = trim($value);
+ }
+ }
+ }
+
+ if(!is_file('/var/lib/mailman/data/transport-mailman')) touch('/var/lib/mailman/data/transport-mailman');
+ exec('/usr/sbin/postmap /var/lib/mailman/data/transport-mailman');
+
+ $virtual_domains = '';
+ if($status == 'update')
+ {
+ // create virtual_domains list
+ $domainAll = $this->db->queryAllRecords("SELECT domain FROM mail_mailinglist GROUP BY domain");
+
+ if(is_array($domainAll)) {
+ foreach($domainAll as $domain)
+ {
+ if ($domainAll[0]['domain'] == $domain['domain'])
+ $virtual_domains .= "'".$domain['domain']."'";
+ else
+ $virtual_domains .= ", '".$domain['domain']."'";
+ }
+ }
+ }
+ else
+ $virtual_domains = "' '";
+
+ $content = str_replace('{hostname}', $conf['hostname'], $content);
+ if(!isset($old_options['DEFAULT_SERVER_LANGUAGE'])) $old_options['DEFAULT_SERVER_LANGUAGE'] = '';
+ $content = str_replace('{default_language}', $old_options['DEFAULT_SERVER_LANGUAGE'], $content);
+ $content = str_replace('{virtual_domains}', $virtual_domains, $content);
+
+ wf($full_file_name, $content);
+
+ //* Write virtual_to_transport.sh script
+ $config_dir = $conf['mailman']['config_dir'].'/';
+ $full_file_name = $config_dir.'virtual_to_transport.sh';
+
+ //* Backup exiting virtual_to_transport.sh script
+ if(is_file($full_file_name)) {
+ copy($full_file_name, $config_dir.'virtual_to_transport.sh~');
+ }
+
+ if(is_dir('/etc/mailman')) {
+ copy('tpl/mailman-virtual_to_transport.sh',$full_file_name);
+ chgrp($full_file_name,'mailman');
+ chmod($full_file_name,0750);
+ }
+
+ //* Create aliasaes
+ exec('/usr/lib/mailman/bin/genaliases 2>/dev/null');
+ }
function configure_postfix($options = '')
{
@@ -114,7 +191,7 @@
'smtpd_tls_security_level = may',
'smtpd_tls_cert_file = '.$config_dir.'/smtpd.cert',
'smtpd_tls_key_file = '.$config_dir.'/smtpd.key',
- 'transport_maps = proxy:mysql:'.$config_dir.'/mysql-virtual_transports.cf',
+ 'transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:'.$config_dir.'/mysql-virtual_transports.cf',
'relay_domains = mysql:'.$config_dir.'/mysql-virtual_relaydomains.cf',
'relay_recipient_maps = mysql:'.$config_dir.'/mysql-virtual_relayrecipientmaps.cf',
'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps',
@@ -145,6 +222,14 @@
touch($config_dir.'/nested_header_checks');
touch($config_dir.'/body_checks');
+ //* Create the mailman files
+ if(!is_dir('/var/lib/mailman/data')) exec('mkdir -p /var/lib/mailman/data');
+ if(!is_file('/var/lib/mailman/data/aliases')) touch('/var/lib/mailman/data/aliases');
+ exec('postalias /var/lib/mailman/data/aliases');
+ if(!is_file('/var/lib/mailman/data/virtual-mailman')) touch('/var/lib/mailman/data/virtual-mailman');
+ exec('postmap /var/lib/mailman/data/virtual-mailman');
+ if(!is_file('/var/lib/mailman/data/transport-mailman')) touch('/var/lib/mailman/data/transport-mailman');
+ exec('/usr/sbin/postmap /var/lib/mailman/data/transport-mailman');
//* Make a backup copy of the main.cf file
copy($config_dir.'/main.cf', $config_dir.'/main.cf~');
@@ -330,7 +415,7 @@
$content = rf($conf["postfix"]["config_dir"].'/master.cf');
// Only add the content if we had not addded it before
if(!stristr($content,"dovecot/deliver")) {
- $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}';
+ $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DROhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}';
af($conf["postfix"]["config_dir"].'/master.cf',$deliver_content);
}
unset($content);
@@ -542,6 +627,10 @@
replaceLine('/etc/suphp.conf','umask=0077','umask=0022',0);
//}
+ if(!file_exists('/srv/www/cgi-bin/php5') && file_exists('/srv/www/cgi-bin/php')) {
+ symlink('/srv/www/cgi-bin/php','/srv/www/cgi-bin/php5');
+ }
+
// Sites enabled and available dirs
exec('mkdir -p '.$conf['apache']['vhost_conf_enabled_dir']);
exec('mkdir -p '.$conf['apache']['vhost_conf_dir']);
@@ -602,6 +691,24 @@
//* add a sshusers group
$command = 'groupadd sshusers';
if(!is_group('sshusers')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+
+ // create PHP-FPM pool dir
+ exec('mkdir -p '.$conf['nginx']['php_fpm_pool_dir']);
+
+ $content = rf('/etc/php5/fpm/php-fpm.conf');
+ if(stripos($content, 'include=/etc/php5/fpm/pool.d/*.conf') === false){
+ af('/etc/php5/fpm/php-fpm.conf',"\ninclude=/etc/php5/fpm/pool.d/*.conf");
+ }
+ unset($content);
+ if(!@is_file($conf['nginx']['php_fpm_ini_path'])){
+ if(@is_file('/etc/php5/cli/php.ini')){
+ exec('cp -f /etc/php5/cli/php.ini '.$conf['nginx']['php_fpm_ini_path']);
+ } elseif(@is_file('/etc/php5/fastcgi/php.ini')){
+ exec('cp -f /etc/php5/fastcgi/php.ini '.$conf['nginx']['php_fpm_ini_path']);
+ } elseif(@is_file('/etc/php5/apache2/php.ini')){
+ exec('cp -f /etc/php5/apache2/php.ini '.$conf['nginx']['php_fpm_ini_path']);
+ }
+ }
}
@@ -778,6 +885,7 @@
$content = str_replace('{ispconfig_log_priority}', $conf['ispconfig_log_priority'], $content);
$content = str_replace('{language}', $conf['language'], $content);
$content = str_replace('{timezone}', $conf['timezone'], $content);
+ $content = str_replace('{theme}', $conf['theme'], $content);
wf("$install_dir/interface/lib/$configfile", $content);
@@ -801,6 +909,7 @@
$content = str_replace('{ispconfig_log_priority}', $conf['ispconfig_log_priority'], $content);
$content = str_replace('{language}', $conf['language'], $content);
$content = str_replace('{timezone}', $conf['timezone'], $content);
+ $content = str_replace('{theme}', $conf['theme'], $content);
wf("$install_dir/server/lib/$configfile", $content);
@@ -903,9 +1012,20 @@
}
}
+ //* Make the APS directories group writable
+ exec("chmod -R 770 $install_dir/interface/web/sites/aps_meta_packages");
+ exec("chmod -R 770 $install_dir/server/aps_packages");
+
//* 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");
+ chmod($install_dir.'/server/lib/config.inc.php', 0600);
+ chown($install_dir.'/server/lib/config.inc.php', 'root');
+ chgrp($install_dir.'/server/lib/config.inc.php', 'root');
+
+ //* Make sure thet the interface config file is readable by user ispconfig only
+ chmod($install_dir.'/interface/lib/config.inc.php', 0600);
+ chown($install_dir.'/interface/lib/config.inc.php', 'ispconfig');
+ chgrp($install_dir.'/interface/lib/config.inc.php', 'ispconfig');
+
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");
@@ -960,19 +1080,27 @@
} else {
$content = str_replace('{ssl_comment}', '#', $content);
}
+ if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key') && is_file($install_dir.'/interface/ssl/ispserver.bundle')) {
+ $content = str_replace('{ssl_bundle_comment}', '', $content);
+ } else {
+ $content = str_replace('{ssl_bundle_comment}', '#', $content);
+ }
$content = str_replace('/var/www/', '/srv/www/', $content);
wf("$vhost_conf_dir/ispconfig.vhost", $content);
- if(!is_file('/srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter')) {
+ //if(!is_file('/srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter')) {
+ $content = rf('tpl/apache_ispconfig_fcgi_starter.master');
+ $content = str_replace('{fastcgi_bin}', $conf['fastcgi']['fastcgi_bin'], $content);
+ $content = str_replace('{fastcgi_phpini_path}', $conf['fastcgi']['fastcgi_phpini_path'], $content);
exec('mkdir -p /srv/www/php-fcgi-scripts/ispconfig');
- exec('cp tpl/apache_ispconfig_fcgi_starter.master /srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter');
+ wf('/srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', $content);
exec('chmod +x /srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter');
exec('ln -s /usr/local/ispconfig/interface/web /srv/www/ispconfig');
exec('chown -R ispconfig:ispconfig /srv/www/php-fcgi-scripts/ispconfig');
- }
+ //}
//copy('tpl/apache_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost");
//* and create the symlink
@@ -998,11 +1126,11 @@
$content = str_replace('{vhost_port}', $conf['nginx']['vhost_port'], $content);
if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) {
- $content = str_replace('{ssl_on}', ' ssl', $content);
+ $content = str_replace('{ssl_on}', ' on', $content);
$content = str_replace('{ssl_comment}', '', $content);
$content = str_replace('{fastcgi_ssl}', 'on', $content);
} else {
- $content = str_replace('{ssl_on}', '', $content);
+ $content = str_replace('{ssl_on}', ' off', $content);
$content = str_replace('{ssl_comment}', '#', $content);
$content = str_replace('{fastcgi_ssl}', 'off', $content);
}
@@ -1088,6 +1216,16 @@
exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices'));
}
+ //* Create the ispconfig auth log file and set uid/gid
+ if(!is_file($conf['ispconfig_log_dir'].'/auth.log')) {
+ touch($conf['ispconfig_log_dir'].'/auth.log');
+ }
+ exec('chown ispconfig:ispconfig '. $conf['ispconfig_log_dir'].'/auth.log');
+ exec('chmod 660 '. $conf['ispconfig_log_dir'].'/auth.log');
+
+ //* 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');
+
}
@@ -1107,6 +1245,7 @@
}
$content = rf("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);
@@ -1153,7 +1292,7 @@
$existing_cron_jobs = file('crontab.txt');
$cron_jobs = array(
- '*/5 * * * * /usr/local/bin/run-getmail.sh > /dev/null 2>> /var/log/ispconfig/cron.log'
+ '*/5 * * * * /usr/local/bin/run-getmail.sh > /dev/null 2>> /dev/null'
);
// remove existing ispconfig cronjobs, in case the syntax has changed
@@ -1172,7 +1311,7 @@
}
exec('touch /var/log/ispconfig/cron.log');
- exec('chmod 666 /var/log/ispconfig/cron.log');
+ exec('chmod 660 /var/log/ispconfig/cron.log');
}
}
--
Gitblit v1.9.1