annotate cgi-bin/comments.cgi @ 123:412506c2de6b

Attempt to recognise paragraphs.
author Steve Kemp <steve@steve.org.uk>
date Thu, 13 Dec 2007 21:32:24 +0000
parents a25099606ec5
children 4a882ba147e4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
1 #!/usr/bin/perl -w
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
2 #
108
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
3 # This is a simple script which is designed to accept comment requests,
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
4 # and save the details to local text files upon the localhost.
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
5 #
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
6 # This code is very simple and should be easy to extend with anti-spam
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
7 # at a later point.
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
8 #
108
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
9 #
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
10 ###
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
11 #
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
12 # NOTE: If you wish to use this you must edit three things at the
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
13 # top of the script.
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
14 #
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
15 # 1. The directory to save the comment data to.
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
16 #
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
17 # 2. The email address to notify.
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
18 #
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
19 # 3. The email address to use as the sender.
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
20 #
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
21 ####
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
22 #
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
23 # Steve
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
24 # --
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
25 #
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
26
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
27
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
28
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
29 use strict;
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
30 use warnings;
99
cd27fd555272 Use a better date + time format.
Steve Kemp <steve@steve.org.uk>
parents: 98
diff changeset
31
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
32 use CGI;
99
cd27fd555272 Use a better date + time format.
Steve Kemp <steve@steve.org.uk>
parents: 98
diff changeset
33 use POSIX qw(strftime);
cd27fd555272 Use a better date + time format.
Steve Kemp <steve@steve.org.uk>
parents: 98
diff changeset
34
cd27fd555272 Use a better date + time format.
Steve Kemp <steve@steve.org.uk>
parents: 98
diff changeset
35
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
36
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
37 #
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
38 # The directory to store comments in
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
39 #
108
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
40 # my $COMMENT = "/home/www/comments/";
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
41 #
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
42 my $COMMENT = $ENV{'DOCUMENT_ROOT'} . "../comments/";
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
43
108
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
44 #
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
45 # The notification addresses - leave blank to disable
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
46 #
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
47 # my $TO = 'weblog@steve.org.uk';
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
48 # my $FROM = 'weblog@steve.org.uk';
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
49 #
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
50 my $TO = '';
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
51 my $FROM = '';
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
52
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
53
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
54
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
55
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
56
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
57 #
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
58 # Get the parameters from the request.
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
59 #
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
60 my $cgi = new CGI();
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
61 my $name = $cgi->param('name') || undef;
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
62 my $mail = $cgi->param('mail') || undef;
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
63 my $body = $cgi->param('body') || undef;
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
64 my $id = $cgi->param('id') || undef;
108
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
65 my $cap = $cgi->param('captcha') || undef;
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
66
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
67
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
68 #
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
69 # If any are missing just redirect back to the blog homepage.
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
70 #
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
71 if ( !defined( $name ) || !length( $name ) ||
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
72 !defined( $mail ) || !length( $mail ) ||
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
73 !defined( $body ) || !length( $body ) ||
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
74 !defined( $id ) || !length( $id ) )
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
75 {
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
76 print "Location: http://" . $ENV{'HTTP_HOST'} . "/\n\n";
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
77 exit;
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
78 }
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
79
108
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
80 #
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
81 # Does the captcha value contain text? If so spam.
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
82 #
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
83 if ( defined( $cap ) && length( $cap ) )
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
84 {
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
85 print "Location: http://" . $ENV{'HTTP_HOST'} . "/\n\n";
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
86 exit;
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
87 }
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
88
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
89
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
90 #
123
412506c2de6b Attempt to recognise paragraphs.
Steve Kemp <steve@steve.org.uk>
parents: 108
diff changeset
91 # Convert the message to crude HTML.
412506c2de6b Attempt to recognise paragraphs.
Steve Kemp <steve@steve.org.uk>
parents: 108
diff changeset
92 #
412506c2de6b Attempt to recognise paragraphs.
Steve Kemp <steve@steve.org.uk>
parents: 108
diff changeset
93 $body =~ s/\n$/<br>\n/mg;
412506c2de6b Attempt to recognise paragraphs.
Steve Kemp <steve@steve.org.uk>
parents: 108
diff changeset
94
412506c2de6b Attempt to recognise paragraphs.
Steve Kemp <steve@steve.org.uk>
parents: 108
diff changeset
95 #
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
96 # Otherwise save them away.
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
97 #
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
98 #
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
99 # ID.
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
100 #
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
101 if ( $id =~ /^(.*)[\/\\](.*)$/ ){
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
102 $id=$2;
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
103 }
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
104
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
105
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
106 #
108
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
107 # Show the header
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
108 #
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
109 print "Content-type: text/html\n\n";
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
110
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
111
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
112 #
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
113 # get the current time
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
114 #
99
cd27fd555272 Use a better date + time format.
Steve Kemp <steve@steve.org.uk>
parents: 98
diff changeset
115 my $timestr = strftime "%e-%B-%Y-%H:%M:%S", gmtime;
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
116
108
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
117
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
118 #
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
119 # Open the file.
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
120 #
99
cd27fd555272 Use a better date + time format.
Steve Kemp <steve@steve.org.uk>
parents: 98
diff changeset
121 my $file = $COMMENT . "/" . $id . "." . $timestr;
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
122 open( FILE, ">", $file );
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
123 print FILE "Name: $name\n";
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
124 print FILE "Mail: $mail\n";
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
125 print FILE "User-Agent: $ENV{'HTTP_USER_AGENT'}\n";
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
126 print FILE "IP-Address: $ENV{'REMOTE_ADDR'}\n";
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
127 print FILE "\n";
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
128 print FILE $body;
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
129 close( FILE );
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
130
108
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
131
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
132 #
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
133 # Send a mail.
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
134 #
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
135 if ( length($TO) && length($FROM) )
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
136 {
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
137 open ( SENDMAIL, "|/usr/lib/sendmail -t");
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
138 print SENDMAIL "To: $TO\n";
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
139 print SENDMAIL "From: $FROM\n";
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
140 print SENDMAIL "Subject: New Comment [$id]\n";
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
141 print SENDMAIL "\n\n";
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
142 print ( SENDMAIL `cat $file` );
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
143 close ( SENDMAIL );
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
144 }
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
145
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
146
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
147 #
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
148 # Now show the user the thanks message..
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
149 #
108
a25099606ec5 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 99
diff changeset
150
98
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
151 print <<EOF;
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
152 <html>
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
153 <head>
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
154 <title>Thanks For Your Comment</title>
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
155 </head>
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
156 <body>
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
157 <h2>Thanks!</h2>
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
158 <p>Your comment will be included the next time this blog is rebuilt.</p>
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
159 <p><a href="http://$ENV{'HTTP_HOST'}/">Return to blog</a>.</p>
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
160 </body>
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
161 </html>
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
162 EOF
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
163