Mercurial > hg > chronicle
annotate cgi-bin/comments.cgi @ 128:9f092b9be906
Updated spelling.
author | Steve Kemp <steve@steve.org.uk> |
---|---|
date | Thu, 20 Dec 2007 11:49:46 +0000 |
parents | 412506c2de6b |
children | 4a882ba147e4 |
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 # | |
47 # my $TO = 'weblog@steve.org.uk'; | |
48 # my $FROM = 'weblog@steve.org.uk'; | |
49 # | |
50 my $TO = ''; | |
51 my $FROM = ''; | |
52 | |
53 | |
54 | |
55 | |
98 | 56 |
57 # | |
58 # Get the parameters from the request. | |
59 # | |
60 my $cgi = new CGI(); | |
61 my $name = $cgi->param('name') || undef; | |
62 my $mail = $cgi->param('mail') || undef; | |
63 my $body = $cgi->param('body') || undef; | |
64 my $id = $cgi->param('id') || undef; | |
108 | 65 my $cap = $cgi->param('captcha') || undef; |
98 | 66 |
67 | |
68 # | |
69 # If any are missing just redirect back to the blog homepage. | |
70 # | |
71 if ( !defined( $name ) || !length( $name ) || | |
72 !defined( $mail ) || !length( $mail ) || | |
73 !defined( $body ) || !length( $body ) || | |
74 !defined( $id ) || !length( $id ) ) | |
75 { | |
76 print "Location: http://" . $ENV{'HTTP_HOST'} . "/\n\n"; | |
77 exit; | |
78 } | |
79 | |
108 | 80 # |
81 # Does the captcha value contain text? If so spam. | |
82 # | |
83 if ( defined( $cap ) && length( $cap ) ) | |
84 { | |
85 print "Location: http://" . $ENV{'HTTP_HOST'} . "/\n\n"; | |
86 exit; | |
87 } | |
88 | |
98 | 89 |
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 | 96 # Otherwise save them away. |
97 # | |
98 # | |
99 # ID. | |
100 # | |
101 if ( $id =~ /^(.*)[\/\\](.*)$/ ){ | |
102 $id=$2; | |
103 } | |
104 | |
105 | |
106 # | |
108 | 107 # Show the header |
108 # | |
109 print "Content-type: text/html\n\n"; | |
110 | |
111 | |
112 # | |
98 | 113 # get the current time |
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 | 116 |
108 | 117 |
98 | 118 # |
119 # Open the file. | |
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 | 122 open( FILE, ">", $file ); |
123 print FILE "Name: $name\n"; | |
124 print FILE "Mail: $mail\n"; | |
125 print FILE "User-Agent: $ENV{'HTTP_USER_AGENT'}\n"; | |
126 print FILE "IP-Address: $ENV{'REMOTE_ADDR'}\n"; | |
127 print FILE "\n"; | |
128 print FILE $body; | |
129 close( FILE ); | |
130 | |
108 | 131 |
132 # | |
133 # Send a mail. | |
134 # | |
135 if ( length($TO) && length($FROM) ) | |
136 { | |
137 open ( SENDMAIL, "|/usr/lib/sendmail -t"); | |
138 print SENDMAIL "To: $TO\n"; | |
139 print SENDMAIL "From: $FROM\n"; | |
140 print SENDMAIL "Subject: New Comment [$id]\n"; | |
141 print SENDMAIL "\n\n"; | |
142 print ( SENDMAIL `cat $file` ); | |
143 close ( SENDMAIL ); | |
144 } | |
145 | |
146 | |
98 | 147 # |
148 # Now show the user the thanks message.. | |
149 # | |
108 | 150 |
98 | 151 print <<EOF; |
152 <html> | |
153 <head> | |
154 <title>Thanks For Your Comment</title> | |
155 </head> | |
156 <body> | |
157 <h2>Thanks!</h2> | |
158 <p>Your comment will be included the next time this blog is rebuilt.</p> | |
159 <p><a href="http://$ENV{'HTTP_HOST'}/">Return to blog</a>.</p> | |
160 </body> | |
161 </html> | |
162 EOF | |
163 |