diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/models/info_request.rb | 6 | ||||
-rw-r--r-- | app/models/mail_server_log.rb (renamed from app/models/exim_log.rb) | 65 | ||||
-rw-r--r-- | app/models/mail_server_log_done.rb (renamed from app/models/exim_log_done.rb) | 9 | ||||
-rw-r--r-- | app/views/admin_request/show.rhtml | 8 |
4 files changed, 43 insertions, 45 deletions
diff --git a/app/models/info_request.rb b/app/models/info_request.rb index 85168e6d4..d8c84fa9e 100644 --- a/app/models/info_request.rb +++ b/app/models/info_request.rb @@ -47,7 +47,7 @@ class InfoRequest < ActiveRecord::Base has_many :track_things, :order => 'created_at desc' has_many :comments, :order => 'created_at' has_many :censor_rules, :order => 'created_at desc' - has_many :exim_logs, :order => 'exim_log_done_id' + has_many :mail_server_logs, :order => 'mail_server_log_done_id' has_tag_string @@ -884,8 +884,8 @@ public info_request_event.track_things_sent_emails.each { |a| a.destroy } info_request_event.destroy end - self.exim_logs.each do |exim_log| - exim_log.destroy + self.mail_server_logs.each do |mail_server_log| + mail_server_log.destroy end self.outgoing_messages.each { |a| a.destroy } self.incoming_messages.each { |a| a.destroy } diff --git a/app/models/exim_log.rb b/app/models/mail_server_log.rb index ace9d422b..e925a2759 100644 --- a/app/models/exim_log.rb +++ b/app/models/mail_server_log.rb @@ -1,18 +1,17 @@ # == Schema Information -# Schema version: 114 +# Schema version: 20121010214348 # -# Table name: exim_logs +# Table name: mail_server_logs # -# id :integer not null, primary key -# exim_log_done_id :integer -# info_request_id :integer -# order :integer not null -# line :text not null -# created_at :datetime not null -# updated_at :datetime not null +# id :integer not null, primary key +# mail_server_log_done_id :integer +# info_request_id :integer +# order :integer not null +# line :text not null +# created_at :datetime not null +# updated_at :datetime not null # -# models/exim_log.rb: # We load log file lines for requests in here, for display in the admin interface. # # Copyright (c) 2009 UK Citizens Online Democracy. All rights reserved. @@ -20,34 +19,34 @@ # # $Id: exim_log.rb,v 1.14 2009-09-17 21:10:05 francis Exp $ -class EximLog < ActiveRecord::Base +class MailServerLog < ActiveRecord::Base belongs_to :info_request - belongs_to :exim_log_done + belongs_to :mail_server_log_done # Load in exim log file from disk, or update if we already have it # Assumes files are named with date, rather than cyclically. # Doesn't do anything if file hasn't been modified since it was last loaded. # Note: If you do use rotated log files (rather than files named by date), at some # point old loaded log lines will get deleted in the database. - def EximLog.load_file(file_name) + def MailServerLog.load_file(file_name) is_gz = file_name.include?(".gz") file_name_db = is_gz ? file_name.gsub(".gz", "") : file_name modified = File.stat(file_name).mtime - raise "EximLog.load_file: file not found " + file_name if modified.nil? + raise "MailServerLog.load_file: file not found " + file_name if modified.nil? ActiveRecord::Base.transaction do # see if we already have it - done = EximLogDone.find_by_filename(file_name_db) + done = MailServerLogDone.find_by_filename(file_name_db) if done if modified.utc == done.last_stat.utc # already have that, nothing to do return else - EximLog.delete_all "exim_log_done_id = " + done.id.to_s + MailServerLog.delete_all "mail_server_log_done_id = " + done.id.to_s end else - done = EximLogDone.new(:filename => file_name_db) + done = MailServerLogDone.new(:filename => file_name_db) end done.last_stat = modified # update done structure so we know when we last read this file @@ -66,7 +65,7 @@ class EximLog < ActiveRecord::Base end # Scan the file - def EximLog.load_exim_log_data(f, done) + def MailServerLog.load_exim_log_data(f, done) order = 0 f.each do |line| order = order + 1 @@ -74,7 +73,7 @@ class EximLog < ActiveRecord::Base for email in emails info_request = InfoRequest.find_by_incoming_email(email) if info_request - info_request.exim_logs.create!(:line => line, :order => order, :exim_log_done => done) + info_request.mail_server_logs.create!(:line => line, :order => order, :mail_server_log_done => done) else puts "Warning: Could not find request with email #{email}" end @@ -82,7 +81,7 @@ class EximLog < ActiveRecord::Base end end - def EximLog.load_postfix_log_data(f, done) + def MailServerLog.load_postfix_log_data(f, done) order = 0 emails = scan_for_postfix_queue_ids(f) # Go back to the beginning of the file @@ -94,7 +93,7 @@ class EximLog < ActiveRecord::Base emails[queue_id].each do |email| info_request = InfoRequest.find_by_incoming_email(email) if info_request - info_request.exim_logs.create!(:line => line, :order => order, :exim_log_done => done) + info_request.mail_server_logs.create!(:line => line, :order => order, :mail_server_log_done => done) else puts "Warning: Could not find request with email #{email}" end @@ -103,7 +102,7 @@ class EximLog < ActiveRecord::Base end end - def EximLog.scan_for_postfix_queue_ids(f) + def MailServerLog.scan_for_postfix_queue_ids(f) result = {} f.each do |line| emails = email_addresses_on_line(line) @@ -115,17 +114,17 @@ class EximLog < ActiveRecord::Base end # Retuns nil if there is no queue id - def EximLog.extract_postfix_queue_id_from_syslog_line(line) + def MailServerLog.extract_postfix_queue_id_from_syslog_line(line) # Assume the log file was written using syslog and parse accordingly m = SyslogProtocol.parse("<13>" + line).content.match(/^\S+: (\S+):/) m[1] if m end - def EximLog.email_addresses_on_line(line) + def MailServerLog.email_addresses_on_line(line) line.scan(/request-[^\s]+@#{Configuration::incoming_email_domain}/).sort.uniq end - def EximLog.request_sent?(ir) + def MailServerLog.request_sent?(ir) case(Configuration::mta_log_type.to_sym) when :exim request_exim_sent?(ir) @@ -137,17 +136,17 @@ class EximLog < ActiveRecord::Base end # Look at the log for a request and check that an email was delivered - def EximLog.request_exim_sent?(ir) + def MailServerLog.request_exim_sent?(ir) # Look for line showing request was sent found = false - ir.exim_logs.each do |exim_log| + ir.mail_server_logs.each do |mail_server_log| test_outgoing = " <= " + ir.incoming_email + " " - if exim_log.line.include?(test_outgoing) + if mail_server_log.line.include?(test_outgoing) # Check the from value is the same (it always will be, but may as well # be sure we are parsing the exim line right) envelope_from = " from <" + ir.incoming_email + "> " - if !exim_log.line.include?(envelope_from) - $stderr.puts("unexpected parsing of exim line: [#{exim_log.line.chomp}]") + if !mail_server_log.line.include?(envelope_from) + $stderr.puts("unexpected parsing of exim line: [#{mail_server_log.line.chomp}]") else found = true end @@ -156,10 +155,10 @@ class EximLog < ActiveRecord::Base found end - def EximLog.request_postfix_sent?(ir) + def MailServerLog.request_postfix_sent?(ir) # dsn=2.0.0 is the magic word that says that postfix delivered the email # See http://tools.ietf.org/html/rfc3464 - ir.exim_logs.any? { |l| l.line.include?("dsn=2.0.0") } + ir.mail_server_logs.any? { |l| l.line.include?("dsn=2.0.0") } end # Check that the last day of requests has been sent in Exim and we got the @@ -173,7 +172,7 @@ class EximLog < ActiveRecord::Base # NB: There can be several emails involved in a request. This just checks that # at least one of them has been succesfully sent. # - def EximLog.check_recent_requests_have_been_sent + def MailServerLog.check_recent_requests_have_been_sent # Get all requests sent for from 2 to 10 days ago. The 2 day gap is # because we load exim log lines via cron at best an hour after they # are made) diff --git a/app/models/exim_log_done.rb b/app/models/mail_server_log_done.rb index 3cedc1379..0dcae37a8 100644 --- a/app/models/exim_log_done.rb +++ b/app/models/mail_server_log_done.rb @@ -1,7 +1,7 @@ # == Schema Information -# Schema version: 114 +# Schema version: 20121010214348 # -# Table name: exim_log_dones +# Table name: mail_server_log_dones # # id :integer not null, primary key # filename :text not null @@ -10,7 +10,6 @@ # updated_at :datetime not null # -# models/exim_log_done.rb: # Stores that a particular exim file has been loaded in, see exim_log.rb # # Copyright (c) 2009 UK Citizens Online Democracy. All rights reserved. @@ -18,8 +17,8 @@ # # $Id: exim_log_done.rb,v 1.8 2009-09-17 21:10:05 francis Exp $ -class EximLogDone < ActiveRecord::Base - has_many :exim_logs +class MailServerLogDone < ActiveRecord::Base + has_many :mail_server_logs end diff --git a/app/views/admin_request/show.rhtml b/app/views/admin_request/show.rhtml index d0c0b0594..bea808bc8 100644 --- a/app/views/admin_request/show.rhtml +++ b/app/views/admin_request/show.rhtml @@ -217,11 +217,11 @@ <p><i>(Lines containing the request incoming email address, updated hourly.)</i></p> -<% for exim_log_done_id, exim_logs in @info_request.exim_logs.group_by(&:exim_log_done_id) %> - <!-- <h3><%=h exim_logs[0].exim_log_done.filename %></h3> --> - <pre><% for exim_log in exim_logs %><%=h exim_log.line%><% end %></pre> +<% for mail_server_log_done_id, mail_server_logs in @info_request.mail_server_logs.group_by(&:mail_server_log_done_id) %> + <!-- <h3><%=h mail_server_logs[0].mail_server_log_done.filename %></h3> --> + <pre><% for mail_server_log in mail_server_logs %><%=h mail_server_log.line%><% end %></pre> <% end %> -<% if @info_request.exim_logs.size == 0 %> +<% if @info_request.mail_server_logs.size == 0 %> <p>None (perhaps this is an old or a very new request)</p> <% end %> |