sup 0.15.2 → 0.15.3

Sign up to get free protection for your applications and to get access to all the features.
data/CONTRIBUTORS CHANGED
@@ -18,8 +18,8 @@ Clint Byrum <clint at the ubuntu dot coms>
18
18
  Marcus Williams <marcus-sup at the bar-coded dot nets>
19
19
  Lionel Ott <white.magic at the gmx dot des>
20
20
  Gaudenz Steinlin <gaudenz at the soziologie dot chs>
21
- Ingmar Vanhassel <ingmar at the exherbo dot orgs>
22
21
  Mark Alexander <marka at the pobox dot coms>
22
+ Ingmar Vanhassel <ingmar at the exherbo dot orgs>
23
23
  Edward Z. Yang <ezyang at the mit dot edus>
24
24
  Matthieu Rakotojaona <matthieu.rakotojaona at the gmail dot coms>
25
25
  Christopher Warrington <chrisw at the rice dot edus>
@@ -33,8 +33,8 @@ Michael Hamann <michael at the content-space dot des>
33
33
  Jonathan Lassoff <jof at the thejof dot coms>
34
34
  William Erik Baxter <web at the superscript dot coms>
35
35
  Grant Hollingworth <grant at the antiflux dot orgs>
36
- Adeodato Simó <dato at the net.com.org dot ess>
37
36
  Markus Klinik <markus.klinik at the gmx dot des>
37
+ Adeodato Simó <dato at the net.com.org dot ess>
38
38
  Ico Doornekamp <ico at the pruts dot nls>
39
39
  Daniel Schoepe <daniel.schoepe at the googlemail dot coms>
40
40
  James Taylor <james at the jamestaylor dot orgs>
@@ -44,30 +44,31 @@ Steve Goldman <sgoldman at the tower-research dot coms>
44
44
  Peter Harkins <ph at the malaprop dot orgs>
45
45
  Decklin Foster <decklin at the red-bean dot coms>
46
46
  Cameron Matheson <cam+sup at the cammunism dot orgs>
47
- Alex Vandiver <alex at the chmrr dot nets>
48
47
  Carl Worth <cworth at the cworth dot orgs>
48
+ Alex Vandiver <alex at the chmrr dot nets>
49
49
  Andrew Pimlott <andrew at the pimlott dot nets>
50
50
  Jeff Balogh <its.jeff.balogh at the gmail dot coms>
51
51
  Matías Aguirre <matiasaguirre at the gmail dot coms>
52
52
  Kornilios Kourtis <kkourt at the cslab.ece.ntua dot grs>
53
- Kevin Riggle <kevinr at the free-dissociation dot coms>
53
+ Lars Fischer <fischer at the wiwi.uni-siegen dot des>
54
54
  Giorgio Lando <patroclo7 at the gmail dot coms>
55
+ Kevin Riggle <kevinr at the free-dissociation dot coms>
55
56
  Benoît PIERRE <benoit.pierre at the gmail dot coms>
56
- Steven Lawrance <stl at the koffein dot nets>
57
57
  Alvaro Herrera <alvherre at the alvh.no-ip dot orgs>
58
+ Steven Lawrance <stl at the koffein dot nets>
58
59
  Jonah <Jonah at the GoodCoffee dot cas>
59
60
  ian <itaylor at the uark dot edus>
60
- Gregor Hoffleit <gregor at the sam.mediasupervision dot des>
61
- 0xACE <0xACE at the users.noreply.github dot coms>
62
- Adam Lloyd <adam at the alloy-d dot nets>
63
61
  Todd Eisenberger <teisenbe at the andrew.cmu dot edus>
64
62
  MichaelRevell <mikearevell at the gmail dot coms>
63
+ Adam Lloyd <adam at the alloy-d dot nets>
64
+ Gregor Hoffleit <gregor at the sam.mediasupervision dot des>
65
65
  Per Andersson <avtobiff at the gmail dot coms>
66
+ 0xACE <0xACE at the users.noreply.github dot coms>
66
67
  Steven Walter <swalter at the monarch.(none)>
67
- Jon M. Dugan <jdugan at the es dot nets>
68
68
  Matthias Vallentin <vallentin at the icir dot orgs>
69
- Horacio Sanson <horacio at the skillupjapan.co dot jps>
69
+ Jon M. Dugan <jdugan at the es dot nets>
70
70
  Stefan Lundström <lundst at the snabb.(none)>
71
71
  akojo <atte.kojo at the gmail dot coms>
72
+ Horacio Sanson <horacio at the skillupjapan.co dot jps>
72
73
  Johannes Larsen <johs.a.larsen at the gmail dot coms>
73
74
  Kirill Smelkov <kirr at the landau.phys.spbu dot rus>
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.15.3 / 2014-01-27
2
+
3
+ * Revert non-functioning hidden_alternates and fix some bugs.
4
+
1
5
  == 0.15.2 / 2013-12-20
2
6
 
3
7
  * Use the form_driver_w routine for inputing multibyte chars when
data/ReleaseNotes CHANGED
@@ -1,3 +1,7 @@
1
+ Release 0.15.3:
2
+
3
+ Revert non-functioning hidden_alternates option and fix bugs.
4
+
1
5
  Release 0.15.2:
2
6
 
3
7
  Use form_driver_w when available. New hidden_alternates option.
data/lib/sup/account.rb CHANGED
@@ -31,8 +31,6 @@ class AccountManager
31
31
 
32
32
  def initialize accounts
33
33
  @email_map = {}
34
- @hidden_email_map = {}
35
- @email_map_dirty = false
36
34
  @accounts = {}
37
35
  @regexen = {}
38
36
  @default_account = nil
@@ -42,7 +40,7 @@ class AccountManager
42
40
  end
43
41
 
44
42
  def user_accounts; @accounts.keys; end
45
- def user_emails(type = :all); email_map(type).keys.select { |e| String === e }; end
43
+ def user_emails; @email_map.keys.select { |e| String === e }; end
46
44
 
47
45
  ## must be called first with the default account. fills in missing
48
46
  ## values from the default account.
@@ -52,9 +50,7 @@ class AccountManager
52
50
  [:name, :sendmail, :signature, :gpgkey].each { |k| hash[k] ||= @default_account.send(k) }
53
51
  end
54
52
  hash[:alternates] ||= []
55
- hash[:hidden_alternates] ||= []
56
53
  fail "alternative emails are not an array: #{hash[:alternates]}" unless hash[:alternates].kind_of? Array
57
- fail "hidden alternative emails are not an array: #{hash[:hidden_alternates]}" unless hash[:hidden_alternates].kind_of? Array
58
54
 
59
55
  [:name, :signature].each { |x| hash[x] ? hash[x].fix_encoding! : nil }
60
56
 
@@ -67,11 +63,8 @@ class AccountManager
67
63
  end
68
64
 
69
65
  ([hash[:email]] + hash[:alternates]).each do |email|
70
- add_email_to_map(:shown, email, a)
71
- end
72
-
73
- hash[:hidden_alternates].each do |email|
74
- add_email_to_map(:hidden, email, a)
66
+ next if @email_map.member? email
67
+ @email_map[email] = a
75
68
  end
76
69
 
77
70
  hash[:regexen].each do |re|
@@ -79,44 +72,19 @@ class AccountManager
79
72
  end if hash[:regexen]
80
73
  end
81
74
 
82
- def is_account? p; is_account_email? p.email end
75
+ def is_account? p; is_account_email? p.email end
83
76
  def is_account_email? email; !account_for(email).nil? end
84
-
85
77
  def account_for email
86
- a = email_map[email]
87
- a.nil? ? @regexen.argfind { |re, a| re =~ email && a } : a
78
+ if(a = @email_map[email])
79
+ a
80
+ else
81
+ @regexen.argfind { |re, a| re =~ email && a }
82
+ end
88
83
  end
89
-
90
84
  def full_address_for email
91
85
  a = account_for email
92
86
  Person.full_address a.name, email
93
87
  end
94
-
95
- private
96
-
97
- def add_email_to_map(type, email, acc)
98
- type = :shown if type != :hidden
99
- m = email_map(type)
100
- unless m.member? email
101
- m[email] = acc
102
- @email_map_dirty = true
103
- end
104
- end
105
-
106
- def email_map(type = nil)
107
- case type
108
- when :shown, :public then @email_map
109
- when :hidden then @hidden_email_map
110
- else
111
- if @email_map_dirty
112
- @email_map_all = @hidden_email_map.merge(@email_map)
113
- if @email_map_all.count != @email_map.count + @hidden_email_map.count
114
- @hidden_email_map.reject! { |m| @email_map.member? m }
115
- end
116
- end
117
- @email_map_all ||= {}
118
- end
119
- end
120
- end # class AccountManager
88
+ end
121
89
 
122
90
  end
data/lib/sup/crypto.rb CHANGED
@@ -128,7 +128,6 @@ EOS
128
128
  gpg_opts.merge!(gen_sign_user_opts(from))
129
129
  gpg_opts = HookManager.run("gpg-options",
130
130
  {:operation => "sign", :options => gpg_opts}) || gpg_opts
131
-
132
131
  begin
133
132
  if GPGME.respond_to?('detach_sign')
134
133
  sig = GPGME.detach_sign(format_payload(payload), gpg_opts)
@@ -443,16 +442,18 @@ private
443
442
  # if gpgkey set for this account, then use that
444
443
  # elsif only one account, then leave blank so gpg default will be user
445
444
  # else set --local-user from_email_address
445
+ # NOTE: multiple signers doesn't seem to work with gpgme (2.0.2, 1.0.8)
446
+ #
446
447
  def gen_sign_user_opts from
447
448
  account = AccountManager.account_for from
448
449
  account ||= AccountManager.default_account
449
450
  if !account.gpgkey.nil?
450
- opts = {:signers => account.gpgkey}
451
+ opts = {:signer => account.gpgkey}
451
452
  elsif AccountManager.user_emails.length == 1
452
453
  # only one account
453
454
  opts = {}
454
455
  else
455
- opts = {:signers => from}
456
+ opts = {:signer => from}
456
457
  end
457
458
  opts
458
459
  end
data/lib/sup/mbox.rb CHANGED
@@ -161,7 +161,7 @@ class MBox < Source
161
161
  ## TODO optimize this by iterating over allterms list backwards or
162
162
  ## storing source_info negated
163
163
  def last_indexed_message
164
- benchmark(:mbox_read_index) { Enumerator.new(Index.instance, :each_source_info, self.id).map(&:to_i).max }
164
+ benchmark(:mbox_read_index) { Index.instance.enum_for(:each_source_info, self.id).map(&:to_i).max }
165
165
  end
166
166
 
167
167
  ## offset of first new message or nil
data/lib/sup/message.rb CHANGED
@@ -263,9 +263,9 @@ class Message
263
263
  message_to_chunks rmsg
264
264
  rescue SourceError, SocketError, RMail::EncodingUnsupportedError => e
265
265
  warn "problem reading message #{id}"
266
- [Chunk::Text.new(error_message.split("\n"))]
267
-
268
266
  debug "could not load message: #{location.inspect}, exception: #{e.inspect}"
267
+
268
+ [Chunk::Text.new(error_message.split("\n"))]
269
269
  end
270
270
  end
271
271
 
@@ -497,13 +497,21 @@ private
497
497
  ## they have no MIME multipart and just set the body content type to
498
498
  ## application/pgp. this handles that.
499
499
  ##
500
- ## TODO: unduplicate code between here and multipart_encrypted_to_chunks
500
+ ## TODO 1: unduplicate code between here and
501
+ ## multipart_encrypted_to_chunks
502
+ ## TODO 2: this only tries to decrypt. it cannot handle inline PGP
501
503
  notice, sig, decryptedm = CryptoManager.decrypt m.body
502
504
  if decryptedm # managed to decrypt
503
505
  children = message_to_chunks decryptedm, true
504
506
  [notice, sig].compact + children
505
507
  else
506
- [notice]
508
+ ## try inline pgp signed
509
+ chunks = inline_gpg_to_chunks m.body, $encoding, (m.charset || $encoding)
510
+ if chunks
511
+ chunks
512
+ else
513
+ [notice]
514
+ end
507
515
  end
508
516
  else
509
517
  filename =
@@ -579,6 +587,7 @@ private
579
587
  # -----END PGP SIGNED MESSAGE-----
580
588
  #
581
589
  # In some cases, END PGP SIGNED MESSAGE doesn't appear
590
+ # (and may leave strange -----BEGIN PGP SIGNATURE----- ?)
582
591
  gpg = lines.between(GPG_SIGNED_START, GPG_SIGNED_END)
583
592
  # between does not check if GPG_END actually exists
584
593
  # Reference: http://permalink.gmane.org/gmane.mail.sup.devel/641
data/lib/sup/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Redwood
2
- VERSION = "0.15.2"
2
+ VERSION = "0.15.3"
3
3
  end
data/lib/sup.rb CHANGED
@@ -357,7 +357,6 @@ EOM
357
357
  :name => name.dup.fix_encoding!,
358
358
  :email => email.dup.fix_encoding!,
359
359
  :alternates => [],
360
- :hidden_alternates => [],
361
360
  :sendmail => "/usr/sbin/sendmail -oem -ti",
362
361
  :signature => File.join(ENV["HOME"], ".signature"),
363
362
  :gpgkey => ""
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.2
4
+ version: 0.15.3
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 15
9
- - 2
10
- hash: -2694534377760147359
9
+ - 3
10
+ hash: -2405845392112023889
11
11
  platform: ruby
12
12
  authors:
13
13
  - William Morgan
@@ -17,7 +17,7 @@ authors:
17
17
  autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
- date: 2013-12-20 00:00:00.000000000 Z
20
+ date: 2014-01-27 00:00:00.000000000 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: xapian-ruby