#! /usr/bin/perl
# - DIRECTORY GATE ver 2.10 / Last updated on Mar 2, 2007
# - (C)2007 WEB POWER. All Rights Reserved.
点数プロットページはこちらからどうぞ。
__HTML__ #---<登録設定>------------------------------------------------------------------ # # * このソフトを有料コンテンツに使用される場合のみライセンス登録が必要です。 # (詳細は付属のマニュアルを参照してください) # * 登録済みの場合、ライセンスコードとライセンス数を設定してください。 # * 設定した場合は、行頭の"$"の前のシャープ"#"は取り除いてください。 # # ◎ ライセンスコード (半角) #$INI{'LICENSE_CODE'} = '????-S6????'; #---<挿入設定>------------------------------------------------------------------ # # * 各ページのヘッダー部やフッター部にHTMLを挿入できます。 # * 各ページに共通のタイトルロゴやクレジットを入れたい場合に有用です。 # # ○ CGIで出力されたページにも以下の挿入設定を有効に (1:する/0:しない) # * この設定が有効になっていると、Content-Lengthヘッダーを出力しているCGI(ほ # とんど無いと思いますが)が正常に表示されない場合があります。 $INI{'CGI_INSERT'} = 0; # ○ 各ページのヘッダー部に挿入するHTML (${USERNAME}はユーザー名に置換) $INI{'INS_HEADER'} = <<'__HTML__'; __HTML__ # ○ 各ページのフッター部に挿入するHTML (${USERNAME}はユーザー名に置換) $INI{'INS_FOOTER'} = <<'__HTML__'; __HTML__ # ○ 各ページのBODY要素に挿入するBODY要素の属性 (の***の部分) #INI{'INS_BODY'} = ''; #---<パス/URLの設定>------------------------------------------------------------ # # * パス、URLはすべて半角で指定してください。(全角は一切使えません) # * [パス]とはサーバー内での場所です。http://で始まるURLとは違うものです。 # * 相対パスとはスクリプトの場所を基準としたパスの指定です。 # ../ => 1つ上のディレクトリ ./ => 同じディレクトリ # * 絶対パスとはサーバー内の一番上のディレクトリを基準としたパスの指定です。 # /usr/lib/sendmail /home/foo/public_html/cgi-bin/script.cgi # * 仮想アドレスとはURLの一部分(ドメイン名以降)を指します。 # http://www.domain.com/~foo/cgi-bin/script.cgi # ^ ドメイン名の後のスラッシュ"/"以降の部分 # (/~foo/cgi-bin/script.cgi のこと) # ● アクセス制限するファイルを置くディレクトリのパス (http://では指定不可) # * 絶対パスか相対パスで指定します。(絶対パスが分かる場合はそちらを推奨) # * 外部から直接アクセスできない場所(public_htmlの外)を指定します。できない場 # 合は、ディレクトリ名を複雑なものにしてください。 $SYS{'BASE_DIR'} = '/virtual/www/archer/1qazxdr5/'; # ● ユーザーファイルがあるディレクトリの絶対パス (http://では指定不可) # * 絶対パスか相対パスで指定します。(絶対パスが分かる場合はそちらを推奨) # * ユーザー・マネージャーのデータディレクトリのパスを指定します。 # * このディレクトリのパーミッションは777(書き込み属性)にしてください。 # * 上の $SYS{'BASE_DIR'} とは必ず別ディレクトリにしてください。 $SYS{'DATA_DIR'} = 'gatedata/'; # ○ ユーザーファイルの名前 (拡張子は付けない) # * 拡張子".usr"は自動的に付けられるため不要です。 $SYS{'FILE_NAME'} = 'user'; #---<応用設定>------------------------------------------------------------------ # # * これより下の項目は必要に応じて設定してください。 # * 通常は初期状態のままでも問題なく動作します。 # # ○ ファイルロック (1:使う/0使わない) $SYS{'USE_LOCK'} = 1; # ○ パスワード不一致許容回数 (0:無制限/1〜:) # * パスワードをここで指定した回数間違えると一定時間認証を拒否します。 $INI{'LIMIT'} = 5; # ○ ブラウザキャッシュを (0:許可する/1:許可しない) # * キャッシュを許可しない設定にした場合、ブラウザへコンテンツがキャッシュさ # れなくなるため、セキュリティーは高くなりますが、サーバーへの負荷が非常に # 大きくなります。 $INI{'NO_CACHE'} = 0; # ○ セッション有効時間[分] (1〜) # * ここで指定した時間(分)の無通信状態が続くとタイムアウトとなります。 $INI{'EXPIRES'} = 360; # ○ タイムゾーン (GMT=英国ロンドンとの時差) *日本は9時間 $INI{'TIME_ZONE'} = 9; # ○ CGIとして実行するファイルの拡張子 @EXE_SUFFIX = ('.cgi', '.php'); # ○ SSIとして実行するファイルの拡張子 @SSI_SUFFIX = ('.shtml', '.stm'); # ○ デフォルトインデックス (ファイル名を省略した場合に参照するファイル名) @DEFAULT_INDEX = ('index.html', 'index.htm', 'index.shtml', 'index.cgi'); # ○ クッキーの名前 *オプション # * 省略時はユーザーファイル名から自動生成されます。 $INI{'COOKIE_NAME'} = ''; # ○ クッキーの有効範囲 (仮想パス) *オプション #$INI{'COOKIE_PATH'} = "/"; # ○ クッキーの暗号化に使うキー (適当な英数字10文字で) # * パスワードではないので、メモしたり覚えたりする必要はありません。 $INI{'COOKIE_PASS'} = 'tBcDqXtx4v'; #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # # ▽ サーバー名を指定してください。 (通常は設定不要) # * "www.hostname.jp"と"hostname.jp"のようにアクセスできるホスト名が複数ある # 場合、標準として使うホスト名を指定します。 # * スキーム"http://"やスラッシュ"/"は含めないでください。 # * 設定した場合は、行頭の"$"の前のシャープ"#"は取り除いてください。 #$ENV{'SERVER_NAME'} = 'hostname.jp'; # ▽ このCGIの仮想パスを指定してください。 (通常は設定不要) # * パス情報(PATH_INFO)が正しく取得できない場合は設定してください。 # * ホスト名の"/"以降の部分が仮想パスです。 # * 必ずスラッシュ"/"から指定してください。 # * 設定した場合は、行頭の"$"の前のシャープ"#"は取り除いてください。 #$ENV{'SCRIPT_NAME'} = '/~foo/bar/filename.cgi'; #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ # ↑ 初期設定はここまでです ┃ #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ #main { # ! 局所変数宣言 my($err_msg, %cookie); #binmode STDOUT; # Windows系OSの場合はこの行のコメントを解除 $VERSION = q$DIRECTORY_GATE/2.10$; # バージョン情報(編集禁止) $SYS{'REQ_METHOD'} = 'POST'; # リクエストメソッド(GET/POST) require 'stdio.pl'; # ソースコードの文字コード認識 if (ord "漢" == 0xb4 || ord "漢" == -76) { $JCODE = "euc"; $JCODE2 = "EUC-JP"; $CHARSET = "; charset=EUC-JP"; } elsif (ord "漢" == 0x8a || ord "漢" == -118) { $JCODE = "sjis"; $JCODE2 = "Shift_JIS"; $CHARSET = "; charset=Shift_JIS"; } elsif (ord "漢" == 0x1b) { $JCODE = "jis"; $JCODE2 = "ISO-2022-JP"; $CHARSET = "; charset=ISO-2022-JP"; } elsif (ord "漢" == 0xe6) { $JCODE = "uft8"; $JCODE2 = "UTF-8"; $CHARSET = "; charset=UTF-8"; } # 環境変数 / 標準入力データ設定 %CGI = %SIO = (); $SYS{'PROTOCOL'} = $ENV{'HTTPS'} eq "on" ? "https" : "http"; $ENV{'PATH_INFO'} =~ s/^$ENV{'SCRIPT_NAME'}// if ($ENV{'PATH_INFO'} eq $ENV{'SCRIPT_NAME'}); $CGI{'HTTP_REFERER'} = substr($ENV{'HTTP_REFERER'}, 0, 256); $CGI{'HTTP_REFERER'} =~ s/%7E/~/gi; $CGI{'HTTP_USER_AGENT'} = substr($ENV{'HTTP_USER_AGENT'}, 0, 256); $CGI{'HTTP_USER_AGENT'} =~ tr/<>"&/()'-/; if ($ENV{'PATH_INFO'} eq "" && $ENV{'REQUEST_URI'} ne $ENV{'SCRIPT_NAME'}) { $ENV{'PATH_INFO'} = $ENV{'REQUEST_URI'}; $ENV{'PATH_INFO'} =~ s/^$ENV{'SCRIPT_NAME'}//; $ENV{'PATH_INFO'} =~ s/\?.*$//; } elsif ($ENV{'PATH_INFO'} eq $ENV{'REQUEST_URI'}) { $ENV{'PATH_INFO'} =~ s/^$ENV{'SCRIPT_NAME'}//; } if ($CGI{'SCRIPT_URI'}) { ($CGI{'SERVER_NAME'}, $CGI{'SCRIPT_PATH'}) = (split /\//, $CGI{'SCRIPT_URI'}, 4)[2,3]; $CGI{'SCRIPT_PATH'} = "/$CGI{'SCRIPT_PATH'}"; } else { $CGI{'SCRIPT_PATH'} = $ENV{'SCRIPT_NAME'} if (!$CGI{'SCRIPT_PATH'}); $CGI{'SERVER_NAME'} = $ENV{'SERVER_NAME'} if (!$CGI{'SERVER_NAME'}); $CGI{'SCRIPT_URI'} = "$SYS{'PROTOCOL'}://$CGI{'SERVER_NAME'}$CGI{'SCRIPT_PATH'}"; } $CGI{'SCRIPT_NAME'} = $1 if ($ENV{'SCRIPT_NAME'} =~ /([^\\\/]+$)/); $ENV{'REMOTE_ADDR'} = $ENV{'REMOTE_ADDR'}; if ($ENV{'REMOTE_HOST'} eq $ENV{'REMOTE_ADDR'} || !$ENV{'REMOTE_HOST'}) { $ENV{'REMOTE_HOST'} = gethostbyaddr(pack('C4',split(/\./, $ENV{'REMOTE_ADDR'})),2); $ENV{'REMOTE_HOST'} = $ENV{'REMOTE_ADDR'} if (!$ENV{'REMOTE_HOST'}); } # クッキー名を取得 (ユーザーファイル名を暗号化したもの) if ($INI{'COOKIE_NAME'} eq "") { $INI{'COOKIE_NAME'} = crypt $SYS{'FILE_NAME'}, substr($SYS{'FILE_NAME'}, -2, 2); $INI{'COOKIE_NAME'} = $INI{'COOKIE_NAME'} =~ /^\$1\$/ ? substr $INI{'COOKIE_NAME'}, 6 : substr $INI{'COOKIE_NAME'}, 2; $INI{'COOKIE_NAME'} =~ tr/\.\//-_/; } $INI{'COOKIE_PATH'} = $CGI{'SCRIPT_PATH'} if ($INI{'COOKIE_PATH'} eq ""); # ファイル名の設定 if ($SYS{'BASE_DIR'} !~ /^(\w:|\/)/) { my($full) = $ENV{'SCRIPT_FILENAME'}; $full =~ s/[^\/]*$//; foreach (split /\//, $SYS{'BASE_DIR'}) { next if ($_ eq "."); if ($_ eq "..") { $full =~ s/[^\/]*\/$//; } else { $full .= "$_/"; } } $SYS{'BASE_DIR'} = $full; } if ($SYS{'DATA_DIR'} !~ /^(\w:|\/)/) { my($full) = $ENV{'SCRIPT_FILENAME'}; $full =~ s/[^\/]*$//; foreach (split /\//, $SYS{'DATA_DIR'}) { next if ($_ eq "."); if ($_ eq "..") { $full =~ s/[^\/]*\/$//; } else { $full .= "$_/"; } } $SYS{'DATA_DIR'} = $full; } $USER_FILE = "$SYS{'DATA_DIR'}$SYS{'FILE_NAME'}.usr"; $SESSION_FILE = "$SYS{'DATA_DIR'}$SYS{'FILE_NAME'}.ses"; # キャリア判別と個体識別情報の取得 if (index($ENV{'HTTP_USER_AGENT'}, "DoCoMo") != -1 && ($::SYS{'MOBILE_NOCHECK'} || index($ENV{'REMOTE_ADDR'}, "210.153.84") == 0 || index($ENV{'REMOTE_ADDR'}, "210.136.161") == 0)) { $::UTN = $1 if ($ENV{'HTTP_USER_AGENT'} =~ /(ser\w{11,15})/); $::USER_AGENT = "i"; } elsif ((index($ENV{'HTTP_USER_AGENT'}, "J-PHONE") != -1 || index($ENV{'HTTP_USER_AGENT'}, "Vodafone") != -1 || index($ENV{'HTTP_USER_AGENT'}, "SoftBank") != -1) && ($::SYS{'MOBILE_NOCHECK'} || checkIPaddr(qw(202.179.204.0/24 202.253.96.248/29 210.146.7.192/26 210.146.60.192/26 210.151.9.128/26 210.169.130.112/29 210.169.130.120/29 210.169.176.0/24 210.175.1.128/25 210.228.189.0/24 211.8.159.128/25)))) { $::UTN = $1 if ($ENV{'HTTP_USER_AGENT'} =~ /\/(SN[^ ]+) /); $::USER_AGENT = "s"; } elsif ((index($ENV{'HTTP_USER_AGENT'}, "KDDI") != -1 || index($ENV{'HTTP_USER_AGENT'}, "UP.Browser") != -1) && ($::SYS{'MOBILE_NOCHECK'} || checkIPaddr(qw(210.169.40.0/24 210.196.3.192/26 210.196.5.192/26 210.230.128.0/24 210.230.141.192/26 210.234.105.32/29 210.234.108.64/26 210.251.1.192/26 210.251.2.0/27 211.5.1.0/24 211.5.2.128/25 211.5.7.0/24 218.222.1.0/24 61.117.0.0/24 61.117.1.0/24 61.117.2.0/26 61.202.3.0/24 219.108.158.0/26 219.125.148.0/24 222.5.63.0/24 222.7.56.0/24)))) { $::UTN = $ENV{'HTTP_X_UP_SUBNO'}; $::USER_AGENT = "e"; } else { $::USER_AGENT = "OTHER"; } #$::USER_AGENT = "iMODE"; $ENV{'HTTP_USER_AGENT'} = 'DoCoMo/2.0 P900i(c100;TB;W20H09)'; # モードの取得とファイル名の設定 if ($ENV{'PATH_INFO'} =~ s/\/DIRGATE=([-\w]*)//) { $MODE = $1; } $PATH_INFO = substr $ENV{'PATH_INFO'}, 1; # サインイン前の条件分岐 if ($MODE eq "LOGIN") { &Login; # サインイン } elsif ($MODE eq "COOKIE_ERROR") { &Show_CookieError; # クッキーエラーページ表示 } elsif ($MODE eq "SOFTWARE_KEYBOARD") { &Show_SoftwareKeyboard; # ソフトウェアキーボード表示 } elsif ($MODE eq "QUICK_LOGIN" && $USER_AGENT ne "OTHER") { Show_LoginPage('quick_login'); # クイックサインイン設定ページ表示 } # セッションIDの取得 if ($USER_AGENT ne "OTHER") { $SESSION_ID = $1 if ($PATH_INFO =~ /^([A-Za-z0-9]{16})/); } elsif (stdio::getCookie(\%cookie, $INI{'COOKIE_NAME'})) { $SESSION_ID = $cookie{'SID'} if ($cookie{'SID'} =~ /^[A-Za-z0-9]{16}$/); } # <セッションIDが取得できれば> if ($SESSION_ID) { # セッション情報取得に成功 => セッション有効期限を指定分延長 if (stdio::getSession($SESSION_FILE, \%cookie, $SESSION_ID, $INI{'EXPIRES'}*60)) { # IPチェック・認証時のIPと異なっている場合 (for PC) if ($USER_AGENT eq "OTHER" && $cookie{'IP'} ne $ENV{'REMOTE_ADDR'}) { $err_msg = qq| 認証IPアドレス不一致のため再サインインしてください。
\n|
. qq| 認証時のIPアドレス($cookie{'IP'})と現在のIPアドレス($ENV{'REMOTE_ADDR'})が異なっています。
認証端末不一致のため再サインインしてください。
\n|
. qq| 認証時の端末($cookie{'UA'})と現在の端末($CGI{'HTTP_USER_AGENT'})が異なっています。
有効期限が切れました。
\n|
. qq| セッションもしくはアカウントの有効期限が切れたためサインアウトしました。
セッションタイムアウトのため再サインインしてください
\n|
. qq| 無通信状態が$INI{'EXPIRES'}分以上続いたため、セッションがタイムアウトになりました。
これより先のページはユーザー認証が必要です。
\n"
. " ユーザー名とパスワードを入力して認証してください。
これより先のページはサインインが必要です。
\n" } } $license = " (ライセンス番号 : $INI{'LICENSE_CODE'})" if ($INI{'LICENSE_CODE'} =~ /^\d{4}-[A-Z]\d{5}/); # フォームの初期値の設定 if ($MODE eq "LOGIN") { $value{'DIRGATE_username'} = $SIO{'DIRGATE_username'}; $value{'DIRGATE_save'} = ' checked="checked"' if ($SIO{'DIRGATE_save'}); } elsif (stdio::getCookie(\%cookie, "$INI{'COOKIE_NAME'}.2", $INI{'COOKIE_PASS'})) { $value{'DIRGATE_username'} = $cookie{'USER'}; $value{'DIRGATE_password'} = $cookie{'PASS'}; $value{'DIRGATE_save'} = ' checked="checked"' if ($cookie{'USER'}); } # クエリー文字列の設定 if (@ARGV) { $argv = join "+", @ARGV; $argv =~ tr/\t\a\b\e\f\0//d; $argv =~ s/&/&/g; $argv =~ s/"/"/g; $argv =~ s/</g; $argv =~ s/>/>/g; $argv =~ s/\x0D\x0A|\x0D|\x0A/ /g; } if (!%SIO) { my($buffer); if ($ENV{'REQUEST_METHOD'} eq 'POST') { read STDIN, $buffer, $ENV{'CONTENT_LENGTH'}; } else { $buffer = $ENV{'QUERY_STRING'}; } foreach (split /[&;]/o, $buffer) { my($key, $val) = split /=/, $_, 2; stdio::urldecode(\$key); $key =~ tr/\t\a\b\e\f\0//d; $key =~ s/\x0D\x0A|\x0D|\x0A/\n/g; $key =~ s/&/&/g; $key =~ s/"/"/g; $key =~ s/</g; $key =~ s/>/>/g; $key =~ s/\n/ /g; stdio::urldecode(\$val); $val =~ tr/\t\a\b\e\f\0//d; $val =~ s/\x0D\x0A|\x0D|\x0A/\n/g; $val =~ s/&/&/g; $val =~ s/"/"/g; $val =~ s/</g; $val =~ s/>/>/g; $val =~ s/\n/ /g; if ($key !~ /^DIRGATE_/) { $HIDDEN .= qq| \n|; } $SIO{$key} = $val; } } # ユーザー名選択方式 if ($INI{'SELECT'}) { if (open IN, $USER_FILE) { my(@user); while (※このページを画面メモ・マイリンクに登録してください。
__HTML2__ テンポラリファイルの上書きオープンに失敗しました。
\n"
. " ユーザーファイルがあるディレクトリのパス(場所)の指定は正しいか、指定されたパスにディレクトリが存在するか、パーミッション(読み書き権)は正しく設定されているを確認してください。
ユーザーファイルを読み込みオープンに失敗しました。
\n"
. " ユーザーファイルがあるディレクトリのパス(場所)の指定は正しいか、指定されたパスにディレクトリが存在するか、パーミッション(読み書き権)は正しく設定されているを確認してください。
ただいまシステムへのアクセスが集中しており、あなたがご使用の端末からのリクエスト処理を保留しています。恐れ入りますが、しばらく待ってから再試行してください。繰り返しこの画面が表\示される場合、時間をずらして再試行してください。(リロードすることで再試行できます)
"); } elsif ($result == -1) { # ユーザー名該当無し push @err_msg, qq|該当するユーザー名が見つかりません。 セッションファイルの上書きオープンに失敗しました。
\n"
. " セッションファイルがあるディレクトリのパス(場所)の指定は正しいか、指定されたパスにディレクトリが存在するか、パーミッション(読み書き権)は正しく設定されているを確認してください。
ようこそ、$usernameさん
| 前回サインイン : | $last_login |
| サインイン回数 : | $field[7]回 |
サインイン処理をしています。そのまま数秒間お待ちください。
__HTML__
ようこそ
$usernameさん
前回サインイン
$last_login
($field[7]回目)
ありがとうございました
| サインアウト時間 : | $logout_time |
| 今回ご利用時間 : | $stay_time |
サインアウトは完了しました。またのご利用をお待ちしております。
__HTML__
今回ご利用時間
$stay_time
ご利用ありがとうございました。またのご利用をお待ちしております。
__HTML2__ exit; }#Logout #------------------------------------------------------------------------------ # ■ ユーザー認証 # # 呼出元 : Authorize # 引 数 : (ユーザーファイルパス, ユーザー名, パスワード) # 戻り値 : (1:成功/0:パスワード不備/-1:ユーザー名該当無し/ # -2:ファイル書けず/-3:ファイル読めず/-4:ロック中),@フィールド #------------------------------------------------------------------------------ sub authorize_User #($user_file, $username, $password) { # →仮引数 my($user_file, $username, $password) = @_; # ! 局所変数宣言 my(@field, $flag, $tmp_file, $i); $tmp_file = "$user_file.$$.tmp"; $flag = -1; # ファイルロック if ($SYS{'USE_LOCK'} && !stdio::lock($user_file)) { return -4; } if (!open IN, $user_file) { stdio::lock($user_file) if ($SYS{'USE_LOCK'}); return -3; } if (!open OUT, ">$tmp_file") { stdio::lock($user_file) if ($SYS{'USE_LOCK'}); return -2; } while (404 Not Found. The requested URL was not found on this server.
" . "リクエストされたURLはこのサーバー上に存在しません。URLの指定が間違っている、リンクが切れている、URLが変更になった可能\性が考えられます。
\n", '404 Not Found'); } if (!-r $open_file) { show_ErrorPage('[05]アクセス拒否', '403 アクセスが許可されていません', "403 Forbidden. You don't have permission to access this URL.
\n" . "リクエストされたURLへのアクセスは許可されていません。URLの指定が間違っている、パーミッションが正しく設定されていない可能\性が考えられます。
\n", '403 Forbidden'); } # インクルードするHTML設定 if ($INI{'INS_HEADER'} || $INI{'INS_FOOTER'} || $INI{'INS_BODY'}) { $body = $INI{'INS_BODY'}; $header = $INI{'INS_HEADER'}; $header =~ s/\$\{USERNAME\}/$username/g; $footer = $INI{'INS_FOOTER'}; $footer =~ s/\$\{USERNAME\}/$username/g; } $ENV{'SCRIPT_FILENAME'} = $open_file; # 実行ファイル(CGI)がリクエストされた場合 foreach (@EXE_SUFFIX) { my($suffix, $program) = split /,/; if ($open_file =~ /$suffix$/) { my($stdin_file, $stdin, $argv, $chdir); # カレントディレクトリの変更 $chdir = $open_file; $chdir =~ s/(.+)\/.*$/$1/; chdir $chdir; $stdin_file = "$SYS{'DATA_DIR'}$$.in.tmp"; $argv = join " ", @ARGV; # 標準入力をファイルに書き込み if ($ENV{'CONTENT_LENGTH'} > 0) { if (!open OUT, ">$stdin_file") { show_ErrorPage('[06]サーバーエラー', '500 サーバーエラー', "500 Server Error. An error occurred while processing this request.
" . "リクエストされたURLはこのサーバー上に存在しません。URLの指定が間違っている、リンクが切れている、URLが変更になった可能\性が考えられます。
\n", '500 Server Error'); } binmode OUT; binmode STDIN; print OUT $buffer while (read STDIN, $buffer, 4096); close OUT; $stdin = "<$stdin_file"; } # 1行目のコマンドライン読み込み if ($program eq "" || $program eq "<command>") { if (!open IN, $open_file) { unlink $stdin_file if (-f $stdin_file); show_ErrorPage('[07]アクセス拒否', '403 アクセスが許可されていません', "403 Forbidden. You don't have permission to access this URL.
\n" . "リクエストされたURLへのアクセスは許可されていません。URLの指定が間違っている、パーミッションが正しく設定されていない可能\性が考えられます。
\n", '403 Forbidden'); } $program =500 Server Error. An error occurred while processing this request.
" . "リクエスト処理中にサーバーエラーが発生しました。リクエスト内容が不正である、誤った設定がなされている可能\性が考えられます。
\n", '500 Server Error'); } if (!open PIPE, "$program $open_file $argv $stdin |") { unlink $stdin_file if (-f $stdin_file); show_ErrorPage('[09]サーバーエラー', '500 サーバーエラー', "500 Server Error. An error occurred while processing this request.
" . "リクエスト処理中にサーバーエラーが発生しました。リクエスト内容が不正である、誤った設定がなされている可能\性が考えられます。
\n", '500 Server Error'); } while (500 Server Error. An error occurred while processing this request.
" . "リクエスト処理中にサーバーエラーが発生しました。リクエスト内容が不正である、誤った設定がなされている可能\性が考えられます。
\n", '500 Server Error'); } while (403 Forbidden. You don't have permission to access this URL.
\n" . "リクエストされたURLへのアクセスは許可されていません。URLの指定が間違っている、パーミッションが正しく設定されていない可能\性が考えられます。
\n", '403 Forbidden'); } print "Content-Type: " . stdio::getMimeType($open_file) . "\n"; if ($INI{'NO_CACHE'}) { print "Pragma: no-cache\n" . "Cache-Control: no-cache\n"; printf "Last-Modified: %s, %d %s %d %s GMT\n", (split / /, scalar(gmtime((stat $open_file)[9])))[0,2,1,4,3]; } else { printf "Expires: %s, %d %s %d %s GMT\n", (split / /, scalar(gmtime time+$INI{'EXPIRES'}*60))[0,2,1,4,3]; } print "\n"; while (403 Forbidden. You don't have permission to access this URL.
\n" . "リクエストされたURLへのアクセスは許可されていません。URLの指定が間違っている、パーミッションが正しく設定されていない可能\性が考えられます。
\n", '403 Forbidden'); } binmode STDOUT; binmode IN; # ファイル表示開始 print "Content-Type: " . stdio::getMimeType($open_file) . "\n"; if ($open_file =~ /html?$/) { printf "Content-Length: %d\n", (-s $open_file)+length($body)+length($footer)+length($header); } else { print "Content-Length: " . (-s $open_file) . "\n"; } printf "Expires: %s, %d %s %d %s GMT\n", (split / /, scalar(gmtime time+$INI{'EXPIRES'}*60))[0,2,1,4,3]; #print "Pragma: no-cache\n" # . "Cache-Control: no-cache\n"; printf "Last-Modified: %s, %d %s %d %s GMT\n", (split / /, scalar(gmtime((stat $open_file)[9])))[0,2,1,4,3]; print "\n"; if ($open_file =~ /html?$/) { my($length) = 0; while (404 Not Found. The requested URL was not found on this server.
" . "リクエストされたURLはこのサーバー上に存在しません。URLの指定が間違っている、リンクが切れている、URLが変更になった可能\性が考えられます。
\n", '404 Not Found'); } elsif (!opendir DIR, $dir) { show_ErrorPage('[0E]アクセス拒否', '403 アクセスが許可されていません', "403 Forbidden. You don't have permission to access this URL.
\n" . "リクエストされたURLへのアクセスは許可されていません。URLの指定が間違っている、パーミッションが正しく設定されていない可能\性が考えられます。
\n", '403 Forbidden'); } while ($_ = readdir DIR) { if ($_ ne ".." && $_ ne ".") { s/&/&/g; s/"/"/g; s/</g; s/>/>/g; if (-d "$dir$_") { push @dir, $_; } else { push @file,$_; } } } closedir DIR; # HTML表示開始 print "Content-Type: text/html", $CHARSET, "\n" . "Pragma: no-cache\n" . "Cache-Control: no-cache\n" . "\n"; print <<__HTML__;
../ Parent Directory
__HTML__
# ディレクトリリスト表示開始
foreach (sort { $a cmp $b } @dir) {
my($file) = $_;
$file = substr($file, 0, 34) . ".." if (length $file >= 37);
print qq| $file/|;
print " " x (37 - length $file);
print " <DIR>" . ' ' . gmtime((stat "$dir$_")[9] + 9 * 3600);
print "\n";
}
print "\n";
foreach (sort { $a cmp $b } @file) {
my($file) = $_;
$file = substr($file, 0, 34) . ".." if (length $file >= 37);
print qq| $file|;
print " " x (38 - length);
print sprintf("%8d",(-s "$dir$_")) . ' Byte(s) ' . gmtime((stat "$dir$_")[9] +9 * 3600);
print "\n";
}
print <<__HTML__;
@{[scalar @file]} file(s) and @{[scalar @dir]} directory(ies) in this directory.
この認証システムでは、ユーザーの識別にHTTPクッキー(Cookie)と呼ばれる技術を使っています。そのため、クッキーに関する設定が正しくされていないと、ユーザーがサインインしているかどうかを識別できません。
お使いのブラウザでクッキーを拒否、あるいは制限するように設定されている可能\性があります。サインイン中は設定を変更してクッキーを受け入れるようにしてください。詳しくは各ソ\フトのマニュアルを参照してください。
(InternetExplorer6.0の場合、メニューバーの[ツール]→[インターネットオプション]→[プライバシー]の設定で[中-高]以下にしてください。)
ウィルス対策ソ\フトやファイアーウォールソ\フトをお使いの場合、ソ\フトの設定によってはクッキーを拒否、あるいは制限されている可能\性があります。サインイン中はソ\フトを無効にするか、設定を変更してクッキーを受け入れるようにしてください。詳しくは各ソ\フトのマニュアルを参照してください。
古いクッキーが残っている可能\性があります。お使いのブラウザに蓄積されているクッキーを削除して、ブラウザを再起動してください。
どうしても解決しない場合は、サイトの管理者へ連絡してください。
ご迷惑をおかけして申\し訳ありません。
問題が解決しない場合は以下の情報を添えて管理者に連絡してください。
$err_type ($VERSION)
TIME : @{[scalar gmtime(time+$INI{'TIME_ZONE'}*3600)]} (GMT $INI{'TIME_ZONE'})
HOST : $ENV{'REMOTE_HOST'} ($ENV{'REMOTE_ADDR'})
AGENT : $ENV{'HTTP_USER_AGENT'}
REFFER: $ENV{'HTTP_REFERER'}
ERRMSG: $!
[システムエラー]
$err_title
※端末の[戻る]で戻ってください。
$err_type($VERSION)
__HTML2__ exit; }#show_ErrorPage