diaspora-vines 0.2.0.develop.3 → 0.2.0.develop.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a64256ced89f075deb28a2bbb2732d3e844d9d79
4
- data.tar.gz: 19a17ea9f031342906b992aef021fa19c171bf9e
3
+ metadata.gz: 48f441720bb11c550973cfb6d005f32eba5d5964
4
+ data.tar.gz: 520fdac3c999da654b5dd937310f83995ca68583
5
5
  SHA512:
6
- metadata.gz: ecaacb012205ff57adae55c414532c651d6b70f74cdb71b567dbceec69497fa17d9e7d2e92b42f459972f0dba547d3578bd9f2e89ae2efe506b7331973f3d46f
7
- data.tar.gz: a5a48d5b4a09603b8711706e3ade7a3d1c7f2ce1ba7f2ba7aca5b9dadc301180452128e64468def6f58da64d27d4a002ce5c03ad62b87ad8ee7bfe30c714982f
6
+ metadata.gz: 274718512849343107aa2da43cc5c48a4632ac028d1666677bc2c97a3405a75f0c067775df8b692273711ce937ab9f6d0c97a4d7137699e83a4a9010a0fa1612
7
+ data.tar.gz: 440184d2d504899ddbac9a1d1d4eaf271c7ce207bef1e2c297908d588de79f67f34a3655d5f7859c1259426da13088162b5db7a1054515f3db10c1208a65f69e
@@ -21,6 +21,7 @@ module Vines
21
21
  secret = outbound_stream.state.dialback_secret
22
22
  type = Kit.dialback_key(secret, from, to, id) == key ? VALID_TYPE : INVALID_TYPE
23
23
  @stream.write(%Q{<db:verify from="#{to}" to="#{from}" id="#{id}" type="#{type}"/>})
24
+ @stream.close_connection_after_writing
24
25
  end
25
26
  end
26
27
  end
@@ -7,7 +7,7 @@ module Vines
7
7
  # both accepting incoming s2s streams and initiating outbound s2s streams
8
8
  # to other servers.
9
9
  class Server < Stream
10
- MECHANISMS = %w[EXTERNAL].freeze
10
+ MECHANISMS, FROM, TO = %w(EXTERNAL from to).map(&:freeze)
11
11
 
12
12
  # Starts the connection to the remote server. When the stream is
13
13
  # connected and ready to send stanzas it will yield to the callback
@@ -140,6 +140,24 @@ module Vines
140
140
  state.class == Server::Ready
141
141
  end
142
142
 
143
+ def authoritative_dialback(node)
144
+ stream = self
145
+ Server.start(stream.config, node[FROM], node[TO], true) do |authoritative|
146
+ if authoritative
147
+ # will be closed in outbound/authoritative.rb
148
+ authoritative.write("<db:verify from='#{node[TO]}' id='#{stream.id}' " \
149
+ "to='#{node[FROM]}'>#{node.text}</db:verify>")
150
+ end
151
+ end
152
+ # We need to be discoverable for the dialback connection
153
+ router << stream
154
+ rescue StanzaErrors::RemoteServerNotFound
155
+ write("<db:result from='#{node[TO]}' to='#{node[FROM]}' " \
156
+ "type='error'><error type='cancel'><item-not-found " \
157
+ "xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></db:result>")
158
+ close_connection_after_writing
159
+ end
160
+
143
161
  def start(node)
144
162
  if @outbound then send_stream_header; return end
145
163
  to, from = %w[to from].map {|a| node[a] }
@@ -4,9 +4,26 @@ module Vines
4
4
  class Stream
5
5
  class Server
6
6
  class Auth < Client::Auth
7
+ RESULT = "result".freeze
8
+
7
9
  def initialize(stream, success=FinalRestart)
8
10
  super
9
11
  end
12
+
13
+ def node(node)
14
+ if dialback_result?(node)
15
+ # open a new connection and verify the dialback key
16
+ stream.authoritative_dialback(node)
17
+ else
18
+ super
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def dialback_result?(node)
25
+ node.name == RESULT && namespace(node) == NAMESPACES[:legacy_dialback]
26
+ end
10
27
  end
11
28
  end
12
29
  end
@@ -40,21 +40,8 @@ module Vines
40
40
  stream.close_connection_after_writing
41
41
  end
42
42
  elsif dialback_result?(node)
43
- begin
44
- Vines::Stream::Server.start(stream.config, node[FROM], node[TO], true) do |authoritative|
45
- if authoritative
46
- # will be closed in outbound/authoritative.rb
47
- authoritative.write("<db:verify from='#{node[TO]}' id='#{stream.id}' to='#{node[FROM]}'>#{node.text}</db:verify>")
48
- end
49
- end
50
- # We need to be discoverable for the dialback connection
51
- stream.router << stream
52
- rescue StanzaErrors::RemoteServerNotFound => e
53
- stream.write("<db:result from='#{node[TO]}' to='#{node[FROM]}' " \
54
- "type='error'><error type='cancel'><item-not-found " \
55
- "xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></db:result>")
56
- stream.close_connection_after_writing
57
- end
43
+ # open a new connection and verify the dialback key
44
+ stream.authoritative_dialback(node)
58
45
  else
59
46
  raise StreamErrors::NotAuthorized
60
47
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Vines
4
4
  # vines forked version 0.4.10
5
- VERSION = '0.2.0.develop.3'
5
+ VERSION = '0.2.0.develop.4'
6
6
  end
@@ -101,6 +101,7 @@ describe Vines::Stream::Server::AuthMethod do
101
101
  %(<db:result xmlns:db="#{Vines::NAMESPACES[:legacy_dialback]}" ) +
102
102
  %(from="#{@result[:from]}" to="#{@result[:to]}">#{@result[:token]}</db:result>)
103
103
  )
104
+ @stream.expect(:authoritative_dialback, nil, [node])
104
105
  assert_nothing_raised {
105
106
  @state.node(node)
106
107
  }.must_equal(true)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diaspora-vines
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.develop.3
4
+ version: 0.2.0.develop.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Graham
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-08-28 00:00:00.000000000 Z
12
+ date: 2015-10-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bcrypt
@@ -387,70 +387,70 @@ required_rubygems_version: !ruby/object:Gem::Requirement
387
387
  version: 1.3.1
388
388
  requirements: []
389
389
  rubyforge_project:
390
- rubygems_version: 2.4.8
390
+ rubygems_version: 2.4.5.1
391
391
  signing_key:
392
392
  specification_version: 4
393
393
  summary: Diaspora-vines is a Vines fork build for diaspora integration.
394
394
  test_files:
395
+ - test/error_test.rb
396
+ - test/test_helper.rb
397
+ - test/storage/local_test.rb
398
+ - test/storage/mock_redis.rb
399
+ - test/storage/sql_schema.rb
400
+ - test/storage/sql_test.rb
401
+ - test/storage/null_test.rb
402
+ - test/storage/storage_tests.rb
395
403
  - test/ext/nokogiri.rb
396
- - test/router_test.rb
397
404
  - test/contact_test.rb
398
- - test/stanza/iq_test.rb
399
- - test/stanza/presence/subscribe_test.rb
400
- - test/stanza/presence/probe_test.rb
401
- - test/stanza/pubsub/unsubscribe_test.rb
402
- - test/stanza/pubsub/subscribe_test.rb
403
- - test/stanza/pubsub/create_test.rb
404
- - test/stanza/pubsub/delete_test.rb
405
- - test/stanza/pubsub/publish_test.rb
406
- - test/stanza/message_test.rb
407
- - test/stanza/iq/version_test.rb
408
- - test/stanza/iq/private_storage_test.rb
409
- - test/stanza/iq/session_test.rb
410
- - test/stanza/iq/disco_info_test.rb
411
- - test/stanza/iq/vcard_test.rb
412
- - test/stanza/iq/disco_items_test.rb
413
- - test/stanza/iq/roster_test.rb
414
- - test/stream/sasl_test.rb
405
+ - test/store_test.rb
406
+ - test/cluster/sessions_test.rb
407
+ - test/cluster/publisher_test.rb
408
+ - test/cluster/subscriber_test.rb
409
+ - test/config_test.rb
415
410
  - test/stream/parser_test.rb
416
- - test/stream/http/start_test.rb
411
+ - test/stream/client/ready_test.rb
412
+ - test/stream/client/auth_test.rb
413
+ - test/stream/client/session_test.rb
414
+ - test/stream/sasl_test.rb
417
415
  - test/stream/http/sessions_test.rb
418
- - test/stream/http/request_test.rb
416
+ - test/stream/http/start_test.rb
419
417
  - test/stream/http/ready_test.rb
420
418
  - test/stream/http/auth_test.rb
419
+ - test/stream/http/request_test.rb
421
420
  - test/stream/component/start_test.rb
422
421
  - test/stream/component/ready_test.rb
423
422
  - test/stream/component/handshake_test.rb
424
- - test/stream/client/session_test.rb
425
- - test/stream/client/ready_test.rb
426
- - test/stream/client/auth_test.rb
423
+ - test/stream/server/start_test.rb
424
+ - test/stream/server/ready_test.rb
425
+ - test/stream/server/auth_test.rb
427
426
  - test/stream/server/auth_method_test.rb
428
- - test/stream/server/outbound/authoritative_test.rb
429
427
  - test/stream/server/outbound/start_test.rb
430
- - test/stream/server/outbound/auth_test.rb
431
428
  - test/stream/server/outbound/auth_restart_test.rb
432
429
  - test/stream/server/outbound/auth_external_test.rb
430
+ - test/stream/server/outbound/auth_test.rb
433
431
  - test/stream/server/outbound/auth_dialback_result_test.rb
434
- - test/stream/server/start_test.rb
435
- - test/stream/server/ready_test.rb
436
- - test/stream/server/auth_test.rb
437
- - test/storage/storage_tests.rb
438
- - test/storage/sql_schema.rb
439
- - test/storage/sql_test.rb
440
- - test/storage/local_test.rb
441
- - test/storage/null_test.rb
442
- - test/storage/mock_redis.rb
443
- - test/config/host_test.rb
444
- - test/config/pubsub_test.rb
432
+ - test/stream/server/outbound/authoritative_test.rb
445
433
  - test/token_bucket_test.rb
434
+ - test/router_test.rb
435
+ - test/user_test.rb
436
+ - test/stanza/message_test.rb
437
+ - test/stanza/presence/subscribe_test.rb
438
+ - test/stanza/presence/probe_test.rb
439
+ - test/stanza/pubsub/publish_test.rb
440
+ - test/stanza/pubsub/delete_test.rb
441
+ - test/stanza/pubsub/create_test.rb
442
+ - test/stanza/pubsub/unsubscribe_test.rb
443
+ - test/stanza/pubsub/subscribe_test.rb
444
+ - test/stanza/iq_test.rb
445
+ - test/stanza/iq/roster_test.rb
446
+ - test/stanza/iq/vcard_test.rb
447
+ - test/stanza/iq/disco_info_test.rb
448
+ - test/stanza/iq/private_storage_test.rb
449
+ - test/stanza/iq/session_test.rb
450
+ - test/stanza/iq/version_test.rb
451
+ - test/stanza/iq/disco_items_test.rb
446
452
  - test/jid_test.rb
447
- - test/kit_test.rb
448
- - test/cluster/publisher_test.rb
449
- - test/cluster/sessions_test.rb
450
- - test/cluster/subscriber_test.rb
451
453
  - test/stanza_test.rb
452
- - test/test_helper.rb
453
- - test/error_test.rb
454
- - test/store_test.rb
455
- - test/config_test.rb
456
- - test/user_test.rb
454
+ - test/config/host_test.rb
455
+ - test/config/pubsub_test.rb
456
+ - test/kit_test.rb