Block any address with more than one suspended user
[rails.git] / script / deliver-message
1 #!/usr/bin/env ruby
2
3 require File.dirname(__FILE__) + '/../config/environment'
4
5 exit 0 unless recipient = ARGV[0].match(/^([cm])-(\d+)-(.*)$/)
6
7 if recipient[1] == "c"
8   comment = DiaryComment.find(recipient[2])
9   digest = comment.digest
10   from = comment.diary_entry.user
11   to = comment.user
12 else
13   message = Message.find(recipient[2])
14   digest = message.digest
15   from = message.recipient
16   to = message.sender
17 end
18
19 exit 0 unless recipient[3] == digest[0,6]
20
21 mail = Mail.new(STDIN.readlines.join)
22
23 if mail.multipart?
24   body = mail.html_part || mail.text_part
25 else
26   body = mail
27 end
28
29 message = Message.new(:sender => from, :recipient => to,
30                       :sent_on => mail.date.new_offset(0),
31                       :title => mail.subject.sub(/\[OpenStreetMap\] */, ""),
32                       :body => body.decoded)
33 message.save!
34
35 Notifier.message_notification(message).deliver
36
37 exit 0