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/fedora.lib.php | 152 +++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 142 insertions(+), 10 deletions(-)
diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php
index ba1c285..aa83141 100644
--- a/install/dist/lib/fedora.lib.php
+++ b/install/dist/lib/fedora.lib.php
@@ -29,6 +29,84 @@
*/
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 = '')
{
@@ -100,7 +178,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',
@@ -131,6 +209,16 @@
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');
+ if(is_file('/var/lib/mailman/data/aliases')) unlink('/var/lib/mailman/data/aliases');
+ if(!is_link('/var/lib/mailman/data/aliases')) symlink('/etc/mailman/aliases','/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~');
@@ -279,6 +367,9 @@
$config_dir = $conf['dovecot']['config_dir'];
+ //* Use /etc/dovecot as config dir if exists
+ if(is_dir('/etc/dovecot')) $config_dir = '/etc/dovecot';
+
//* Configure master.cf and add a line for deliver
if(is_file($config_dir.'/master.cf')){
copy($config_dir.'/master.cf', $config_dir.'/master.cf~2');
@@ -289,7 +380,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/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop}';
+ $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DROhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop}';
af($conf["postfix"]["config_dir"].'/master.cf',$deliver_content);
}
unset($content);
@@ -739,6 +830,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);
@@ -762,6 +854,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);
@@ -865,9 +958,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");
@@ -925,17 +1029,23 @@
} 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);
+ }
wf("$vhost_conf_dir/ispconfig.vhost", $content);
//copy('tpl/apache_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost");
//* and create the symlink
- if($this->is_update == false) {
+ //if($this->is_update == false) {
if(@is_link("$vhost_conf_enabled_dir/ispconfig.vhost")) unlink("$vhost_conf_enabled_dir/ispconfig.vhost");
if(!@is_link("$vhost_conf_enabled_dir/000-ispconfig.vhost")) {
exec("ln -s $vhost_conf_dir/ispconfig.vhost $vhost_conf_enabled_dir/000-ispconfig.vhost");
}
+ /*
exec('mkdir -p /var/www/php-fcgi-scripts/ispconfig');
exec('cp tpl/apache_ispconfig_fcgi_starter.master /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter');
exec('chmod +x /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter');
@@ -943,7 +1053,18 @@
exec('chown -R ispconfig:ispconfig /var/www/php-fcgi-scripts/ispconfig');
replaceLine('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter','PHPRC=','PHPRC=/etc/',0,0);
- }
+ */
+ //if(!is_file('/var/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);
+ if(!is_dir('/var/www/php-fcgi-scripts/ispconfig')) exec('mkdir -p /var/www/php-fcgi-scripts/ispconfig');
+ wf('/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', $content);
+ exec('chmod +x /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter');
+ if(!is_link('/var/www/ispconfig')) exec('ln -s /usr/local/ispconfig/interface/web /var/www/ispconfig');
+ exec('chown -R ispconfig:ispconfig /var/www/php-fcgi-scripts/ispconfig');
+ //}
+ //}
}
if($conf['nginx']['installed'] == true && $this->install_ispconfig_interface == true){
@@ -956,11 +1077,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);
}
@@ -1047,6 +1168,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');
+
}
public function configure_dbserver()
@@ -1065,6 +1196,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);
@@ -1111,7 +1243,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
@@ -1130,7 +1262,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