From 27c3a61c1164d4dbf95a2c688ce3a2b987d9e8eb Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Thu, 12 Mar 2009 17:49:22 +0000
Subject: [PATCH] Fixed getmail problem when more then one getmail account
 exists.

---
 install/dist/lib/fedora.lib.php    | 11 ++++++++---
 install/dist/lib/opensuse.lib.php  | 11 ++++++++---
 install/lib/installer_base.lib.php |  7 +++++--
 server/scripts/run-getmail.sh      |  9 +++++++++
 4 files changed, 30 insertions(+), 8 deletions(-)
 create mode 100644 server/scripts/run-getmail.sh

diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php
index afe3aa071..97eafdcaa 100644
--- a/install/dist/lib/fedora.lib.php
+++ b/install/dist/lib/fedora.lib.php
@@ -758,6 +758,9 @@ class installer_dist extends installer_base {
 		if(!is_dir('/var/log/ispconfig')) mkdir('/var/log/ispconfig');
 		if(!is_file('/var/log/ispconfig/ispconfig.log')) exec('touch /var/log/ispconfig/ispconfig.log');
 		
+		exec('chown getmail /usr/local/ispconfig/server/scripts/run-getmail.sh');
+		exec('chmod 744 /usr/local/ispconfig/server/scripts/run-getmail.sh');
+		
 		
 	}
 	
@@ -817,11 +820,13 @@ class installer_dist extends installer_base {
 			exec('crontab -u getmail -l > crontab.txt');
 			$existing_cron_jobs = file('crontab.txt');
 		
-			$cron_jobs = array('*/5 * * * * '.$cf['program'].' -n -g '.$cf['config_dir'].' -r '.$cf['config_dir'].'/*.conf &> /dev/null');
-			
+			$cron_jobs = array(
+                '*/5 * * * * /usr/local/ispconfig/server/scripts/run-getmail.sh > /dev/null 2>> /var/log/ispconfig/cron.log'
+            );
+		
 			// remove existing ispconfig cronjobs, in case the syntax has changed
 			foreach($cron_jobs as $key => $val) {
-				if(stristr($val,$cf['program'])) unset($existing_cron_jobs[$key]);
+				if(stristr($val,'getmail')) unset($existing_cron_jobs[$key]);
 			}
 			
 			foreach($cron_jobs as $cron_job) {
diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php
index 9a49d3051..b5b945709 100644
--- a/install/dist/lib/opensuse.lib.php
+++ b/install/dist/lib/opensuse.lib.php
@@ -776,6 +776,9 @@ class installer_dist extends installer_base {
 		if(!is_dir('/var/log/ispconfig')) mkdir('/var/log/ispconfig');
 		if(!is_file('/var/log/ispconfig/ispconfig.log')) exec('touch /var/log/ispconfig/ispconfig.log');
 		
+		exec('chown getmail /usr/local/ispconfig/server/scripts/run-getmail.sh');
+		exec('chmod 744 /usr/local/ispconfig/server/scripts/run-getmail.sh');
+		
 		
 	}
 	
@@ -835,11 +838,13 @@ class installer_dist extends installer_base {
 			exec('crontab -u getmail -l > crontab.txt');
 			$existing_cron_jobs = file('crontab.txt');
 		
-			$cron_jobs = array('*/5 * * * * '.$cf['program'].' -n -g '.$cf['config_dir'].' -r '.$cf['config_dir'].'/*.conf &> /dev/null');
-			
+			$cron_jobs = array(
+                '*/5 * * * * /usr/local/ispconfig/server/scripts/run-getmail.sh > /dev/null 2>> /var/log/ispconfig/cron.log'
+            );
+		
 			// remove existing ispconfig cronjobs, in case the syntax has changed
 			foreach($cron_jobs as $key => $val) {
-				if(stristr($val,$cf['program'])) unset($existing_cron_jobs[$key]);
+				if(stristr($val,'getmail')) unset($existing_cron_jobs[$key]);
 			}
 			
 			foreach($cron_jobs as $cron_job) {
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 77d0c4371..93283fc12 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -1043,6 +1043,9 @@ class installer_base {
 		if(!is_dir('/var/log/ispconfig')) mkdir('/var/log/ispconfig');
 		if(!is_file('/var/log/ispconfig/ispconfig.log')) exec('touch /var/log/ispconfig/ispconfig.log');
 		
+		exec('chown getmail /usr/local/ispconfig/server/scripts/run-getmail.sh');
+		exec('chmod 744 /usr/local/ispconfig/server/scripts/run-getmail.sh');
+		
 		
 	}
 	
@@ -1103,12 +1106,12 @@ class installer_base {
 			$existing_cron_jobs = file('crontab.txt');
 		
 			$cron_jobs = array(
-                '*/5 * * * * '.$cf['program'].' -n -g '.$cf['config_dir'].' -r '.$cf['config_dir'].'/*.conf > /dev/null 2>> /var/log/ispconfig/cron.log'
+                '*/5 * * * * /usr/local/ispconfig/server/scripts/run-getmail.sh > /dev/null 2>> /var/log/ispconfig/cron.log'
             );
 		
 			// remove existing ispconfig cronjobs, in case the syntax has changed
 			foreach($cron_jobs as $key => $val) {
-				if(stristr($val,$cf['program'])) unset($existing_cron_jobs[$key]);
+				if(stristr($val,'getmail')) unset($existing_cron_jobs[$key]);
 			}
 		
 			foreach($cron_jobs as $cron_job) {
diff --git a/server/scripts/run-getmail.sh b/server/scripts/run-getmail.sh
new file mode 100644
index 000000000..fab297dd1
--- /dev/null
+++ b/server/scripts/run-getmail.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+set -e
+cd /etc/getmail
+rcfiles=""
+for file in *.conf ; do
+rcfiles="$rcfiles -r $file"
+done
+#echo $rcfiles
+exec /usr/bin/getmail -n -v -g /etc/getmail $rcfiles
\ No newline at end of file
-- 
GitLab