$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: "ＭＳ Ｐゴシック", "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;

		# 문자 코드를 Shift_JIS 변환
		# &jcode'convert(*value, "sjis", "", "z");

		$value =~ s/\&/&amp\;/g;
		$value =~ s/\;/&#59\;/g;
		$value =~ s/\,/&#44\;/g;

		# 태그 처리
		if ($tagkey) {
			$value =~ s/<!--(.|\n)*-->//g;
			$value =~ s/<>/&lt;&gt;/g;
		} else {
			$value =~ s/</&lt;/g;
			$value =~ s/>/&gt;/g;
			$value =~ s/\"/&quot;/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/\//&#47\;/g;
		$value =~ s/\./&#46\;/g;
		$value =~ s/cgi/&#99\;&#103\;&#105\;/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";
	&copyright;
	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;#삭제 불가
