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