Created
May 31, 2017 07:00
-
-
Save azumakuniyuki/3ad4b3a531b7ac6016e3f96232e3cc6a to your computer and use it in GitHub Desktop.
Sample script for updating sisito database
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require 'fileutils' | |
require 'sisimai' | |
require 'mysql2' | |
require 'tmpdir' | |
COLUMNS = %w( | |
timestamp | |
lhost | |
rhost | |
alias | |
listid | |
reason | |
action | |
subject | |
messageid | |
smtpagent | |
softbounce | |
smtpcommand | |
destination | |
senderdomain | |
feedbacktype | |
diagnosticcode | |
deliverystatus | |
timezoneoffset | |
addresser | |
recipient | |
) | |
MAIL_DIR = $*.shift | |
def process(path, **options) | |
Dir.mktmpdir do |tmpdir| | |
FileUtils.mv(Dir["#{path}/*"], tmpdir) | |
v = Sisimai.make(tmpdir, **options) || [] | |
v.each {|e| yield(e) } | |
end | |
end | |
def insert(mysql, data) | |
values = data.to_hash.values_at(*COLUMNS) | |
addresseralias = data.addresser.alias | |
addresseralias = data.addresser.address if addresseralias.empty? | |
values << addresseralias | |
columns = (COLUMNS + ['addresseralias', 'digest', 'created_at', 'updated_at']).join(?,) | |
timestamp = values.shift | |
values = (["FROM_UNIXTIME(#{timestamp})"] + values.map(&:inspect) + ['SHA1(recipient)', 'NOW()', 'NOW()']).join(?,) | |
sql = "INSERT INTO bounce_mails (#{columns}) VALUES (#{values})" | |
puts 'SQL = ' + sql | |
mysql.query(sql) | |
end | |
mysql = Mysql2::Client.new(host: 'localhost', username: 'root', database: 'sisito') | |
process(MAIL_DIR) do |data| | |
insert(mysql, data) | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment