X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/23b8672bc9a8449f6a89d94b25ea036f4815e4bc..d8d40cf29e75b2250bac34b246431106f9a478ba:/script/deliver-message diff --git a/script/deliver-message b/script/deliver-message index d3af5ffba..81de3ef58 100755 --- a/script/deliver-message +++ b/script/deliver-message @@ -1,32 +1,38 @@ #!/usr/bin/env ruby -require File.dirname(__FILE__) + '/../config/environment' -require 'mailread' +require File.join(File.dirname(__FILE__), "..", "config", "environment") -exit 0 unless recipient = ARGV[0].match(/^([cm])-(\d+)-(.*)$/) - -if recipient[1] == "c" - comment = DiaryComment.find(recipient[2]) - digest = comment.digest - from = comment.diary_entry.user +if recipient = ARGV[0].match(/^c-(\d+)-(\d+)-(.*)$/) + comment = DiaryComment.find(recipient[1]) + expected_token = comment.notification_token(recipient[2]) + date = comment.created_at + from = comment.diary_entry.subscribers.find(recipient[2]) to = comment.user -else - message = Message.find(recipient[2]) - digest = message.digest + token = recipient[3] +elsif recipient = ARGV[0].match(/^m-(\d+)-(.*)$/) + message = Message.find(recipient[1]) + expected_token = message.notification_token + date = message.sent_on from = message.recipient to = message.sender + token = recipient[2] +else + exit 0 end -exit 0 unless recipient[3] == digest[0,6] +exit 0 unless ActiveSupport::SecurityUtils.secure_compare(token, expected_token) +exit 0 unless from.active? +exit 0 if date < 1.month.ago + +message&.update(:message_read => true) -mail = Mail.new(STDIN) +mail = Mail.new($stdin.read + .encode(:universal_newline => true) + .encode(:crlf_newline => true)) -message = Message.new(:sender => from, :recipient => to, - :sent_on => Time.now.getutc, - :title => mail["Subject"], - :body => mail.body.join("\n")) +message = Message.from_mail(mail, from, to) message.save! -Notifier::deliver_message_notification(message) +UserMailer.message_notification(message).deliver if message.notify_recipient? exit 0