log.pl
changeset 2 b1954e2f261c
parent 1 a918a61afe98
child 3 a69ac45de2f0
equal deleted inserted replaced
1:a918a61afe98 2:b1954e2f261c
    18 use File::Temp qw(tempfile);
    18 use File::Temp qw(tempfile);
    19 use File::stat;
    19 use File::stat;
    20 use Getopt::Long;
    20 use Getopt::Long;
    21 use Mail::Mailer;
    21 use Mail::Mailer;
    22 use DBI;
    22 use DBI;
       
    23 use MIME::QuotedPrint;
    23 
    24 
    24 use lib "/etc/logbuch";
    25 use lib "/etc/logbuch";
    25 use config;
    26 use config;
    26 
    27 
    27 # print @config::mailto, "\n";
    28 # print @config::mailto, "\n";
    49 my $MAGIC = "#--- all changes below are ignored ---#\n";
    50 my $MAGIC = "#--- all changes below are ignored ---#\n";
    50 
    51 
    51 my $opt_db = 1;
    52 my $opt_db = 1;
    52 my $opt_mail = 1;
    53 my $opt_mail = 1;
    53 my $opt_message = "";
    54 my $opt_message = "";
       
    55 my $opt_apt = "";
    54 
    56 
    55 
    57 
    56 
    58 
    57 my $Dbh;
    59 my $Dbh;
    58 
    60 
    62 
    64 
    63 MAIN: {
    65 MAIN: {
    64 
    66 
    65     GetOptions("db!" => \$opt_db, 
    67     GetOptions("db!" => \$opt_db, 
    66 	"mail!" => \$opt_mail,
    68 	"mail!" => \$opt_mail,
    67 	"message=s" => \$opt_message)
    69 	"message=s" => \$opt_message,
    68 	or die eval "\"$USAGE\"";
    70 	"type=s" => \$opt_apt,
       
    71     ) or die eval "\"$USAGE\"";
    69 
    72 
    70     if ($opt_message =~ /^\.?\// and -f $opt_message) {
    73     if ($opt_message =~ /^\.?\// and -f $opt_message) {
    71 	@ARGV = ($opt_message);
    74 	@ARGV = ($opt_message);
    72 	$opt_message = join "", <>;
    75 	$opt_message = join "", <>;
    73     } elsif ($opt_message eq "-") {
    76     } elsif ($opt_message eq "-") {
    74 	$opt_message = join "", <STDIN>;
    77 	$opt_message = join "", <STDIN>;
       
    78     } elsif ($opt_message =~ /^((?:dist-)?upgrade):(.*)/) {
       
    79 	open(I, $2) or die "Can't open $2: $!\n";
       
    80 	$opt_message = "$1\n"
       
    81 	    . join "", grep /^(?:Inst|Conf|Remv)/, <I>;
       
    82 
       
    83 	die $opt_message;
    75     }
    84     }
    76 
    85 
    77     if ($opt_message =~ /\n/) {
    86     if ($opt_message =~ /\n/) {
    78 	$opt_message =~ s/\n/\n    /g;
    87 	$opt_message =~ s/\n/\n    /g;
    79     }
    88     }
   155 	    my $mailer = new Mail::Mailer "sendmail"
   164 	    my $mailer = new Mail::Mailer "sendmail"
   156 		or die "Can't create Mailer: $!\n";
   165 		or die "Can't create Mailer: $!\n";
   157 
   166 
   158 	    my $subject = (split /\n/, $text)[0];
   167 	    my $subject = (split /\n/, $text)[0];
   159 	    $subject =~ s/^\s*\S\s//;
   168 	    $subject =~ s/^\s*\S\s//;
   160 	    $subject = "Service [". hostname(). "]: $subject";
   169 	    $subject = encode_qp("Service [". hostname(). "]: $subject");
   161 
   170 
   162 	    $mailer->open({
   171 	    $mailer->open({
   163 		"To" => $mailto,
   172 		"To" => $mailto,
   164 		"Subject" => $subject});
   173 		"Subject" => $subject});
   165 	    print $mailer $head, "\n", $text;
   174 	    print $mailer $head, "\n", $text;