#-----------------------------------------------------------# # 罪と罰++ 二律背反 # # Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # # Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # # BLANK BOARD [ http://pom.to/ ] # #-----------------------------------------------------------# # 各種掲示板共通設定 Version 1.1 #--- [注意事項] --------------------------------------------# # 1.このスクリプトは以下の利用規程に従って配布しています。 # # http://www24.big.or.jp/~obo/game/ore_/gild/ # #-----------------------------------------------------------# #=============================================================================== # 各種掲示板共通設定項目 require './jcode.pl'; # jcode.plのパス $ore_game = './ore_.cgi'; # 罪と罰++本体のパス $index = './index.cgi'; # 罪と罰++トップページ $usrdata = "./usrdata/"; # キャラデータ格納ディレクトリ。 $no_window = 1; # 現状維持・拘束時間以外の他窓禁止(0:なし 1:あり)[負荷対策] # 各国設定情報 @camp_info =( ['無所属', '#eeeeee'], ['アルメリア王国', '#ee9999'], ['フラリン教国', '#00eeee'], ['イギス連合国', '#88ee88'], ['ソーディナ帝国', '#ffccff'], ['ヤマト神国', '#55bbff']); # 称号 @sogo_p =('----','覇者','英雄','借金王','鬼畜',' ',' ',' ',' ',' ','管理人'); # デバックモード # なし:PC・モバイル両対応 # pc :PC限定モード(モバイル非対応) # mv :モバイル固定モード(PC上でモバイル画面をエミュレート表示) $mv_mode = ''; # 機種別設定 if( $ENV{'HTTP_USER_AGENT'}=~/DoCoMo/ || $ENV{'HTTP_USER_AGENT'}=~/UP\.Browser/ || $ENV{'HTTP_USER_AGENT'}=~/J-PHONE/ || $ENV{'HTTP_USER_AGENT'}=~/ASTEL/ || $ENV{'HTTP_X_JPHONE_MSNAME'} || $mv_mode eq 'mv'){ $mv_mode= 'mv'; # モバイル用フラグ(変更不可) $method = "GET"; # フォームメソッド(モバイル) }else{ $mv_mode= 'pc'; # PC用フラグ(変更不可) $method = "POST"; # フォームメソッド(PC) # スタイルシート $css =< EOM } # ホスト名取得モード # --> 0 : $ENV{'REMOTE_HOST'} で取得できる場合 # --> 1 : gethostbyaddr で取得できる場合 $get_remotehost = 1; # 他サイトから投稿排除時に指定 (http://から書く) $base_url = ""; # アクセス制限(ホスト名もしくはIPアドレスを記述) @deny = ( "anonymizer.com", "cache*.*.interlog.com", "", "" ); #=============================================================================== # 以下処理 基本的にこれ以下はいじらないように。 #------------------------------------------------------------------------------- # 参加者データ個別読み込み sub mandata_open{ open(IN,"$usrdata$id\.cgi") || &error("Open Error : $usrdata$id\.cgi"); $dat = ; close(IN); %DAT = ''; my @prats = split(/,/,$dat); foreach (0 .. $#prats){ my($key,$v) = split(/;/,$prats[$_]); $DAT{$key} = $v; } if($pw ne $DAT{'pw'}){ &error("パスワードが間違ってます"); } if($no_window){ &error("現在のイベントを終了してからご利用ください。") if($DAT{'pr'}<=0 && $DAT{'type'}); } } #------------------------------------------------------------------------------- # デコード処理 sub decode { local($buffer, @pairs, $name, $value); $post_flag=0; if($ENV{'REQUEST_METHOD'} eq "POST"){ $post_flag=1; &error("投稿量が大きすぎます") if($ENV{'CONTENT_LENGTH'}>8192); read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }else{ $buffer = $ENV{'QUERY_STRING'}; &error("投稿量が大きすぎます") if(length($buffer)>7500) } @pairs = split(/&/, $buffer); foreach (@pairs) { ($name,$value) = split(/=/); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 文字コードをシフトJIS変換 &jcode'convert(*value, "sjis", "", "z"); $value =~ s/\&/&\;/g; $value =~ s/\;/;\;/g; $value =~ s/\,/,\;/g; # タグ処理 if ($tagkey) { $value =~ s///g; $value =~ s/<>/<>/g; } else { $value =~ s//>/g; $value =~ s/\"/"/g; } # 改行等処理 if ($name eq "comment" && $br_mode) { $value =~ s/\r\n/
/g; $value =~ s/\r/
/g; $value =~ s/\n/
/g; } else { $value =~ s/\r//g; $value =~ s/\n//g; } # 荒らし処理 1 $value =~ s/(
){4,}//g; $value =~ s/( | ){6,}//g; # 記号置換え $value =~ s/\///\;/g; $value =~ s/\./.\;/g; $value =~ s/cgi/c\;g\;i\;/g; $in{$name} = $value; } &no_link($in{'comment'}) if($nolink); $com = $in{'comment'}; if(length($in{'comment'})>$com_limit) { &error("文字数エラーです 1"); } $mode = $in{'mode'}; if(length($in{'mode'})>10) { &error("文字数エラーです 2"); } $pw = $in{'pw'}; if(length($in{'pw'})>8 || !$in{'pw'}) { &error("文字数エラーです 3"); } $id = $in{'id'}; if(length($in{'id'})>24 || !$in{'id'}) { &error("文字数エラーです 4"); } $ids = $in{'ids'}; if(length($in{'ids'})>12) { &error("文字数エラーです 5"); } $rd = $in{'rd'}; if(length($in{'rd'})>1) { &error("文字数エラーです 6"); } if ($base_url) { $ref_url = $ENV{'HTTP_REFERER'}; $ref_url =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; if ($ref_url !~ /$base_url/i) { &error("不正なアクセスです"); } } } #------------------------------------------------------------------------------- # エラー処理 sub error { if (-e $lockfile) { unlink($lockfile); } &header(1); print "

ERROR !

\n"; print "

$_[0]\n"; print "


\n"; ©right; exit; } #------------------------------------------------------------------------------- # ロックファイルの生成 sub lock { local($lflag) = 0; foreach (1 .. 5) { if (-e $lockfile) { sleep(1); } else { open(LOCK,">$lockfile") || &error("Can't create $lockfile"); close(LOCK); $lflag = 1; last; } } if ($lflag == 0) { &error("LOCK is BUSY"); } } #------------------------------------------------------------------------------- # アクセスチェック(アクセス拒否) sub axs_check { &get_host; local($flag)=0; foreach (@deny) { if (!$_) { next; } $_ =~ s/\*/\.\*/g; if ($host =~ /$_/i || $addr =~ /$_/i) { $flag=1; last; } } if ($flag) { &error("アクセスを許可されていません"); } } #------------------------------------------------------------------------------- # ホスト情報取得 sub get_host { $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; $agent = $ENV{'HTTP_USER_AGENT'}; if ($get_remotehost) { if ($host eq "" || $host eq "$addr") { $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2); } } if ($host eq "") { $host = $addr; } } #------------------------------------------------------------------------------- # 時間取得 sub get_time { $time = time; ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime($time); $hour= "0$hour" if($hour<10); $min = "0$min" if($min<10); $sec = "0$sec" if($sec<10); $month++; $month = "0$month" if(month<10); @week=('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); $date = "$month/$mday($week[$wday]) $hour:$min"; srand($time); } #------------------------------------------------------------------------------- # プレイ規制 sub safetime { foreach (0 .. $#safetime){ &error("プレイ規制時間中です。暫くお待ち下さい。") if $hour eq $safetime[$_]; } } #------------------------------------------------------------------------------- # URL排除 sub no_link { $_[0] =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+)/$1/g; } #------------------------------------------------------------------------------- # 削除変更不可 必ず表示すること #著作権表示(削除・変更不可) sub copyright{ if($mv_mode eq 'mv'){ print <<"EOM";

過去の栄光 $ver
BLANK BOARD[ねっと遊園地♪] EOM }else{ print <<"EOM";
$ver
Vivid Studio.
BLANK BOARD[ねっと遊園地♪]
EOM } } 1;#削除不可