#!/usr/bin/perl
# 最終修正：2000.06.15
# 上のライン: perlパス(サーバー環境が異なる場合修正)
# 下のライン: 'config.cgi'のパス(全体パスを入力する環境でのみ全体パスに修正)

require './config.cgi'  ;






# このファイルは'テクノート2000'内の各ボードにリンクするファイルです。 
# 各ボートの中で'案内'ボタンを押した時に基本的に表示されます。
# 下のHTMLタグを直接修正して自分の好みに合わせてください。
# BOARDのリンク追加、削除は基本構成を参照して直接下記のHTMLを修正してください。 

# 参考: 'myboard'という名前のBOARDがあると仮定
# このBOARDの掲示記事数を表示するためには" $MANY{'myboard'} "を入力します。
 

# このファイルは'テクノート2000'運営に必ずしも必要なファイルではありません。
# 必要な場合だけご使用下さい。


# 各BOARDの'案内'ボタンのリンクURLは各BOARDの'設定'ページで
# 他のURLに再指定できます。


# 修正項目確認

#  [1] BOARDの名前の前のBALLアイコン
$boardicon = "<img border=0 src=$Baseimg_url/point3.gif>";

# [2] ホームボタンリンクのURL
$homeiconlink = 'http://www.ink.or.jp';

# [3] メモ記事全体保存ライン数(ファイル)
$MemoSave = '200' ;

# [4] メモ記事ページ当たり出力ライン数(画面)
$MemoPrint = '15';

# [5] メモ記事へのHTMLタグ許可 'Y' or 'N'
$HtmlMemo = 'N';

# [6] メモ記事連続書込み制限
$Writecut = '5';

# [7]テクノート全体検索時検索から除外するBOARDの指定
#  BOARDの名前の間は'/'で区分すること
# 例、$NoSearchBoard = 'abcboard/memberboard/xxboard';
$NoSearchBoard = '';

# [8] 掲示記事数を読み込むか否かの指定
# 各BOARDの登録された掲示記事の個数を表示する必要がない時は
# 下の'N'を指定して必要でない動作を遮断する。
$CountMany = 'Y';



&parse;
&ReadBoardIndex;
&WriteExplian;
&CheckBrowser;
&ExplianOpenWindows;
&ReadMemoText;




# 下のHTMLタグを直接修正して自分の好みにデザインしてください。

print "Content-type: text/html\n\n";

print <<END;

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>インターネット鹿角掲示板　ＩＮＤＥＸ</title>
<META content="text/html; charset=EUC-JP" http-equiv="Content-Type">
<script language=Javascript>
<!--
 function NewWindows(impt) {
    if(impt == 1){
      opennew = window.open('', 'aa', 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,copyhistory=0,width=350,height=350');
    }
    else{
       opennew = window.open('', 'bb', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=500,height=500');
    }
    opennew.focus();
    return;
 }

function clearField(field){
	if (field.value == field.defaultValue) {
		field.value = " ";
	}
}

function checkField(field){
	if (field.value == " ") {
		field.value = field.defaultValue;
	}
}


//-->
</script>


<STYLE TYPE="text/css">
<!--
A:link {
TEXT-DECORATION: none
} 
A:visited {
TEXT-DECORATION: none
} 
A:hover {
COLOR: red; TEXT-DECORATION: underline
BODY {
	FONT-FAMILY: ＭＳ ゴシック,Tahoma,Verdana,MS Sans Serif,Courier New; FONT-SIZE: 10pt
}
TR {
	FONT-FAMILY: ＭＳ ゴシック,Tahoma,Verdana,MS Sans Serif,Courier New; FONT-SIZE: 10pt
} 
TD {
	FONT-FAMILY: ＭＳ ゴシック,Tahoma,Verdana,MS Sans Serif,Courier New; FONT-SIZE: 10pt
} 
P {
	FONT-FAMILY: ＭＳ ゴシック,Tahoma,Verdana,MS Sans Serif,Courier New; FONT-SIZE: 10pt
}
-->
</style>


</head>
<BODY aLink=red link=#0044ff text=#000000 vLink=#0044ff>
<center>
<img src="$Userimg_url/titlekazuno.gif" width="258" height="53" border="0" alt="Your title image">
<br><br>



<!---------------------------------- INFORMATION INDEX(board index) --------------------------------> 

<table border=1 borderColorDark=#ffffff borderColorLight=#555555 cellPadding=3 
cellSpacing=0 width=680>
  <tr>
    <td align=middle background="$Baseimg_url/titlebar2.gif" 
    colSpan=3><b><font color=#ffffff size=3>BOARD INDEX</font></b> </td></tr>
  <tr bgColor=#f2f2f2>
       <td>$boardicon
       <a href="$cgi_dir_url/$maincgorfile?board=FREE_BOARD">自由掲示板$MANY{'FREE_BOARD'}</a></td>
       <td>$boardicon
       <a href="$cgi_dir_url/$maincgorfile?board=qaboard">質問返事$MANY{'qaboard'}</a></td>
	   <td>$boardicon
       <a href="$cgi_dir_url/$maincgorfile?board=sail">売ります・譲ります$MANY{'sail'}</a></td>
   </tr>
	
  <tr bgColor=#f2f2f2>
        <td>$boardicon
        <a href="$cgi_dir_url/$maincgorfile?board=vote">投票、討論の部屋$MANY{'vote'}</a></td>
        <td>$boardicon
        <a href="$cgi_dir_url/$maincgorfile?board=pds">公開資料室$MANY{'pds'}</a></td>
	   <td>$boardicon
       <a href="$cgi_dir_url/$maincgorfile?board=buy">買います・譲ってください$MANY{'buy'}</a></td>
    </tr>
    
  <tr bgColor=#f2f2f2>
        <td>$boardicon
        <a href="$cgi_dir_url/$maincgorfile?board=iconbank">アイコンバンク$MANY{'iconbank'}</a></td>
        <td>$boardicon
        <a href="$cgi_dir_url/$maincgorfile?board=members">会員専用の部屋$MANY{'members'}</a></td>
		<td>$boardicon
       <a href="$cgi_dir_url/$maincgorfile?board=guestpr">自由広告$MANY{'guestpr'}</a></td>
    </tr>

  <tr bgColor=#f2f2f2>
         <td>$boardicon
         <a href="$cgi_dir_url/$maincgorfile?board=masage">メッセージ$MANY{'masage'}</a></td>
         <td>$boardicon
         <a href="$cgi_dir_url/$maincgorfile?board=guestbook">ゲストブック$MANY{'guestbook'}</a></td>
		 <td>$boardicon
         <a href="$cgi_dir_url/$maincgorfile?board=mastermemo">管理者独り言$MANY{'mastermemo'}</a></td>
    </tr>
</table>


<!---------------------- search form------------------------------------------------->

<form method="get" action="$cgi_dir_url/$madecg">
     <input type="hidden" name="command" value="search">
     <input type="hidden" name="NoSearchBoard" value="$NoSearchBoard">
     <img src=$Baseimg_url/search.gif width=18 height=19>
     <INPUT type="text" name="words" size=15 $FormStyle><SELECT name="where" $FormStyle1>
     <OPTION value="1" selected>目録</OPTION>
     <OPTION value="3" >題名</OPTION>
     <OPTION value="2" >名前</OPTION>
     <OPTION value="4" >本文</OPTION>
     <OPTION value="5" >全体</OPTION>
     </SELECT><SELECT name="rgtime" $FormStyle1>

	 <!-----------下の日数をもっと細かく設定することもできます。--------->
	 <!-----------もっと単純化したり削除することも可能です。-------------->

     <OPTION value="" selected>全体</OPTION>
     <OPTION value="1" >最近1日</OPTION>
     <OPTION value="2" >最近2日</OPTION>
     <OPTION value="4" >最近4日</OPTION>
     <OPTION value="6" >最近6日</OPTION>
     <OPTION value="8" >最近8日</OPTION>
     <OPTION value="10" >最近10日</OPTION>
     <OPTION value="20" >最近20日</OPTION>
     <OPTION value="30" >最近30日</OPTION>
     <OPTION value="60" >最近60日</OPTION>
     <OPTION value="120" >最近120日</OPTION>
     <OPTION value="240" >最近240日</OPTION>
     <OPTION value="365" >最近365日</OPTION>
     </SELECT><SELECT name="how" $FormStyle1>
     <OPTION value="and" selected>AND</OPTION>
     <OPTION value="or" >OR</OPTION>
     </SELECT><INPUT align=absMiddle 
src="$Baseimg_url/search2.gif" type=image><br>
     <FONT style="FONT-SIZE:9PT;">(↑)複数検索語は(英数)スペースまたはコンマで区分</FONT>
</form>



<!------------------ board map table---------------------------------------------->


<TABLE border=1 borderColorDark=#ffffff borderColorLight=#555555 cellPadding=3 
cellSpacing=0 width=680>
  <TBODY>
  <TR>
    <TD align=middle 
      background="$Baseimg_url/titlebar2.gif"><B><FONT 
      color=#ffffff size=3>BOARD MAP</FONT></B> </TD></TR>
  <TR bgColor=#f2f2f2><td>$ErrorMsg

		<!-----------ここに直接内容を入力することもできます。------->


END


# textファイルに保存される内容を表示
&ExplianPrint;



# 管理者書込みツール
if($FORM{'ADMpass'} && (&ch_pass("$FORM{'ADMpass'}") eq &ReadMpass)){


	@mprint = @memo;
	foreach $key (@mprint) {
		$key =~ s/\r//g;
		$key =~ s/\n+//;
		$memobody .= "$key\n";
	}
	$textbody =~ s/\&nbsp\;/\&amp\;nbsp\;/g;

print <<END;

	<form method="post" action="$cgi_dir_url/$inforcg">
	   <hr size=1 color=#e5b056>
	   <input type=hidden name=where value="information.cgi">
	   <b>[管理者ツール]  - 上の記事(BOARD EXPLAIN)を再作成します。]</b><br>
	   <textarea name=comment cols=80 rows=10 style="width:100%; height:100">$textbody</textarea><br>
	   password: <input type=password name=pass value="$FORM{'ADMpass'}" size=10 $FormStyle>
	   <input type=submit value=" 保　存 " $FormStyle1> &nbsp; &nbsp; 
	   </form>
	
	<hr size=1 color=#e5b056>


	<form method="post" action="$cgi_dir_url/$inforcg">
	   <input type=hidden name=where value="guestmemo.cgi">
	   <b>[管理者ツール] - 下の記事(GUEST MEMO)を修正します。]</b><br>
	   <textarea name=comment cols=80 rows=10 style="width:100%; height:100">$memobody</textarea><br>
	   password: <input type=password name=pass value="$FORM{'ADMpass'}" size=10 $FormStyle>
	   <input type=submit value=" 保　存 " $FormStyle1> &nbsp; &nbsp; 
	   </form>

	<hr size=1 color=#e5b056>

	<form method=post action=$cgi_dir_url/$madecg>
	   <b>[管理者ログイン]</b><br>password:<input type=hidden name=command value=keeper>
	   <INPUT type=password name=password value="$FORM{'ADMpass'}" size=10 $FormStyle>
	   <INPUT type=submit value="LOGIN" $FormStyle1> &nbsp; &nbsp; 
	   <a href="$cgi_dir_url/$madecg?master=$FORM{'ADMpass'}">
	      Admin<img src=$Baseimg_url/rootkey.gif border=0 width=21 height=12 alt="総合管理(root)">
	   </a>

END
}


else{
	# 鉛筆アイコン、管理者パスワード入力フィールド
	print "<form method=post action=$cgi_dir_url/$inforcg> &nbsp; &nbsp; &nbsp; ";
	print "<INPUT type=password name=ADMpass size=10 $FormStyle>";
	print "&nbsp;<u>Admin</u>&nbsp;<input type=image src=$Baseimg_url/pen.gif border=0 width=14 height=14 alt='ADMIN(password)'>";
}



print <<END;

    </td></tr></form>
  </table></td>
&nbsp;<br>




<!---------------------------------------  guest memo  table----------------------------------->

<a xname="memo"> 
<table bgColor=#fff7f5 border=0 cellPadding=0 cellSpacing=0 width=680>
  <tr bgColor=#f9d4c9>
    <td colSpan=4><IMG height=1 
      src="$Baseimg_url/xxx.gif"></td></tr>
  <tr bgColor=#ffeee9>
    <td colSpan=4><IMG height=3 
      src="$Baseimg_url/xxx.gif"></td></tr>
  <tr bgColor=#fff2ef>
    <td colSpan=4><IMG height=5 
      src="$Baseimg_url/xxx.gif"></td></tr>
  <tr>
    <td align=middle colSpan=4><b><font color=#9c3706 size=3>GUEST 
      MEMO</font></b> <br><br></td></tr>

END



# textファイルに保存する内容表示
# 書込み入力フィールド表示
&GusetMemoPrint;




print <<END;

  <tr bgColor=#fff2ef>
    <td colSpan=4><IMG height=5 
      src="$Baseimg_url/xxx.gif"></td></tr>
  <TR bgColor=#ffeee9>
    <td colSpan=4><IMG height=3 
      src="$Baseimg_url/xxx.gif"></td></tr>
  <tr bgColor=#f9d4c9>
    <td colSpan=4><IMG height=1 
      src="$Baseimg_url/xxx.gif"></td></tr></table>

<br>
<a href="$homeiconlink"><img src=$Userimg_url/house.gif width=30 height=18 border=0></a>
</center>
</body>
</html> 

END

exit;

# ----------------------- HTML END --------------------------------------------#







# ------------------------memo print-----------------------------#
sub GusetMemoPrint{

chop(@memo);
$Size = @memo;
$ManyPage = ($Size/$MemoPrint) + 1;
$ManyPage += 1 if(($ManyPage*$MemoPrint) < $size);
$StartLine = $FORM{'memonum'} ? $FORM{'memonum'} : '0' ;
$j = $StartLine+($MemoPrint-1) ;

for($StartLine..$j){
	next if(!$memo[$_]);
	@Memoarr = split(/\|/,$memo[$_]);
	$txtnum = $Size - $_;
	print "  <tr>";


	# 順序変更、追加挿入、テーブル自体の変更もできます。
	# $Memoarr[0] : Date
	# $Memoarr[1] : Name
	# $Memoarr[2] : Text body
	# $Memoarr[3] : IP address number
	# $txtnum : Text number


	# Name
	print "<td><nobr><font  color=#00aaaa>
	&nbsp; $Memoarr[1]&nbsp;</font></nobr></td>";
			
	# Body
	print "<td>
	<img src=$Userimg_url/minitxt.gif width=11 height=11 alt=\"$Memoarr[3]\"> $Memoarr[2]&nbsp;</td>";
				
	# Date
	print "<td><nobr>&nbsp; $Memoarr[0]</nobr></td>";

	# Number
	print "<td width=5>$txtnum&nbsp;</td>";

				
	print "</tr>\n";
}
		
	print "<tr><td colspan=4 align=center><br>";
	for(1..$ManyPage){
		$tnum = ($_ - 1) * $MemoPrint;
		if($StartLine != $tnum){
			print "<a href=$cgi_dir_url/$inforcg?memonum=$tnum&xname=#memo>[$_]</a>";
		}
		else{
			print "[$_]";
		}
	}

	$GsWrName = $FORM{'name'} if($FORM{'name'});
	$GsWrName = 'Name' if(!$GsWrName);

	print "</td></tr>\n";

	# メモ記事入力フォーム
	print "<form method=post action=\"$cgi_dir_url/$inforcg?xname=\#memo\">";
	print "<tr><td colspan=4 align=center>";
	print "<input type=text name=\"name\" size=8 maxlength=7 value=\"$GsWrName\" ";
	print " onBlur=\"checkField(this)\" onFocus=\"clearField(this)\" $FormStyle>\n";
	print "<input type=text name=\"memo\" size=30 maxlength=30 value=\"Comments\" ";
	print " onBlur=\"checkField(this)\" onFocus=\"clearField(this)\" $FormStyle>\n";
	print "
	<input type=submit value=\" 保   存 \" $FormStyle1></td></tr></form>";
}





sub parse{
	$_ = $ENV{'REQUEST_METHOD'};
	if (/POST/) {read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
	$ENV{'QUERY_STRING'} = $buffer;
	}else {$buffer = $ENV{'QUERY_STRING'};}
	@pairs = split(/&/, $buffer);
	foreach $pair (@pairs) {
	($name, $value) = split(/=/, $pair);
	$value =~ tr/+/ /;
	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	$FORM{$name} = $value;}
}


sub ch_pass{local($inpass_x,)=@_; $inpass_x =~ s/\s//g; $inpass=$inpass_x;
$chop1=chop($inpass); $chop2=chop($inpass); $chop3=chop($inpass); $chop4=chop($inpass);
$cryptword=$chop1.$chop2.$chop3.$chop4; $firstcrypt= crypt($cryptword,"$chop2$chop3");
$chop1=chop($firstcrypt); $chop2=chop($firstcrypt); return crypt($inpass_x,"$chop1$chop2");
}

sub ReadBoardIndex{
    @timeday =localtime(time);
	$cc = 	    ($timeday[4]+1)."$timeday[3]";
	if($CountMany ne 'N'){
		opendir(DIR,$board_dir_path);
			@BoardDir = grep((!/\./), readdir(DIR));
		closedir(DIR);
		foreach $key (@BoardDir) {
			open(TODAY,"$board_dir_path/$key/today.cgi");
				@todayRT = <TODAY>;
			close(TODAY);
			chop(@todayRT);
			if($todayRT[0] eq $cc){
				$zz = "/<font color=#ee3333>$todayRT[1]</font>";
			}else{
				$zz = '';
			}
			open(BOARD,"$board_dir_path/$key/$indexfile");
				@temparr = <BOARD>;
			close(BOARD);
			
			$MANY{$key} = '['.(@temparr + 0).$zz.']' ;
			undef @temparr ;
			undef @todayRT ;
		}
	}
}

sub WriteExplian{         
  if($FORM{'comment'} && $FORM{'pass'} && $FORM{'where'}){
		if(&ReadMpass eq &ch_pass("$FORM{'pass'}")){
			open(Write,">$config_dir_path/infortext/$FORM{'where'}");
				print Write $FORM{'comment'};
			close(Write);
			&permission("$config_dir_path/infortext/$FORM{'where'}");
		}
		else{
		      $ErrorMsg = '<b><font color=red>&nbsp; &nbsp; " ERROR - Wrong password ! "</font></b><br><br>';
		}
  }
}



sub ReadMpass{
     open(PASS,"$login_file_path");
          $readpass = <PASS>;
          $readpass =~ s/\n//g;
          $readpass =~ s/\r//g;
     close(PASS);
     $readpass = &ch_pass('technote') if(!$readpass);
     return ($readpass);
}



sub CheckBrowser{
  if($ENV{'HTTP_USER_AGENT'} =~ /MSIE/i){
    $FormStyle = 'style="BACKGROUND-COLOR: #ffffff; BORDER-BOTTOM: #333388 1px solid; BORDER-LEFT: #333388 1px solid; BORDER-RIGHT: #333388 1px solid; BORDER-TOP: #333388 1px solid; FONT-SIZE: 10pt"';
    $FormStyle1 = 'style="BACKGROUND-COLOR: #dddddd; BORDER-BOTTOM: #333388 1px solid; BORDER-LEFT: #333388 1px solid; BORDER-RIGHT: #333388 1px solid; BORDER-TOP: #333388 1px solid; FONT-SIZE: 9pt"';
  }
}

sub ExplianOpenWindows{
	$OpenWin1 = "target=\"aa\" onClick=\"NewWindows('1')\"";
	$OpenWin2 = "target=\"bb\" onClick=\"NewWindows('2')\"";
}

sub ExplianPrint{
	open(READ,"$config_dir_path/infortext/information.cgi");
	@read = <READ>;
	close(READ);

	foreach $key (@read){
		$textbody .= $key;
		if($key =~ /openwin-1/i){$key =~ s/$&/ $OpenWin1/;}
		if($key =~ /openwin-2/i){$key =~ s/$&/ $OpenWin2/;}
		  print "$key\n";
	}
	$textbody =~ s/\r\n/\n/g;
}



sub ReadMemoText{
	$cooname = $scripimport.'GsMmo';
	&lock;
	open(READ,"$config_dir_path/infortext/guestmemo.cgi");
	@memo = <READ>;
	close(READ);

			$FORM{'memo'}  =~ s/\s+//;
			$FORM{'name'}  =~ s/\s+//;
			$CooDay = $timeday[3].$timeday[2];
			&GetCooKie;

			if(($Wnum < $Writecut) && $FORM{'memo'} && $FORM{'name'} && ($FORM{'memo'}  ne 'Comments') && ($FORM{'name'} ne 'Name')){
				
			   if(((length($FORM{'memo'})) < 80) && ((length($FORM{'name'}))	< 15)){
				
				$mon = $timeday[4]+1 ;
				@week = ('日','月','火','水','木','金','土','日');

				$timeday[2] = '0'.$timeday[2] if($timeday[2] < 10);
				$timeday[1] = '0'.$timeday[1] if($timeday[1] < 10);
				$readdate = "$mon/$timeday[3]\[$week[$timeday[6]]\] $timeday[2]:$timeday[1]";

					foreach $key (@del_x_word) {
						$FORM{'memo'}  =~ s/$key/xx/g;
						$FORM{'name'}  =~ s/$key/xx/g;
					}
						if($HtmlMemo eq 'Y'){
							$FORM{'memo'} =~ s/script//gi;
							$FORM{'name'}=~ s/script//gi;
						}
						else{
							$FORM{'memo'} =~ s/</&lt\;/gi;
							$FORM{'name'}=~ s/</&lt\;/gi;
						}
						$FORM{'memo'} =~ s/font//gi;
						$FORM{'name'}=~ s/font//gi;
						$FORM{'memo'} =~ s/\|/\&\#124\;/g;
						$FORM{'name'}=~ s/\|/\&\#124\;/g;
						$NewWriteGueMemo = "$readdate|$FORM{'name'}|$FORM{'memo'}|$ENV{'REMOTE_ADDR'}\n";
						if($memo[0] ne "$NewWriteGueMemo"){
						      unshift(@memo,"$NewWriteGueMemo");
						      @memo2 = ('0','0');
						      for(0..$MemoSave){
						         $memo2[$_] = $memo[$_];
						      }
						      open(PRINT,">$config_dir_path/infortext/guestmemo.cgi");
						      print PRINT @memo2;
						      close(PRINT);
						      &permission("$config_dir_path/infortext/guestmemo.cgi");
						}
						print "Set-Cookie: $cooname=$FORM{'name'}|$Wnum|$CooDay; expires=$expDate; path=$expPath; \n";
				    }
				}
	&unlock;
}


sub GetCooKie{
	@cookies = split(/; /, $ENV{'HTTP_COOKIE'});
     foreach (@cookies) {
		($m_name, $m_value) = split(/=/, $_);
		$COOKIE{$m_name} = $m_value;
     }
	 ($GsWrName,$Wnum,$NotWr) = split(/\|/,"$COOKIE{$cooname}");
		if($CooDay == $NotWr){
			$Wnum += '1';
		}else{
			$Wnum = '0';
		}
}


sub lock{
  $Nowtime = time+20;
  while (-e "$config_dir_path/infortext/lock" && (time < $Nowtime)) {
  sleep(1);
  }
  open(LOCK, ">$config_dir_path/infortext/lock");
  close(LOCK);
}

sub unlock{
   unlink("$config_dir_path/infortext/lock");
}


1;