Initial commit of original files
This commit is contained in:
@@ -0,0 +1,305 @@
|
||||
#-----------------------------------------------------------#
|
||||
# 罪と罰++ 二律背反 #
|
||||
# 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;
|
||||
<style type="text/css">
|
||||
<!--
|
||||
.button1{
|
||||
font-family: "MS Pゴシック", "Osaka"; font-size: 12px; font-weight: 400; color: #bbbbcc;
|
||||
border: 2px #9999cc ridge; cursor: hand; background-color: #333366;
|
||||
}
|
||||
body { font-size: 12pt;}
|
||||
.mem { font-size: 10pt; color:#ddddee}
|
||||
.date { font-size: 10pt; color:#dddddd}
|
||||
.f1{font-size:16pt; font-family:'Symbol','Palatino'; color:#ff99cc;}
|
||||
-->
|
||||
</style>
|
||||
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 = <IN>;
|
||||
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/<!--(.|\n)*-->//g;
|
||||
$value =~ s/<>/<>/g;
|
||||
} else {
|
||||
$value =~ s/</</g;
|
||||
$value =~ s/>/>/g;
|
||||
$value =~ s/\"/"/g;
|
||||
}
|
||||
|
||||
# 改行等処理
|
||||
if ($name eq "comment" && $br_mode) {
|
||||
$value =~ s/\r\n/<br>/g;
|
||||
$value =~ s/\r/<br>/g;
|
||||
$value =~ s/\n/<br>/g;
|
||||
} else {
|
||||
$value =~ s/\r//g;
|
||||
$value =~ s/\n//g;
|
||||
}
|
||||
|
||||
# 荒らし処理 1
|
||||
$value =~ s/(<br>){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 "<center><hr width='75%'><P><h3>ERROR !</h3>\n";
|
||||
print "<P><font color=red><B>$_[0]</B></font>\n";
|
||||
print "<P><hr width='75%'></center>\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<!-- $2 -->/g;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 削除変更不可 必ず表示すること
|
||||
#著作権表示(削除・変更不可)
|
||||
sub copyright{
|
||||
if($mv_mode eq 'mv'){
|
||||
print <<"EOM";
|
||||
<br><hr color="white">
|
||||
過去の栄光 $ver<br>
|
||||
<a href="http://pom.to/" target="_blank">BLANK BOARD[ねっと遊園地♪]</a>
|
||||
</body>
|
||||
</html>
|
||||
EOM
|
||||
}else{
|
||||
print <<"EOM";
|
||||
<div align="right" style="font-size:12px">
|
||||
$ver<br>
|
||||
<a href="http://www17.big.or.jp/~obochan/vivid/" target="_blank" style="font-size:13px">Vivid Studio.</a><br>
|
||||
<a href="http://pom.to/" target="_blank" style="font-size:11px">BLANK BOARD[ねっと遊園地♪]</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
EOM
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
1;#削除不可
|
||||
Reference in New Issue
Block a user