/[suikacvs]/webroot/sccc/board-t/test/read.cgi
Suika

Contents of /webroot/sccc/board-t/test/read.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Wed Jan 12 04:23:01 2005 UTC (20 years, 3 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
New

1 wakaba 1.1 #!/usr/bin/perl
2    
3     ### read.cgi ver 2.05 (2001/08/22) editted (2001/08/27)
4     ### onpuch original (2003/03/19) version (2004/05/15)
5     # -----------------------------------------------------------
6     use strict;
7     require 'jcode.pl';
8     use CGI::Carp qw/fatalsToBrowser/;
9    
10     use vars qw($hannyou);
11     use vars qw($hyoujun);
12     use vars qw($ver);
13     use vars qw($gzip_path);
14     use vars qw($gzip_enable);
15    
16     $hyoujun = "http://suika.fam.cx".$ENV{'REQUEST_URI'};
17     $hyoujun =~ s/\/test\/.*/\/test\//g;
18     # このままの設定で動作しない場合は、↓の#を取って正確なベースURLを書く。例:http://pc.2ch.net/test/
19     #$hyoujun = 'http://onpumoe.hp.infoseek.co.jp/cgi-bin/test/';
20    
21     $ver='read.cgi ver4.20 by <a href="http://onpumoe.hp.infoseek.co.jp/script/">GlobalNoteScript</a> (2004/09/05)';
22     $gzip_path = "/bin/gzip";
23     $gzip_enable = 1;
24    
25    
26     #==================================================
27     # 初期情報の取得(POST)
28     #==================================================
29    
30     {
31     use vars qw(%FORM);
32     my ($buffer, @pairs, $name, $value, $path_info, $res, $ls);
33     $path_info = $ENV{'PATH_INFO'};
34     # if ($ENV{'REQUEST_METHOD'} eq "GET") {
35     if ($ENV{'PATH_INFO'} eq "") {
36     $buffer = $ENV{'QUERY_STRING'};
37     @pairs = split(/&/,$buffer);
38     foreach (@pairs) {
39     ($name, $value) = split /=/;
40     $value =~ tr/+/ /;
41     $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('H2',$1)/eg;
42     $FORM{$name} = $value;
43     }
44     } else {
45     ($FORM{dummy},$FORM{bbs},$FORM{key},$res,$ls) = split /\//, $path_info;
46    
47     if ($res =~ /-/) {
48     ($FORM{st}, $FORM{to}) = split /-/, $res;
49     } else {
50     $FORM{st} = $res;
51     $FORM{to} = $res;
52     }
53     if ($res =~ /n/) {
54     $FORM{nofirst} = "true";
55     $FORM{st} =~ s/n//g;
56     $FORM{to} =~ s/n//g;
57     } else {
58     $FORM{nofirst} = "false";
59     }
60    
61     if ($res =~ /l/) {
62     $ls = $FORM{to};
63     $ls =~ s/l//g;
64     $ls =~ s/n//g;
65     $ls =~ s/i//g;
66     $FORM{ls} = $ls;
67     $FORM{st} = "";
68     $FORM{to} = "";
69     }
70    
71     # if ($res =~ /i/) {
72     if (($ENV{'HTTP_USER_AGENT'} =~ /DoCoMo\//) && ($res =~ /i/)) {
73     $FORM{imode} = "true";
74     $FORM{nofirst} = "true";
75     }
76    
77     $FORM{to} =~ s/i//g;
78     $FORM{to} =~ s/n//g;
79    
80     }
81     }
82    
83    
84     #==================================================
85     # エラーレスポンス(BBS情報)
86     #==================================================
87    
88     {
89     if(!-e "../$FORM{'bbs'}/dat/$FORM{'key'}.dat" || $FORM{'bbs'} =~ /(\.|\/)/){
90     DispError("そんな板orスレッドないです。");
91     }
92     if(-s "../$FORM{'bbs'}/dat/$FORM{'key'}.dat" > 550000) {
93     DispError("このスレッド大きすぎます。");
94     }
95     }
96    
97    
98     #==================================================
99     # 初期情報の取得(設定ファイル)
100     #==================================================
101    
102     {
103     use vars qw(%SETTING);
104    
105     # 設定ファイルを読む
106     my ($m_pass,$m_key,$m_value);
107     $m_pass = "../$FORM{'bbs'}/SETTING.TXT";
108     if(-e $m_pass){
109     open(FILE,$m_pass);
110     foreach (<FILE>){
111     chop;
112     ($m_key,$m_value) = split /=/;
113     $SETTING{$m_key} = $m_value;
114     }
115     close(FILE);
116     }else{
117     # 設定ファイルがない(ERROR)
118     DispError("ユーザー設定が消失しています!");
119     }
120    
121     # 欠落情報の補完
122     unless($SETTING{"BBS_THREAD_COLOR"}) {$SETTING{"BBS_THREAD_COLOR"}="#EFEFEF";}
123     unless($SETTING{"BBS_SUBJECT_COLOR"}) {$SETTING{"BBS_SUBJECT_COLOR"}="#FF0000";}
124     unless($SETTING{"BBS_NAME_COLOR"}) {$SETTING{"BBS_NAME_COLOR"}="forestgreen";}
125     unless($SETTING{"BBS_TEXT_COLOR"}) {$SETTING{"BBS_TEXT_COLOR"}="#000000";}
126     unless($SETTING{"BBS_LINK_COLOR"}) {$SETTING{"BBS_LINK_COLOR"}="#0000FF";}
127     unless($SETTING{"BBS_ALINK_COLOR"}) {$SETTING{"BBS_ALINK_COLOR"}="#FF0000";}
128     unless($SETTING{"BBS_VLINK_COLOR"}) {$SETTING{"BBS_VLINK_COLOR"}="#660099";}
129    
130     $SETTING{"BBS_BG_COLOR"}=$SETTING{'BBS_THREAD_COLOR'};
131    
132     $gzip_path = $SETTING{"BBS_GZIP_PATH"};
133     if ($SETTING{"BBS_GZIP_CHECK"} eq "checked") {
134     $gzip_enable = 1;
135     } else {
136     $gzip_enable = 0;
137     }
138     }
139    
140    
141     #==================================================
142     # 変数の設定
143     #==================================================
144    
145     {
146     use vars qw($start);
147     use vars qw($end);
148     use vars qw($NOW);
149     use vars qw(@LOG);
150     $NOW=time;
151     open(ALL,"../$FORM{'bbs'}/dat/$FORM{'key'}.dat");
152     @LOG=<ALL>;
153     close(ALL);
154     my $LINENUM = @LOG;
155    
156     if ($FORM{'st'}) {
157     $start = $FORM{'st'};
158     } elsif ($FORM{'ls'}) {
159     $start = $LINENUM - $FORM{'ls'} + 1;
160     } else {
161     $start=1;
162     }
163     if ($start < 1) {$start = 1;}
164    
165     if ($FORM{'to'}) {
166     $end = $FORM{'to'} + 1;
167     } else {
168     $end = $LINENUM + 1;
169     }
170     if ($end - $start < 1) {$end = $start + 1;}
171    
172     my $st1 = $start - 100; if ($st1 <= 0) {$st1 = 1;}
173     my $st2 = $start - 1;
174     my $st3 = $end;
175     my $st4 = $end + 99; if ($st4 > $LINENUM) {$st4 = $LINENUM;}
176     my $st5 = $LINENUM;
177     my $res1 = $st2 - $st1 + 1;
178     my $res2 = $st4 - $st3 + 1;
179    
180     my $subject=(split /<>/,$LOG[0])[4];
181    
182     my ($name,$mail,$time,$message,$mailto);
183    
184     if(!$FORM{'imode'}){
185     print "Content-type: text/html; charset=shift_jis\n";
186    
187     if ( $gzip_enable ){
188     if ( $ENV{'HTTP_ACCEPT_ENCODING'} =~ /x-gzip/ ){
189     print "Content-encoding: x-gzip\n\n";
190     }
191     elsif ( $ENV{'HTTP_ACCEPT_ENCODING'} =~ /gzip/ ){
192     print "Content-encoding: gzip\n\n";
193     } else {
194     print "\n";
195     $gzip_enable = 0;
196     }
197     }
198     else {
199     print "\n";
200     }
201     open(STDOUT,"| $gzip_path -1 -c") if $gzip_enable;
202    
203     print <<EOF;
204     <HTML>
205     <HEAD>
206     <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
207     <TITLE>
208     $subject
209     </TITLE>
210     <SCRIPT LANGUAGE="JavaScript" type="text/javascript">
211     <!--
212     Name = getCookie("NAME");
213     Mail = getCookie("MAIL");
214     function getCookie(key,tmp1,tmp2,xx1,xx2,xx3) {
215     tmp1 = " " + document.cookie + ";";
216     xx1 = xx2 = 0;
217     len = tmp1.length;
218     while (xx1 < len) {
219     xx2 = tmp1.indexOf(";", xx1);
220     tmp2 = tmp1.substring(xx1 + 1, xx2);
221     xx3 = tmp2.indexOf("=");
222     if (tmp2.substring(0, xx3) == key) {
223     return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));
224     }
225     xx1 = xx2 + 1;
226     }
227     return("");
228     }
229     // -->
230     </SCRIPT>
231     <BASE HREF="$hyoujun">
232     </HEAD>
233     <BODY TEXT="$SETTING{'BBS_TEXT_COLOR'}" BGCOLOR="$SETTING{'BBS_BG_COLOR'}" link="$SETTING{'BBS_LINK_COLOR'}" alink="$SETTING{'BBS_ALINK_COLOR'}" vlink="$SETTING{'BBS_VLINK_COLOR'}">
234     <a href="../$FORM{'bbs'}/index.html">■掲示板に戻る■</a>
235     <a href="./read.cgi/$FORM{'bbs'}/$FORM{'key'}/">全部</a>
236     EOF
237    
238     my $hundred = int ($LINENUM / 100);
239     for (my $i = 0; $i <= $hundred; $i++) {
240     my $hndst = $i * 100 + 1;
241     my $hndto = $i * 100 + 100;
242     if ($hndst == $LINENUM) {
243     print <<EOF;
244     <a href="./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$hndst">$hndst</a>
245     EOF
246     } elsif ($hndto > $LINENUM) {
247     $hndto = $LINENUM;
248     print <<EOF;
249     <a href="./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$hndst-$hndto">$hndst-$hndto</a>
250     EOF
251     } else {
252     print <<EOF;
253     <a href="./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$hndst-$hndto">$hndst-</a>
254     EOF
255     }
256     }
257    
258     if ($st2 > 0) {
259     $hannyou = "./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$st1-$st2" . "n" ;
260     print <<EOF;
261     <a href=$hannyou>前$res1</a>
262     EOF
263     }
264     if ($st3 - $LINENUM < 1) {
265     $hannyou = "./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$st3-$st4" . "n" ;
266     print <<EOF;
267     <a href=$hannyou>次$res2</a>
268     EOF
269     } else {
270     $hannyou = "./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$st5" . "n-" ;
271     print <<EOF;
272     <a href=$hannyou>新着レス</a>
273     EOF
274     }
275    
276     print <<EOF;
277     <a href="./read.cgi/$FORM{'bbs'}/$FORM{'key'}/l50">最新50</a>
278     EOF
279    
280     my $size = int ((-s "../$FORM{'bbs'}/dat/$FORM{'key'}.dat") / 1024);
281    
282     if ($LINENUM >= $SETTING{'BBS_MAX_RES_COUNT'}){
283     my $maxres = $SETTING{'BBS_MAX_RES_COUNT'};
284     print <<EOF;
285     <P><TABLE><TR><TD BGCOLOR=RED>
286     <FONT COLOR=WHITE><BR>レス数が $maxres を超えています。残念ながらこのスレッドには書き込めません。<BR><BR></FONT>
287     </TD></TR></TABLE>
288     EOF
289     }elsif (($LINENUM >= ($SETTING{'BBS_MAX_RES_COUNT'} - 50)) && ($SETTING{'BBS_MAX_RES_COUNT'} >= 50)){
290     my $maxres = $SETTING{'BBS_MAX_RES_COUNT'};
291     my $rescount = $maxres - 50;
292     print <<EOF;
293     <P><TABLE><TR><TD BGCOLOR=RED>
294     <FONT COLOR=WHITE>レス数が $rescount を超えています。$maxresを超えると書き込めなくなるよ。</FONT>
295     </TD></TR></TABLE>
296     EOF
297     }elsif (($LINENUM >= ($SETTING{'BBS_MAX_RES_COUNT'} - 100)) && ($SETTING{'BBS_MAX_RES_COUNT'} >= 100)){
298     my $maxres = $SETTING{'BBS_MAX_RES_COUNT'};
299     my $rescount = $maxres - 100;
300     print <<EOF;
301     <P><TABLE><TR><TD BGCOLOR=YELLOW>
302     レス数が $rescount を超えています。$maxresを超えると書き込めなくなるよ。
303     </TD></TR></TABLE>
304     EOF
305     }elsif ($size >= $SETTING{'BBS_MAX_RES_SIZE'}) {
306     my $maxkb = $SETTING{'BBS_MAX_RES_SIZE'} . "KB";
307     print <<EOF;
308     <P><TABLE><TR><TD BGCOLOR=RED>
309     <FONT COLOR=WHITE><BR>スレッドの大きさが $maxkb を超えています。残念ながらこのスレッドには書き込めません。<BR><BR></FONT>
310     </TD></TR></TABLE>
311     EOF
312     }elsif (($size >= ($SETTING{'BBS_MAX_RES_SIZE'} - 20)) && ($SETTING{'BBS_MAX_RES_SIZE'} >= 20)) {
313     my $maxkb = $SETTING{'BBS_MAX_RES_SIZE'} . "KB";
314     my $maxsize = $SETTING{'BBS_MAX_RES_SIZE'} - 20;
315     my $sizekb = $maxsize . "KB";
316     print <<EOF;
317     <P><TABLE><TR><TD BGCOLOR=RED>
318     <FONT COLOR=WHITE>スレッドの大きさが $sizekb を超えています。$maxkbを超えると書き込めなくなるよ。</FONT>
319     </TD></TR></TABLE>
320     EOF
321     }elsif (($size >= ($SETTING{'BBS_MAX_RES_SIZE'} - 50)) && ($SETTING{'BBS_MAX_RES_SIZE'} >= 50)) {
322     my $maxkb = $SETTING{'BBS_MAX_RES_SIZE'} . "KB";
323     my $maxsize = $SETTING{'BBS_MAX_RES_SIZE'} - 50;
324     my $sizekb = $maxsize . "KB";
325     print <<EOF;
326     <P><TABLE><TR><TD BGCOLOR=YELLOW>
327     スレッドの大きさが $sizekb を超えています。$maxkbを超えると書き込めなくなるよ。
328     </TD></TR></TABLE>
329     EOF
330     }
331    
332     print <<EOF;
333     <P><FONT SIZE=+1 COLOR="$SETTING{'BBS_SUBJECT_COLOR'}">
334     $subject
335     </FONT></B><BR>
336     <DL>
337     EOF
338    
339     if($FORM{'nofirst'} ne "true" || $FORM{'st'} eq 1){
340     chop($LOG[0]);
341     ($name,$mail,$time,$message,$subject) = split(/<>/,$LOG[0]);
342     #本文が空の場合
343     if ($message eq "") {
344     $name="";
345     $mail="";
346     $time="[ここ壊れてます]";
347     $message="[ここ壊れてます]";
348     }
349     my $check = '(?:^|[\0-\200\240-\337])(?:[\201-\237\340-\374]{2})*';
350     $message =~ s/($check)(https?|ftp|gopher|telnet|whois|news)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/$1<a href=\"$2\:$3\" target=\"_blank\">$2\:$3<\/a>/igo;
351    
352     # 末尾にsjisの1バイト目があったら削る
353     my $check1 = '(?:^|[\0-\200\240-\337])(?:[\201-\237\340-\374]{2})*';
354     my $check2 = '[\201-\237\340-\374]';
355     $mail =~ s/($check1)$check2$/$1/g;
356     $name =~ s/($check1)$check2$/$1/g;
357    
358     if($mail){
359     $mailto = "<a href=\"mailto:$mail\"><b>$name</B></a>";
360     }else{
361     $mailto = "<font color=\"$SETTING{'BBS_NAME_COLOR'}\"><b>$name</b></font>";
362     }
363     print "<dt>1 名前:$mailto 投稿日:$time<dd>$message<br><br>\n";
364     if($start eq 1){$start++;}
365     }
366    
367     while($start != $end){
368     unless($LOG[$start-1]){last;}
369     chop($LOG[$start-1]);
370     ($name,$mail,$time,$message,$subject) = split(/<>/,$LOG[$start-1]);
371     #本文が空の場合
372     if ($message eq "") {
373     $name="";
374     $mail="";
375     $time="[ここ壊れてます]";
376     $message="[ここ壊れてます]";
377     }
378     my $check = '(?:^|[\0-\200\240-\337])(?:[\201-\237\340-\374]{2})*';
379     $message =~ s/($check)(https?|ftp|gopher|telnet|whois|news)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/$1<a href=\"$2\:$3\" target=\"_blank\">$2\:$3<\/a>/igo;
380    
381     # 末尾にsjisの1バイト目があったら削る
382     my $check1 = '(?:^|[\0-\200\240-\337])(?:[\201-\237\340-\374]{2})*';
383     my $check2 = '[\201-\237\340-\374]';
384     $mail =~ s/($check1)$check2$/$1/g;
385     $name =~ s/($check1)$check2$/$1/g;
386    
387     if($mail){
388     $mailto = "<a href=\"mailto:$mail\"><b>$name</B></a>";
389     }else{
390     $mailto = "<font color=\"$SETTING{'BBS_NAME_COLOR'}\"><b>$name</b></font>";
391     }
392     print "<dt>$start 名前:$mailto 投稿日:$time<dd>$message<br><br>\n";
393     $start++;
394     }
395    
396     my $newres = $LINENUM + 1;
397     print <<EOF;
398     </DL><font color=red><b>$size KB</b></font>
399     <hr>
400     <a href="../$FORM{'bbs'}/index.html">掲示板に戻る</a>
401     <a href="./read.cgi/$FORM{'bbs'}/$FORM{'key'}/">全部</a>
402     EOF
403     for (my $i = 0; $i <= $hundred; $i++) {
404     my $hndst = $i * 100 + 1;
405     my $hndto = $i * 100 + 100;
406     if ($hndst == $LINENUM) {
407     print <<EOF;
408     <a href="./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$hndst">$hndst</a>
409     EOF
410     } elsif ($hndto > $LINENUM) {
411     $hndto = $LINENUM;
412     print <<EOF;
413     <a href="./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$hndst-$hndto">$hndst-$hndto</a>
414     EOF
415     } else {
416     print <<EOF;
417     <a href="./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$hndst-$hndto">$hndst-</a>
418     EOF
419     }
420     }
421    
422     if ($st2 > 0) {
423     $hannyou = "./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$st1-$st2" . "n" ;
424     print <<EOF;
425     <a href=$hannyou>前$res1</a>
426     EOF
427     }
428     if ($st3 - $LINENUM < 1) {
429     $hannyou = "./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$st3-$st4" . "n" ;
430     print <<EOF;
431     <a href=$hannyou>次$res2</a>
432     EOF
433     } else {
434     $hannyou = "./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$st5" . "n-" ;
435     print <<EOF;
436     <a href=$hannyou>新着レス</a>
437     EOF
438     }
439    
440     print <<EOF;
441     <a href="./read.cgi/$FORM{'bbs'}/$FORM{'key'}/l50">最新50</a><hr>
442     EOF
443    
444     if (($LINENUM < $SETTING{'BBS_MAX_RES_COUNT'}) && ($size < $SETTING{'BBS_MAX_RES_SIZE'})){
445     print <<EOF;
446     <table border=0 cellspacing=0 cellpadding=10 vspace=0 hspace=0><tr align="center" valign="top"><td align=left>
447     <form method=POST action="./bbs.cgi">
448     <table border=0 cellspacing=0 cellpadding=0><tr><td align=right>
449     <input type=submit value="書き込む" name="submit">
450     </td><td> 名前:
451     <SCRIPT Language="JavaScript">
452     <!--
453     document.write("<INPUT TYPE=text NAME=FROM SIZE=19 VALUE=");
454     document.write(Name,">");
455     // -->
456     </SCRIPT><NOSCRIPT>
457     <INPUT TYPE=text NAME=FROM SIZE=19>
458     </NOSCRIPT>
459     E-mail<font size=1>(省略可)</font>:
460     <SCRIPT Language="JavaScript">
461     <!--
462     document.write("<INPUT TYPE=text NAME=mail SIZE=19 VALUE=");
463     document.write(Mail,">");
464     // -->
465     </SCRIPT><NOSCRIPT>
466     <INPUT TYPE=text NAME=mail SIZE=19>
467     </NOSCRIPT>
468     </td></tr></table>
469     <textarea rows=5 cols=70 wrap=OFF name=MESSAGE></textarea>
470     <input type=hidden name=bbs value=$FORM{'bbs'}>
471     <input type=hidden name=key value=$FORM{'key'}>
472     <input type=hidden name=time value=$NOW>
473     </form></td></tr></table>
474     EOF
475     }
476    
477     print <<EOF;
478     $ver</BODY></HTML>
479     EOF
480     close(STDOUT) if $gzip_enable;
481     }else{
482     #==================================================
483     # i-mode用
484     #==================================================
485     if ($FORM{'st'} eq '' && $FORM{'to'} eq '' && $FORM{'ls'} eq '') {
486     $start = $LINENUM - 4; if ($start < 1) {$start = 1;}
487     $end = $LINENUM + 1;
488     }
489    
490     if ($end - $start > 5) {$end = $start + 5;}
491     if ($LINENUM => $start && $end - $LINENUM > 1) {$end = $LINENUM + 1;}
492    
493     my $st1 = $start - 5; if ($st1 <= 0) {$st1 = 1;}
494     my $st2 = $start - 1;
495     my $st3 = $end;
496     my $st4 = $end + 4; if ($st4 > $LINENUM) {$st4 = $LINENUM;}
497     my $st5 = $LINENUM;
498     my $res1 = $st2 - $st1 + 1;
499     my $res2 = $st4 - $st3 + 1;
500    
501     # 全角カナと半角カナの変換
502     &jcode::z2h_sjis(\$subject);
503     foreach (@LOG) {
504     &jcode::z2h_sjis(\$_);
505     }
506    
507     print "Content-type: text/html; charset=shift_jis\n\n";
508     print <<EOF;
509     <HTML>
510     <HEAD>
511     <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
512     <TITLE>
513     $subject
514     </TITLE>
515     <BASE HREF="$hyoujun">
516     </HEAD>
517     <BODY TEXT="$SETTING{"BBS_TEXT_COLOR"}" BGCOLOR="$SETTING{"BBS_BG_COLOR"}" link="$SETTING{"BBS_LINK_COLOR"}" alink="$SETTING{"BBS_ALINK_COLOR"}" vlink="$SETTING{"BBS_VLINK_COLOR"}">
518     <a href="../$FORM{'bbs'}/i/index.html">掲示板に戻る</a>
519     <a href="./read.cgi/$FORM{'bbs'}/$FORM{'key'}/1-5i">最初-</a>
520     EOF
521     if ($st2 > 0) {
522     $hannyou = "./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$st1-$st2" . "ni";
523     print <<EOF;
524     <a href=$hannyou>前$res1</a>
525     EOF
526     }
527     if ($st3 - $LINENUM < 1) {
528     $hannyou = "./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$st3-$st4" . "ni";
529     print <<EOF;
530     <a href=$hannyou>次$res2</a>
531     EOF
532     } else {
533     $hannyou = "./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$st5" . "-ni";
534     print <<EOF;
535     <a href=$hannyou>新着</a>
536     EOF
537     }
538     print <<EOF;
539     <a href="./read.cgi/$FORM{'bbs'}/$FORM{'key'}/l5i">最新5</a>
540     <P><FONT SIZE=+1 COLOR="$SETTING{'BBS_SUBJECT_COLOR'}">
541     $subject
542     </FONT></B><BR>
543     EOF
544    
545     if($FORM{'nofirst'} ne "true" || $FORM{'st'} eq 1){
546     chop($LOG[0]);
547     ($name,$mail,$time,$message,$subject) = split(/<>/,$LOG[0]);
548     #本文が空の場合
549     if ($message eq "") {
550     $name="";
551     $mail="";
552     $time="[ここ壊れてます]";
553     $message="[ここ壊れてます]";
554     }
555     # URLを変換(onpuch.jp以外のURLはリンクせず)
556     my $check = '(?:^|[\0-\200\240-\337])(?:[\201-\237\340-\374]{2})*';
557     $message =~ s/($check)(https?|ftp|gopher|telnet|whois|news)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/$1<r>$2\:$3<\/r>/igo;
558     $message =~ s/<r>(http\:\/\/www\.onpuch\.jp[\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)<\/r>/<a href=\"$1\" target=\"_blank\">$1<\/a>/igo;
559     $message =~ s/<r>(https?|ftp|gopher|telnet|whois|news)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)<\/r>/(URL)/igo;
560     $message =~ s/(<a href="(?:\.\.|http\:\/\/www\.onpuch\.jp\/cgi-bin\/onpuch)\/test\/read\.cgi\?bbs=\w+&key=\d+(?:&st=\d+)*(?:&to=\d+)*(?:&nofirst=true)*)/$1&imode=true/g;
561     $message =~ s/<\/?r>//g;
562    
563     # 末尾にsjisの1バイト目があったら削る
564     my $check1 = '(?:^|[\0-\200\240-\337])(?:[\201-\237\340-\374]{2})*';
565     my $check2 = '[\201-\237\340-\374]';
566     $mail =~ s/($check1)$check2$/$1/g;
567     $name =~ s/($check1)$check2$/$1/g;
568    
569     if($mail && $mail ne "sage"){
570     $mailto = "<b><a href=\"mailto:$mail\">$name</a></b>";
571     }else{
572     $mailto = "<b>$name</b>";
573     }
574     print "<p>[1:$mailto($time)]<br>$message</p><hr>\n";
575     if($start eq 1){$start++;}
576     }
577    
578     while($start != $end){
579     unless($LOG[$start-1]){last;}
580     chop($LOG[$start-1]);
581     ($name,$mail,$time,$message,$subject) = split(/<>/,$LOG[$start-1]);
582     #本文が空の場合
583     if ($message eq "") {
584     $name="";
585     $mail="";
586     $time="[ここ壊れてます]";
587     $message="[ここ壊れてます]";
588     }
589     # URLを変換(onpuch.jp以外のURLはリンクせず)
590     my $check = '(?:^|[\0-\200\240-\337])(?:[\201-\237\340-\374]{2})*';
591     $message =~ s/($check)(https?|ftp|gopher|telnet|whois|news)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/$1<r>$2\:$3<\/r>/igo;
592     $message =~ s/<r>(http\:\/\/www\.onpuch\.jp[\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)<\/r>/<a href=\"$1\" target=\"_blank\">$1<\/a>/igo;
593     $message =~ s/<r>(https?|ftp|gopher|telnet|whois|news)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)<\/r>/(URL)/igo;
594     $message =~ s/(<a href="(?:\.\.|http\:\/\/www\.onpuch\.jp\/cgi-bin\/onpuch)\/test\/read\.cgi\?bbs=\w+&key=\d+(?:&st=\d+)*(?:&to=\d+)*(?:&nofirst=true)*)/$1&imode=true/g;
595     $message =~ s/<\/?r>//g;
596    
597     # 末尾にsjisの1バイト目があったら削る
598     my $check1 = '(?:^|[\0-\200\240-\337])(?:[\201-\237\340-\374]{2})*';
599     my $check2 = '[\201-\237\340-\374]';
600     $mail =~ s/($check1)$check2$/$1/g;
601     $name =~ s/($check1)$check2$/$1/g;
602    
603     if($mail && $mail ne "sage"){
604     $mailto = "<b><a href=\"mailto:$mail\">$name</a></b>";
605     }else{
606     $mailto = "<b>$name</b>";
607     }
608     print "<p>[$start:$mailto($time)]<br>$message</p><hr>\n";
609     $start++;
610     }
611    
612     #my $FL=1;
613     #if($FORM{'ls'} || $end > 1001 || $end > @LOG-1){$FL=0}
614     #if($FL){
615    
616     print <<EOF;
617     <a href="../$FORM{'bbs'}/i/index.html">掲示板に戻る</a>
618     <a href="./read.cgi/$FORM{'bbs'}/$FORM{'key'}/1-5i">最初-</a>
619     EOF
620     if ($st2 > 0) {
621     $hannyou = "./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$st1-$st2" . "ni";
622     print <<EOF;
623     <a href=$hannyou>前$res1</a>
624     EOF
625     }
626     if ($st3 - $LINENUM < 1) {
627     $hannyou = "./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$st3-$st4" . "ni";
628     print <<EOF;
629     <a href=$hannyou>次$res2</a>
630     EOF
631     } else {
632     $hannyou = "./read.cgi/$FORM{'bbs'}/$FORM{'key'}/$st5" . "-ni";
633     print <<EOF;
634     <a href=$hannyou>新着</a>
635     EOF
636     }
637     print <<EOF;
638     <a href="./read.cgi/$FORM{'bbs'}/$FORM{'key'}/l5i">最新5</a><BR>
639     EOF
640     #}
641     print "<FORM METHOD=POST ACTION=\"./bbs.cgi\">\n";
642     print "<INPUT TYPE=submit VALUE=\"かきこむ\" name=\"submit\"> ";
643     print "NAME:<INPUT TYPE=text NAME=FROM SIZE=20 VALUE=\"\">";
644     print "MAIL:<INPUT TYPE=text NAME=mail SIZE=20 VALUE=\"\">";
645     print "<br>";
646     print "<INPUT TYPE=hidden name=time VALUE=$NOW>\n";
647     print "<INPUT TYPE=hidden name=bbs VALUE=$FORM{'bbs'}>\n";
648     print "<INPUT TYPE=hidden name=key VALUE=$FORM{'key'}>\n";
649     print "<TEXTAREA ROWS=5 COLS=60 wrap=off NAME=MESSAGE></TEXTAREA>\n";
650     print "</FORM><br>\n";
651     print "<P>$ver";
652     print "</BODY>";
653     print "</HTML>";
654     exit;
655     }
656     }
657    
658    
659     #エラー画面(エラー処理)
660     #DispError(TITLE,TOPIC);
661     sub DispError{
662     my ($topic)=@_;
663     print "Content-type: text/html; charset=shift_jis\n\n";
664     #-----------------------------------------------------------------------
665     print <<EOF;
666     <HTML>
667     <HEAD>
668     <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
669     <TITLE>$topic</TITLE>
670     <style type="text/css">
671     <!--
672     TD.Type1 {
673     color: #ffffff;
674     text-align: left;
675     }
676     A.BigLine {
677     color: #000000;
678     text-decoration: none;
679     }
680     -->
681     </style>
682     <BASE HREF="$hyoujun">
683     </HEAD>
684     <BODY TEXT="#000000" BGCOLOR="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">
685     <P><FONT SIZE=+1 COLOR="#FF0000">$topic</FONT></B><BR>
686     <DL>
687     <dt>1 名前:<font color="forestgreen"><b>$ver</b></font>投稿日:2001/04/12(木) 15:11<dd>$topic<br><br><br>
688     </DL>
689     <HR>
690     <FONT SIZE=-2>$ver</FONT>
691     <HR><P>
692     EOF
693     my $datn = substr($FORM{'key'},0,3);
694    
695     if (-e "../$FORM{'bbs'}/kako/$FORM{'key'}.html"){
696     print "隊長! 過去ログ倉庫で、<A TARGET=\"_self\" HREF=\"../$FORM{'bbs'}/kako/$FORM{'key'}.html\">スレッド $FORM{'key'}.html</A> を発見しました。\n";
697     }elsif (-e "../$FORM{'bbs'}/kako/$datn/$FORM{'key'}.dat"){
698     print "隊長! 過去ログ倉庫で、<A TARGET=\"_self\" HREF=\"../$FORM{'bbs'}/kako/$datn/$FORM{'key'}.dat\">スレッド $FORM{'key'}.dat</A> を発見しました。<BR><B><FONT SIZE=+1 COLOR=RED>が</FONT></B>、しかしまだ html化されていません。残念、待つしかない。\n";
699     }else{
700     print "<A TARGET=\"_self\" HREF=\"../$FORM{'bbs'}/kako/index.html\">過去ログ倉庫</A>にもありませんでした。<BR>問い合わせても見つかる可能\性はほとんどありません。\n";
701     }
702     print <<EOF;
703     </BODY>
704     </HTML>
705     EOF
706     exit;
707     }

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24