#!/usr/bin/perl

#============================================================
#
#                    PHOTO-GALLERY SYSTEM
#                      Main CGI Module
#
                    $ver="1"; $build="120";
#
#            Copyright(C) DIGITALAND / Tetsuya Jo
#                  2004 Allrights Reserved.
#
#============================================================

#■ご利用上のご注意とお願い■
#
#●１：この CGI ファイルはノーサポートで公開しています。
#      万一、ご利用に際して利用者の方に何らかの損害等が発生しても、
#      DIGITALAND（城 哲也）は一切の責任を負いませんので、その旨
#      くれぐれもご承知置き下さい。
#
#●２：この CGI に関する各種初期設定は、dll フォルダ内にある
#      set.pl ファイルをメモ帳などで開いて行って下さい。
#
#●３：この CGI の改造・拡張はご自由に行って頂いて結構ですが、
#      改造の有無に関わらず、再配布はご遠慮下さい。
#
#●４：この CGI はカンパウェアとなっています。
#      ご利用者の方は、この CGI のご利用に際して代金をお支払い
#      頂く義務は一切ございませんが、もし、気に入っていただけて、
#      開発に掛かる経費を少し負担してやってもよいと思われる方は、
#      下記宛までカンパ頂けると非常に嬉しいです。
#
#      ■UFJ 銀行 光明池支店（コウミョウイケ 店番239）
#      ■普通：0428311
#      ■ジョウ テツヤ
#     （金額はご自由です）



require "dll/set.pl";
require "dll/jcode.pl";

if ($ENV{'REQUEST_METHOD'} eq "POST") {
	read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
	$buffer = $ENV{'QUERY_STRING'};
}
@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;
&jcode'convert(*value, "sjis", "", "z");
$value =~ s/\</&lt;/g;
$value =~ s/\>/&gt;/g;
$value =~ s/\"/&quot;/g;
$value =~ s/\#//g;
$value =~ s/\r\n/<BR>/g;
$value =~ s/\r/<BR>/g;
$value =~ s/\n/<BR>/g;
$F{$name} = $value;
}

if (!-e "$log/idxcnt.dat"){
	open FILE, ">$log/idxcnt.dat"; print FILE "1"; close(FILE);
	if ($pms){ chmod $pms, "$log/idxcnt.dat"; }
	open FILE, ">$log/idxcnt.dat"; print FILE "0"; close(FILE);
	if (!-e "$log/idxcnt.dat"){
		&error("ログファイルの生成に失敗しました<BR><BR>書き込みファイルのパーミッションを設定し直して下さい");
	}
	open FILE, ">$log/albumcnt.dat"; print FILE "0"; close(FILE);
	if ($pms){ chmod $pms, "$log/albumcnt.dat"; }
	open FILE, ">$log/albums.dat"; close(FILE);
	if ($pms){ chmod $pms, "$log/albums.dat"; }
}

open FILE, "$log/albums.dat";
@abody=<FILE>;
close(FILE);

$now=time;

if (!$F{'M'}){ $F{'M'}="index"; }
require "dll/$F{'M'}.pl";

exit;

sub f_lock{
$i=0;
while ($i < 5){
	if (open(LOCK, ">$log/$_[0].dat")){
		flock(LOCK, 2);
		print LOCK "$now";
		$i=10;
		last;
	} else { $i++; sleep 1; }
	if ($i < 10){
		open LOCK, "$log/$_[0].dat";
		$Bnow=<LOCK>;
		close(LOCK);
		if ($Bnow + 60 < $now){ unlink("$log/$_[0].dat"); }
	}
}
if ($i < 9) { &error("現在書き込みが混雑しています"); }
}

sub u_lock{
close(LOCK);
unlink("$log/$_[0].dat");
flock(LOCK, 8);
}

sub header(){
if (!$pagetitle){
$pagetitle='<IMG src="img/title.gif" height="63" border="0">';
}
if ($subtitle eq 'def'){
$subtitle='<IMG src="img/timg.jpg" width="206" height="60" border="0">';
}

print <<EOC;
Content-Type: Text/Html

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE>$webtitle</TITLE>
<STYLE type="text/css">
<!--
A{ color : #0000ff; text-decoration : none; }
A:VISITED{ color : #0000ff; }
A:HOVER{ color : red; background-color : #ffcccc; text-decoration : underline; }
BODY{ margin-top : 10px; margin-left : 0px; margin-right : 0px; margin-bottom : 0px; font-size : 14px; color : #333333; background-color : white; }
TD{ font-size : 14px; color : #333333; }
SMALL{ font-size : 12px; letter-spacing : 1px; }
big{ font-size : 13px; letter-spacing : 1px; }
-->
</STYLE>
</HEAD>
<BODY background="img/brick3.gif">
<FORM action="$cgi" method=post>
<INPUT type=hidden name=M value=$F{'M'}>
<CENTER>
<TABLE border="0" width="651" cellpadding="0" cellspacing="0">
  <TBODY>
    <TR>
      <TD>$pagetitle</TD>
      <TD align="right">$subtitle</TD>
    </TR>
  </TBODY>
</TABLE>
<IMG src="img/sp.gif" width="19" height="4" border="0"><BR>
<IMG src="img/line.gif" width="664" height="11" border="0"><BR>
<IMG src="img/line.gif" width="634" height="6" border="0"><BR>
</BODY>
EOC

}

sub error(){

print <<EOC;
Content-Type: Text/Html

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE>システムエラー</TITLE>
</HEAD>
<BODY>
<CENTER>
<FONT size=4 color=red><B>▼リクエストエラー▼</B></FONT>
<HR size=3 color=red>
<BR>
<HR size=1 color=red width=500>
<FONT color=red><B>$_[0]</B></FONT><BR>
<HR size=1 color=red width=500>
<BR>
<FONT size=2>ブラウザの『戻る』ボタンでお戻り下さい</FONT><BR>
<BR>
<HR size=3 color=red>
</CENTER>
</BODY>
</HTML>
EOC

exit;

}

sub Cookie_Set(){
	local($sec,$min,$hour,$mday,$mon,$year,$wday) = gmtime(time+$_[0]*86400);
	@week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
	@month=('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	$gmt = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT",$week[$wday],$mday,$month[$mon],$year+1900,$hour,$min,$sec);
}

sub Get_Cookie {
	@pairs = split(/;/, $ENV{'HTTP_COOKIE'});
	foreach (@pairs) {
		local($key,$val) = split(/=/);
		$key =~ s/\s//g;
		$GET{$key} = $val;
	}
	@pairs = split(/,/, $GET{"$_[0]"});
	foreach (@pairs) {
		local($key,$val) = split(/<>/);
		$C{$key} = $val;
	}
}

sub footer(){ # ■著作権表示部分 - 変更しないで下さい - ■■
print <<EOC;
<BR>
<IMG src="img/line.gif" width="634" height="6" border="0"><BR>
<IMG src="img/line.gif" width="664" height="11" border="0"><BR>
<SMALL><B>PHOTO-GALLERY</B> Ver.$ver Build:$build // Copyright&copy; <A href="http://www.digitaland.net/" target="_blank">Digitaland</A></SMALL><BR>
<IMG src="img/sp.gif" width="13" height="13" border="0">
</CENTER>
</FORM>
</BODY>
</HTML>
EOC
}