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;
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." );
+ }
+ }
+
+}
#--------------------------------------------------------------------------------------
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";