#! /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 "<html><head><title>パスワードの発行</title></head>\n"; print "<BODY BGCOLOR=\"#ffaaaa\" TEXT=\"#000000\">\n"; print "<h2>登録エラー</h2>\n"; print "登録できませんでした。正しく記入されていますか?\n"; } sub w_html { print "<html><head><title>パスワードの発行</title></head>\n"; print "<BODY BGCOLOR=\"#ffaaaa\" TEXT=\"#000000\">\n"; print "<h2>登録済みです</h2>\n"; print "このメールアドレスは既に登録されています。\n"; } sub error { print "<html><head><title>パスワードの発行</title></head>\n"; print "<BODY BGCOLOR=\"#ffaaaa\" TEXT=\"#000000\">\n"; print "<h2>エラー</h2>\n"; print "システムにエラーが発生しましたので、登録処理を終了します。\n"; } sub html_trailer1 { print "<p>\n"; print "</body></html>\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 "<html><head><title>パスワードの発行</title></head>\n"; print "<BODY BGCOLOR=\"#ffaaaa\" TEXT=\"#000000\">\n"; print "<h2>会員登録OK</h2>\n"; print "電子メールでパスワードを送信しました。<br>\n"; print "忘れないようにしてください。忘れてしまった場合は管理者に削除依頼し、改めて登録します。<p>\n"; print "</body></html>\n"; } sub html_form { print "<html><head><title>パスワードの発行</title></head>\n"; print "<BODY BGCOLOR=\"#ffaaaa\" TEXT=\"#000000\">\n"; print "<h2>会員登録オンラインサインアップ</h2>\n"; print "<form method=\"post\" action=\"authorization.cgi\">\n"; print "メールアドレス:<input type=text name=\"email\" size=50><br>\n"; print "(半角で入力してください。発行されたパスワードはこの宛先に送られます。)<br>\n"; print "<p>\n"; print "<input type=submit value=\"登録\"><input type=reset value=\"キャンセル\"></form><p>\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; $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 = <DB>; 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'"); }