]> Frank Brehm's Git Trees - my-stuff/postfix.git/commitdiff
Datenbank-Zugriff, Postfix-Binaries
authorFrank Brehm <frank@brehm-online.com>
Tue, 4 Nov 2008 20:51:02 +0000 (20:51 +0000)
committerFrank Brehm <frank@brehm-online.com>
Tue, 4 Nov 2008 20:51:02 +0000 (20:51 +0000)
git-svn-id: http://svn.brehm-online.com/svn/my-stuff/postfix@23 ec8d2aa5-1599-4edb-8739-2b3a1bc399aa

get-lookup-tables.pl

index 8bdf0459987ff4276c895e1ea5491dad9238bed2..eede7864b6b7d47a9eb828ebcd6c3c9bf487381a 100755 (executable)
@@ -25,8 +25,19 @@ my $cfg_file    = abs_path( catfile( $postfix_dir, $basename . ".conf" ) );
 
 my $pidfile = '/var/run/get-lookup-tables.pid';
 my $pidfile_written = undef;
+my $dbh;
+
+my $postalias = '/usr/sbin/postalias';
+my $postmap   = '/usr/sbin/postmap';
+
+my $binary = {
+    'postalias' => '/usr/sbin/postalias',
+    'postfix'   => '/usr/sbin/postfix',
+    'postmap'   => '/usr/sbin/postmap',
+};
 
 END {
+    close_db();
     if ( -f $pidfile and $pidfile_written ) {
         debug( 2, "Lösche PID-Datei '" . $pidfile . "' ..." );
         unlink $pidfile;
@@ -44,8 +55,78 @@ unless ( -d $postfix_dir ) {
 
 fatal( "Datei '$cfg_file' existiert nicht." ) unless -f $cfg_file;
 my $config = read_config($cfg_file);
+
+check_binaries();
 check_pidfile();
 
+open_db();
+
+#--------------------------------------------------------------------------------------
+
+=head2 open_db( )
+
+=cut
+
+sub open_db {
+
+    my $host     = $config->{'db'}{'host'}   || 'localhost';
+    my $database = $config->{'db'}{'dbname'} || 'vmail';
+    my $port     = int( $config->{'db'}{'port'} || 0 ) || 3306;
+    my $user     = $config->{'db'}{'user'}   || 'vmail';
+    my $passwd   = $config->{'db'}{'password'};
+
+    my $dsn = "DBI:mysql:database=$database;host=$host";
+    $dsn   .= ";port=$port" unless $port == 3306;
+
+    my $params = {
+        'RaiseError'    => 0,
+        'AutoCommit'    => 1,
+        'PrintError'    => 0,
+    };
+
+    debug( 2, "Verbinde mich mit Datenbank-DSN '" . $dsn . "' als Nutzer '" . $user . "' mit den Parametern: ", $params );
+    unless ( $dbh = DBI->connect( $dsn, $user, $passwd, $params ) ) {
+        fatal( "Konnte Datenbankverbindung mit Datenbank-DSN '" . $dsn . "' als Nutzer '" . $user . "' nicht herstellen: ", DBI->errstr() );
+    }
+
+    debug( 2, "Datenbankverbindung hergestellt." );
+
+}
+
+#--------------------------------------------------------------------------------------
+
+=head2 close_db( )
+
+=cut
+
+sub close_db {
+
+    return unless $dbh;
+    debug( 2, "Schließe Datenbank-Verbindung ..." );
+    $dbh->disconnect() or notice( "Fehler beim Schließen der Datenbank-Verbindung: ", $dbh->errstr );
+    $dbh = undef;
+
+}
+
+#--------------------------------------------------------------------------------------
+
+=head2 check_binaries( );
+
+=cut
+
+sub check_binaries {
+
+    for my $bin ( keys %$binary ) {
+        if ( $config->{'binary'}{$bin} ) {
+            $binary->{$bin} = $config->{'binary'}{$bin};
+        }
+        debug( 3, "Checke Ausführbare Datei '" . $bin . "' unter '" . $binary->{$bin} . "' ..." );
+        unless ( -x $binary->{$bin} ) {
+            fatal( "Ausführbare Datei '" . $binary->{$bin} . "' nicht gefunden." );
+        }
+    }
+
+}
 
 #--------------------------------------------------------------------------------------
 
@@ -174,6 +255,7 @@ sub debug {
     my @C0 = caller(0);
     my @C1 = caller(1);
     my $k = sprintf( "%s() Zeile %d: ", ( @C1 ? $C1[3] : 'main' ), $C0[2] );
+    $k = "" unless $verbose;
 
     warn $k . $out . "\n";