#! /usr/local/bin/perl
#
# change.cgi for change.htm(パスワード変更CGI)
#
# (c)rescue.ne.jp
#

#
# 初期設定(あなたの環境に合わせて設定してください)
#

$an1_file = "/home/user/bin/.vip";
$htpasswd2 = "/home/user/bin/htpasswd2";

$title =  "暫定パスワードの変更";


($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
if ($sec < 10)  { $sec = "0$sec";   }
if ($min < 10)  { $min = "0$min";   }
if ($hour < 10) { $hour = "0$hour"; }
$month = ($mon + 1);

print "Content-type: text/html\n\n";

$date_now = "$year年$month月$mday日 $hour時$min分$sec秒";

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

if ($buffer eq "") { &w2_html; &html_trailer1; }
else { &an_w; &html_trailer2; }

sub w2_html {

   print "<html><head><title>$title</title></head>\n";
   print "<body>\n";
   print "<h1>$title<hr></h1>\n";

   print "<h2>登録エラー</h2>\n";

}


sub w_html {

   print "<html><head><title>$title</title></head>\n";
   print "<body>\n";
   print "<h1>$title<hr></h1>\n";

   print "<h2>登録済み</h2>\n";
   print "このメールアドレスは既に登録されています。\n";

}


sub html_trailer1 {
   print "<p>\n";
   print "</body></html>\n";
   exit;
}

sub html_trailer2 { #発行

   print "<html><head><title>$title</title></head>\n";
   print "<body>\n";
   print "<h1>$title<hr></h1>\n";
   print "<p><h2>パスワードを変更しました</h2>\n";
   print "</body></html>\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/</&lt;/g;
          $value =~ s/>/&gt;/g;
          $value =~ s/"/&quot;/g;

    $FORM{$name} = $value;
}

$email = $FORM{'email'};
$email =~ s/\n//g;
$email =~ s/\r//g;

$password1 = $FORM{'password1'};
$password2 = $FORM{'password2'};

if ($password1 =~ /(\W)/) { &pass_err(1); }
if ($password2 =~ /(\W)/) { &pass_err(2); }
if ($password1 eq "" || $password2 eq "") { &pass_err(3); }
if ($password1 ne $password2) { &pass_err(4); }

$| = 1;
print "\n";
system("$htpasswd2 '$an1_file' '$email' '$password1'");

}

sub pass_err {

   $error = $_[0];

   print "<html><head><title>$title</title></head>\n";
   print "<BODY BGCOLOR=\"#000000\" TEXT=\"#ffbf00\" LINK=\"#ffffff\" VLINK=\"#ffffff\" ALINK=\"#ffffff\">\n";
   print "<h1>$title<hr></h1>\n";

   print "<h2>パスワードエラー($error)</h2>\n";
   print "確認の為に入力したパスワードが間違っています。または英数字以外の文字が使われています。<p>\n";
   &html_trailer1;
}