vines 0.3.2 → 0.4.0

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.
Files changed (115) hide show
  1. data/README +5 -9
  2. data/Rakefile +11 -9
  3. data/conf/config.rb +30 -4
  4. data/lib/vines/cluster/connection.rb +26 -0
  5. data/lib/vines/cluster/publisher.rb +55 -0
  6. data/lib/vines/cluster/pubsub.rb +92 -0
  7. data/lib/vines/cluster/sessions.rb +125 -0
  8. data/lib/vines/cluster/subscriber.rb +108 -0
  9. data/lib/vines/cluster.rb +246 -0
  10. data/lib/vines/command/init.rb +21 -24
  11. data/lib/vines/config/host.rb +48 -8
  12. data/lib/vines/config/port.rb +5 -0
  13. data/lib/vines/config/pubsub.rb +108 -0
  14. data/lib/vines/config.rb +74 -20
  15. data/lib/vines/jid.rb +14 -0
  16. data/lib/vines/router.rb +69 -55
  17. data/lib/vines/stanza/iq/disco_info.rb +22 -9
  18. data/lib/vines/stanza/iq/disco_items.rb +6 -3
  19. data/lib/vines/stanza/iq/ping.rb +1 -1
  20. data/lib/vines/stanza/iq/private_storage.rb +4 -8
  21. data/lib/vines/stanza/iq/roster.rb +6 -14
  22. data/lib/vines/stanza/iq/session.rb +2 -7
  23. data/lib/vines/stanza/iq/vcard.rb +4 -6
  24. data/lib/vines/stanza/iq/version.rb +1 -1
  25. data/lib/vines/stanza/iq.rb +8 -10
  26. data/lib/vines/stanza/presence/subscribe.rb +3 -11
  27. data/lib/vines/stanza/presence/subscribed.rb +16 -29
  28. data/lib/vines/stanza/presence/unsubscribe.rb +3 -15
  29. data/lib/vines/stanza/presence/unsubscribed.rb +3 -16
  30. data/lib/vines/stanza/presence.rb +30 -0
  31. data/lib/vines/stanza/pubsub/create.rb +39 -0
  32. data/lib/vines/stanza/pubsub/delete.rb +41 -0
  33. data/lib/vines/stanza/pubsub/publish.rb +66 -0
  34. data/lib/vines/stanza/pubsub/subscribe.rb +44 -0
  35. data/lib/vines/stanza/pubsub/unsubscribe.rb +30 -0
  36. data/lib/vines/stanza/pubsub.rb +22 -0
  37. data/lib/vines/stanza.rb +72 -22
  38. data/lib/vines/storage/couchdb.rb +46 -65
  39. data/lib/vines/storage/local.rb +20 -14
  40. data/lib/vines/storage/mongodb.rb +132 -0
  41. data/lib/vines/storage/null.rb +39 -0
  42. data/lib/vines/storage/redis.rb +61 -68
  43. data/lib/vines/storage/sql.rb +73 -69
  44. data/lib/vines/storage.rb +1 -1
  45. data/lib/vines/stream/client/bind.rb +2 -2
  46. data/lib/vines/stream/client/session.rb +71 -16
  47. data/lib/vines/stream/component/handshake.rb +1 -0
  48. data/lib/vines/stream/component/ready.rb +2 -2
  49. data/lib/vines/stream/http/session.rb +2 -0
  50. data/lib/vines/stream/http.rb +0 -6
  51. data/lib/vines/stream/server/final_restart.rb +1 -0
  52. data/lib/vines/stream/server/outbound/final_features.rb +1 -0
  53. data/lib/vines/stream/server/ready.rb +6 -2
  54. data/lib/vines/stream/server.rb +4 -3
  55. data/lib/vines/stream.rb +10 -6
  56. data/lib/vines/version.rb +1 -1
  57. data/lib/vines.rb +48 -22
  58. data/test/cluster/publisher_test.rb +45 -0
  59. data/test/cluster/sessions_test.rb +54 -0
  60. data/test/cluster/subscriber_test.rb +94 -0
  61. data/test/config/host_test.rb +100 -21
  62. data/test/config/pubsub_test.rb +181 -0
  63. data/test/config_test.rb +225 -43
  64. data/test/jid_test.rb +7 -0
  65. data/test/router_test.rb +181 -9
  66. data/test/stanza/iq/disco_info_test.rb +8 -6
  67. data/test/stanza/iq/disco_items_test.rb +3 -3
  68. data/test/stanza/iq/private_storage_test.rb +8 -19
  69. data/test/stanza/iq/roster_test.rb +1 -1
  70. data/test/stanza/iq/session_test.rb +3 -6
  71. data/test/stanza/iq/vcard_test.rb +6 -2
  72. data/test/stanza/iq/version_test.rb +3 -2
  73. data/test/stanza/iq_test.rb +5 -5
  74. data/test/stanza/message_test.rb +3 -2
  75. data/test/stanza/presence/probe_test.rb +2 -1
  76. data/test/stanza/pubsub/create_test.rb +138 -0
  77. data/test/stanza/pubsub/delete_test.rb +142 -0
  78. data/test/stanza/pubsub/publish_test.rb +373 -0
  79. data/test/stanza/pubsub/subscribe_test.rb +186 -0
  80. data/test/stanza/pubsub/unsubscribe_test.rb +179 -0
  81. data/test/stanza_test.rb +2 -1
  82. data/test/storage/local_test.rb +26 -25
  83. data/test/storage/mock_mongo.rb +40 -0
  84. data/test/storage/mock_redis.rb +98 -0
  85. data/test/storage/mongodb_test.rb +81 -0
  86. data/test/storage/null_test.rb +30 -0
  87. data/test/storage/redis_test.rb +3 -36
  88. data/test/stream/component/handshake_test.rb +4 -0
  89. data/test/stream/component/ready_test.rb +2 -1
  90. data/test/stream/server/ready_test.rb +7 -1
  91. data/web/404.html +5 -3
  92. data/web/chat/coffeescripts/chat.coffee +9 -5
  93. data/web/chat/javascripts/app.js +1 -1
  94. data/web/chat/javascripts/chat.js +14 -8
  95. data/web/chat/stylesheets/chat.css +4 -1
  96. data/web/lib/coffeescripts/button.coffee +9 -5
  97. data/web/lib/coffeescripts/filter.coffee +1 -1
  98. data/web/lib/coffeescripts/login.coffee +14 -1
  99. data/web/lib/coffeescripts/session.coffee +8 -11
  100. data/web/lib/images/dark-gray.png +0 -0
  101. data/web/lib/images/light-gray.png +0 -0
  102. data/web/lib/images/logo-large.png +0 -0
  103. data/web/lib/images/logo-small.png +0 -0
  104. data/web/lib/images/white.png +0 -0
  105. data/web/lib/javascripts/base.js +9 -8
  106. data/web/lib/javascripts/button.js +20 -12
  107. data/web/lib/javascripts/filter.js +1 -1
  108. data/web/lib/javascripts/icons.js +7 -1
  109. data/web/lib/javascripts/jquery.js +4 -4
  110. data/web/lib/javascripts/login.js +16 -2
  111. data/web/lib/javascripts/raphael.js +5 -7
  112. data/web/lib/javascripts/session.js +10 -14
  113. data/web/lib/stylesheets/base.css +7 -11
  114. data/web/lib/stylesheets/login.css +31 -27
  115. metadata +100 -34
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vines
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-28 00:00:00.000000000Z
12
+ date: 2012-01-30 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &70110741555860 !ruby/object:Gem::Requirement
16
+ requirement: &70316966821400 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 3.1.0
21
+ version: 3.2.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70110741555860
24
+ version_requirements: *70316966821400
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bcrypt-ruby
27
- requirement: &70110741555380 !ruby/object:Gem::Requirement
27
+ requirement: &70316966820920 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,43 +32,43 @@ dependencies:
32
32
  version: 3.0.1
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70110741555380
35
+ version_requirements: *70316966820920
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: em-http-request
38
- requirement: &70110741554920 !ruby/object:Gem::Requirement
38
+ requirement: &70316966820460 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
42
42
  - !ruby/object:Gem::Version
43
- version: 0.3.0
43
+ version: 1.0.1
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70110741554920
46
+ version_requirements: *70316966820460
47
47
  - !ruby/object:Gem::Dependency
48
- name: em-redis
49
- requirement: &70110741554460 !ruby/object:Gem::Requirement
48
+ name: em-hiredis
49
+ requirement: &70316966820000 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 0.3.0
54
+ version: 0.1.0
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70110741554460
57
+ version_requirements: *70316966820000
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: eventmachine
60
- requirement: &70110741554000 !ruby/object:Gem::Requirement
60
+ requirement: &70316966819540 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
- - - ~>
63
+ - - ! '>='
64
64
  - !ruby/object:Gem::Version
65
65
  version: 0.12.10
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70110741554000
68
+ version_requirements: *70316966819540
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: http_parser.rb
71
- requirement: &70110741553540 !ruby/object:Gem::Requirement
71
+ requirement: &70316966819080 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,32 @@ dependencies:
76
76
  version: 0.5.3
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70110741553540
79
+ version_requirements: *70316966819080
80
+ - !ruby/object:Gem::Dependency
81
+ name: mongo
82
+ requirement: &70316966818620 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: 1.5.2
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: *70316966818620
91
+ - !ruby/object:Gem::Dependency
92
+ name: bson_ext
93
+ requirement: &70316966818160 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ~>
97
+ - !ruby/object:Gem::Version
98
+ version: 1.5.2
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: *70316966818160
80
102
  - !ruby/object:Gem::Dependency
81
103
  name: net-ldap
82
- requirement: &70110741553080 !ruby/object:Gem::Requirement
104
+ requirement: &70316966817700 !ruby/object:Gem::Requirement
83
105
  none: false
84
106
  requirements:
85
107
  - - ~>
@@ -87,10 +109,10 @@ dependencies:
87
109
  version: 0.2.2
88
110
  type: :runtime
89
111
  prerelease: false
90
- version_requirements: *70110741553080
112
+ version_requirements: *70316966817700
91
113
  - !ruby/object:Gem::Dependency
92
114
  name: nokogiri
93
- requirement: &70110741552620 !ruby/object:Gem::Requirement
115
+ requirement: &70316966817240 !ruby/object:Gem::Requirement
94
116
  none: false
95
117
  requirements:
96
118
  - - ~>
@@ -98,10 +120,10 @@ dependencies:
98
120
  version: 1.4.7
99
121
  type: :runtime
100
122
  prerelease: false
101
- version_requirements: *70110741552620
123
+ version_requirements: *70316966817240
102
124
  - !ruby/object:Gem::Dependency
103
125
  name: minitest
104
- requirement: &70110741552160 !ruby/object:Gem::Requirement
126
+ requirement: &70316966816780 !ruby/object:Gem::Requirement
105
127
  none: false
106
128
  requirements:
107
129
  - - =
@@ -109,10 +131,10 @@ dependencies:
109
131
  version: 2.2.2
110
132
  type: :development
111
133
  prerelease: false
112
- version_requirements: *70110741552160
134
+ version_requirements: *70316966816780
113
135
  - !ruby/object:Gem::Dependency
114
136
  name: rake
115
- requirement: &70110741551780 !ruby/object:Gem::Requirement
137
+ requirement: &70316966816400 !ruby/object:Gem::Requirement
116
138
  none: false
117
139
  requirements:
118
140
  - - ! '>='
@@ -120,10 +142,10 @@ dependencies:
120
142
  version: '0'
121
143
  type: :development
122
144
  prerelease: false
123
- version_requirements: *70110741551780
145
+ version_requirements: *70316966816400
124
146
  - !ruby/object:Gem::Dependency
125
147
  name: sqlite3
126
- requirement: &70110741551360 !ruby/object:Gem::Requirement
148
+ requirement: &70316966815980 !ruby/object:Gem::Requirement
127
149
  none: false
128
150
  requirements:
129
151
  - - ! '>='
@@ -131,18 +153,18 @@ dependencies:
131
153
  version: '0'
132
154
  type: :development
133
155
  prerelease: false
134
- version_requirements: *70110741551360
156
+ version_requirements: *70316966815980
135
157
  description: ! 'Vines is an XMPP chat server that supports thousands of
136
158
 
137
159
  simultaneous connections by using EventMachine for asynchronous IO. User data
138
160
 
139
- is stored in a SQL database, CouchDB, Redis, the file system, or a custom storage
161
+ is stored in a SQL database, CouchDB, MongoDB, Redis, the file system, or a
140
162
 
141
- implementation that you provide. LDAP authentication can be used so user names
163
+ custom storage implementation that you provide. LDAP authentication can be used
142
164
 
143
- and passwords aren''t stored in the chat database. SSL encryption is mandatory on
165
+ so user names and passwords aren''t stored in the chat database. SSL encryption
144
166
 
145
- all client and server connections.'
167
+ is mandatory on all client and server connections.'
146
168
  email:
147
169
  - david@negativecode.com
148
170
  executables:
@@ -154,6 +176,12 @@ files:
154
176
  - Rakefile
155
177
  - README
156
178
  - bin/vines
179
+ - lib/vines/cluster/connection.rb
180
+ - lib/vines/cluster/publisher.rb
181
+ - lib/vines/cluster/pubsub.rb
182
+ - lib/vines/cluster/sessions.rb
183
+ - lib/vines/cluster/subscriber.rb
184
+ - lib/vines/cluster.rb
157
185
  - lib/vines/command/bcrypt.rb
158
186
  - lib/vines/command/cert.rb
159
187
  - lib/vines/command/init.rb
@@ -164,6 +192,7 @@ files:
164
192
  - lib/vines/command/stop.rb
165
193
  - lib/vines/config/host.rb
166
194
  - lib/vines/config/port.rb
195
+ - lib/vines/config/pubsub.rb
167
196
  - lib/vines/config.rb
168
197
  - lib/vines/contact.rb
169
198
  - lib/vines/daemon.rb
@@ -194,10 +223,18 @@ files:
194
223
  - lib/vines/stanza/presence/unsubscribe.rb
195
224
  - lib/vines/stanza/presence/unsubscribed.rb
196
225
  - lib/vines/stanza/presence.rb
226
+ - lib/vines/stanza/pubsub/create.rb
227
+ - lib/vines/stanza/pubsub/delete.rb
228
+ - lib/vines/stanza/pubsub/publish.rb
229
+ - lib/vines/stanza/pubsub/subscribe.rb
230
+ - lib/vines/stanza/pubsub/unsubscribe.rb
231
+ - lib/vines/stanza/pubsub.rb
197
232
  - lib/vines/stanza.rb
198
233
  - lib/vines/storage/couchdb.rb
199
234
  - lib/vines/storage/ldap.rb
200
235
  - lib/vines/storage/local.rb
236
+ - lib/vines/storage/mongodb.rb
237
+ - lib/vines/storage/null.rb
201
238
  - lib/vines/storage/redis.rb
202
239
  - lib/vines/storage/sql.rb
203
240
  - lib/vines/storage.rb
@@ -272,9 +309,12 @@ files:
272
309
  - web/lib/coffeescripts/router.coffee
273
310
  - web/lib/coffeescripts/session.coffee
274
311
  - web/lib/coffeescripts/transfer.coffee
312
+ - web/lib/images/dark-gray.png
275
313
  - web/lib/images/default-user.png
314
+ - web/lib/images/light-gray.png
276
315
  - web/lib/images/logo-large.png
277
316
  - web/lib/images/logo-small.png
317
+ - web/lib/images/white.png
278
318
  - web/lib/javascripts/base.js
279
319
  - web/lib/javascripts/button.js
280
320
  - web/lib/javascripts/contact.js
@@ -294,7 +334,11 @@ files:
294
334
  - web/lib/javascripts/transfer.js
295
335
  - web/lib/stylesheets/base.css
296
336
  - web/lib/stylesheets/login.css
337
+ - test/cluster/publisher_test.rb
338
+ - test/cluster/sessions_test.rb
339
+ - test/cluster/subscriber_test.rb
297
340
  - test/config/host_test.rb
341
+ - test/config/pubsub_test.rb
298
342
  - test/config_test.rb
299
343
  - test/contact_test.rb
300
344
  - test/error_test.rb
@@ -314,10 +358,19 @@ files:
314
358
  - test/stanza/message_test.rb
315
359
  - test/stanza/presence/probe_test.rb
316
360
  - test/stanza/presence/subscribe_test.rb
361
+ - test/stanza/pubsub/create_test.rb
362
+ - test/stanza/pubsub/delete_test.rb
363
+ - test/stanza/pubsub/publish_test.rb
364
+ - test/stanza/pubsub/subscribe_test.rb
365
+ - test/stanza/pubsub/unsubscribe_test.rb
317
366
  - test/stanza_test.rb
318
367
  - test/storage/couchdb_test.rb
319
368
  - test/storage/ldap_test.rb
320
369
  - test/storage/local_test.rb
370
+ - test/storage/mock_mongo.rb
371
+ - test/storage/mock_redis.rb
372
+ - test/storage/mongodb_test.rb
373
+ - test/storage/null_test.rb
321
374
  - test/storage/redis_test.rb
322
375
  - test/storage/sql_test.rb
323
376
  - test/storage/storage_tests.rb
@@ -338,7 +391,7 @@ files:
338
391
  - test/stream/server/ready_test.rb
339
392
  - test/token_bucket_test.rb
340
393
  - test/user_test.rb
341
- homepage: http://www.getvines.com
394
+ homepage: http://www.getvines.org
342
395
  licenses: []
343
396
  post_install_message:
344
397
  rdoc_options: []
@@ -363,7 +416,11 @@ signing_key:
363
416
  specification_version: 3
364
417
  summary: Vines is an XMPP chat server that's easy to install and run.
365
418
  test_files:
419
+ - test/cluster/publisher_test.rb
420
+ - test/cluster/sessions_test.rb
421
+ - test/cluster/subscriber_test.rb
366
422
  - test/config/host_test.rb
423
+ - test/config/pubsub_test.rb
367
424
  - test/config_test.rb
368
425
  - test/contact_test.rb
369
426
  - test/error_test.rb
@@ -383,10 +440,19 @@ test_files:
383
440
  - test/stanza/message_test.rb
384
441
  - test/stanza/presence/probe_test.rb
385
442
  - test/stanza/presence/subscribe_test.rb
443
+ - test/stanza/pubsub/create_test.rb
444
+ - test/stanza/pubsub/delete_test.rb
445
+ - test/stanza/pubsub/publish_test.rb
446
+ - test/stanza/pubsub/subscribe_test.rb
447
+ - test/stanza/pubsub/unsubscribe_test.rb
386
448
  - test/stanza_test.rb
387
449
  - test/storage/couchdb_test.rb
388
450
  - test/storage/ldap_test.rb
389
451
  - test/storage/local_test.rb
452
+ - test/storage/mock_mongo.rb
453
+ - test/storage/mock_redis.rb
454
+ - test/storage/mongodb_test.rb
455
+ - test/storage/null_test.rb
390
456
  - test/storage/redis_test.rb
391
457
  - test/storage/sql_test.rb
392
458
  - test/storage/storage_tests.rb