#!/usr/bin/perl

##################################################################
# Program      : gate.cgi(Perl)
# Permission   : 705
# Date_written : 2000/02/23
# Author       : 良寛
# E-mail       : ryokan@po.minc.ne.jp
# HomePage     : http://www.minc.ne.jp/~ryokan/
##################################################################

# -----注意事項---------------------------------------------------
# (1)このスクリプトはフリーソフトです。このスクリプトを使用した
#    いかなる損害に対して作者は一切の責任を負いません。
# (2)設置に関する質問は質問コーナーにお願いいたします。
# ----------------------------------------------------------------

$ver = 'GATE v1.0';         # バージョン

require './jcode.pl';     

#=== 設定（ここから）=============================================
#
$title = '青年部会会員専用パスワード入力ページ';   # タイトル
$password = "ki.seinenbu";            # パスワード
$gatecgi = "pass.cgi";         # このスクリプト名（フルパス可）
$locate = "../kaiin/"; # 秘密のファイル
$bgcolor = "#ccffff";           # 背景色
$homepage ="../"; # トップページのURL
#
#=== 設定終了（ここまで）=========================================


# クッキー取得
&get_cookie;

# データ受信

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

# 受信データの編集

@buffer = split(/&/, $buffer);

foreach $pair (@buffer) {
    local($name, $value) = split(/=/, $pair);
    $name  =~ tr/+/ /;
    $name  =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ s/</&lt;/ig;
    $value =~ s/>/&gt;/ig;
    $value =~ s/\r\n/<br>/g;
    $value =~ s/\n/<br>/g;
    $value =~ s/\r/<br>/g;
    $value =~ s/\,/&#44;/g;
    &jcode'convert(*name,'sjis');
    &jcode'convert(*value,'sjis');
    &jcode'h2z_sjis(*value);
    $FORM{$name} = $value;
}

$pass = $FORM{'myName'};
$check = $FORM{'myCheck'};
if ($check eq ""){ $check="off";}


# パスワードチェック

if ($pass ne "" || $FORM{'submit'} eq "照会する"){
    &set_cookie;
    if ($pass eq $password){
        print "Location:$locate\n\n";
        exit;
    }else{
    &error_disp;
    }
}

&disp;

exit;

# 終了


#********************　SUBROUTINE　*******************************
#
#
# パスワード間違い表示

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

    print <<"HTML";
    <html>
    <title>もどる</title>
    <!--
    <META HTTP-EQUIV="Refresh" content="3;URL=$gatecgi">
    -->
    </head>
    <body bgcolor="#FFFFFF">
    <center>
    <p>
    <font size=8 color="#0000FF">パスワードが違います！</font>
    <p>
    </center>
    <hr>
    <p>$pass
    <hr>
    <p>
    </body>
    </html>
HTML
    exit;
}


# パスワード入力画面

sub disp {
    print "Content-type: text/html;charset=Shift_JIS\n\n";
    print "<html><head>\n";

    print "<title>$title</title>\n";
    print "</head>\n";
    print "<body link=\"#ccffff\" vlink=\"#ccffff\" bgcolor=\"$bgcolor\">\n";
    print "<p>\n";
    print "<p align=right>\n";
    print "<a href=\"$homepage\"><img src=\"modoru.gif\" alt=\"戻る\"></a></p>\n";
    print "<hr>\n";
    print "<div align=\"center\"><center>\n";
    print "<table border=\"0\">\n";
    print "<tr><td>\n";
    print "<p align=\"left\"><strong>■　パスワードを入力してください\n";
    print "<form name=\"ID\"";
    print "<p align=\"left\">ID：\n";
    print "<input type=\"text\" size=\"28\" readonly name=\"ID\" value=\"木更津法人会青年部会\" maxlength=\"24\">\n";
    print "</form>\n";
    print "</strong></p>\n";
    print "<form name=\"myFORM\"";
    print " action=$gatecgi method=\"POST\">\n";
    print "<p align=\"left\">Password：\n";
    if ($c_check eq "on" || $c_check eq "ON") {
        print "<input type=\"password\" size=\"20\" name=\"myName\" value=\"$c_pass\"></p>\n";
        print "<p align=\"left\">\n";
        print "<input type=\"checkbox\" checked name=\"myCheck\">\n";
    }else{
        print "<input type=\"password\" size=\"20\" name=\"myName\"></p>\n";
        print "<p align=\"left\">\n";
        print "<input type=\"checkbox\" unchecked name=\"myCheck\">\n";
    }
    print "パスワードを保存する</p>\n";
    print "<p align=\"center\">\n";
    print "<input type=\"submit\" name=\"submit\" value=\"照会する\">\n";
    print "<input type=\"reset\" value=\"取り消し\"> </p>\n";
    print "</form>\n";
    print "<SCRIPT Language=\"JavaScript\">\n";
    print "<!--\n";
    print "document.myFORM.myName.focus();\n";
    print "//-->\n";
    print "</SCRIPT>\n";
    print "</td></tr>\n";
    print "</table>\n";
    print "</center></div>\n";
    print "<hr>\n";
    print "<br><br><br>\n";
    ## 著作権を表示（削除禁止）
    print "<left><small><font color=\"#ccffff\"><!-- $ver -->\n";
    print "- <a href=\"http://www.minc.ne.jp/~ryokan/\" target=_top>ryokan_gate</a> -\n";
    print "</font></small></left>\n";
    print "</body></html>\n";
}


## クッキーを発行
sub set_cookie {
    # クッキーは90日間有効
    ($secg,$ming,$hourg,$mdayg,$mong,$yearg,
        $wdayg,$ydayg,$isdstg) = gmtime(time + 90*24*60*60);

    if ($yearg >= 100) { $yearg = $yearg - 100; }
    if ($yearg < 10) { $yearg = "0$yearg"; }
    if ($secg  < 10) { $secg  = "0$secg";  }
    if ($ming  < 10) { $ming  = "0$ming";  }
    if ($hourg < 10) { $hourg = "0$hourg"; }
    if ($mdayg < 10) { $mdayg = "0$mdayg"; }

    $month = ('Jan','Feb','Mar','Apr','May',
        'Jun','Jul','Aug','Sep','Oct','Nov','Dec') [$mong];
    $youbi = ('Sunday','Monday','Tuesday',
        'Wednesday','Thursday','Friday','Saturday') [$wdayg];

    $date_gmt = "$youbi, $mdayg\-$month\-$yearg $hourg:$ming:$secg GMT";
    $cook="pass\:$pass\,check\:$check";
    print "Set-Cookie: GATE=$cook; expires=$date_gmt\n";
}


## クッキーを取得
sub get_cookie {
    @pairs = split(/;/, $ENV{'HTTP_COOKIE'});
    foreach $pair (@pairs) {
        local($name, $value) = split(/=/, $pair);
        $name =~ s/ //g;
        $DUMMY{$name} = $value;
    }
    @pairs = split(/,/, $DUMMY{'GATE'});
    foreach $pair (@pairs) {
        local($name, $value) = split(/:/, $pair);
        $COOKIE{$name} = $value;
    }
    $c_pass  = $COOKIE{'pass'};
    $c_check = $COOKIE{'check'};

    if ($pass)  { $c_pass  = $pass; }
    if ($check) { $c_check = $check; }
}
