Move My-Audit to PerlMail::Config.
[PerlMail.git] / perlmail-accept
index 192ffce..30e7833 100755 (executable)
@@ -10,7 +10,7 @@ use warnings;
 
 INIT {
        require Sys::Syslog;
 
 INIT {
        require Sys::Syslog;
-       Sys::Syslog::openlog("lacemail","pid","mail");
+       Sys::Syslog::openlog("perlmail","pid","mail");
        my @syslogging_stack;
        sub syslogging_on_save
        {
        my @syslogging_stack;
        sub syslogging_on_save
        {
@@ -27,13 +27,18 @@ INIT {
        }
 
 
        }
 
 
+use File::Basename;
+BEGIN {
+       use lib $ENV{"PERLMAIL_BASEDIR"} || File::Basename::dirname($0);
+       use PerlMail::Config;
+       }
+
 use Mail::Audit qw(MAPS);
 require IO::Handle;
 use Carp qw(cluck confess);
 use POSIX qw(WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG WIFSTOPPED WSTOPSIG);
 require POSIX; # for ceil
 use User::Utmp;
 use Mail::Audit qw(MAPS);
 require IO::Handle;
 use Carp qw(cluck confess);
 use POSIX qw(WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG WIFSTOPPED WSTOPSIG);
 require POSIX; # for ceil
 use User::Utmp;
-require File::Basename;
 use Getopt::Long;
 require Mail::Address;
 require MIME::Words;
 use Getopt::Long;
 require Mail::Address;
 require MIME::Words;
@@ -49,16 +54,6 @@ use URI::Escape 'uri_escape';
 require WWW::SMS;
 
 
 require WWW::SMS;
 
 
-my $HOME="/home/lace";
-my $Mail="$HOME/Mail";
-my @ValidUsers=qw(root lace short kratochvil _local);
-my $IdleMax=10;
-my $MaxBodySMS=0x1000; # max bytes to pass to Lingua::EN::Squeeze
-my $SMSmailError='short+err@ucw.cz';
-my @SMSwebRcpt=qw(420 602 431329);
-my $SMSwebRcpt_username="lace2";
-my $SMScontact='<short@ucw.cz>';
-
 our($Message,$Audit,@AuditStored,$store_ignore,$store_ignorenewmail,$store_profile,$DoBell);
 our(%audit_profile,@sms_squeezes,@alternates_host,@dnsbl_whitelist);   # imported
 my %alternates_host;   # from @alternates_host
 our($Message,$Audit,@AuditStored,$store_ignore,$store_ignorenewmail,$store_profile,$DoBell);
 our(%audit_profile,@sms_squeezes,@alternates_host,@dnsbl_whitelist);   # imported
 my %alternates_host;   # from @alternates_host
@@ -100,7 +95,7 @@ sub stdin
        exit 0;
 }
 
        exit 0;
 }
 
-# FIXME: separate 'lacemail'-transfer together with lacemail-submit away
+# FIXME: separate 'perlmail'-transfer together with perlmail-submit away
 sub inetd
 {
        die "Excessive arguments" if @ARGV;
 sub inetd
 {
        die "Excessive arguments" if @ARGV;
@@ -255,7 +250,7 @@ my($ignorenewmail,$smscount,%args)=@_;
        return map({
                        my $l=160;
                        if (!$ignorenewmail) {  # send by mail
        return map({
                        my $l=160;
                        if (!$ignorenewmail) {  # send by mail
-                               $l-=length("Z emailu $SMSmailError: ");
+                               $l-=length("Z emailu FIXME SMSmailError: ");
                                $l-=length(smsbuild($_,$smscount));
                                }
                        else {  # send by web
                                $l-=length(smsbuild($_,$smscount));
                                }
                        else {  # send by web
@@ -407,7 +402,7 @@ my($folder,$profile,%args)=@_;
        push @AuditStored,$folder if $do{"did"};
        return if $store_ignore || $opt_dry;
        $DoBell++ if $do{"bell"};
        push @AuditStored,$folder if $do{"did"};
        return if $store_ignore || $opt_dry;
        $DoBell++ if $do{"bell"};
-       write_message($folder);
+       write_message($folder) or die;
        smssend_tryall $store_ignorenewmail,$do{"sms"},%args if $do{"sms"};
 }
 
        smssend_tryall $store_ignorenewmail,$do{"sms"},%args if $do{"sms"};
 }
 
@@ -458,12 +453,12 @@ my($message)=@_;
        local $Audit=Mail::Audit->new(
                        "emergency"=>"$Mail/emergency",
                        "data"=>[map("$_\n",split("\n",$message))],
        local $Audit=Mail::Audit->new(
                        "emergency"=>"$Mail/emergency",
                        "data"=>[map("$_\n",split("\n",$message))],
-                       "log"=>"$HOME/.lacemail.log",
+                       "log"=>"$HOME/.perlmail.log",
                        "loglevel"=>99,
                        );
        local @AuditStored=();
        do { smssend 0,$opt_smstest; return; } if $opt_smstest;
                        "loglevel"=>99,
                        );
        local @AuditStored=();
        do { smssend 0,$opt_smstest; return; } if $opt_smstest;
-       write_message("$Mail/input");
+       write_message("$Mail/input") or die;
        audit();
        warn 'Corrupted $_, repaired' if defined($save_)!=defined($_) || (defined($_) && $save_ ne $_);
 }
        audit();
        warn 'Corrupted $_, repaired' if defined($save_)!=defined($_) || (defined($_) && $save_ ne $_);
 }
@@ -481,7 +476,7 @@ sub razor2
        open CHILD,'|'
                                        .'('.'(razor-check 2>&1;echo >&3 $?)'
                                                        .'|sed "s/^/razor-check: /"'
        open CHILD,'|'
                                        .'('.'(razor-check 2>&1;echo >&3 $?)'
                                                        .'|sed "s/^/razor-check: /"'
-                                                       .'|logger -t "lacemail['.$$.']" -p mail.crit'
+                                                       .'|logger -t "perlmail['.$$.']" -p mail.crit'
                                                        .') 3>&1'
                                        .'|exit `cat`'
                        or return 0;
                                                        .') 3>&1'
                                        .'|exit `cat`'
                        or return 0;
@@ -624,7 +619,7 @@ sub muttrc_aliases
 }
 
 # FIXME: Unify
 }
 
 # FIXME: Unify
-# BEGIN lacemail-sendmail
+# BEGIN perlmail-sendmail
 # return: Mail::Address instance or undef()
 sub parseone
 {
 # return: Mail::Address instance or undef()
 sub parseone
 {
@@ -635,7 +630,7 @@ my($line)=@_;
        warn "Got ".scalar(@r)." addresses while wanting just one; when parsing: $line" if 1!=@r;
        return $r[0];
 }
        warn "Got ".scalar(@r)." addresses while wanting just one; when parsing: $line" if 1!=@r;
        return $r[0];
 }
-# END lacemail-sendmail
+# END perlmail-sendmail
 
 # FIXME: host may get multiple recipients and thus not showing "for <...>"
 # FIXME: muttrc_get("from") is too strict
 
 # FIXME: host may get multiple recipients and thus not showing "for <...>"
 # FIXME: muttrc_get("from") is too strict
@@ -729,14 +724,13 @@ my($header,$map)=@_;
                $text=~s/\b\Q$from\E\b/$to/gsi;
                }
        return if $text eq $orig;
                $text=~s/\b\Q$from\E\b/$to/gsi;
                }
        return if $text eq $orig;
-       $Audit->put_header("X-LaceMail-header_remap-$header",$orig);
+       $Audit->put_header("X-PerlMail-header_remap-$header",$orig);
        $Audit->replace_header($header,$text);
 }
 
 
 # MAIN
 
        $Audit->replace_header($header,$text);
 }
 
 
 # MAIN
 
-my $basedir=File::Basename::dirname($0);
 $Getopt::Long::ignorecase=0;
 die "GetOptions error" if !Getopt::Long::GetOptions(
                  "inetd"    ,sub { $opt_mode=\&inetd; },
 $Getopt::Long::ignorecase=0;
 die "GetOptions error" if !Getopt::Long::GetOptions(
                  "inetd"    ,sub { $opt_mode=\&inetd; },
@@ -746,21 +740,13 @@ die "GetOptions error" if !Getopt::Long::GetOptions(
                  "idle!"    ,\$opt_idle,
                  "idletest" ,sub { syslogging_restore(); print((defined($_=useridle()) ? $_ : "<undef>")."\n"); exit 0; },
                  "muttrc"   ,sub { syslogging_restore(); print scalar muttrc(); exit 0; },
                  "idle!"    ,\$opt_idle,
                  "idletest" ,sub { syslogging_restore(); print((defined($_=useridle()) ? $_ : "<undef>")."\n"); exit 0; },
                  "muttrc"   ,sub { syslogging_restore(); print scalar muttrc(); exit 0; },
-               "d|basedir=s",\&basedir,
                );
 # "Excessive arguments" checked in &inetd
 die "Missing mode" if !$opt_mode;
 
                );
 # "Excessive arguments" checked in &inetd
 die "Missing mode" if !$opt_mode;
 
-my $filenameMyAudit="$basedir/My-Audit.pm";
-open AUDIT,$filenameMyAudit or die "open \"$filenameMyAudit\": $!";
-{
-       local $/=undef();
-       eval <AUDIT> or die "eval \"$filenameMyAudit\": $@";
-       audit_init();
-       %alternates_host=map((lc($_)=>1),@alternates_host);
-       %dnsbl_whitelist=map((   $_ =>1),@dnsbl_whitelist);
-       }
-close AUDIT or warn "close \"$filenameMyAudit\": $!";
+PerlMail::Config::audit_init();
+%alternates_host=map((lc($_)=>1),@alternates_host);
+%dnsbl_whitelist=map((   $_ =>1),@dnsbl_whitelist);
 
 &$opt_mode();
 die "NOTREACHED";
 
 &$opt_mode();
 die "NOTREACHED";