diaspora-vines 0.1.26 → 0.1.27
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/conf/config.rb +1 -0
- data/lib/vines.rb +12 -5
- data/lib/vines/config/host.rb +9 -0
- data/lib/vines/kit.rb +7 -0
- data/lib/vines/node.rb +31 -0
- data/lib/vines/router.rb +5 -0
- data/lib/vines/stanza/presence.rb +16 -1
- data/lib/vines/storage.rb +10 -1
- data/lib/vines/storage/sql.rb +18 -5
- data/lib/vines/stream.rb +12 -10
- data/lib/vines/stream/client/bind_restart.rb +6 -0
- data/lib/vines/stream/http.rb +13 -11
- data/lib/vines/stream/server.rb +46 -13
- data/lib/vines/stream/server/auth_method.rb +78 -0
- data/lib/vines/stream/server/auth_restart.rb +27 -1
- data/lib/vines/stream/server/outbound/auth.rb +43 -9
- data/lib/vines/stream/server/outbound/auth_dialback_result.rb +39 -0
- data/lib/vines/stream/server/outbound/auth_external.rb +33 -0
- data/lib/vines/stream/server/outbound/{auth_result.rb → auth_external_result.rb} +1 -1
- data/lib/vines/stream/server/outbound/auth_restart.rb +8 -1
- data/lib/vines/stream/server/outbound/authoritative.rb +48 -0
- data/lib/vines/stream/server/outbound/start.rb +1 -1
- data/lib/vines/stream/server/start.rb +29 -2
- data/lib/vines/stream/state.rb +3 -17
- data/lib/vines/version.rb +1 -1
- data/test/storage/sql_test.rb +16 -0
- data/test/store_test.rb +3 -1
- data/test/stream/server/auth_method_test.rb +101 -0
- data/test/stream/server/outbound/auth_dialback_result_test.rb +37 -0
- data/test/stream/server/outbound/auth_external_test.rb +75 -0
- data/test/stream/server/outbound/auth_restart_test.rb +53 -0
- data/test/stream/server/outbound/auth_test.rb +59 -43
- data/test/stream/server/outbound/authoritative_test.rb +66 -0
- data/test/stream/server/outbound/start_test.rb +33 -0
- data/test/stream/server/start_test.rb +70 -0
- metadata +33 -10
- data/lib/vines/stream/server/outbound/tls.rb +0 -30
- data/lib/vines/stream/server/tls.rb +0 -13
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
describe Vines::Stream::Server::Outbound::Start do
|
6
|
+
before do
|
7
|
+
@stream = MiniTest::Mock.new
|
8
|
+
@state = Vines::Stream::Server::Outbound::Start.new(@stream)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_missing_namespace
|
12
|
+
node = node('<stream:stream/>')
|
13
|
+
assert_raises(Vines::StreamErrors::NotAuthorized) { @state.node(node) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_invalid_namespace
|
17
|
+
node = node(%Q{<stream:stream xmlns="#{Vines::NAMESPACES[:stream]}"/>})
|
18
|
+
assert_raises(Vines::StreamErrors::NotAuthorized) { @state.node(node) }
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_valid_stream
|
22
|
+
node = node(%Q{<stream:stream xmlns='jabber:client' xmlns:stream='#{Vines::NAMESPACES[:stream]}' xml:lang='en' id='1234' from='host.com' version='1.0'>})
|
23
|
+
@stream.expect(:advance, nil, [Vines::Stream::Server::Outbound::Auth])
|
24
|
+
@state.node(node)
|
25
|
+
assert @stream.verify
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def node(xml)
|
31
|
+
Nokogiri::XML(xml).root
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class VhostWrapper
|
6
|
+
def initialize(force = false)
|
7
|
+
@force_s2s_encryption = force
|
8
|
+
end
|
9
|
+
def force_s2s_encryption?
|
10
|
+
@force_s2s_encryption
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe Vines::Stream::Server::AuthMethod do
|
15
|
+
before do
|
16
|
+
@stream = MiniTest::Mock.new
|
17
|
+
@state = Vines::Stream::Server::Start.new(@stream)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_missing_namespace
|
21
|
+
node = node('<stream:stream/>')
|
22
|
+
assert_raises(Vines::StreamErrors::NotAuthorized) { @state.node(node) }
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_invalid_namespace
|
26
|
+
node = node(%Q{<stream:stream xmlns="#{Vines::NAMESPACES[:stream]}"/>})
|
27
|
+
assert_raises(Vines::StreamErrors::NotAuthorized) { @state.node(node) }
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_valid_stream_tls_required
|
31
|
+
node = node(%Q{<stream:stream xmlns="jabber:client" xmlns:stream="#{Vines::NAMESPACES[:stream]}" to="host.com" version="1.0"/>})
|
32
|
+
features = node(%Q{<stream:features xmlns:stream="#{Vines::NAMESPACES[:stream]}"><starttls xmlns="#{Vines::NAMESPACES[:tls]}"/><dialback xmlns="#{Vines::NAMESPACES[:dialback]}"/></stream:features>})
|
33
|
+
@stream.expect(:start, nil, [node])
|
34
|
+
@stream.expect(:vhost, VhostWrapper.new(false))
|
35
|
+
@stream.expect(:advance, nil, [Vines::Stream::Server::AuthMethod])
|
36
|
+
@stream.expect(:dialback_retry?, false)
|
37
|
+
@stream.expect(:write, nil, [features])
|
38
|
+
@state.node(node)
|
39
|
+
assert @stream.verify
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_valid_stream_with_dialback_flag
|
43
|
+
node = node(%Q{<stream:stream xmlns="jabber:client" xmlns:stream="#{Vines::NAMESPACES[:stream]}" to="host.com" version="1.0"/>})
|
44
|
+
features = node(%Q{<stream:features xmlns:stream="#{Vines::NAMESPACES[:stream]}"><dialback xmlns="#{Vines::NAMESPACES[:dialback]}"/></stream:features>})
|
45
|
+
@stream.expect(:start, nil, [node])
|
46
|
+
@stream.expect(:advance, nil, [Vines::Stream::Server::AuthMethod])
|
47
|
+
@stream.expect(:dialback_retry?, true)
|
48
|
+
@stream.expect(:write, nil, [features])
|
49
|
+
@state.node(node)
|
50
|
+
assert @stream.verify
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_valid_stream
|
54
|
+
node = node(%Q{<stream:stream xmlns="jabber:client" xmlns:stream="#{Vines::NAMESPACES[:stream]}" to="host.com" version="1.0"/>})
|
55
|
+
features = node(%Q{<stream:features xmlns:stream="#{Vines::NAMESPACES[:stream]}"><starttls xmlns="#{Vines::NAMESPACES[:tls]}"><required/></starttls><dialback xmlns="#{Vines::NAMESPACES[:dialback]}"/></stream:features>})
|
56
|
+
@stream.expect(:start, nil, [node])
|
57
|
+
@stream.expect(:vhost, VhostWrapper.new(true))
|
58
|
+
@stream.expect(:advance, nil, [Vines::Stream::Server::AuthMethod])
|
59
|
+
@stream.expect(:dialback_retry?, false)
|
60
|
+
@stream.expect(:write, nil, [features])
|
61
|
+
@state.node(node)
|
62
|
+
assert @stream.verify
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
def node(xml)
|
68
|
+
Nokogiri::XML(xml).root
|
69
|
+
end
|
70
|
+
end
|
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.1.
|
4
|
+
version: 0.1.27
|
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:
|
12
|
+
date: 2015-02-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bcrypt
|
@@ -43,16 +43,22 @@ dependencies:
|
|
43
43
|
name: eventmachine
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 1.0.5
|
49
|
+
- - "<"
|
47
50
|
- !ruby/object:Gem::Version
|
48
|
-
version: '1.
|
51
|
+
version: '1.1'
|
49
52
|
type: :runtime
|
50
53
|
prerelease: false
|
51
54
|
version_requirements: !ruby/object:Gem::Requirement
|
52
55
|
requirements:
|
53
|
-
- - "
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 1.0.5
|
59
|
+
- - "<"
|
54
60
|
- !ruby/object:Gem::Version
|
55
|
-
version: '1.
|
61
|
+
version: '1.1'
|
56
62
|
- !ruby/object:Gem::Dependency
|
57
63
|
name: http_parser.rb
|
58
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,6 +198,7 @@ files:
|
|
192
198
|
- lib/vines/jid.rb
|
193
199
|
- lib/vines/kit.rb
|
194
200
|
- lib/vines/log.rb
|
201
|
+
- lib/vines/node.rb
|
195
202
|
- lib/vines/router.rb
|
196
203
|
- lib/vines/stanza.rb
|
197
204
|
- lib/vines/stanza/iq.rb
|
@@ -255,19 +262,21 @@ files:
|
|
255
262
|
- lib/vines/stream/sasl.rb
|
256
263
|
- lib/vines/stream/server.rb
|
257
264
|
- lib/vines/stream/server/auth.rb
|
265
|
+
- lib/vines/stream/server/auth_method.rb
|
258
266
|
- lib/vines/stream/server/auth_restart.rb
|
259
267
|
- lib/vines/stream/server/final_restart.rb
|
260
268
|
- lib/vines/stream/server/outbound/auth.rb
|
269
|
+
- lib/vines/stream/server/outbound/auth_dialback_result.rb
|
270
|
+
- lib/vines/stream/server/outbound/auth_external.rb
|
271
|
+
- lib/vines/stream/server/outbound/auth_external_result.rb
|
261
272
|
- lib/vines/stream/server/outbound/auth_restart.rb
|
262
|
-
- lib/vines/stream/server/outbound/
|
273
|
+
- lib/vines/stream/server/outbound/authoritative.rb
|
263
274
|
- lib/vines/stream/server/outbound/final_features.rb
|
264
275
|
- lib/vines/stream/server/outbound/final_restart.rb
|
265
276
|
- lib/vines/stream/server/outbound/start.rb
|
266
|
-
- lib/vines/stream/server/outbound/tls.rb
|
267
277
|
- lib/vines/stream/server/outbound/tls_result.rb
|
268
278
|
- lib/vines/stream/server/ready.rb
|
269
279
|
- lib/vines/stream/server/start.rb
|
270
|
-
- lib/vines/stream/server/tls.rb
|
271
280
|
- lib/vines/stream/state.rb
|
272
281
|
- lib/vines/token_bucket.rb
|
273
282
|
- lib/vines/user.rb
|
@@ -322,9 +331,16 @@ files:
|
|
322
331
|
- test/stream/http/start_test.rb
|
323
332
|
- test/stream/parser_test.rb
|
324
333
|
- test/stream/sasl_test.rb
|
334
|
+
- test/stream/server/auth_method_test.rb
|
325
335
|
- test/stream/server/auth_test.rb
|
336
|
+
- test/stream/server/outbound/auth_dialback_result_test.rb
|
337
|
+
- test/stream/server/outbound/auth_external_test.rb
|
338
|
+
- test/stream/server/outbound/auth_restart_test.rb
|
326
339
|
- test/stream/server/outbound/auth_test.rb
|
340
|
+
- test/stream/server/outbound/authoritative_test.rb
|
341
|
+
- test/stream/server/outbound/start_test.rb
|
327
342
|
- test/stream/server/ready_test.rb
|
343
|
+
- test/stream/server/start_test.rb
|
328
344
|
- test/test_helper.rb
|
329
345
|
- test/token_bucket_test.rb
|
330
346
|
- test/user_test.rb
|
@@ -348,7 +364,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
348
364
|
version: '0'
|
349
365
|
requirements: []
|
350
366
|
rubyforge_project:
|
351
|
-
rubygems_version: 2.
|
367
|
+
rubygems_version: 2.4.5
|
352
368
|
signing_key:
|
353
369
|
specification_version: 4
|
354
370
|
summary: Diaspora-vines is a Vines fork build for diaspora integration.
|
@@ -381,9 +397,16 @@ test_files:
|
|
381
397
|
- test/stream/component/start_test.rb
|
382
398
|
- test/stream/component/ready_test.rb
|
383
399
|
- test/stream/component/handshake_test.rb
|
400
|
+
- test/stream/server/start_test.rb
|
384
401
|
- test/stream/server/ready_test.rb
|
385
402
|
- test/stream/server/auth_test.rb
|
403
|
+
- test/stream/server/auth_method_test.rb
|
404
|
+
- test/stream/server/outbound/start_test.rb
|
405
|
+
- test/stream/server/outbound/auth_restart_test.rb
|
406
|
+
- test/stream/server/outbound/auth_external_test.rb
|
386
407
|
- test/stream/server/outbound/auth_test.rb
|
408
|
+
- test/stream/server/outbound/auth_dialback_result_test.rb
|
409
|
+
- test/stream/server/outbound/authoritative_test.rb
|
387
410
|
- test/token_bucket_test.rb
|
388
411
|
- test/router_test.rb
|
389
412
|
- test/user_test.rb
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
module Vines
|
4
|
-
class Stream
|
5
|
-
class Server
|
6
|
-
class Outbound
|
7
|
-
class TLS < State
|
8
|
-
NS = NAMESPACES[:tls]
|
9
|
-
|
10
|
-
def initialize(stream, success=TLSResult)
|
11
|
-
super
|
12
|
-
end
|
13
|
-
|
14
|
-
def node(node)
|
15
|
-
raise StreamErrors::NotAuthorized unless tls?(node)
|
16
|
-
stream.write("<starttls xmlns='#{NS}'/>")
|
17
|
-
advance
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def tls?(node)
|
23
|
-
tls = node.xpath('ns:starttls', 'ns' => NS).any?
|
24
|
-
node.name == 'features' && namespace(node) == NAMESPACES[:stream] && tls
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|