#!/usr/bin/perl #„¡„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ #„  [ YY-BOARD ] #„  yybbs.cgi - 2007/01/25 #„  Copyright (c) KentWeb #„  webmaster@kent-web.com #„  http://www.kent-web.com/ #„¤„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ„Ÿ # ŠO•”ƒtƒ@ƒCƒ‹Žæ?ž require './init.cgi'; require $jcode; # ƒ?ƒCƒ“?ˆ—? &decode; &axsCheck; if ($mode eq "find") { &find; } elsif ($mode eq "image") { ℑ } elsif ($mode eq "form") { &form_disp; } elsif ($mode eq "past") { &past_log; } elsif ($mode eq "howto") { require $howtopl; &howto; } elsif ($mode eq "check") { require $checkpl; ✓ } &log_view; #------------------------------------------------- # ‹LŽ–•\ަ•” #------------------------------------------------- sub log_view { # ƒy?[ƒWŒJ‰z local($resfm); foreach ( keys(%in) ) { if (/^page:(\d+)$/) { $page = $1; } if (/^res:(\d+)$/) { $resfm = $1; last; } } # •Ô?MƒtƒH?[ƒ€‰Ÿ‰º if ($resfm) { &res_form; } # ƒNƒbƒL?[Žæ“¾ local($cnam,$ceml,$curl,$cpwd,$cico,$ccol) = &get_cookie; if (!$curl) { $curl = 'http://'; } # ƒwƒbƒ_‚ð?o—Í if ($ImageView == 1) { &header('ImageUp'); } else { &header; } # ƒJƒEƒ“ƒ^?ˆ—? if ($counter) { &counter; } # “Š?eƒL?[ local($str_plain,$str_crypt); if ($regist_key) { require $regkeypl; ($str_plain,$str_crypt) = &pcp_makekey; } # ƒ^ƒCƒgƒ‹•” print qq |
\n|; if ($banner1 ne "") { print "$banner1

\n"; } if ($t_img eq '') { print qq |$title\n|; } else { print qq |$title\n|; } print qq |


\n|; print qq |[ƒz?[ƒ€‚É–ß‚é]\n|; if (!defined($list_type{$in{'list'}})) { $in{'list'} = $view_type; } if ($in{'list'} ne "thread") { print qq |[?V‹K“Š?e]\n|; } foreach ( 'thread', 'tree', 'topic' ) { next if ($in{'list'} eq $_); print qq |[$list_type{$_}]\n|; } print <—¯ˆÓŽ–?€] [ƒ??[ƒhŒŸ?õ] EOM # ‰ß‹Žƒ?ƒO‚ÌƒŠƒ“ƒN•”‚ð•\ަ if ($pastkey) { print qq |[‰ß‹Žƒ?ƒO]\n|; } print <ŠÇ—?—p]
EOM # “Š?eƒtƒH?[ƒ€ if ($in{'list'} eq 'thread') { print qq |\n|; print qq |
\n|; print qq |\n|; print qq |\n|; require $formpl; &form($cnam,$ceml,$curl,$cpwd,$cico,$ccol,'',''); print qq |

\n|; } # ‹LŽ–‚ð“WŠJ my $i = 0; open(IN,"$logfile") || &error("Open Error: $logfile"); my $top = ; while () { my ($no,$reno,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$col,$ico) = split(/<>/); if ($reno eq "") { $i++; } if ($i < $page + 1) { next; } if ($i > $page + $pglog{$in{'list'}}) { next; } # ?e‹LŽ– if (!$reno) { push(@view,$no); # ƒŒƒX‹LŽ– } else { $res{$reno} .= "$no,"; } # ‘è–¼‚Ì’·‚³ if (length($sub) > $sub_len*2) { $sub = substr($sub, 0, $sub_len*2) . "..."; } # URLƒŠƒ“ƒN # if ($autolink) { &auto_link($com); } $nam{$no} = $nam; $eml{$no} = $eml; $sub{$no} = $sub; $dat{$no} = $dat; $com{$no} = $com; $col{$no} = $col; $url{$no} = $url; $ico{$no} = $ico; } close(IN); # ‹LŽ–•\ަ if ($in{'list'} eq "tree") { require $list_log_tree; &list_log_tree; } elsif ($in{'list'} eq "topic") { require $list_log_topic; &list_log_topic; } else { require $list_log_thread; &list_log_thread; } # ƒy?[ƒWˆÚ“®ƒ{ƒ^ƒ“•\ަ if ($page - $pglog{$in{'list'}} >= 0 || $page + $pglog{$in{'list'}} < $i) { print qq |

\n|; print qq |
Page:\n|; &mvbtn("$bbscgi?page=", $i, $pglog{$in{'list'}}); print qq |
\n|; } print qq |

\n|; # ƒ†?[ƒUƒ?ƒ“ƒeƒtƒH?[ƒ€?iƒgƒsƒbƒN•\ަˆÈŠO?j if ($in{'list'} ne "topic") { print qq |
\n|; print qq |\n|; print qq |\n|; print qq |No.\n|; print qq |ˆÃ?؃L?[\n|; print qq |
\n|; } # ’˜?쌠•\ަ?i?í?œ•s‰Â?j: ’A‚µ?AMakiMaki‚³‚ñ‚̉摜‚ðŽg—p‚µ‚È‚¢?ê?‡‚ÉŒÀ‚è?A # MakiMaki‚³‚ñ‚ÌƒŠƒ“ƒN‚ðŠO‚·‚±‚Ƃ͉”\‚Å‚·?B print < - YY-BOARD - icon:MakiMaki
EOM exit; } #------------------------------------------------- # •Ô?MƒtƒH?[ƒ€ #------------------------------------------------- sub res_form { # “Š?eƒL?[ local($str_plain,$str_crypt); if ($regist_key) { require $regkeypl; ($str_plain,$str_crypt) = &pcp_makekey; } $in{'no'} = $resfm; # ƒNƒbƒL?[‚ðŽæ“¾ local($cnam,$ceml,$curl,$cpwd,$cico,$ccol) = &get_cookie; if (!$curl) { $curl = 'http://'; } # ƒ?ƒO‚ð“Ç‚Ý?ž‚Ý my $flg; open(IN,"$logfile") || &error("Open Error: $logfile"); my $top = ; # ƒwƒbƒ_‚ð?o—Í if ($ImageView == 1) { &header('ImageUp'); } else { &header; } # ŠÖ˜A‹LŽ–?o—Í print < ?¤ˆÈ‰º‚Í‹LŽ–No.$in{'no'} ‚ÉŠÖ‚·‚é•Ô?MƒtƒH?[ƒ€‚Å‚·?B
EOM while () { my ($no,$reno,$dat,$nam,$eml,$sub,$com,$url) = split(/<>/); if ($in{'no'} == $no && $reno) { $flg++; } if ($in{'no'} == $no || $in{'no'} == $reno) { if ($in{'no'} == $no) { $resub = $sub; } if ($url) { $url = "&lt;Home&gt;"; } if ($reno) { print '  '; } print "

$sub\n"; print "“Š?eŽÒ?F$nam “Š?e“ú?F$dat $url "; print "No.$no

\n"; print "
$com\n"; } } close(IN); if ($flg) { &error("•s?³‚È•Ô?M—v‹?‚Å‚·"); } # ƒ^ƒCƒgƒ‹–¼ if ($resub !~ /^Re\:/) { $resub = "Re: $resub"; } print <<"EOM";

EOM require $formpl; &form($cnam,$ceml,$curl,$cpwd,$cico,$ccol,$resub,''); print < EOM exit; } #------------------------------------------------- # ƒ??[ƒhŒŸ?õ #------------------------------------------------- sub find { &header; print <
  • ƒL?[ƒ??[ƒh‚ð“ü—Í‚µ?A?u?ðŒ??v?u•\\ަ?v‚ð‘I‘ð‚µ‚ÄŒŸ?õƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚ĉº‚³‚¢?B
  • ƒL?[ƒ??[ƒh‚̓Xƒy?[ƒX‚Å‹æ?Ø‚Á‚Ä•¡?”Žw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·?B

    ƒL?[ƒ??[ƒh ?ðŒ? •\\ަ
EOM # ŒŸ?õŽÀ?s if ($in{'word'} ne "") { ($i,$next,$back) = &search($logfile,$in{'word'},$in{'view'},$in{'cond'}); $enwd = &url_enc($in{'word'}); if ($back >= 0) { print "[‘O‚Ì$in{'view'}Œ?]\n"; } if ($next < $i) { print "[ŽŸ‚Ì$in{'view'}Œ?]\n"; } } print "\n"; exit; } #------------------------------------------------- # “Š?e‰æ–Ê #------------------------------------------------- sub form_disp { # “Š?eƒL?[ local($str_plain,$str_crypt); if ($regist_key) { require $regkeypl; ($str_plain,$str_crypt) = &pcp_makekey; } # ƒNƒbƒL?[‚ðŽæ“¾ local($cnam,$ceml,$curl,$cpwd,$cico,$ccol) = &get_cookie; if (!$curl) { $curl = 'http://'; } # ƒwƒbƒ_‚ð?o—Í if ($ImageView == 1) { &header('ImageUp'); } else { &header; } # ŠÖ˜A‹LŽ–?o—Í print < ?¥?V‹K“Š?eƒtƒH?[ƒ€
EOM print <<"EOM";
EOM require $formpl; &form($cnam,$ceml,$curl,$cpwd,$cico,$ccol,'',''); print < EOM exit; } #------------------------------------------------- # ‰ß‹Žƒ?ƒO #------------------------------------------------- sub past_log { open(IN,"$nofile") || &error("Open Error: $nofile"); my $num = ; close(IN); $in{'log'} =~ s/\D//g; if (!$in{'log'}) { $in{'log'} = $num; } &header; print <<"EOM";
‰ß‹Žƒ?ƒO
ƒL?[ƒ??[ƒh ?ðŒ? •\\ަ
EOM my $file = sprintf("%s/%04d.cgi", $pastdir,$in{'log'}); # ŒŸ?õ?ˆ—? if ($in{'word'} ne "") { # ŒŸ?õ my ($i, $next, $back) = &search($file, $in{'word'}, $in{'view'}, $in{'cond'}, 'past'); # ƒy?[ƒWŒJ‚è‰z‚µ my $enwd = &url_enc($in{'word'}); if ($back >= 0) { print "[‘O‚Ì$in{'view'}Œ?]\n"; } if ($next < $i) { print "[ŽŸ‚Ì$in{'view'}Œ?]\n"; } print "\n"; exit; } print "
\n"; my $i = 0; open(IN,"$file") || &error("Open Error: $file"); while () { my ($no,$re,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$col,$ico) = split(/<>/); if ($re eq "") { $i++; } if ($i < $page + 1) { next; } if ($i > $page + $pastView) { next; } if ($eml) { $nam = "$nam"; } if ($url) { $url = "&lt;URL&gt;"; } if ($re eq "") { print "

"; } else { print "
"; } print qq |$sub |; print qq |$nam - $dat $url No.$no

\n|; if ($ico) { print qq ||; print qq ||; print qq |
$com
\n|; } else { print qq |
$com
\n|; } } close(IN); print <
EOM # ƒy?[ƒWˆÚ“®ƒ{ƒ^ƒ“•\ަ if ($page - $pastView >= 0 || $page + $pastView < $i) { &mvbtn("$bbscgi?mode=$mode&log=$in{'log'}&page=", $i, $pastView); } print < EOM exit; } #------------------------------------------------- # ƒJƒEƒ“ƒ^?ˆ—? #------------------------------------------------- sub counter { local($count, $cntup, @count); # ‰{——Žž‚̂݃JƒEƒ“ƒgƒAƒbƒv if ($mode eq '') { $cntup = 1; } else { $cntup = 0; } # ƒJƒEƒ“ƒgƒtƒ@ƒCƒ‹‚ð“ǂ݂±‚Ý open(LOG,"+< $cntfile") || &error("Open Error: $cntfile"); eval "flock(LOG, 2);"; $count = ; # IPƒ`ƒFƒbƒN‚ƃ?ƒO”j‘¹ƒ`ƒFƒbƒN local($cnt, $ip) = split(/:/, $count); if ($addr eq $ip || $cnt eq "") { $cntup = 0; } # ƒJƒEƒ“ƒgƒAƒbƒv if ($cntup) { $cnt++; truncate(LOG, 0); seek(LOG, 0, 0); print LOG "$cnt:$addr"; } close(LOG); # Œ…?”’²?® while(length($cnt) < $mini_fig) { $cnt = '0' . $cnt; } @count = split(//, $cnt); # GIFƒJƒEƒ“ƒ^•\ަ if ($counter == 2) { foreach (0 .. $#count) { print "\"$count[$_]\""; } # ƒeƒLƒXƒgƒJƒEƒ“ƒ^•\ަ } else { print "$cnt
\n"; } } #------------------------------------------------- # ‰æ‘œƒCƒ??[ƒW•\ަ #------------------------------------------------- sub image { my @ico1 = split(/\s+/, $ico1); my @ico2 = split(/\s+/, $ico2); &header; print <

‰æ‘œƒCƒ??[ƒW

EOM my $i = 0; foreach (0 .. $#ico1) { $i++; if ($i % 5 == 1) { print "\n"; } print qq |\n|; if ($i % 5 == 0) { print "\n"; } } while ( $i % 5 != 0 ) { print qq ||; $i++; } print <
EOM exit; } #------------------------------------------------- # ˆÚ“®ƒ{ƒ^ƒ“ #------------------------------------------------- sub mvbtn { local($link,$i,$view) = @_; local($start,$end,$x,$y,$bk_bl,$fw_bl); if ($in{'bl'}) { $start = $in{'bl'}*10 + 1; $end = $start + 9; } else { $in{'bl'} = 0; $start = 1; $end = 10; } $x = 1; $y = 0; while ($i > 0) { # “–ƒy?[ƒW if ($page == $y) { print qq {| $x\n}; # ?ؑփy?[ƒW } elsif ($x >= $start && $x <= $end) { print "| $x\n"; # ‘Oƒuƒ?ƒbƒN } elsif ($x == $start-1) { $bk_bl = $in{'bl'}-1; print "| \n"; # ŽŸƒuƒ?ƒbƒN } elsif ($x == $end+1) { $fw_bl = $in{'bl'}+1; print "| \n"; } $x++; $y += $view; $i -= $view; } print "|\n"; } #------------------------------------------------- # ŒŸ?õ?ˆ—? #------------------------------------------------- sub search { local($file, $word, $view, $cond, $job) = @_; # ƒL?[ƒ??[ƒh‚ð”z—ñ‰» $word =~ s/\x81\x40/ /g; my @wd = split(/\s+/, $word); # ƒtƒ@ƒCƒ‹“WŠJ print "
\n"; my $i = 0; open(IN,"$file") || &error("Open Error: $file"); my $top = if ($job ne "past"); while () { my $flg; foreach my $wd (@wd) { if (index($_,$wd) >= 0) { $flg++; if ($cond eq 'OR') { last; } } else { if ($cond eq 'AND') { $flg = 0; last; } } } # ƒqƒbƒg‚µ‚½?ê?‡ if ($flg) { $i++; next if ($i < $page + 1); next if ($i > $page + $view); my ($no,$reno,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$col,$ico) = split(/<>/); if ($eml) { $nam = "$nam"; } if ($url) { $url = "&lt;Home&gt;"; } # Œ‹‰Ê‚ð•\ަ print "

[$no] $sub "; print "“Š?eŽÒ?F$nam “Š?e“ú?F$dat $url

\n"; print "
$com\n"; } } close(IN); print <
ŒŸ?õŒ‹‰Ê?F$iŒ?
EOM my $next = $page + $view; my $back = $page - $view; return ($i, $next, $back); } #------------------------------------------------- # URLƒGƒ“ƒR?[ƒh #------------------------------------------------- sub url_enc { local($_) = @_; s/(\W)/'%' . unpack('H2', $1)/eg; s/\s/+/g; $_; }
$ico1[$_]$ico2[$_]