M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2009年9月15日 23:29

Pure-FTPdでAnonymousFTPでアップロードした時にWU-FTPD風にメールを飛ばすPerlスクリプト

このエントリーをはてなブックマークに追加 mixiチェック

XBOX 360でドリームクラブとかいうピュアな心の持ち主のためのゲームが発売されて僕の隣の席の人もレッドリング直したらしいからいよいよ買うのかもしれないなあと思いながら構築するサーバはPure-FTPdということとなっております。7年前だったらピュアと言ったらシスプリリピュアだったのに。花王だったらファミリーピュアだったのに。

AnonymousFTPでファイルをアップロードしたら、メールをするという機能は15年前のWU-FTPDでできていたのですが、このプロダクトは2003年で行進が止まっていて、WU-FTPD Development Groupはもうサーバすらつながらなく、x86_64環境だとconfigureできないという事態に至って、やはり新し目のFTPサーバを使おうと思ったわけであります。

それで、CentOS 5にPure-FTPdをインストールする場合は、RPMForgeにパッケージがあるんですけれども、アップロードしたらメールを出すスクリプトの部分が面倒。ともかく、自分で作ってみました。

#!/usr/bin/perl
 
# /etc/pure-ftpd/upload-check.pl
# chmod 700 upload-check.pl
# /usr/sbin/pure-uploadscript -B -r /etc/pure-ftpd/upload-check.pl
 
use strict;
use warnings;
use utf8;
use Encode;
use MIME::Lite;
 
# main
 
my $user = $ENV{'UPLOAD_VUSER'}; # Pure-FTPdの環境変数
if ( $user eq 'ftp' ) {
  submit_mail();
}
exit;
 
sub submit_mail {
  my $fullpath = $ARGV[0];
  my $filename = $fullpath;
  $filename =~ tr|[¥x00-¥x1f¥x7f]||d;
  $filename =~ s|^.+/||;
  my $size = $ENV{'UPLOAD_SIZE'}; # Pure-FTPdの環境変数
  
  my $data = q()
    . "uploaded $filename from anonymous user.¥n"
    . "File size is $size.¥n"
    . "Please move the file where it belongs."
    . q();
  
  my $subject = "New file uploaded: $filename";
  my $to      = 'fuga@example.com';
  my $from    = 'Pure-FTPd <hoge.example.com>';
  
  my $msg = MIME::Lite->new(
    From    => encode('MIME-Header-ISO_2022_JP', $from    ),
    To      => encode('MIME-Header-ISO_2022_JP', $to      ),
    Subject => encode('MIME-Header-ISO_2022_JP', $subject ),
    Data    => encode('ISO_2022_JP', $data ),
  );
  $msg->send();
  return;
}
 
__END__

WU-FTPDに似せてみた。あと、日本語メールもちゃんと飛ぶように作ってみたよ!

投稿 大野 義貴 [Perl] | |

トラックバック(1)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2976

新牧場物語:ピュア イノセントライフ - 新牧場物語:ピュア イノセントライフ (2009年9月16日 05:07)

新牧場物語:ピュア イノセントライフの最新動画や評価レビュー、攻略情報なら「新牧場物語:ピュア イノセントライフ」へ! 続きを読む

コメントする