#! /usr/local/bin/perl
#
# くずはすくりぷと Rev.0.1 Preview 9 (2000.9.3)
# (過去ログビューアー)
#
# ※ログ商人さんの Getlog Ver0.3b4.0921 (通常版及び月単位保存ログ対応版)
# の改造版です
#
# 2003 11/11 暫定で公開版
# 猫・生入さんの要望でaccesskey="1"→accesskey="0" に変更(2003/11/11)
# http検索ボタン
if ( $FORM{'http'} ) {
$FORM{'kwd'} = "http://";
}
# タイトル
if ( ( $FORM{'newtitle'} ) eq $bbstitle ) {
$addnbtgetlog = '';
} else {
$addnbtgetlog = " <INPUT type=\"hidden\" name=\"newtitle\" value=\"$FORM{'newtitle'}\">";
}
# multizilla
if ( $FORM{'multizilla'} ) {
$addblank_getlog = "\&multizilla=$FORM{'multizilla'}";
} else {
$addblank_getlog = '';
}
#荒らし対策(20050525)####
$anonyproxylimit = 1
;
if ( $FORM{'d'} eq '30' ) {
if ( $FORM{'c'} eq '900' ) {
&prterror;
exit;
}}
#################################################################################################
#bbq
#################################################################################################
sub checkProxyList
{
my $RADDR = $ENV{'REMOTE_ADDR'} ;
$RADDR =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
# my $query_addr = "$4.$3.$2.$1.niku.2ch.net";
my $query_addr = "$4.$3.$2.$1.unconfirmed.dsbl.org";
my $addr = join('.', unpack('C*', gethostbyname($query_addr)));
if ($addr eq '127.0.0.2')
{
&prterror ( 'ディレクトリが開けませんでしたb' );
# DispError("ERROR!","公開PROXYからの投稿は受け付けていません!!(1)");
}
return 0 ;
}
#################################################################################################
#
#################################################################################################
#########################
###############################################################################
# ダウンロード機能使用可否チェック
###############################################################################
sub dlchk {
my ( $ver, $uos, $isie, $iever, $ismac );
$ENV{'HTTP_USER_AGENT'} =~ m#^Mozilla/(\S+)\s(.+)#;
$ver = $1;
$uos = $2;
if ( $uos =~ /MSIE (\S)/ ) {
$isie = 1;
$iever = $1;
} else {
$isie = 0;
}
if ( $uos =~ /Mac/ ) {
$ismac = 1;
} else {
$ismac = 0;
}
if ( ( $ver >= 4 && !$isie ) || ( $ver >= 4 && $isie && $iever >= 5 && !$ismac ) ) {
return 1;
} else {
return 0;
}
}
###############################################################################
# 過去ログリスト表示
###############################################################################
sub oldloglist {
my ( @files, @check, $ftitle, $fsize, $ftime, @fgmtime, $dsptopic, $dspqmsg, $dspgzip, $dspdown );
if ( $oldlogfmt && $oldlogbtn ) {
$dspqmsg = <<EOF;
<INPUT type="checkbox" name="btn" value="checked">引用機能\使用
EOF
} else {
$dspqmsg = ' ';
}
if ( $gzip ) {
$dspgzip = <<EOF;
<INPUT type="checkbox" name="g" accesskey="G" value="checked" $S_gzchk[$gzipu]>gzip圧縮転送
EOF
} else {
$dspgzip = ' ';
}
if ( &dlchk ) {
$dspdown = '1">ダウンロード';
} else {
$dspdown = '2">全件表示';
}
opendir ( DIR, $oldlogfiledir ) || &prterror ( 'ディレクトリが開けませんでした' );
@files = readdir ( DIR );
closedir ( DIR );
@files = sort { $a <=> $b; } @files;
&prthtmlhead ( "$FORM{'newtitle'} 過去ログ検索・ダウンロード" );
print <<EOF;
<SCRIPT LANGAGE="JavaScript">
<!--
function allcheck(obj)
{
for(var i=0; i < obj.elements.length;i++){
if ( (obj.elements[i].type == "checkbox") && (obj.elements[i].name != 'alp') && (obj.elements[i].name != 'btn') && (obj.elements[i].name != 'btn') && (obj.elements[i].name != 'j') && (obj.elements[i].name != 'g') && (obj.elements[i].name != 'undo') ) {
obj.elements[i].checked = true;
obj.elements.undo.checked = false;
}
}
}
function undocheck(obj)
{
for(var i=0; i < obj.elements.length;i++){
if ( (obj.elements[i].type == "checkbox") && (obj.elements[i].name != 'alp') && (obj.elements[i].name != 'btn') && (obj.elements[i].name != 'btn') && (obj.elements[i].name != 'j') && (obj.elements[i].name != 'g') && (obj.elements[i].name != 'undo') ) {
obj.elements[i].checked = false;
}
}
}
//-->
</SCRIPT>
<P align="center"><STRONG><FONT size="+1">$FORM{'newtitle'} 過去ログ一覧</FONT></STRONG></P>
<FORM method="GET" action="$cgiurl">
<CENTER>
<TABLE border="0">
<TR>
<TD>
<HR size="2">
<TABLE border="0" width="100%">
<TR>
<TD colspan="5">過去ログ一覧</TD>
</TR>
EOF
$check[@files - 1] = 'checked';
for ( $i = 0 ; $i < @files ; $i++ ) {
if ( $files[$i] ne '.' && $files[$i] ne '..' ) {
( $j, $j, $j, $j, $j, $j, $j, $fsize, $j, $ftime, $j, $j, $j ) = stat ( "$oldlogfiledir$files[$i]" );
@fgmtime = gmtime ( $ftime + 32400 + $difftime );
@fgmtime[4]++;
$ftime = sprintf ( "%02d/%02d %02d:%02d:%02d", $fgmtime[4], $fgmtime[3], $fgmtime[2], $fgmtime[1], $fgmtime[0] );
if ( !$oldlogsavesw ) {
$files[$i] =~ /(\d\d\d\d)(\d\d)(\d\d)\.(\w+)/;
$ftitle = "$1/$2/$3";
} else {
$files[$i] =~ /(\d\d\d\d)(\d\d)\.(\w+)/;
$ftitle = "$1/$2";
}
if ( $oldlogfmt ) {
# $dsptopic = <<EOF;
# <TD align="right"><FONT size="-1"><A href="$cgiurl?m=l&e=$files[$i]">トピック一覧</A></FONT></TD>
#EOF
$dsptopic = '';
} else {
$dsptopic = '';
}
print <<EOF;
<TR>
<TD><INPUT type="checkbox" name="chk$files[$i]" value="checked" $check[$i]></TD>
<TD><A href="$cgiurl?m=g&e=$files[$i]">$ftitle</A></TD>
<TD align="right"><FONT size="-1">$ftime</FONT></TD>
<TD align="right"><FONT size="-1">$fsize bytes</FONT></TD>
$dsptopic
<TD align="right"><FONT size="-1"><A href="$cgiurl?m=g&e=$files[$i]&dl=$dspdown</A></FONT></TD>
</TR>
EOF
}
}
print <<EOF;
<tr><td colspan=4><INPUT TYPE="checkbox" name="all" onClick="allcheck(this.form)"><font size="-1">すべてをチェック(JavaScriptが必要)</font></td></tr>
<tr><td colspan=4><INPUT TYPE="checkbox" name="undo" onClick="undocheck(this.form)"><font size="-1">チェックを外す(JavaScriptが必要)</font></td></tr>
</TABLE>
</TD>
</TR>
<TR>
<TD>
<HR size="2">
<TABLE border="0">
<TR>
<TD colspan="3">
キーワード指定
</TD>
</TR>
<TR>
<TD colspan="3">
<INPUT type="text" name="kwd" accesskey="0" size="40" maxlength="255">
<INPUT type="submit" accesskey="R" value=" 検 索 ">
<INPUT type="submit" name="http" value=" http://検索">
</TD>
</TR>
<TR>
<TD>
<FONT size="-1">時刻指定</FONT>
</TD>
<TD>
<FONT size="-1">論理式</FONT>
</TD>
<TD>
<FONT size="-1">検索対象</FONT>
</TD>
</TR>
<TR>
<TD><FONT size="-1">
EOF
if ( !$oldlogsavesw ) {
print <<EOF;
<SELECT name="s1" size="1">
<OPTION value="0">0</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
<OPTION value="6">6</OPTION>
<OPTION value="7">7</OPTION>
<OPTION value="8">8</OPTION>
<OPTION value="9">9</OPTION>
<OPTION value="10">10</OPTION>
<OPTION value="11">11</OPTION>
<OPTION value="12">12</OPTION>
<OPTION value="13">13</OPTION>
<OPTION value="14">14</OPTION>
<OPTION value="15">15</OPTION>
<OPTION value="16">16</OPTION>
<OPTION value="17">17</OPTION>
<OPTION value="18">18</OPTION>
<OPTION value="19">19</OPTION>
<OPTION value="20">20</OPTION>
<OPTION value="21">21</OPTION>
<OPTION value="22">22</OPTION>
<OPTION value="23">23</OPTION>
</SELECT> 時
<SELECT name="e1" size="1">
<OPTION value="0">00</OPTION>
<OPTION value="5">05</OPTION>
<OPTION value="10">10</OPTION>
<OPTION value="15">15</OPTION>
<OPTION value="20">20</OPTION>
<OPTION value="25">25</OPTION>
<OPTION value="30">30</OPTION>
<OPTION value="35">35</OPTION>
<OPTION value="40">40</OPTION>
<OPTION value="45">45</OPTION>
<OPTION value="50">50</OPTION>
<OPTION value="55">55</OPTION>
</SELECT> 分から
<SELECT name="s2" size="1">
<OPTION value="24">24</OPTION>
<OPTION value="0">0</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
<OPTION value="6">6</OPTION>
<OPTION value="7">7</OPTION>
<OPTION value="8">8</OPTION>
<OPTION value="9">9</OPTION>
<OPTION value="10">10</OPTION>
<OPTION value="11">11</OPTION>
<OPTION value="12">12</OPTION>
<OPTION value="13">13</OPTION>
<OPTION value="14">14</OPTION>
<OPTION value="15">15</OPTION>
<OPTION value="16">16</OPTION>
<OPTION value="17">17</OPTION>
<OPTION value="18">18</OPTION>
<OPTION value="19">19</OPTION>
<OPTION value="20">20</OPTION>
<OPTION value="21">21</OPTION>
<OPTION value="22">22</OPTION>
<OPTION value="23">23</OPTION>
</SELECT> 時
<SELECT name="e2" size="1">
<OPTION value="0">00</OPTION>
<OPTION value="5">05</OPTION>
<OPTION value="10">10</OPTION>
<OPTION value="15">15</OPTION>
<OPTION value="20">20</OPTION>
<OPTION value="25">25</OPTION>
<OPTION value="30">30</OPTION>
<OPTION value="35">35</OPTION>
<OPTION value="40">40</OPTION>
<OPTION value="45">45</OPTION>
<OPTION value="50">50</OPTION>
<OPTION value="55">55</OPTION>
</SELECT> 分まで</FONT>
EOF
} else {
print <<EOF;
<SELECT name="s1" size="1">
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
<OPTION value="6">6</OPTION>
<OPTION value="7">7</OPTION>
<OPTION value="8">8</OPTION>
<OPTION value="9">9</OPTION>
<OPTION value="10">10</OPTION>
<OPTION value="11">11</OPTION>
<OPTION value="12">12</OPTION>
<OPTION value="13">13</OPTION>
<OPTION value="14">14</OPTION>
<OPTION value="15">15</OPTION>
<OPTION value="16">16</OPTION>
<OPTION value="17">17</OPTION>
<OPTION value="18">18</OPTION>
<OPTION value="19">19</OPTION>
<OPTION value="20">20</OPTION>
<OPTION value="21">21</OPTION>
<OPTION value="22">22</OPTION>
<OPTION value="23">23</OPTION>
<OPTION value="24">24</OPTION>
<OPTION value="25">25</OPTION>
<OPTION value="26">26</OPTION>
<OPTION value="27">27</OPTION>
<OPTION value="28">28</OPTION>
<OPTION value="29">29</OPTION>
<OPTION value="30">30</OPTION>
<OPTION value="31">31</OPTION>
</SELECT> 日
<SELECT name="e1" size="1">
<OPTION value="0">0</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
<OPTION value="6">6</OPTION>
<OPTION value="7">7</OPTION>
<OPTION value="8">8</OPTION>
<OPTION value="9">9</OPTION>
<OPTION value="10">10</OPTION>
<OPTION value="11">11</OPTION>
<OPTION value="12">12</OPTION>
<OPTION value="13">13</OPTION>
<OPTION value="14">14</OPTION>
<OPTION value="15">15</OPTION>
<OPTION value="16">16</OPTION>
<OPTION value="17">17</OPTION>
<OPTION value="18">18</OPTION>
<OPTION value="19">19</OPTION>
<OPTION value="20">20</OPTION>
<OPTION value="21">21</OPTION>
<OPTION value="22">22</OPTION>
<OPTION value="23">23</OPTION>
</SELECT> 時 から
<SELECT name="s2" size="1">
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
<OPTION value="6">6</OPTION>
<OPTION value="7">7</OPTION>
<OPTION value="8">8</OPTION>
<OPTION value="9">9</OPTION>
<OPTION value="10">10</OPTION>
<OPTION value="11">11</OPTION>
<OPTION value="12">12</OPTION>
<OPTION value="13">13</OPTION>
<OPTION value="14">14</OPTION>
<OPTION value="15">15</OPTION>
<OPTION value="16">16</OPTION>
<OPTION value="17">17</OPTION>
<OPTION value="18">18</OPTION>
<OPTION value="19">19</OPTION>
<OPTION value="20">20</OPTION>
<OPTION value="21">21</OPTION>
<OPTION value="22">22</OPTION>
<OPTION value="23">23</OPTION>
<OPTION value="24">24</OPTION>
<OPTION value="25">25</OPTION>
<OPTION value="26">26</OPTION>
<OPTION value="27">27</OPTION>
<OPTION value="28">28</OPTION>
<OPTION value="29">29</OPTION>
<OPTION value="30">30</OPTION>
<OPTION value="31" selected>31</OPTION>
</SELECT> 日
<SELECT name="e2" size="1">
<OPTION value="24">24</OPTION>
<OPTION value="0">0</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
<OPTION value="6">6</OPTION>
<OPTION value="7">7</OPTION>
<OPTION value="8">8</OPTION>
<OPTION value="9">9</OPTION>
<OPTION value="10">10</OPTION>
<OPTION value="11">11</OPTION>
<OPTION value="12">12</OPTION>
<OPTION value="13">13</OPTION>
<OPTION value="14">14</OPTION>
<OPTION value="15">15</OPTION>
<OPTION value="16">16</OPTION>
<OPTION value="17">17</OPTION>
<OPTION value="18">18</OPTION>
<OPTION value="19">19</OPTION>
<OPTION value="20">20</OPTION>
<OPTION value="21">21</OPTION>
<OPTION value="22">22</OPTION>
<OPTION value="23">23</OPTION>
</SELECT> 時 まで</FONT>
EOF
}
print <<EOF;
</TD>
<TD><FONT size="-1">
<SELECT name="ao">
<OPTION value="a">AND検索</OPTION>
<OPTION value="o">OR検索</OPTION>
</SELECT></FONT>
</TD>
<TD><FONT size="-1">
<SELECT name="tt">
<OPTION value="a">全文</OPTION>
<OPTION value="u">投稿者名</OPTION>
<OPTION value="t">題名</OPTION>
</SELECT></FONT>
</TD>
</TR>
</TABLE>
</TD>
</TR>
<TR>
<TD>
<TABLE border="0" width="100%">
<TR>
<TD width="50%"><FONT size="-1">
<INPUT type="checkbox" name="alp" value="checked" checked>大文字小文字同一視<BR>
$dspqmsg</FONT>
</TD>
<TD width="50%"><FONT size="-1">
<INPUT type="checkbox" name="j" value="checked">jcode.pl使用<BR>
$dspgzip</FONT>
</TD>
</TR>
</TABLE>
</TD>
</TR>
<TR>
<TD>
<HR size="2">
</TD>
</TR>
</TABLE>
</CENTER>
<INPUT type="hidden" name="m" value="g">
<INPUT type="hidden" name="k" value="あ">
<INPUT type="hidden" name="sv" value="on">
$addnbtgetlog
$addblank_getlog
</FORM>
<P align="center"><A href="$cgiurl">掲示板へ</A></P>
<H4 align="right">Getlog Ver0.3b4.0921<BR>
(くずはすくりぷと組み込みバージョン)</H4>
</BODY>
</HTML>
EOF
}
###############################################################################
# 過去ログ表示
###############################################################################
sub prtoldlog {
my (
@oldlog,
@prtbuf,
@msgline,
%MPTR,
@keyword,
$wmon,
$wday,
$whor,
$wmin,
$top,
$btm,
$hit,
$hitcount
);
open ( OLDLOG, "$oldlogfiledir$FORM{'e'}" ) || &prterror ( "$FORM{'e'}を開けませんでした" );
eval 'flock ( OLDLOG, 1 )';
seek ( OLDLOG, 0, 0 );
@oldlog = <OLDLOG>;
eval 'flock ( OLDLOG, 8 )';
close ( OLDLOG );
$hitcount = 0;
@keyword = split ( /\ /, $FORM{'kwd'} );
foreach ( @keyword ) {
$_ = quotemeta $_;
}
$FORM{'e'} =~ /.*\.(.*)/;
if ( $1 =~ /htm/ ) {
# HTML形式の過去ログ
if ( $FORM{'sv'} ) {
print "<H1>$FORM{'e'}</H1><HR>";
$tmpl_msg =~ s/(\$[A-Za-z0-9\'\{\}]+)/\(.*\)/g;
$tmpl_msg =~ s/\+/\\\+/g;
@msgline = split ( /\n/, $tmpl_msg );
$MPTR{'title'} = 1;
$MPTR{'user'} = 2;
$MPTR{'wdate'} = 3;
$MPTR{'mstart'} = 5;
$MPTR{'mend'} = @msgline - 5;
$top = 0;
$btm = 0;
$k = '';
for ( $i = 0 ; $i < @oldlog ; $i++ ) {
if ( $oldlog[$i] =~ /^<!-- \d+ -->/ ) {
# メッセージブロックの先頭
$top = $i;
} elsif ( $oldlog[$i] =~ /^<!-- -->/ ) {
# メッセージブロックの末尾
$btm = $i;
}
if ( $top > 0 ) {
#
# 0 : ターミネーター文字列
# 1 : 題名
# 2 : 投稿者名
# 3 : 投稿時刻
# 5 ~ @msgline - 5 : メッセージ
# @msgline - 1 : ターミネーター文字列
# メッセージブロック内の処理
if ( $oldlog[$i] =~ /$msgline[$MPTR{'user'}]/ ) {
# 投稿者
if ( ( $FORM{'tt'} eq 'u' ) || ( $FORM{'tt'} eq 'a' ) ) {
$k .= $1
}
} elsif ( $oldlog[$i] =~ /^$msgline[$MPTR{'title'}]$/ ) {
# 題名
if ( ( $FORM{'tt'} eq 't' ) || ( $FORM{'tt'} eq 'a' ) ) {
$k .= $2
}
} elsif ( $oldlog[$i] =~ /^$msgline[$MPTR{'wdate'}]$/ ) {
$1 =~ m#\d+/(\d+)/(\d+)\D+(\d+)\D+(\d+)\D+\d+\D+#;
$wmon = $1;
$wday = $2;
$whor = $3;
$wmin = $4;
if ( ( $FORM{'s1'} < $whor || ( $FORM{'s1'} == $whor && $FORM{'e1'} <= $wmin ) ) &&
( $FORM{'s2'} > $whor || ( $FORM{'s2'} == $whor && $FORM{'e2'} >= $wmin ) ) ) {
$hit = 1;
} else {
$hit = 0;
}
} elsif ( $oldlog[$i] =~ /^$msgline[$MPTR{'mstart'}]$/ ) {
$msg = $i;
} elsif ( $oldlog[$i] =~ /^$msgline[$MPTR{'mend'}]$/ ) {
$msg = 0;
} elsif ( $msg > 0 ) {
if ( $FORM{'tt'} eq 'a' ) {
$k .= $oldlog[$i];
}
}
push ( @prtbuf, $oldlog[$i] );
if ( $btm > 0 ) {
if ( $hit > 0 ) {
$hit = 0;
$j = 0;
if ( $FORM{'ao'} eq 'o' ) { # OR検索
while ( $j < @keyword && !$hit ) {
if ( ( $FORM{'alp'} && $k =~ /$keyword[$j]/i ) ||
( $k =~ /$keyword[$j]/ ) ) {
$hit++;
} else {
$j++;
}
}
} else {
while ( $j < @keyword ) { # AND検索
if ( ( $FORM{'alp'} && $k =~ /$keyword[$j]/i ) ||
( $k =~ /$keyword[$j]/ ) ) {
$hit++;
}
$j++;
}
if ( $hit != @keyword ) {
$hit = 0;
}
}
if ( !$FORM{'kwd'} || ( $hit > 0 ) ) {
$hitcount++;
print @prtbuf;
}
}
undef @prtbuf;
$k = '';
$top = 0;
$btm = 0;
}
}
} # for
if ( $FORM{'kwd'} ) {
if ( $hitcount > 0 ) {
print "<H3>$hitcount件見つかりました。</H3>";
} else {
print "<H3>指定されたキーワードに該当するメッセージは見つかりませんでした。</H3>";
}
}
} else {
# 全メッセージ表示
foreach ( @oldlog ) {
print;
}
}
} else {
# 新バージョンの過去ログ
if ( $FORM{'btn'} ) {
$FORM{'btn'} = 1;
} else {
$FORM{'btn'} = 2;
}
print "<H1>$FORM{'e'}</H1><HR>";
$i = 0;
if ( $FORM{'sv'} ) {
while ( $i < @oldlog ) {
&getmessage ( $oldlog[$i] );
if (
( !$oldlogsavesw &&
( ( $FORM{'s1'} < $hour || ( $FORM{'s1'} == $hour && $FORM{'e1'} <= $min ) ) &&
( $FORM{'s2'} > $hour || ( $FORM{'s2'} == $hour && $FORM{'e2'} >= $min ) ) ) ) ||
( $oldlogsavesw &&
( ( $FORM{'s1'} < $mday || ( $FORM{'s1'} == $mday && $FORM{'e1'} <= $hour ) ) &&
( $FORM{'s2'} > $mday || ( $FORM{'s2'} == $mday && $FORM{'e2'} >= $hour ) ) ) ) ) {
if ( !$FORM{'kwd'} ) {
print &prtmessage ( $FORM{'btn'}, "$FORM{'e'}" );
} else {
$j = 0;
$hit = 0;
$k = '';
if ( ( $FORM{'tt'} eq 'u' ) || ( $FORM{'tt'} eq 'a' ) ) {
$k .= $user;
}
if ( ( $FORM{'tt'} eq 't' ) || ( $FORM{'tt'} eq 'a' ) ) {
$k .= $title;
}
if ( $FORM{'tt'} eq 'a' ) {
$k .= $msg;
}
if ( $FORM{'ao'} eq 'o' ) {
while ( $j < @keyword && !$hit ) {
if ( ( $FORM{'alp'} && $k =~ /$keyword[$j]/i ) ||
( $k =~ /$keyword[$j]/ ) ) {
$hit++;
} else {
$j++;
}
}
} else {
while ( $j < @keyword ) {
if ( ( $FORM{'alp'} && $k =~ /$keyword[$j]/i ) ||
( $k =~ /$keyword[$j]/ ) ) {
$hit++;
}
$j++;
}
if ( $hit != @keyword ) {
$hit = 0;
}
}
if ( $hit > 0 ) {
print &prtmessage ( $FORM{'btn'} );
$hitcount++;
}
}
}
$i++;
} # while
if ( $FORM{'kwd'} ) {
if ( $hitcount > 0 ) {
print "<H3>$hitcount件見つかりました。</H3>";
} else {
print "<H3>指定されたキーワードに該当するメッセージは見つかりませんでした。</H3>";
}
}
} else {
# 全メッセージ表示
while ( $i < @oldlog ) {
&getmessage ( $oldlog[$i] );
print &prtmessage ( $FORM{'btn'} );
$i++;
}
}
print "\n</BODY>\n</HTML>\n";
}
}
###############################################################################
# Getlog メイン処理
###############################################################################
sub getlog {
&checkProxyList;
my ( $sendfile, $fcount );
$FORM{'e'} =~ /^([\w.]*)$/;
$FORM{'e'} = $1;
if ( $FORM{'e'} || $FORM{'sv'} ) {
$FORM{'kwd'} =~ s/\0/\,/g;
if ( !$FORM{'e'} ) {
&prthtmlhead ( "$FORM{'newtitle'} 過去ログ" );
$fcount = 0;
foreach ( sort keys %FORM ) {
if ( $_ =~ /^chk([\w.]+)$/ && $FORM{$_} eq 'checked' ) {
$FORM{'e'} = $1;
&prtoldlog;
$fcount++;
}
}
if ( !$fcount ) {
&prterror ( '表示するファイルを指定してください。' );
}
} else {
if ( $FORM{'dl'} eq '1' ) {
$sendfile = $FORM{'e'};
$sendfile =~ /(.+\.)(.+)/;
if ( $2 =~ /dat/ ) {
$sendfile =~ s/dat/html/;
}
print <<EOF;
Content-type: application/octet-stream
Content-Disposition: attachment; filename="$sendfile"
<HTML>
<HEAD>
<TITLE>$FORM{'newtitle'} 過去ログ</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</HEAD>
$body
EOF
} else {
&prthtmlhead ( "$FORM{'newtitle'} 過去ログ $FORM{'e'}" );
}
&prtoldlog;
}
} else {
&oldloglist;
}
}
1;
__END__
最終更新:2012年11月15日 07:15