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 +4 -4
- data/lib/vines/stanza/dialback.rb +1 -0
- data/lib/vines/stream/server.rb +19 -1
- data/lib/vines/stream/server/auth.rb +17 -0
- data/lib/vines/stream/server/auth_method.rb +2 -15
- data/lib/vines/version.rb +1 -1
- data/test/stream/server/auth_method_test.rb +1 -0
- metadata +48 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48f441720bb11c550973cfb6d005f32eba5d5964
|
4
|
+
data.tar.gz: 520fdac3c999da654b5dd937310f83995ca68583
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/vines/stream/server.rb
CHANGED
@@ -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
|
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
|
-
|
44
|
-
|
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
|
data/lib/vines/version.rb
CHANGED
@@ -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.
|
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-
|
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.
|
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/
|
399
|
-
- test/
|
400
|
-
- test/
|
401
|
-
- test/
|
402
|
-
- test/
|
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/
|
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/
|
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/
|
425
|
-
- test/stream/
|
426
|
-
- test/stream/
|
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/
|
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/
|
453
|
-
- test/
|
454
|
-
- test/
|
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
|