#!/usr/bin/perl
#上記は、サ−バ−のパスにあわせる。
#####################################################################
#Pwd CGI Ver1.0
#Copyright (c) 1996/1997         K.Yamano 
#CGIの販売、転載、配布厳禁。
########################### 初期設定 #################################
#パスワード認証時に利用するパスワードを記入して下さい。只今、abcに設定中
#パスワードは、8字以内にして下さい。
$p = 'jsmsregr';

#パスワード認証後にジャンプ先のURLを記入(ジャンプ先ファイル名は、xxx.cgiでもOK）
$http = 'snkaitei_2007.htm';

#pwd.cgiまでのURLを記入
#$url = 'http://www2.jsms.or.jp/~cgi-bin/pwd/pwd.cgi';
$url = 'pwdSN.cgi';

#パスワード認証ウィンドウのキャンセルボタンを押した時のジャンプ先のURLを記入
#例えば、pwd.cgiのリンクが張られているページのURLを記入すればキャンセルボタンを押せばバックします。
#$url2 = 'http://www2.jsms.or.jp/index.html';
$url2 = '/bumon/bumon.htm';

#クッキーを利用する時はon、利用しない時は、off と記入。只今、onに設定中
$cooki = 'off';

#設置方法
#pwd.cgi.txtをpwd.cgiに変更。
#pwd.cgi のパーミッションを755に変更
#あなたのHPのどこかに、http://www.xxx.or.jp/~xxx/xxx/pwd.cgi のURLに
#リンクを張る、これをクリックすればパスワード認証ウィンドウがでます。
#サーバーによってはディレクトリーを見られる場合があるのでこの場合は
#index.htmlがあるホームディレクトリー内に上記ジャンプ先のファイル（$http）を置いたほうが安全。
#####################################################################
&dec;

if($FORM{'p'} eq $p){
&time;
print "Location:$http\n";
&SetCookie;
print "\n";

}elsif($FORM{'p'} ne "" && $FORM{'p'} ne $p){
$re = 'パスワードが違います。再入力して下さい。(半角英数字8字以内を入力)';
&pwd;

}else{
if($cooki eq 'on'){&cookieBoard;}
$re = 'パスワードを入力して下さい。(半角英数字8字以内を入力)';
&pwd;

}

sub pwd {
print "Content-type: text/html\n\n";
print <<HTML;
<html>
<HEAD><TITLE>Pwd</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-- JavaScript start
msg=prompt("$re","$cook{'PWD_P'}")
if(msg == null){location = "$url2"}
if(msg != null){
if(msg.length > 8 || msg == "") {alert("パスワードが8字以内か、空白でないか確認して下さい。")}
else{ location = "${url}?p=" + msg }
}
// JavaScript end -->
</SCRIPT></HEAD>
<body>
</body></html>
HTML
}







sub dec {
if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

@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;
	#&jcode'convert(*value,'sjis');
	$FORM{$name} = $value;
   }

}

################
#時間設定のサブル−チン
sub time {
               # 最終書込みから下記の設定後にクッキ−が削除されます
               #記入欄は下記のlocaltime(time + 30*24*60*60) 内に記述して下さい。
                     # 現在は10日後に設定しています。
                          # 30日後 30*24*60*60
                           #10日後 10*24*60*60
		           #1日後 24*60*60
		            # 12時間後 12*60*60
$ENV{'TZ'} = "GMT";
    ( $secm,$minm,$hourm,$daym,$monm,$yearm,$wdaym ) = localtime(time + 30*24*60*60);
                if ($yearm < 10)  { $yearm = "0$yearm";}
		if ($secm < 10)  { $secm = "0$secm";}
		if ($minm < 10)  { $minm = "0$minm";}
		if ($hourm < 10) { $hourm = "0$hourm";}
		if ($daym < 10)  { $daym = "0$daym";}
    #$mon++;
$day = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')[$wdaym];
$month = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec') [$monm];
$yearm = 1900 + $yearm;
}

# SetCookieヘッダを出力するサブルーチン
sub SetCookie {
#項目設定：
 #   "キ−ワ−ド=値 \^キ−ワ−ド,値 \^キ−ワ−ド,値; ";
 #上記のように記入する。記入例は下記をご覧ください。
	print "Set-Cookie: ";
        print "PWD_P=$FORM{'p'} \^; ";
	print "expires=$day, $daym-$month-$yearm $hourm:$minm:$secm GMT\n";
	
   
}
#デコ−ドサブル−チン
sub cookieBoard {

	local($key,$value);
	foreach (split(/; /,$ENV{'HTTP_COOKIE'})) {

		foreach (split(/ \^/)){
                  $_ =~ s/\,/=/g;
                   ($key, $value)  = split(/=/);

		if ($key ne "") {
			$cook{$key} = $value;
                     }
		}
	}

}
##########################
