#!/usr/bin/perl require 5.0; use CGI; require "fmt_time.pm"; $url_board = "index.cgi"; #$maintenance = "10:00"; $q = new CGI; #$nick = $q->param (-name => 'nick') or $q->cookie (-name => 'nick'); #$email = $q->param (-name => 'email') or $q->cookie (-name => 'email'); #®ister unless $nick; #$cookie_nick = $q->cookie (-name => 'nick', -value => $nick, -expires => '+1m'); #$cookie_email = $q->cookie (-name => 'email', -value => $email, -expires => '+1m'); $chat_file = "chat_message"; $chat_file = $q->param (-name => 'chat') if $q->param (-name => 'chat'); $history = 0; $history = $q->param (-name => 'hist') if $q->param (-name => 'hist'); $cookie_history = $q->cookie (-name => 'hist', -value => $history, -expires => '+10m'); $sort_mode = $q->cookie (-name => 'sort') if $q->cookie (-name => 'sort'); $sort_mode = $q->param ('sort') if $q->param ('sort'); $sort_mode = "timeN" unless $sort_mode =~ m![PN]$!; $cookie_sort = $q->cookie (-name => 'sort', -value => $sort_mode, -expires => '+10m'); print $q->header (-type => 'text/html', -pragma => 'no-cache', -cookie => [$cookie_nick, $cookie_email, $cookie_sort]); ### LOAD CHAT @chat = (); open CHAT, "<$chat_file"; while ($item = ) { push @chat, [ split '\x1', $item ]; } close CHAT; ### COMPUTE HISTORY $history = 0 if $history < 0 || $history > $#chat; $hist_prev = $history - 20; $hist_prev = 0 if $hist_prev < 0; $hist_next = $history + 20; $hist_next = $#chat - 19 if $hist_next > $#chat - 19; $hist_next = 0 if $hist_next < 0; $hist_top = 0; $hist_bottom = $#chat - 19; $hist_bottom = 0 if $hist_bottom < 0; ### HEAD print "\n"; print "\n"; print " ( message ) :.b.o.a.r.d. \n"; print "\n"; print "\n"; print "\n"; print "\n\n"; ### PAGE BEGIN print "\n"; if ($maintenance) { print "

.b.o.a.r.d. maintenance - back until $maintenance

"; exit; } ### TABLE BEGIN print "\n"; print "\t\n"; print "\t\t\n"; print "\t\t\n"; print "\t\t\n"; print "\t\n"; print "\t\t\n"; print "\t\t\n"; print "\t\n"; ### TABLE CONTENT @chat = sort by_nick_p @chat if $sort_mode eq "nickP"; @chat = sort by_nick_n @chat if $sort_mode eq "nickN"; @chat = sort by_time_p @chat if $sort_mode eq "timeP"; @chat = sort by_time_n @chat if $sort_mode eq "timeN"; @chat = sort by_subject_p @chat if $sort_mode eq "subjP"; @chat = sort by_subject_n @chat if $sort_mode eq "subjN"; for ($i = $history; $i < $history + 20 && $i <= $#chat; $i++) { ($nick, $email, $www, $time, $subject, $msg) = @{ $chat[$i] }; $msubject = "(message board) RE: $subject"; $msubject =~ s! !%20!gi; $date = &get_date ($time); $time = &get_time ($time); print "\t\n"; print "\t\t\n"; print "\t\t\n"; print "\t\n"; print "\t\n"; print "\t\t\n"; print "\t\n"; print "\t\n"; print "\t\t\n"; print "\t\t\n"; print "\t\n"; $row++; } ### HISTORY ON BOTTOM print "\t\n"; print "\t\t\n"; print "\t\t\n"; print "\t\t\n"; ### TABLE END print "
[add message]
"; print "[add biig one]
[refresh board]"; print " ( message )"; print " [beta-board-comments]\n"; print "\t\t\t["; print "" if $sort_mode eq "timeN"; print "-sort b"; print "" if $sort_mode eq "timeN"; print ""; print "" if $sort_mode eq "timeP"; print "y time+"; print "" if $sort_mode eq "timeP"; print "] \n"; print "\t\t\t["; print "" if $sort_mode eq "nickN"; print "-sort b"; print "" if $sort_mode eq "nickN"; print ""; print "" if $sort_mode eq "nickP"; print "y nick+"; print "" if $sort_mode eq "nickP"; print "] \n"; print "\t\t\t["; print "" if $sort_mode eq "subjN"; print "-sort b"; print "" if $sort_mode eq "subjN"; print ""; print "" if $sort_mode eq "subjP"; print "y subject+"; print "" if $sort_mode eq "subjP"; print "]\n"; print "\t\t\t
"; print "\t\t\t[ "; print "<<$hist_top" if $hist_top < $history; print "<<" if $hist_top >= $history; print " <$hist_prev" if $hist_prev < $history; print " <" if $hist_prev >= $history; print " history "; print "$hist_next>" if $hist_next > $history; print ">" if $hist_next <= $history; print " $hist_bottom>>" if $hist_bottom > $history; print " >>" if $hist_bottom <= $history; print " ]"; print "\t\t
\n"; print "\t\t\t
\n"; print "\t\t
\n"; print "\t\t$nick \n" if $email; print "\t\t$nick \n" unless $email; print "\t\t $www';return true;\">w3\n" if $www; print "\t\t
\n"; print "\t\t$date
$time
\n"; print "\t\t
$subject
\n"; print "\t\t$msg\n"; print "\t
\n"; print "\t\t\t
\n"; print "\t\t
  \n"; print "\t\t\t[ "; print "<<$hist_top" if $hist_top < $history; print "<<" if $hist_top >= $history; print " <$hist_prev" if $hist_prev < $history; print " <" if $hist_prev >= $history; print " history "; print "$hist_next>" if $hist_next > $history; print ">" if $hist_next <= $history; print " $hist_bottom>>" if $hist_bottom > $history; print " >>" if $hist_bottom <= $history; print " ]"; print "\t\t
\n"; print "\n"; print "\n\n"; sub by_nick_p { lc @{$a}[0] cmp lc @{$b}[0] || @{$b}[3] <=> @{$a}[3]; } sub by_nick_n { lc @{$b}[0] cmp lc @{$a}[0] || @{$b}[3] <=> @{$a}[3]; } sub by_time_p { @{$a}[3] <=> @{$b}[3]; } sub by_time_n { @{$b}[3] <=> @{$a}[3]; } sub by_subject_p { $sa = lc @{$a}[4]; $sb = lc @{$b}[4]; $sa =~ s!^\s+(.+)\s+$!$1!gi; $sb =~ s!^\s+(.+)\s+$!$1!gi; $sa =~ s!^re(\[\d+\])?:\s+!!gi; $sb =~ s!^re(\[\d+\])?:\s+!!gi; $sa cmp $sb || @{$b}[3] <=> @{$a}[3]; } sub by_subject_n { $sa = lc @{$a}[4]; $sb = lc @{$b}[4]; $sa =~ s!^\s+(.+)\s+$!$1!gi; $sb =~ s!^\s+(.+)\s+$!$1!gi; $sa =~ s!^re(\[\d+\])?:\s+!!gi; $sb =~ s!^re(\[\d+\])?:\s+!!gi; $sb cmp $sa || @{$b}[3] <=> @{$a}[3]; } sub register { print $q->header (-type => 'text/html', -pragma => 'no-cache'); print "\n"; print "\n"; print "m.e.s.s.a.g.e.:.b.o.a.r.d.:.r.e.g.i.s.t.r.a.t.i.o.n\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; print "\t\n"; print "\t\t\n"; print "\t\t\t\n"; print "\t\t\t\n"; print "\t\t\n"; print "\t\t\n"; print "\t\t\t\n"; print "\t\t\t\n"; print "\t\t\n"; print "\t\t\n"; print "\t\t\t\n"; print "\t\t\t\n"; print "\t\t\n"; print "\t
nick\n"; print "\t\t\t\t\n"; print "\t\t\t
e-mail\n"; print "\t\t\t\n"; print "\t\t\t\t\n"; print "\t\t\t\t\n"; print "\t\t\t
 \n"; print "\t\t\t\t
\n"; print "\t\t\t\t\t\n"; print "\t\t\t\t\t\n"; print "\t\t\t
\n"; print "\t\t\t
\n"; print "\t\t\t\t\n"; print "
\n"; print "\n"; print "\n"; print "\n"; exit 1; }