aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/models/exim_log.rb10
1 files changed, 9 insertions, 1 deletions
diff --git a/app/models/exim_log.rb b/app/models/exim_log.rb
index 8a02d8b06..0012441de 100644
--- a/app/models/exim_log.rb
+++ b/app/models/exim_log.rb
@@ -27,7 +27,7 @@ class EximLog < ActiveRecord::Base
# 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.
- def EximLog.load_file(file_name, type = :exim)
+ def EximLog.load_file(file_name)
is_gz = file_name.include?(".gz")
file_name_db = is_gz ? file_name.gsub(".gz", "") : file_name
@@ -52,6 +52,7 @@ class EximLog < ActiveRecord::Base
done.save!
f = is_gz ? Zlib::GzipReader.open(file_name) : File.open(file_name, 'r')
+ type = detect_mta_log_type(f)
case(type)
when :exim
load_exim_log_data(f, done)
@@ -63,6 +64,13 @@ class EximLog < ActiveRecord::Base
end
end
+ # Unbelievably dumb heuristic for detecting whether this is an exim or a postfix log
+ def EximLog.detect_mta_log_type(f)
+ r = (f.readline =~ /postfix/) ? :postfix : :exim
+ f.rewind
+ r
+ end
+
# Scan the file
def EximLog.load_exim_log_data(f, done)
order = 0