diff options
author | Lucas Nussbaum <lucas@lucas-nussbaum.net> | 2009-12-26 01:51:37 +0100 |
---|---|---|
committer | Lucas Nussbaum <lucas@lucas-nussbaum.net> | 2009-12-26 01:51:37 +0100 |
commit | db52aeb97fcc73e3b9a3a2a6e2e9eb63fd4cb0f8 (patch) | |
tree | 7839546f11f95a37bd3016d1e2ad38c8f3d6e727 /lib | |
parent | ec808b0f4bfd213b7b81996d8c46c1d98bbafa7c (diff) | |
download | feed2imap-db52aeb97fcc73e3b9a3a2a6e2e9eb63fd4cb0f8.tar.gz feed2imap-db52aeb97fcc73e3b9a3a2a6e2e9eb63fd4cb0f8.tar.bz2 feed2imap-db52aeb97fcc73e3b9a3a2a6e2e9eb63fd4cb0f8.zip |
Avoid using "acme.com"
Patch from Guido Berhoerster <guido@berhoerster.name>:
Hello,
here is a small patch that avoids using the valid(!) domain
"acme.com" for generating message ids and email addresses. It
adds a new global configuration option "default-email" which will
be used in case a feed does provide one, currently feed2imap
resorts to "feed2imap@acme.com". If this configuration option is
not given it will basically default to <logname>@<hostname> as
returned by Etc.getlogin and Socket.gethostname.
Yours,
Diffstat (limited to '')
-rw-r--r-- | lib/feed2imap/config.rb | 10 | ||||
-rw-r--r-- | lib/feed2imap/feed2imap.rb | 8 | ||||
-rw-r--r-- | lib/feed2imap/itemtomail.rb | 10 |
3 files changed, 18 insertions, 10 deletions
diff --git a/lib/feed2imap/config.rb b/lib/feed2imap/config.rb index 5f6f448..a9c796c 100644 --- a/lib/feed2imap/config.rb +++ b/lib/feed2imap/config.rb @@ -21,13 +21,19 @@ require 'yaml' require 'uri' require 'feed2imap/imap' require 'feed2imap/maildir' +require 'etc' +require 'socket' # Default cache file DEFCACHE = ENV['HOME'] + '/.feed2imap.cache' +# Hostname and login name of the current user +HOSTNAME = Socket.gethostname +LOGNAME = Etc.getlogin + # Feed2imap configuration class F2IConfig - attr_reader :imap_accounts, :cache, :feeds, :dumpdir, :updateddebug, :max_failures, :include_images + attr_reader :imap_accounts, :cache, :feeds, :dumpdir, :updateddebug, :max_failures, :include_images, :default_email, :hostname # Load the configuration from the IO stream # TODO should do some sanity check on the data read. @@ -40,6 +46,8 @@ class F2IConfig @max_failures = (@conf['max-failures'] || 10).to_i @updateddebug = (@conf['debug-updated'] and @conf['debug-updated'] != 'false') @include_images = (@conf['include-images'] and @conf['include-images'] != 'false') + @default_email = (@conf['default-email'] || "#{LOGNAME}@#{HOSTNAME}") + @hostname = HOSTNAME # FIXME: should this be configurable as well? @imap_accounts = ImapAccounts::new maildir_account = MaildirAccount::new @conf['feeds'].each do |f| diff --git a/lib/feed2imap/feed2imap.rb b/lib/feed2imap/feed2imap.rb index 68051c7..f23c0dc 100644 --- a/lib/feed2imap/feed2imap.rb +++ b/lib/feed2imap/feed2imap.rb @@ -244,15 +244,15 @@ class Feed2Imap if !cacherebuild fn = f.name.gsub(/[^0-9A-Za-z]/,'') updateditems.each do |i| - id = "<#{fn}-#{i.cacheditem.index}@acme.com>" - email = item_to_mail(i, id, true, f.name, f.include_images, f.wrapto) + id = "<#{fn}-#{i.cacheditem.index}@#{@config.hostname}>" + email = item_to_mail(@config, i, id, true, f.name, f.include_images, f.wrapto) f.imapaccount.updatemail(f.folder, email, id, i.date || Time::new) end # reverse is needed to upload older items first (fixes gna#8986) newitems.reverse.each do |i| - id = "<#{fn}-#{i.cacheditem.index}@acme.com>" - email = item_to_mail(i, id, false, f.name, f.include_images, f.wrapto) + id = "<#{fn}-#{i.cacheditem.index}@#{@config.hostname}>" + email = item_to_mail(@config, i, id, false, f.name, f.include_images, f.wrapto) f.imapaccount.putmail(f.folder, email, i.date || Time::new) end end diff --git a/lib/feed2imap/itemtomail.rb b/lib/feed2imap/itemtomail.rb index d12d3c5..6c70cbd 100644 --- a/lib/feed2imap/itemtomail.rb +++ b/lib/feed2imap/itemtomail.rb @@ -47,18 +47,18 @@ class String end end -def item_to_mail(item, id, updated, from = 'Feed2Imap', inline_images = false, wrapto = false) +def item_to_mail(config, item, id, updated, from = 'Feed2Imap', inline_images = false, wrapto = false) message = RMail::Message::new if item.creator and item.creator != '' if item.creator.include?('@') message.header['From'] = item.creator.chomp else - message.header['From'] = "=?utf-8?b?#{Base64::encode64(item.creator.chomp).gsub("\n",'')}?= <feed2imap@acme.com>" + message.header['From'] = "=?utf-8?b?#{Base64::encode64(item.creator.chomp).gsub("\n",'')}?= <#{config.default_email}>" end else - message.header['From'] = "=?utf-8?b?#{Base64::encode64(from).gsub("\n",'')}?= <feed2imap@acme.com>" + message.header['From'] = "=?utf-8?b?#{Base64::encode64(from).gsub("\n",'')}?= <#{config.default_email}>" end - message.header['To'] = "=?utf-8?b?#{Base64::encode64(from).gsub("\n",'')}?= <feed2imap@acme.com>" + message.header['To'] = "=?utf-8?b?#{Base64::encode64(from).gsub("\n",'')}?= <#{config.default_email}>" if item.date.nil? message.header['Date'] = Time::new.rfc2822 @@ -94,7 +94,7 @@ def item_to_mail(item, id, updated, from = 'Feed2Imap', inline_images = false, w # $2 contains url, $3 the image name, $4 the image extension begin image = Base64.encode64(HTTPFetcher::fetch($2, Time.at(0)).chomp) + "\n" - cid = "#{Digest::MD5.hexdigest($2)}@feed2imap.acme.com" + cid = "#{Digest::MD5.hexdigest($2)}@#{config.hostname}" if not cids.include?(cid) cids << cid imgpart = RMail::Message.new |