config root man

Current Path : /home/mf/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //home/mf/autorep

#!/usr/bin/perl -w
#
# autorep
#

#// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#// use Module
#// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

use strict;
use vars qw( $opt_t $opt_h $opt_l $opt_d %secrets );

use Getopt::Long;
use DB_File;
use Fcntl;
use Jcode;

use ADN::MailParse;
use ADN::Utility;

#// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#// Controller
#// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

    #// ----------------------------------------------------------
    #// Option Parse
    #// ----------------------------------------------------------

    $opt_t = '';
    $opt_h = '';
    $opt_l = 0;
    $opt_d = '';

    my @basename = split(/\//, $0);
    my $basename = pop(@basename);
    my $result   = GetOptions('t=s','h=s','l','d=s');

    if ($opt_t eq '' || $opt_h eq '') {
        print "usage: $basename -t [timer (hour)] -h [/home/cust_id/dom_name/user]\n";
        print "         -t => *must* option.\n";
        print "         -h => *must* option.\n";
        print "         -l => maddr, reply time listing\n";
        exit;
    }

    $opt_h =~ s/\/$//;

    unless ($opt_h =~ /^\/home\/cs(\d{5})/) {
        print "$opt_h seems to strange path.\n";
        exit;
    }

    unless ( -e $opt_h ) {
        print "$opt_h does not exist.\n";
        exit;
    }

    my $file0 = $opt_h . '/.mf/autorep.msg';
    my $file1 = $opt_h . '/.mf/autorep.db';

    unless ( -e $file0 ) {
        print "$file0 does not exist.\n";
        exit;
    }

    #// --------------------------------------------------------------
    #// Start
    #// --------------------------------------------------------------

    #// DB

    my $dbh = tie (%secrets, "DB_File", $file1, O_RDWR|O_CREAT, 0600);

    #// Show Reply Status

    if ($opt_l == 1) {
        foreach (sort {$secrets{$a} <=> $secrets{$b}} (keys %secrets)) {
            print ADN::Utility::utime2date($secrets{$_}) . "\t$_\n";
        }

        undef $dbh;
        untie %secrets;
        exit;
    }

    #// Parse Mail

    my @mail = ();
    foreach (<STDIN>) { push(@mail, $_); }

    my $parse   = new ADN::MailParse();
    my @header0 = qw( To Cc Precedence Auto-Submitted Subject );
    my @header  = $parse->header(@header0, \@mail);

    my @from = split(/ /, $mail[0]);
    my $from = $from[1];
    my $to   = $header[0];
    my $cc   = $header[1];
    my $prec = $header[2];
    my $auto = $header[3];

    my @path  = split(/\//, $opt_h);
    my $maddr = $path[4] . '@' . $path[3];

    #// Check Timer

    my $last = $secrets{$from};
    unless ($last) { $last = 0; }

    my $time0 = time();
    my $time1 = $last + ($opt_t * 60 * 60);

    if ($time0 < $time1) {
        undef $dbh;
        untie %secrets;
        exit;
    }

    #// Check Header

    my $reply = 1;

    if ($auto ne '') { $reply = 0; }

    if ($from =~ /-request\@/i ||
        $from =~ /-relay\@/i ||
        $from =~ /-owner\@/i ||
        $from =~ /owner-(.+)\@/i ||
        $from =~ /-approval\@/i ||
        $from =~ /postmaster\@/i ||
        $from =~ /uucp\@/i ||
        $from =~ /mailer\@/i ||
        $from =~ /^mailer-daemon/i) {
        $reply = 0;
    }

    if ($prec eq 'bulk' || $prec eq 'list') { $reply = 0; }

    if ($reply == 1) {
        unless ($to =~ /$maddr/) { $reply = 0; }

        if ($cc ne '') {
            if ($cc =~ /$maddr/) {
                $reply = 1;
            } else {
                $reply = 0;
            }
        }
    }

    #// Reply

    if ($reply == 1) {
        my $tml = <<"TML";
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Mime-Version: 1.0
Auto-Submitted: auto-replied
From: $maddr
To: $from
TML

        $tml .= `/bin/cat $file0`;

        my $mta = "/usr/local/sbin/sendmail -f$maddr $from";

        if ($opt_d) {
            $tml .= "\n" . $header[4];

            $mta = "/usr/local/sbin/sendmail -f$maddr $opt_d";
        }

        open MAIL, "| $mta";
        print MAIL Jcode::convert($tml, 'jis');

        $secrets{$from} = $time0;
    }

    undef $dbh;
    untie %secrets;

#// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#// Model
#// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Man Man