1 #!/usr/bin/perl -w
2 # File: chat_board.pl
3 # Author: unknown
4 # Location: http://www.thelug.org/docs/
5 # Description: This perl script is a simple
6 # message board. It would be run from a web
7 # server through a CGI parser.
8
9 use 5.004;
10 use strict;
11 use CGI qw(:standard);
12 use Fcntl qw(:flock);
13
14 sub bail {
15 my $error = "@_";
16 print h1("Unexpected Error"), p($error), end_html;
17 die $error;
18 }
19
20 my(
21 $CHATNAME,
22 $MAXSAVE,
23 $TITLE,
24 $cur,
25 @entries,
26 $entry,
27 );
28
29 $TITLE = "Message Board v0.01a - Tom Large";
30 $CHATNAME = "./chat_board.txt";
31 $MAXSAVE = 50;
32
33 print header, start_html($TITLE);
34 print ('<p align=center><img src="/cfs/logo.jpg"></p>');
35 print ('<body bgcolor=black text=white link=3379DC vlink=97CCFF>');
36 print ('<a href="/cfs/cfs.html">CFS HQ</a>');
37
38 $cur = CGI->new();
39 if ($cur->param("message")) {
40 $cur->param("date", scalar localtime);
41 @entries = ($cur);
42 }
43
44 open(CHANDLE, "+< $CHATNAME") || bail("cannot open $CHATNAME: $!");
45
46 flock(CHANDLE, LOCK_EX) || bail("cannot flock $CHATNAME: $!");
47
48 while (!eof(CHANDLE) && @entries < $MAXSAVE) {
49 $entry = CGI->new(\*CHANDLE);
50 push @entries, $entry;
51 }
52 seek(CHANDLE, 0, 0) || bail("cannot rewind $CHATNAME: $!");
53 foreach $entry (@entries) {
54 $entry->save(\*CHANDLE);
55 }
56 truncate(CHANDLE, tell(CHANDLE)) ||
57 bail("cannot truncate $CHATNAME: $!");
58 close(CHANDLE) || bail("cannot close $CHATNAME: $!");
59
60 print hr, start_form;
61 print p("Your name my liege :", $cur->textfield(
62 -NAME => "name"));
63 print p("Speak :", $cur->textfield(
64 -NAME => "message",
65 -OVERRIDE => 1,
66 -SIZE => 50));
67 print p(submit("So let it be written\!"), reset("Uh\, no\. Try again\."));
68 print end_form, hr;
69
70 print h2("Prior Ravings:");
71 foreach $entry (@entries) {
72 print hr;
73 printf("<B>Posted by:</B> <I>%s</I><BR><BR><B>Date:</B> <I>%s</I><BR><BR><BR><B>Message</B>:<BR><I>%s</I>",
74 $entry->param("name"),
75 $entry->param("date"),
76 $entry->param("message"));
77 print ('<BR>');
78 print br();
79 }
80 print hr;
81 print end_html;
syntax highlighted by Code2HTML, v. 0.9.1