#!/usr/local/bin/perl #�����₫���C�g�̓V���v���ȋ@�\�̈�s�f���ł��B #�g�p�A�����A�Ĕz�z�Ɉ�̐����͂���܂���B #���e�R�[�h���[�`���͌Ǔ��̈�Ձihttp://www.synapse.ne.jp/~pato/kojo/�j #���Q�l�Ɋȗ����������̂��g�p���Ă��܂��B #07/05 2000 �^�ӐT ############################### ���ݒ� ############################### $title = '�����������v���R��펺����'; # �f���̖��O $bbsurl = './tl11p.cgi'; # ���̃X�N���v�g��URL�i���Ύw����j $bbsfile = './bbs.dat'; # �L�^�t�@�C���̃p�X $counterfile = './count.txt'; # �J�E���^�t�@�C���̃p�X $jcpl = './jcode.pl'; # ���{��R�[�h�ϊ����C�u�����̃p�X # �o��HTML�̕����F��w�i�i�{�f�B�^�O�j $body = '<body text="#000000" bgcolor="#aabbcc" link="#1775a2" vlink="#1775a2" alink="#cc0000">'; $namecolor = '#d53d8e'; # ���O�̐F $textcolor = '#333333'; # ���e�̐F $datecolor = '#666666'; # ���e�����̐F $max = 100; # �\������ $maxlength = 3*1024; # ���̓f�[�^���v�̍ő�l(byte) $code1 = 12345678; # ���e�R�[�h1 (8���̐��l�A�v�ύX) $code2 = 56; # ���e�R�[�h2 (2���̐��l�A�v�ύX) $ltime = 3*60*60; # �Œ����e�Ԋu(sec�A�����蒷�����Ԃ��o�߂����ꍇ�͏������ݕs��) $stime = 0; # �ŒZ���e�Ԋu(sec�A������Z���Ԋu�̏������ݕs�j $time_dif = 9*60*60; # �O���j�b�W�W�����Ƃ̎����i���{���Ԃ�\������ꍇ9*60*60�j ############################### �S�̏��� ############################### &get_time; if ($ENV{'REQUEST_METHOD'} eq "POST") { &decode; &write if($FORM{'value'}); } &html; exit; ############################### �T�u���[�`�� ############################### sub get_time{ #-------------------- �������� --------------------# $time = time; # $time�͓��e�R�[�h�쐬�ɂ��g�p����̂ŏȗ��s�� ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($time + $time_dif); $mon++; $wday = ('��','��','��','��','��','��','�y')[$wday]; $date_now = sprintf( "%02d/%02d($wday)%02d:%02d",$mon,$mday,$hour,$min); } sub decode{ #-------------------- �f�R�[�h --------------------# return if($ENV{'CONTENT_LENGTH'} > $maxlength); require "$jcpl"; read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); foreach (split(/&/,$buf)) { ($name, $value) = split(/=/,$_); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'sjis'); $value =~ s/\r|\n//g; $value =~ s/&/&\;/g; $value =~ s/</</g; $value =~ s/>/>/g; $value =~ s/\t:/ :/g; $FORM{$name} = $value; } } sub html{ #-------------------- HTML�o�� --------------------# &counter; # HTML���̔C�ӂ̏ꏊ��$count��u���Ƃ����ɃJ�E���g�����\������܂� # ���e�R�[�h���� $code = ($time+$code1)*$code2; print "Content-type: text/html\n\n"; print <<"_HTML_"; <html><head><title>$title</title></head> $body <font size=4><b>$title</b></font> <small>�@�@| <a href="http://thor.prohosting.com/~crium/cgi-bin/mchat.cgi">����펺</a> | <a href="http://wacom.virtualave.net/cgi-bin/kakiko.cgi">��Q��펺</a> | <a href="http://www.lucky.org/mk3/user/itsgood.html">�i�ߎ�</a> | <a href="http://mj.giganet.net/">������</a> | <a href="http://i.am/kakumeigun/">�v���R</a> |�@�@��$count </small> <form method=post action="$bbsurl"> <input type=hidden name=code value="$code"> ���O <input type=text name="name" size=20 maxlength=50 value="$FORM{'name'}"> ���������N <input type="checkbox" name="auto_link" value="1" checked><br> ���e <input type=text name="value" size=80 maxlength=300><br> ���� <input type=submit value="���e /�����[�h"><input type=reset value="del"></form><p> _HTML_ # �L���̏o�� open(IN,"$bbsfile"); while (<IN>) { ($date,$name,$value,$pcode) = split(/\t:/,$_); print "<hr size=1><font color=\"$namecolor\"><b>$name</b> </font>>\; "; print "<font color=\"$textcolor\"><b>$value</b></font> <font size=1 color=\"$datecolor\">$date</font>\n"; } close(IN); print <<"_HTML_"; <hr><div align=right><small>�����₫���C�g1.1p <a href="http://mizuiro.virtualave.net/t_lite/">source</a></small></div> </body></html> _HTML_ } sub write{ #-------------------- �������ݏ��� --------------------# open(IN,"$bbsfile"); @data = <IN>; close(IN); foreach(@data){ $code0 = (split(/\t:/,$_))[3]; chomp $code0; if($code0 == $FORM{'code'}){&error('���̓��e�R�[�h�͎g�p�ς݂ł��B');} } # ���e�R�[�h���� $de_code = ($FORM{'code'}/$code2)-$code1; if($time <= $de_code){ &error('���e�R�[�h�����Ă��܂��B�f���������[�h���ĉ������B'); } elsif($time - $de_code > $ltime){&error("���e�R�[�h�̗L�������i$ltime�b�j���߂��Ă��܂��B�f\���������[�h���ĉ������B");} elsif($time - $de_code < $stime){&error("���e�Ԋu���Z�������܂��B$stime�b�ȏ�o�߂��Ă��瓊�e���ĉ������B");} if($FORM{'auto_link'}){ $FORM{'value'} =~ s/(http:\/\/)/\t:$1/g; # �A������URL��\�����ꍇ�̏����i\t:�ŋ��j $FORM{'value'} =~ s/http:\/\/([\w|\!\#\$\%\&\'\(\)\=\-\^\`\\\|\@\~\[\{\]\}\;\+\:\*\,\.\?\/]+)/<a href=\"http:\/\/$1\">��<\/a>/g; $FORM{'value'} =~ s/\t://g; # \t:�����ɖ߂� } splice(@data,$max-1) if($max <= @data); open(OUT,">$bbsfile"); print OUT "$date_now\t:$FORM{'name'}\t:$FORM{'value'}\t:$FORM{'code'}\n"; foreach(@data){ print OUT $_; } close(OUT); } sub error{ #-------------------- �G���[���� --------------------# $error_msg = $_[0]; print "Content-type: text/plain\n\n"; print "Error(T-T):$error_msg\n\n"; print "--�����₫���C�g1.1p--\n\n\n\n"; exit; } sub counter{ #-------------------- �A�N�Z�X�J�E���^ --------------------# open(IN,"$counterfile"); $count = <IN>; close(IN); $count++; open(OUT,">$counterfile"); print OUT "$count"; close(OUT); }