- now working with config file
authorheiko
Sun, 20 Jul 2008 21:21:38 +0000
changeset 1 2638ae657240
parent 0 68aafeeb1559
child 2 1f7a59625863
- now working with config file
Makefile
mail2db
--- a/Makefile	Sun Jul 20 20:58:37 2008 +0000
+++ b/Makefile	Sun Jul 20 21:21:38 2008 +0000
@@ -7,14 +7,14 @@
 
 .PHONY:	all clean install
 
-all:			.ok.mailscan
+all:			.ok.mail2db
 
 install:		all
 				install -d -m 0755 ${DESTDIR}${sbindir}/
 				install -d -m 0755 ${DESTDIR}${man8dir}/
-				install -m 0755 mailscan ${DESTDIR}${sbindir}/
+				install -m 0755 mail2db ${DESTDIR}${sbindir}/
 				umask 022; \
-				pod2man --section 8 mailscan | gzip >${DESTDIR}${man8dir}/mailscan.8.gz
+				pod2man --section 8 mail2db | gzip >${DESTDIR}${man8dir}/mail2db.8.gz
 
 clean:
 		-rm -f .ok.*
--- a/mail2db	Sun Jul 20 20:58:37 2008 +0000
+++ b/mail2db	Sun Jul 20 21:21:38 2008 +0000
@@ -24,11 +24,11 @@
 my $opt_help = 0;
 my $opt_man  = 0;
 my $opt_dry  = 0;
+my $opt_dsn = "";
+my $opt_dbuser = "";
+my $opt_dbpass = "";
 
-my $DBH =
-  DBI->connect($DSN, @CREDENTIALS,
-    { RaiseError => 1, FetchHashKeyName => "NAME_lc", AutoCommit => 0 })
-  or die;
+my $DBH;
 
 # read the message into tmpfile (passed as arg) and return "Message" object
 sub get_message();
@@ -37,7 +37,15 @@
 
 MAIN: {
 	openlog("mail2db", LOG_PID | (-t STDERR ? LOG_PERROR : 0), LOG_MAIL);
+
+	if (-f ($_ = "/etc/mail2db.conf")) {
+		open(X, $_) or die "Can't open $_: $!\n";
+		unshift @ARGV, map { chomp; $_ } <X>;
+	}
     GetOptions(
+		"dsn=s"  => \$opt_dsn,
+		"dbuser=s" => \$opt_dbuser,
+		"dbpass=s" => \$opt_dbpass,
         "h|help" => \$opt_help,
         "m|man"  => \$opt_man,
         "n|dry"  => \$opt_dry,
@@ -46,6 +54,10 @@
     pod2usage(-verbose => 1, -exitval => 0) if $opt_help;
     pod2usage(-verbose => 2, -exitval => 0) if $opt_man;
 
+  	$DBH = DBI->connect($opt_dsn, $opt_dbuser, $opt_dbpass,
+    { RaiseError => 1, FetchHashKeyName => "NAME_lc", AutoCommit => 0 })
+	  or die;
+
     my ($tmpfile, $message) = get_message();
     decode_headers($message, $OUTPUT_CHARSET);
 
@@ -197,20 +209,30 @@
 
 =head1 SYNOPSIS
 
- mail2db [-n|--dry]
+mail2db [--dsn=I<data source name>] [--dbuser=I<db user>] [--dbpass=I<db pass>] [-n|--dry]
 
- mail2db [-h|--help]
- mail2db [-m|--man]
+mail2db [-h|--help]
+mail2db [-m|--man]
 
 =head1 DESCRIPTION
 
 B<mail2db> reads a RFC822 message from stdin and saves it into a database.
-For more information please the the source code itself.
+For more information please see the source code itself.
 
 =head1 OPTIONS
 
 =over 4
 
+=item B<--dsn>
+
+The data source name. Something like "DBI:mysql:mail:hostname=schnuffi". [default: ""]
+
+=item B<--dbuser>
+
+=item B<--dbpass>
+
+The credentials to access the database. [default: ""]
+
 =item B<-n>|B<--dry>
 
 Do not modify the database, just start a transaction but do not commit it.
@@ -257,6 +279,10 @@
 		JOIN header_field ON header_field.id = message_header.header_field_id 
 		ORDER BY message_header.message_id, header_field.name, message_header.idx;
 
+=head1 FILES
+
+Some configuration can be put to F</etc/mail2db.conf>.
+
 =head1 AUTHOR
 
 Heiko Schlittermann L<hs@schlittermann.de>