steffen: server/perl-kolab/Kolab-Conf Conf.pm,1.45,1.46

cvs at intevation.de cvs at intevation.de
Mon Jan 3 13:45:33 CET 2005


Author: steffen

Update of /kolabrepository/server/perl-kolab/Kolab-Conf
In directory doto:/tmp/cvs-serv24281/Kolab-Conf

Modified Files:
	Conf.pm 
Log Message:
prepare for script for checking permissions on generated conf files

Index: Conf.pm
===================================================================
RCS file: /kolabrepository/server/perl-kolab/Kolab-Conf/Conf.pm,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- Conf.pm	15 Dec 2004 00:08:04 -0000	1.45
+++ Conf.pm	3 Jan 2005 12:45:31 -0000	1.46
@@ -4,7 +4,7 @@
 ##  Copyright (c) 2004  Klaralvdalens Datakonsult AB
 ##  Copyright (c) 2003  Code Fusion cc
 ##
-##    Writen by Stuart Bingë  <s.binge at codefusion.co.za>
+##    Writen by Stuart Bing?<s.binge at codefusion.co.za>
 ##    Portions based on work by the following people:
 ##
 ##      (c) 2003  Tassilo Erlewein  <tassilo.erlewein at erfrakon.de>
@@ -32,6 +32,7 @@
 use IO::File;
 use File::Copy;
 use File::Temp;
+use File::stat;
 use Kolab;
 use Kolab::Util;
 use Kolab::LDAP;
@@ -47,6 +48,7 @@
         &buildCyrusGroups
         &buildLDAPReplicas
         &rebuildTemplates
+	&checkPermissions
         %haschanged
     ) ]
 );
@@ -552,82 +554,83 @@
 
 }
 
+my $prefix = $Kolab::config{'prefix'};
+my $templatedir = "$prefix/etc/kolab/templates";
+
+my %templates = (
+		 "$templatedir/session_vars.php.template" => "$prefix/var/kolab/php/admin/include/session_vars.php",
+		 "$templatedir/clamd.conf.template" => "$prefix/etc/clamav/clamd.conf",
+		 "$templatedir/freshclam.conf.template" => "$prefix/etc/clamav/freshclam.conf",
+		 "$templatedir/amavisd.conf.template" => "$prefix/etc/amavisd/amavisd.conf",
+		 "$templatedir/main.cf.template" => "$prefix/etc/postfix/main.cf",
+		 "$templatedir/master.cf.template" => "$prefix/etc/postfix/master.cf",
+		 "$templatedir/saslauthd.conf.template" => "$prefix/etc/sasl/saslauthd.conf",
+		 "$templatedir/imapd.conf.template" => "$prefix/etc/imapd/imapd.conf",
+		 "$templatedir/httpd.conf.template" => "$prefix/etc/apache/apache.conf",
+		 "$templatedir/httpd.local.template" => "$prefix/etc/apache/apache.local",
+		 "$templatedir/legacy.conf.template" => "$prefix/etc/apache/legacy.conf",
+		 "$templatedir/php.ini.template" => "$prefix/etc/apache/php.ini",
+		 "$templatedir/proftpd.conf.template" => "$prefix/etc/proftpd/proftpd.conf",
+		 "$templatedir/ldap.conf.template" => "$prefix/etc/openldap/ldap.conf",
+		 "$templatedir/slapd.conf.template" => "$prefix/etc/openldap/slapd.conf",
+		 "$templatedir/freebusy.conf.template" => "$prefix/etc/resmgr/freebusy.conf",
+		 "$templatedir/fbview.conf.template" => "$prefix/etc/resmgr/fbview.conf",
+		 "$templatedir/resmgr.conf.template" => "$prefix/etc/resmgr/resmgr.conf"
+		);
+
+my %permissions = (
+		   "$prefix/var/kolab/php/admin/include/session_vars.php" => 0640,
+		   "$prefix/etc/resmgr/freebusy.conf"                     => 0640,
+		   "$prefix/etc/resmgr/fbview.conf"                       => 0640,
+		   "$prefix/etc/resmgr/resmgr.conf"                       => 0640,
+		   "$prefix/etc/postfix/main.cf"                          => 0640,
+		   "$prefix/etc/postfix/master.cf"                        => 0640,
+		   "$prefix/etc/clamav/clamd.conf"                        => 0640,
+		   "$prefix/etc/clamav/freshclam.conf"                    => 0640,
+		   "$prefix/etc/amavisd/amavisd.conf"                     => 0640,
+		   "$prefix/etc/sasl/saslauthd.conf"                      => 0600,
+		   "$prefix/etc/imapd/imapd.conf"                         => 0640,
+		   "$prefix/etc/apache/apache.conf"                       => 0640,
+		   "$prefix/etc/apache/apache.local"                      => 0640,
+		   "$prefix/etc/apache/legacy.conf"                       => 0640,
+		   "$prefix/etc/apache/php.ini"                           => 0640,
+		   "$prefix/etc/proftpd/proftpd.conf"                     => 0640,
+		   "$prefix/etc/openldap/slapd.conf"                      => 0640,
+		   "$prefix/etc/openldap/ldap.conf"                       => 0644,
+		   "$prefix/etc/postfix/transport"                        => 0640,
+		   "$prefix/etc/imapd/cyrus.conf"                         => 0640,
+		   "$prefix/etc/imapd/imapd.group"                        => 0640);
+
+my %ownership = (
+		 "$prefix/var/kolab/php/admin/include/session_vars.php" => "kolab:kolab-n",
+		 "$prefix/etc/resmgr/freebusy.conf"                     => "kolab:kolab-n",
+		 "$prefix/etc/resmgr/fbview.conf"                       => "kolab:kolab-n",
+		 "$prefix/etc/resmgr/resmgr.conf"                       => "kolab:kolab-n",
+		 "$prefix/etc/postfix/main.cf"                          => "kolab:kolab-r",
+		 "$prefix/etc/postfix/master.cf"                        => "kolab:kolab-r",
+		 "$prefix/etc/clamav/clamd.conf"                        => "kolab:kolab-r",
+		 "$prefix/etc/clamav/freshclam.conf"                    => "kolab:kolab-r",
+		 "$prefix/etc/amavisd/amavisd.conf"                     => "kolab:kolab-r",
+		 "$prefix/etc/sasl/saslauthd.conf"                      => "kolab:kolab",
+		 "$prefix/etc/imapd/imapd.conf"                         => "kolab:kolab-r",
+		 "$prefix/etc/apache/apache.conf"                       => "kolab:kolab-n",
+		 "$prefix/etc/apache/apache.local"                      => "kolab:kolab-n",
+		 "$prefix/etc/apache/legacy.conf"                       => "kolab:kolab-n",
+		 "$prefix/etc/apache/php.ini"                           => "kolab:kolab-n",
+		 "$prefix/etc/proftpd/proftpd.conf"                     => "kolab:kolab-n",
+		 "$prefix/etc/openldap/ldap.conf"                       => "kolab:kolab",
+		 "$prefix/etc/openldap/slapd.conf"                      => "kolab:kolab",
+		 "$prefix/etc/postfix/transport"                        => "root:kolab",
+		 "$prefix/etc/imapd/cyrus.conf"                         => "kolab:kolab",
+		 "$prefix/etc/imapd/imapd.group"                        => "kolab:kolab-r");
+
+
 sub rebuildTemplates
 {
     my $key;
     my $value;
     my $section="";
 
-    my $prefix = $Kolab::config{'prefix'};
-    my $templatedir = "$prefix/etc/kolab/templates";
-
-    my %templates = (
-        "$templatedir/session_vars.php.template" => "$prefix/var/kolab/php/admin/include/session_vars.php",
-        "$templatedir/clamd.conf.template" => "$prefix/etc/clamav/clamd.conf",
-        "$templatedir/freshclam.conf.template" => "$prefix/etc/clamav/freshclam.conf",
-        "$templatedir/amavisd.conf.template" => "$prefix/etc/amavisd/amavisd.conf",
-        "$templatedir/main.cf.template" => "$prefix/etc/postfix/main.cf",
-        "$templatedir/master.cf.template" => "$prefix/etc/postfix/master.cf",
-        "$templatedir/saslauthd.conf.template" => "$prefix/etc/sasl/saslauthd.conf",
-        "$templatedir/imapd.conf.template" => "$prefix/etc/imapd/imapd.conf",
-        "$templatedir/httpd.conf.template" => "$prefix/etc/apache/apache.conf",
-        "$templatedir/httpd.local.template" => "$prefix/etc/apache/apache.local",
-        "$templatedir/legacy.conf.template" => "$prefix/etc/apache/legacy.conf",
-        "$templatedir/php.ini.template" => "$prefix/etc/apache/php.ini",
-        "$templatedir/proftpd.conf.template" => "$prefix/etc/proftpd/proftpd.conf",
-        "$templatedir/ldap.conf.template" => "$prefix/etc/openldap/ldap.conf",
-        "$templatedir/slapd.conf.template" => "$prefix/etc/openldap/slapd.conf",
-        "$templatedir/freebusy.conf.template" => "$prefix/etc/resmgr/freebusy.conf",
-        "$templatedir/fbview.conf.template" => "$prefix/etc/resmgr/fbview.conf",
-        "$templatedir/resmgr.conf.template" => "$prefix/etc/resmgr/resmgr.conf"
-    );
-
-    my %permissions = (
-      "$prefix/var/kolab/php/admin/include/session_vars.php" => 0640,
-      "$prefix/etc/resmgr/freebusy.conf"                     => 0640,
-      "$prefix/etc/resmgr/fbview.conf"                       => 0640,
-      "$prefix/etc/resmgr/resmgr.conf"                       => 0640,
-      "$prefix/etc/postfix/main.cf"                          => 0640,
-      "$prefix/etc/postfix/master.cf"                        => 0640,
-      "$prefix/etc/clamav/clamd.conf"                        => 0640,
-      "$prefix/etc/clamav/freshclam.conf"                    => 0640,
-      "$prefix/etc/amavisd/amavisd.conf"                     => 0640,
-      "$prefix/etc/sasl/saslauthd.conf"                      => 0600,
-      "$prefix/etc/imapd/imapd.conf"                         => 0640,
-      "$prefix/etc/apache/apache.conf"                       => 0640,
-      "$prefix/etc/apache/apache.local"                      => 0640,
-      "$prefix/etc/apache/legacy.conf"                       => 0640,
-      "$prefix/etc/apache/php.ini"                           => 0640,
-      "$prefix/etc/proftpd/proftpd.conf"                     => 0640,
-      "$prefix/etc/openldap/slapd.conf"                      => 0640,
-      "$prefix/etc/openldap/ldap.conf"                       => 0644,
-      "$prefix/etc/postfix/transport"                        => 0640,
-      "$prefix/etc/imapd/cyrus.conf"                         => 0640,
-      "$prefix/etc/imapd/imapd.group"                        => 0640);
-
-    my %ownership = (
-      "$prefix/var/kolab/php/admin/include/session_vars.php" => "kolab:kolab-n",
-      "$prefix/etc/resmgr/freebusy.conf"                     => "kolab:kolab-n",
-      "$prefix/etc/resmgr/fbview.conf"                       => "kolab:kolab-n",
-      "$prefix/etc/resmgr/resmgr.conf"                       => "kolab:kolab-n",
-      "$prefix/etc/postfix/main.cf"                          => "kolab:kolab-r",
-      "$prefix/etc/postfix/master.cf"                        => "kolab:kolab-r",
-      "$prefix/etc/clamav/clamd.conf"                        => "kolab:kolab-r",
-      "$prefix/etc/clamav/freshclam.conf"                    => "kolab:kolab-r",
-      "$prefix/etc/amavisd/amavisd.conf"                     => "kolab:kolab-r",
-      "$prefix/etc/sasl/saslauthd.conf"                      => "kolab:kolab",
-      "$prefix/etc/imapd/imapd.conf"                         => "kolab:kolab-r",
-      "$prefix/etc/apache/apache.conf"                       => "kolab:kolab-n",
-      "$prefix/etc/apache/apache.local"                      => "kolab:kolab-n",
-      "$prefix/etc/apache/legacy.conf"                       => "kolab:kolab-n",
-      "$prefix/etc/apache/php.ini"                           => "kolab:kolab-n",
-      "$prefix/etc/proftpd/proftpd.conf"                     => "kolab:kolab-n",
-      "$prefix/etc/openldap/ldap.conf"                       => "kolab:kolab",
-      "$prefix/etc/openldap/slapd.conf"                      => "kolab:kolab",
-      "$prefix/etc/postfix/transport"                        => "root:kolab",
-      "$prefix/etc/imapd/cyrus.conf"                         => "kolab:kolab",
-      "$prefix/etc/imapd/imapd.group"                        => "kolab:kolab-r");
-
 
     Kolab::log('T', 'Regenerating configuration files', KOLAB_DEBUG );
 
@@ -646,6 +649,33 @@
     Kolab::log('T', 'Finished regenerating configuration files', KOLAB_DEBUG );
 }
 
+sub checkPermissions {
+    my $key;
+    my $value;
+
+    Kolab::log('T', 'Checking generated config file permissions and ownership', KOLAB_DEBUG );
+
+    loadMetaTemplates( $templatedir, \%templates, \%permissions, \%ownership );
+
+    my $ok = 1;
+
+    foreach $key (keys %templates) {
+      my $tpl = $templates{$key};
+      my $st = stat($tpl);
+      my $owner = getpwuid($st->uid).':'.getgrgid($st->gid);
+      if( ( ($st->mode & 07777) != $permissions{$tpl}) ||
+	  ($owner ne $ownership{$tpl}) ) {
+	  my $str = 'File '.$tpl.' has the wrong persmissions/owner. Found '
+		     .sprintf("%lo", $st->mode&07777).' '.$owner.', expected '
+		     .sprintf("%lo",$permissions{$tpl}).' '.$ownership{$tpl};
+	  print( "$str\n" );
+	  Kolab::log('T', $str, KOLAB_ERROR );
+	  $ok = 0;
+      }
+  }
+  return $ok;
+}
+
 1;
 __END__
 # Below is stub documentation for your module. You'd better edit it!
@@ -661,7 +691,7 @@
 
 =head1 AUTHOR
 
-Stuart Bingë, E<lt>s.binge at codefusion.co.zaE<gt>
+Stuart Bing묠E<lt>s.binge at codefusion.co.zaE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 





More information about the commits mailing list