#! /usr/local/bin/perl # authorization require 'jcode.pl'; # # 初期設定 # $an1_file = "/home/user/bin/.vip"; $htpasswd2 = "/home/user/bin/htpasswd2"; $sendmail = "/usr/lib/sendmail"; $yourmail = 'your@mail.host'; if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } print "Content-type: text/html\n\n"; if ($buffer eq "") { &html_form; &html_trailer1; } else { &an_w; &html_trailer2; } sub w2_html { print "パスワードの発行\n"; print "\n"; print "

登録エラー

\n"; print "登録できませんでした。正しく記入されていますか?\n"; } sub w_html { print "パスワードの発行\n"; print "\n"; print "

登録済みです

\n"; print "このメールアドレスは既に登録されています。\n"; } sub error { print "パスワードの発行\n"; print "\n"; print "

エラー

\n"; print "システムにエラーが発生しましたので、登録処理を終了します。\n"; } sub html_trailer1 { print "

\n"; print "\n"; exit; } sub html_trailer2 { #発行 open(OUT,"| $sendmail $email") || die "error!\n"; print OUT "From: $yourmail\n"; print OUT "To: $email\n"; print OUT "Subject: information\n\n"; print OUT "\n"; print OUT "username : $email\n"; print OUT "password : $passwd\n\n"; print OUT "by $yourmail\n"; close(OUT); print "パスワードの発行\n"; print "\n"; print "

会員登録OK

\n"; print "電子メールでパスワードを送信しました。
\n"; print "忘れないようにしてください。忘れてしまった場合は管理者に削除依頼し、改めて登録します。

\n"; print "\n"; } sub html_form { print "パスワードの発行\n"; print "\n"; print "

会員登録オンラインサインアップ

\n"; print "
\n"; print "メールアドレス:
\n"; print "(半角で入力してください。発行されたパスワードはこの宛先に送られます。)
\n"; print "

\n"; print "

\n"; } sub an_w { @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s//>/g; $value =~ s/"/"/g; $FORM{$name} = $value; } $email = $FORM{'email'}; $email =~ s/\n//g; $email =~ s/\r//g; $email =~ s/ / /g; if ($email eq "") { &w2_html; &html_trailer1; exit; } if ($email =~ / /) { &w2_html; &html_trailer1; exit; } if (!($email =~ /(.*)\@(.*)\.(.*)/)) { &w2_html; &html_trailer1; exit; } open(DB,"$an1_file") || die "Cannot Open Log File $log_file: $!"; @lines = ; close(DB); foreach $line (@lines) { if ($line =~ /(.*)\:(.*)/) { $user = $1; if ($email eq $user) { &w_html; &html_trailer1; exit; } } } @char = ('a'..'k','m','n','p'..'z','A'..'K','M','N','P'..'Z','1'..'9'); srand(time|$$); foreach (0..7) { { local(@temp); push(@temp,splice(@char,rand(@char),1)) while @char; @char = @temp; } $passwd = $char[($_)] . $passwd; } $| = 1; print "\n"; system("$htpasswd2 '$an1_file' '$email' '$passwd'"); }