Index: Makefile.in --- Makefile.in.orig 2008-03-03 14:06:56 +0100 +++ Makefile.in 2008-03-04 09:44:18 +0100 @@ -714,7 +714,7 @@ @(cd soap && echo "making in soap/..." && \ $(MAKE) SH='${SH}' CC='${CC}' CFLAGS='${CFLAGS}' PERL='${PERL}' \ DIR='${DIR}' BINDIR='${BINDIR}' SBINDIR='${SBINDIR}' LIBDIR='${LIBDIR}' \ - USER='${USER}' GROUP='${GROUP}' SCRIPTDIR='${SCRIPTDIR}' \ + USER='${USER}' GROUP='${GROUP}' SCRIPTDIR='${SCRIPTDIR}' enable_secure='${enable_secure}' \ CGIDIR='${CGIDIR}' WWSBINDIR='${WWSBINDIR}' MAILERPROGDIR='${MAILERPROGDIR}' \ PIDDIR='${PIDDIR}' CONFIG='${CONFIG}' WWSCONFIG='${WWSCONFIG}' ETCBINDIR='${ETCBINDIR}' \ DESTDIR='${DESTDIR}' USER='${USER}' GROUP='${GROUP}' newinstall) || exit 1; Index: soap/Makefile --- soap/Makefile.orig 2007-12-05 16:37:14 +0100 +++ soap/Makefile 2008-03-04 09:45:41 +0100 @@ -60,9 +60,11 @@ chown $(USER) $(DESTDIR)$(CGIDIR)/$$i; \ chgrp $(GROUP) $(DESTDIR)$(CGIDIR)/$$i; \ done + @if [ "$(enable_secure)" != "yes" ]; then \ @echo "Setting SetUID bit on sympa_soap_server-wrapper.fcgi..." chmod u+s $(DESTDIR)$(CGIDIR)/sympa_soap_server-wrapper.fcgi chmod g+s $(DESTDIR)$(CGIDIR)/sympa_soap_server-wrapper.fcgi + fi @for i in $(lib_SUBST) ; do \ chown $(USER) $(DESTDIR)$(LIBDIR)/$$i; \ chgrp $(GROUP) $(DESTDIR)$(LIBDIR)/$$i; \ Index: soap/sympa_soap_server.fcgi --- soap/sympa_soap_server.fcgi.orig 2007-12-13 16:42:04 +0100 +++ soap/sympa_soap_server.fcgi 2008-03-04 09:44:18 +0100 @@ -52,7 +52,7 @@ ## Open log $wwsconf->{'log_facility'}||= $Conf{'syslog'}; -&Log::do_openlog($wwsconf->{'log_facility'}, $Conf{'log_socket_type'}, 'soap'); +&Log::do_openlog($wwsconf->{'log_facility'}, $Conf{'log_socket_type'}, 'soap', $Conf{'logfile'}); &Log::do_log('info', 'SOAP server launched'); unless ($List::use_db = &List::check_db_connect()) { Index: src/Conf.pm --- src/Conf.pm.orig 2008-02-13 14:15:20 +0100 +++ src/Conf.pm 2008-03-04 09:47:05 +0100 @@ -50,7 +50,7 @@ cookie cookie_cas_expire create_list automatic_list_feature automatic_list_creation automatic_list_removal crl_dir crl_update_task db_host db_env db_name db_timeout db_options db_passwd db_type db_user db_port db_additional_subscriber_fields db_additional_user_fields default_shared_quota default_archive_quota default_list_priority distribution_mode edit_list email etc - global_remind home host ignore_x_no_archive_header_feature domain lang listmaster listmaster_email localedir log_socket_type log_level + global_remind home host ignore_x_no_archive_header_feature domain lang listmaster listmaster_email localedir log_socket_type log_level logfile logo_html_definition main_menu_custom_button_1_title main_menu_custom_button_1_url main_menu_custom_button_1_target main_menu_custom_button_2_title main_menu_custom_button_2_url main_menu_custom_button_2_target @@ -110,6 +110,7 @@ 'host' => undef, 'domain' => undef, 'email' => 'sympa', + 'logfile' => '--PIDDIR--/sympa.log', 'pidfile' => '--PIDDIR--/sympa.pid', 'pidfile_distribute' => '--PIDDIR--/sympa-distribute.pid', 'pidfile_creation' => '--PIDDIR--/sympa-creation.pid', Index: src/Language.pm --- src/Language.pm.orig 2008-01-07 14:05:19 +0100 +++ src/Language.pm 2008-03-04 09:44:18 +0100 @@ -176,7 +176,7 @@ } } unless ($success) { - &do_log('err','Failed to setlocale(%s) ; you either have a problem with the catalogue .mo files or you should extend available locales in your /etc/locale.gen (or /etc/sysconfig/i18n) file', $locale); + # &do_log('err','Failed to setlocale(%s) ; you either have a problem with the catalogue .mo files or you should extend available locales in your /etc/locale.gen (or /etc/sysconfig/i18n) file', $locale); return undef; } } Index: src/Log.pm --- src/Log.pm.orig 2007-12-19 16:22:54 +0100 +++ src/Log.pm 2008-03-04 09:49:54 +0100 @@ -26,7 +26,7 @@ use strict "vars"; require Exporter; -use Sys::Syslog; +use IO::File; use Carp; use POSIX qw/mktime/; use Encode; @@ -34,6 +34,7 @@ our @ISA = qw(Exporter); our @EXPORT = qw(fatal_err do_log do_openlog $log_level); +my ($log_fh, $log_file); my ($log_facility, $log_socket_type, $log_service,$sth,@sth_stack,$rows_nb); # When logs are not available, period of time to wait before sending another warning to listmaster. my $warning_timeout = 600; @@ -47,8 +48,7 @@ my $errno = $!; eval { - syslog('err', $m, @_); - syslog('err', "Exiting."); + 1; }; if($@ && ($warning_date < time - $warning_timeout)) { $warning_date = time + $warning_timeout; @@ -108,9 +108,9 @@ $fac = 'notice'; } eval { - unless (syslog($fac, $m, @param)) { + unless (&do_write($fac, $level, $m, @param)) { &do_connect(); - syslog($fac, $m, @param); + &do_write($fac, $level, $m, @param); } }; if($@ && ($warning_date < time - $warning_timeout)) { @@ -128,12 +128,24 @@ } } +sub do_write { + my ($fac, $level, $fmt, @args) = @_; + if (defined($log_fh)) { + my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time()); + my $date = sprintf("%b %2d %02d:%02d:%02d", $mon+1, $mday, $hour, $min, $sec); + $log_fh->printf("%s %s[%d]: [%s.%s] $fmt\n", $date, $log_service, $$, $fac, $level, @args); + return 1; + } + else { + return 0; + } +} sub do_openlog { - my ($fac, $socket_type, $service) = @_; + my ($fac, $socket_type, $service, $logfile) = @_; $service ||= 'sympa'; - ($log_facility, $log_socket_type, $log_service) = ($fac, $socket_type, $service); + ($log_facility, $log_socket_type, $log_service, $log_file) = ($fac, $socket_type, $service, $logfile); # foreach my $k (keys %options) { # printf "%s = %s\n", $k, $options{$k}; @@ -143,18 +155,8 @@ } sub do_connect { - if ($log_socket_type =~ /^(unix|inet)$/i) { - Sys::Syslog::setlogsock(lc($log_socket_type)); - } - # close log may be usefull : if parent processus did open log child process inherit the openlog with parameters from parent process - closelog ; - eval {openlog("$log_service\[$$\]", 'ndelay', $log_facility)}; - if($@ && ($warning_date < time - $warning_timeout)) { - $warning_date = time + $warning_timeout; - unless(&List::send_notify_to_listmaster('logs_failed', $Conf::Conf{'host'}, [$@])) { - print STDERR "No logs available, can't send warning message"; - } - }; + $log_fh->close() if defined($log_fh); + $log_fh = new IO::File ">>$log_file"; } # return the name of the used daemon Index: src/alias_manager.pl --- src/alias_manager.pl.orig 2007-12-13 11:54:45 +0100 +++ src/alias_manager.pl 2008-03-04 09:44:18 +0100 @@ -45,7 +45,7 @@ my $tmp_alias_file = $Conf{'tmpdir'}.'/sympa_aliases.'.time; -my $alias_wrapper = '--MAILERPROGDIR--/aliaswrapper'; +my $alias_wrapper = '--LIBEXECDIR--/aliaswrapper'; my $lock_file = '--EXPL_DIR--/alias_manager.lock'; my $default_domain; my $path_to_queue = '--MAILERPROGDIR--/queue'; Index: src/etc/script/mod2html.pl --- src/etc/script/mod2html.pl.orig 2007-06-26 15:20:24 +0200 +++ src/etc/script/mod2html.pl 2008-03-04 09:44:18 +0100 @@ -12,7 +12,7 @@ unless (Conf::load('--CONFIG--')) { die "Can't load Sympa configuration file"; } -&do_openlog($Conf{'syslog'}, $Conf{'log_socket_type'}, 'sympa'); +&do_openlog($Conf{'syslog'}, $Conf{'log_socket_type'}, 'sympa', $Conf{'logfile'}); if ($Conf{'db_name'} and $Conf{'db_type'}) { unless (&Upgrade::probe_db()) { Index: src/etc/script/testlogs.pl --- src/etc/script/testlogs.pl.orig 2007-07-31 16:47:41 +0200 +++ src/etc/script/testlogs.pl 2008-03-04 09:44:18 +0100 @@ -19,7 +19,7 @@ ## Open the syslog and say we're read out stuff. -do_openlog($Conf{'syslog'}, $Conf{'log_socket_type'}, 'sympa'); +do_openlog($Conf{'syslog'}, $Conf{'log_socket_type'}, 'sympa', $Conf{'logfile'}); # setting log_level using conf unless it is set by calling option if ($main::options{'log_level'}) { Index: src/sympa.pl --- src/sympa.pl.orig 2008-01-18 15:06:26 +0100 +++ src/sympa.pl 2008-03-04 09:44:18 +0100 @@ -173,7 +173,7 @@ } ## Open the syslog and say we're read out stuff. -do_openlog($Conf{'syslog'}, $Conf{'log_socket_type'}, 'sympa'); +do_openlog($Conf{'syslog'}, $Conf{'log_socket_type'}, 'sympa', $Conf{'logfile'}); # setting log_level using conf unless it is set by calling option if ($main::options{'log_level'}) { @@ -314,7 +314,7 @@ $service .= '(distribute)' if ($main::daemon_usage == DAEMON_MESSAGE); $service .= '(command)' if ($main::daemon_usage == DAEMON_COMMAND); $service .= '(creation)' if ($main::daemon_usage == DAEMON_CREATION); - do_openlog($Conf{'syslog'}, $Conf{'log_socket_type'}, $service); + do_openlog($Conf{'syslog'}, $Conf{'log_socket_type'}, $service, $Conf{'logfile'}); do_log('debug', "Running server $$ for $service purpose "); unless ($main::options{'batch'} ) { Index: src/sympa_wizard.pl --- src/sympa_wizard.pl.orig 2008-01-30 18:28:31 +0100 +++ src/sympa_wizard.pl 2008-03-04 09:44:18 +0100 @@ -65,6 +65,12 @@ 'query' => 'Directory for configuration files ; it also contains scenari/ and templates/ directories', 'file' => 'sympa.conf'}, + {'name' => 'logfile', + 'default' => '--PIDDIR--/sympa.log', + 'query' => 'File to which Sympa logs.', + 'file' => 'sympa.conf', + 'advice' =>'Sympa logs to this file instead of Syslog.'}, + {'name' => 'pidfile', 'default' => '--PIDDIR--/sympa.pid', 'query' => 'File containing Sympa PID while running.', @@ -92,13 +98,13 @@ 'advice' =>''}, {'name' => 'arc_path', - 'default' => '--DIR--/arc', + 'default' => '--DIR--/var/sympa/store/arc', 'query' => 'Where to store HTML archives', 'file' => 'wwsympa.conf','edit' => '1', 'advice' =>'Better if not in a critical partition'}, {'name' => 'bounce_path', - 'default' => '--DIR--/bounce', + 'default' => '--DIR--/var/sympa/store/bounce', 'query' => 'Where to store bounces', 'file' => 'wwsympa.conf', 'advice' =>'Better if not in a critical partition'}, @@ -166,13 +172,13 @@ {'title' => 'General definition'}, {'name' => 'domain', - 'default' => '--HOST--', + 'default' => 'example.com', 'query' => 'Main robot hostname', 'file' => 'sympa.conf', 'advice' =>''}, {'name' => 'listmaster', - 'default' => 'your_email_address@--HOST--', + 'default' => 'listmaster@example.com', 'query' => 'Listmasters email list comma separated', 'file' => 'sympa.conf','edit' => '1', 'advice' =>'Sympa will associate listmaster privileges to these email addresses (mail and web interfaces). Some error reports may also be sent to these addresses.'}, @@ -300,7 +306,7 @@ {'title' => 'MTA related'}, {'name' => 'sendmail', - 'default' => '/usr/sbin/sendmail', + 'default' => '--DIR--/sbin/sendmail', 'query' => 'Path to the MTA (sendmail, postfix, exim or qmail)', 'file' => 'sympa.conf','edit' => '1', 'advice' => "should point to a sendmail-compatible binary (eg: a binary named \'sendmail\' is distributed with Postfix)"}, @@ -327,7 +333,7 @@ {'title' => 'Pluggin'}, {'name' => 'antivirus_path', - 'sample' => '/usr/local/uvscan/uvscan', + 'sample' => '--DIR--/bin/uvscan', 'query' => 'Path to the antivirus scanner engine', 'file' => 'sympa.conf','edit' => '1', 'advice' =>'supported antivirus : McAfee/uvscan, Fsecure/fsav, Sophos, AVP and Trend Micro/VirusWall'}, @@ -340,14 +346,14 @@ 'advice' =>''}, {'name' => 'mhonarc', - 'default' => '/usr/bin/mhonarc', + 'default' => '--DIR--/bin/mhonarc', 'query' => 'Path to MhOnarc mail2html pluggin', 'file' => 'wwsympa.conf','edit' => '1', 'advice' =>'This is required for HTML mail archiving'}, {'title' => 'S/MIME pluggin'}, {'name' => 'openssl', - 'sample' => '/usr/local/bin/openssl', + 'sample' => '--DIR--/bin/openssl', 'query' => 'Path to OpenSSL', 'file' => 'sympa.conf','edit' => '1', 'advice' =>'Sympa knowns S/MIME if openssl is installed'}, @@ -368,7 +374,7 @@ 'file' => 'sympa.conf'}, {'name' => 'key_passwd', - 'sample' => 'your_password', + 'sample' => 'sympa', 'query' => 'Password used to crypt lists private keys', 'file' => 'sympa.conf','edit' => '1', 'advice' =>''}, @@ -405,7 +411,7 @@ 'advice' =>''}, {'name' => 'db_passwd', - 'sample' => 'your_passwd', + 'sample' => 'sympa', 'query' => 'Database password (associated to the db_user)', 'file' => 'sympa.conf','edit' => '1', 'advice' =>'What ever you use a password or not, you must protect the SQL server (is it a not a public internet service ?)'}, @@ -436,7 +442,7 @@ 'advice' =>'This module provide much faster web interface'}, {'name' => 'wwsympa_url', - 'default' => 'http://--HOST--/sympa', + 'default' => 'http://www.example.com/sympa', 'query' => "Sympa\'s main page URL", 'file' => 'sympa.conf','edit' => '1', 'advice' =>''}, Index: src/task_manager.pl --- src/task_manager.pl.orig 2007-12-14 16:12:21 +0100 +++ src/task_manager.pl 2008-03-04 09:44:18 +0100 @@ -114,7 +114,7 @@ &tools::write_pid($wwsconf->{'task_manager_pidfile'}, $$); $wwsconf->{'log_facility'}||= $Conf{'syslog'}; -do_openlog($wwsconf->{'log_facility'}, $Conf{'log_socket_type'}, 'task_manager'); +do_openlog($wwsconf->{'log_facility'}, $Conf{'log_socket_type'}, 'task_manager', $Conf{'logfile'}); # setting log_level using conf unless it is set by calling option if ($main::options{'log_level'}) { Index: wwsympa/archived.pl --- wwsympa/archived.pl.orig 2007-12-11 16:49:30 +0100 +++ wwsympa/archived.pl 2008-03-04 09:44:18 +0100 @@ -132,7 +132,7 @@ } $wwsconf->{'log_facility'}||= $Conf{'syslog'}; -do_openlog($wwsconf->{'log_facility'}, $Conf{'log_socket_type'}, 'archived'); +do_openlog($wwsconf->{'log_facility'}, $Conf{'log_socket_type'}, 'archived', $Conf{'logfile'}); ## Set the UserID & GroupID for the process $( = $) = (getgrnam('--GROUP--'))[2]; Index: wwsympa/bounced.pl --- wwsympa/bounced.pl.orig 2007-12-13 14:33:38 +0100 +++ wwsympa/bounced.pl 2008-03-04 09:44:18 +0100 @@ -147,7 +147,7 @@ } $wwsconf->{'log_facility'}||= $Conf{'syslog'}; -do_openlog($wwsconf->{'log_facility'}, $Conf{'log_socket_type'}, 'bounced'); +do_openlog($wwsconf->{'log_facility'}, $Conf{'log_socket_type'}, 'bounced', $Conf{'logfile'}); ## Set the UserID & GroupID for the process $( = $) = (getgrnam('--GROUP--'))[2]; Index: wwsympa/wwsympa.fcgi --- wwsympa/wwsympa.fcgi.orig 2008-02-29 12:34:07 +0100 +++ wwsympa/wwsympa.fcgi 2008-03-04 09:44:18 +0100 @@ -617,7 +617,7 @@ ## Open log $wwsconf->{'log_facility'}||= $Conf{'syslog'}; -&Log::do_openlog($wwsconf->{'log_facility'}, $Conf{'log_socket_type'}, 'wwsympa'); +&Log::do_openlog($wwsconf->{'log_facility'}, $Conf{'log_socket_type'}, 'wwsympa', $Conf{'logfile'}); &do_log('info', 'WWSympa started'); ## Set locale configuration