[DRE-commits] [ruby-diaspora-vines] 01/01: remove temporary files

Praveen Arimbrathodiyil praveen at moszumanska.debian.org
Tue Jun 7 09:00:24 UTC 2016


This is an automated email from the git hooks/post-receive script.

praveen pushed a commit to branch master
in repository ruby-diaspora-vines.

commit 592400bf01ae43b893b2de7a84a248691ce44564
Author: Praveen Arimbrathodiyil <praveen at debian.org>
Date:   Tue Jun 7 14:29:47 2016 +0530

    remove temporary files
---
 debian/files                                       |   1 -
 debian/ruby-diaspora-vines.debhelper.log           |  18 --
 debian/ruby-diaspora-vines.substvars               |   2 -
 debian/ruby-diaspora-vines/DEBIAN/control          |  14 -
 debian/ruby-diaspora-vines/DEBIAN/md5sums          | 112 -------
 .../usr/lib/ruby/vendor_ruby/vines.rb              | 216 -------------
 .../usr/lib/ruby/vendor_ruby/vines/cli.rb          | 103 ------
 .../usr/lib/ruby/vendor_ruby/vines/cluster.rb      | 246 ---------------
 .../ruby/vendor_ruby/vines/cluster/connection.rb   |  26 --
 .../ruby/vendor_ruby/vines/cluster/publisher.rb    |  55 ----
 .../lib/ruby/vendor_ruby/vines/cluster/pubsub.rb   |  92 ------
 .../lib/ruby/vendor_ruby/vines/cluster/sessions.rb | 125 --------
 .../ruby/vendor_ruby/vines/cluster/subscriber.rb   | 133 --------
 .../usr/lib/ruby/vendor_ruby/vines/command/cert.rb |  50 ---
 .../lib/ruby/vendor_ruby/vines/command/restart.rb  |  12 -
 .../lib/ruby/vendor_ruby/vines/command/start.rb    |  28 --
 .../usr/lib/ruby/vendor_ruby/vines/command/stop.rb |  18 --
 .../usr/lib/ruby/vendor_ruby/vines/config.rb       | 236 --------------
 .../lib/ruby/vendor_ruby/vines/config/diaspora.rb  |  37 ---
 .../usr/lib/ruby/vendor_ruby/vines/config/host.rb  | 137 --------
 .../usr/lib/ruby/vendor_ruby/vines/config/port.rb  | 132 --------
 .../lib/ruby/vendor_ruby/vines/config/pubsub.rb    | 108 -------
 .../usr/lib/ruby/vendor_ruby/vines/contact.rb      | 115 -------
 .../usr/lib/ruby/vendor_ruby/vines/daemon.rb       |  78 -----
 .../usr/lib/ruby/vendor_ruby/vines/error.rb        | 150 ---------
 .../usr/lib/ruby/vendor_ruby/vines/jid.rb          |  95 ------
 .../usr/lib/ruby/vendor_ruby/vines/kit.rb          |  30 --
 .../usr/lib/ruby/vendor_ruby/vines/log.rb          |  28 --
 .../usr/lib/ruby/vendor_ruby/vines/node.rb         |  31 --
 .../usr/lib/ruby/vendor_ruby/vines/router.rb       | 184 -----------
 .../usr/lib/ruby/vendor_ruby/vines/stanza.rb       | 175 -----------
 .../lib/ruby/vendor_ruby/vines/stanza/dialback.rb  |  28 --
 .../usr/lib/ruby/vendor_ruby/vines/stanza/iq.rb    |  48 ---
 .../lib/ruby/vendor_ruby/vines/stanza/iq/auth.rb   |  18 --
 .../ruby/vendor_ruby/vines/stanza/iq/disco_info.rb |  45 ---
 .../vendor_ruby/vines/stanza/iq/disco_items.rb     |  29 --
 .../lib/ruby/vendor_ruby/vines/stanza/iq/error.rb  |  16 -
 .../lib/ruby/vendor_ruby/vines/stanza/iq/ping.rb   |  16 -
 .../vendor_ruby/vines/stanza/iq/private_storage.rb |  83 -----
 .../lib/ruby/vendor_ruby/vines/stanza/iq/query.rb  |  10 -
 .../lib/ruby/vendor_ruby/vines/stanza/iq/result.rb |  16 -
 .../lib/ruby/vendor_ruby/vines/stanza/iq/roster.rb | 140 ---------
 .../ruby/vendor_ruby/vines/stanza/iq/session.rb    |  17 -
 .../lib/ruby/vendor_ruby/vines/stanza/iq/vcard.rb  |  56 ----
 .../ruby/vendor_ruby/vines/stanza/iq/version.rb    |  25 --
 .../lib/ruby/vendor_ruby/vines/stanza/message.rb   |  43 ---
 .../lib/ruby/vendor_ruby/vines/stanza/presence.rb  | 182 -----------
 .../vendor_ruby/vines/stanza/presence/error.rb     |  23 --
 .../vendor_ruby/vines/stanza/presence/probe.rb     |  37 ---
 .../vendor_ruby/vines/stanza/presence/subscribe.rb |  42 ---
 .../vines/stanza/presence/subscribed.rb            |  51 ---
 .../vines/stanza/presence/unavailable.rb           |  15 -
 .../vines/stanza/presence/unsubscribe.rb           |  38 ---
 .../vines/stanza/presence/unsubscribed.rb          |  38 ---
 .../lib/ruby/vendor_ruby/vines/stanza/pubsub.rb    |  22 --
 .../ruby/vendor_ruby/vines/stanza/pubsub/create.rb |  39 ---
 .../ruby/vendor_ruby/vines/stanza/pubsub/delete.rb |  41 ---
 .../vendor_ruby/vines/stanza/pubsub/publish.rb     |  66 ----
 .../vendor_ruby/vines/stanza/pubsub/subscribe.rb   |  44 ---
 .../vendor_ruby/vines/stanza/pubsub/unsubscribe.rb |  30 --
 .../usr/lib/ruby/vendor_ruby/vines/storage.rb      | 291 -----------------
 .../lib/ruby/vendor_ruby/vines/storage/local.rb    | 151 ---------
 .../usr/lib/ruby/vendor_ruby/vines/storage/null.rb |  51 ---
 .../usr/lib/ruby/vendor_ruby/vines/storage/sql.rb  | 346 ---------------------
 .../usr/lib/ruby/vendor_ruby/vines/store.rb        | 152 ---------
 .../usr/lib/ruby/vendor_ruby/vines/stream.rb       | 309 ------------------
 .../lib/ruby/vendor_ruby/vines/stream/client.rb    |  88 ------
 .../ruby/vendor_ruby/vines/stream/client/auth.rb   |  74 -----
 .../vines/stream/client/auth_restart.rb            |  29 --
 .../ruby/vendor_ruby/vines/stream/client/bind.rb   |  64 ----
 .../vines/stream/client/bind_restart.rb            |  30 --
 .../ruby/vendor_ruby/vines/stream/client/closed.rb |  13 -
 .../ruby/vendor_ruby/vines/stream/client/ready.rb  |  17 -
 .../vendor_ruby/vines/stream/client/session.rb     | 210 -------------
 .../ruby/vendor_ruby/vines/stream/client/start.rb  |  27 --
 .../ruby/vendor_ruby/vines/stream/client/tls.rb    |  38 ---
 .../lib/ruby/vendor_ruby/vines/stream/component.rb |  58 ----
 .../vines/stream/component/handshake.rb            |  26 --
 .../vendor_ruby/vines/stream/component/ready.rb    |  23 --
 .../vendor_ruby/vines/stream/component/start.rb    |  19 --
 .../usr/lib/ruby/vendor_ruby/vines/stream/http.rb  | 185 -----------
 .../lib/ruby/vendor_ruby/vines/stream/http/auth.rb |  22 --
 .../lib/ruby/vendor_ruby/vines/stream/http/bind.rb |  32 --
 .../vendor_ruby/vines/stream/http/bind_restart.rb  |  37 ---
 .../ruby/vendor_ruby/vines/stream/http/ready.rb    |  29 --
 .../ruby/vendor_ruby/vines/stream/http/request.rb  | 193 ------------
 .../ruby/vendor_ruby/vines/stream/http/session.rb  | 128 --------
 .../ruby/vendor_ruby/vines/stream/http/sessions.rb |  65 ----
 .../ruby/vendor_ruby/vines/stream/http/start.rb    |  23 --
 .../lib/ruby/vendor_ruby/vines/stream/parser.rb    |  79 -----
 .../usr/lib/ruby/vendor_ruby/vines/stream/sasl.rb  | 128 --------
 .../lib/ruby/vendor_ruby/vines/stream/server.rb    | 207 ------------
 .../ruby/vendor_ruby/vines/stream/server/auth.rb   |  30 --
 .../vendor_ruby/vines/stream/server/auth_method.rb |  66 ----
 .../vines/stream/server/auth_restart.rb            |  39 ---
 .../vines/stream/server/final_restart.rb           |  21 --
 .../vines/stream/server/outbound/auth.rb           |  65 ----
 .../stream/server/outbound/auth_dialback_result.rb |  39 ---
 .../vines/stream/server/outbound/auth_external.rb  |  33 --
 .../stream/server/outbound/auth_external_result.rb |  32 --
 .../vines/stream/server/outbound/auth_restart.rb   |  27 --
 .../vines/stream/server/outbound/authoritative.rb  |  48 ---
 .../vines/stream/server/outbound/final_features.rb |  28 --
 .../vines/stream/server/outbound/final_restart.rb  |  20 --
 .../vines/stream/server/outbound/start.rb          |  20 --
 .../vines/stream/server/outbound/tls_result.rb     |  34 --
 .../ruby/vendor_ruby/vines/stream/server/ready.rb  |  24 --
 .../ruby/vendor_ruby/vines/stream/server/start.rb  |  40 ---
 .../usr/lib/ruby/vendor_ruby/vines/stream/state.rb |  46 ---
 .../usr/lib/ruby/vendor_ruby/vines/token_bucket.rb |  55 ----
 .../usr/lib/ruby/vendor_ruby/vines/user.rb         | 125 --------
 .../usr/lib/ruby/vendor_ruby/vines/version.rb      |   6 -
 .../usr/lib/ruby/vendor_ruby/vines/xmpp_server.rb  |  25 --
 .../doc/ruby-diaspora-vines/changelog.Debian.gz    | Bin 176 -> 0 bytes
 .../usr/share/doc/ruby-diaspora-vines/copyright    |  31 --
 .../diaspora-vines-0.2.0.develop.4.gemspec         |  66 ----
 .../diaspora-vines-0.2.0.develop.4.gemspec         |  66 ----
 vines.log                                          | 130 --------
 118 files changed, 8305 deletions(-)

diff --git a/debian/files b/debian/files
deleted file mode 100644
index 6827cfd..0000000
--- a/debian/files
+++ /dev/null
@@ -1 +0,0 @@
-ruby-diaspora-vines_0.2.0~develop.4-1_all.deb ruby optional
diff --git a/debian/ruby-diaspora-vines.debhelper.log b/debian/ruby-diaspora-vines.debhelper.log
deleted file mode 100644
index 63f42d6..0000000
--- a/debian/ruby-diaspora-vines.debhelper.log
+++ /dev/null
@@ -1,18 +0,0 @@
-dh_auto_configure
-dh_auto_build
-dh_auto_test
-dh_prep
-dh_auto_install
-override_dh_install dh_install
-dh_install
-dh_installdocs
-dh_installchangelogs
-dh_perl
-dh_link
-dh_compress
-dh_fixperms
-dh_installdeb
-dh_gencontrol
-dh_md5sums
-dh_builddeb
-dh_builddeb
diff --git a/debian/ruby-diaspora-vines.substvars b/debian/ruby-diaspora-vines.substvars
deleted file mode 100644
index 17ae1fe..0000000
--- a/debian/ruby-diaspora-vines.substvars
+++ /dev/null
@@ -1,2 +0,0 @@
-ruby:Versions=ruby1.9.1 ruby2.0
-misc:Depends=
diff --git a/debian/ruby-diaspora-vines/DEBIAN/control b/debian/ruby-diaspora-vines/DEBIAN/control
deleted file mode 100644
index 77e676b..0000000
--- a/debian/ruby-diaspora-vines/DEBIAN/control
+++ /dev/null
@@ -1,14 +0,0 @@
-Package: ruby-diaspora-vines
-Version: 0.2.0~develop.4-1
-Architecture: all
-Maintainer: Debian Ruby Extras Maintainers <pkg-ruby-extras-maintainers at lists.alioth.debian.org>
-Installed-Size: 371
-Depends: ruby | ruby-interpreter, ruby-activerecord (>= 4.1), ruby-bcrypt (>= 3.1), ruby-em-hiredis (>= 0.3.0), ruby-eventmachine (>= 1.0.8), ruby-http-parser.rb (>= 0.6), ruby-nokogiri (>= 1.6)
-Section: ruby
-Priority: optional
-Homepage: https://github.com/diaspora/vines
-Description: Vines fork build for diaspora integration
- The vines gem installs a fully standards-compliant XMPP chat server.
- Vines is an XMPP chat server that connects you with large clusters easily.
- DO NOT use it unless you know what you are doing!
-Ruby-Versions: ruby1.9.1 ruby2.0
diff --git a/debian/ruby-diaspora-vines/DEBIAN/md5sums b/debian/ruby-diaspora-vines/DEBIAN/md5sums
deleted file mode 100644
index c840134..0000000
--- a/debian/ruby-diaspora-vines/DEBIAN/md5sums
+++ /dev/null
@@ -1,112 +0,0 @@
-4cebb877edead3b1bd8915e4ad6dba48  usr/lib/ruby/vendor_ruby/vines.rb
-2dc850867be96859426755728e267af3  usr/lib/ruby/vendor_ruby/vines/cli.rb
-badf6a7a9fc46ee0067eb13b5599fa77  usr/lib/ruby/vendor_ruby/vines/cluster.rb
-2098d4a439c6ee1b7cc05356a999986a  usr/lib/ruby/vendor_ruby/vines/cluster/connection.rb
-0b6667c1c5e707f6850fc3bbc80c144f  usr/lib/ruby/vendor_ruby/vines/cluster/publisher.rb
-8707222a7de873d171a6cc48b55a06df  usr/lib/ruby/vendor_ruby/vines/cluster/pubsub.rb
-5b15fafbfbbd042b66187bc2a5fc92f4  usr/lib/ruby/vendor_ruby/vines/cluster/sessions.rb
-cb0051fe68004b6b2fde4c0b241da7f9  usr/lib/ruby/vendor_ruby/vines/cluster/subscriber.rb
-b640856536f20010260903b657c47405  usr/lib/ruby/vendor_ruby/vines/command/cert.rb
-5582d203ef8bbae582f9e57bfec0f6f7  usr/lib/ruby/vendor_ruby/vines/command/restart.rb
-3c557a504455c1373344ee781fb272eb  usr/lib/ruby/vendor_ruby/vines/command/start.rb
-33e742a4272c5d1fcb9a28ae4b88401b  usr/lib/ruby/vendor_ruby/vines/command/stop.rb
-fba2849d8d7241854dd3fec26ca1046c  usr/lib/ruby/vendor_ruby/vines/config.rb
-d6fa258bde8697ee15589ab4c24c591c  usr/lib/ruby/vendor_ruby/vines/config/diaspora.rb
-a9864bc87a95b8e52a1422066a9a41e3  usr/lib/ruby/vendor_ruby/vines/config/host.rb
-cfc3978df3243f1d436d1ee42d0f35c1  usr/lib/ruby/vendor_ruby/vines/config/port.rb
-5d19ca69673de62411e608905717e167  usr/lib/ruby/vendor_ruby/vines/config/pubsub.rb
-7bfe4841fcee429dc8bc6d7e6e27ae1b  usr/lib/ruby/vendor_ruby/vines/contact.rb
-c0c9ca8230157e622f6bd1018ac6e427  usr/lib/ruby/vendor_ruby/vines/daemon.rb
-3d7011624ed652f8a24570deef176286  usr/lib/ruby/vendor_ruby/vines/error.rb
-a7f7ecb00f16c0345300c0f552a82c18  usr/lib/ruby/vendor_ruby/vines/jid.rb
-bd72e5c5c3f5685e2f4f25c61127f085  usr/lib/ruby/vendor_ruby/vines/kit.rb
-650a3d05111780b90e699b06ee9a2304  usr/lib/ruby/vendor_ruby/vines/log.rb
-102b73b1343b1e7593cb8494c53cdcf6  usr/lib/ruby/vendor_ruby/vines/node.rb
-2816017a9630637208d3acf8b7b1ec9d  usr/lib/ruby/vendor_ruby/vines/router.rb
-b8035b4ad13af09f7b9da415ce51a1e2  usr/lib/ruby/vendor_ruby/vines/stanza.rb
-211a1b97c8cd8eae679b59f4323d1deb  usr/lib/ruby/vendor_ruby/vines/stanza/dialback.rb
-0697ae4bf2bbce8aace044d1f668a611  usr/lib/ruby/vendor_ruby/vines/stanza/iq.rb
-d9cc57a6703a1db5f8ea2843151f065b  usr/lib/ruby/vendor_ruby/vines/stanza/iq/auth.rb
-9e262b914f14af3146d8c668c36092cc  usr/lib/ruby/vendor_ruby/vines/stanza/iq/disco_info.rb
-f8062e7096dc86fcd09f921f62798461  usr/lib/ruby/vendor_ruby/vines/stanza/iq/disco_items.rb
-faf435287c88c1ede3d2d8f31185d6d0  usr/lib/ruby/vendor_ruby/vines/stanza/iq/error.rb
-5066c4465bf4e4d935d2cca8b1689bce  usr/lib/ruby/vendor_ruby/vines/stanza/iq/ping.rb
-ebf2f305ae4b09dfb4b6f879a49e2ad4  usr/lib/ruby/vendor_ruby/vines/stanza/iq/private_storage.rb
-cd08e2a43769c825407681a5906661f6  usr/lib/ruby/vendor_ruby/vines/stanza/iq/query.rb
-00cc42d5ff747b88e9a4fd16d31cce5b  usr/lib/ruby/vendor_ruby/vines/stanza/iq/result.rb
-0630e07740214a23d45c36d84762d809  usr/lib/ruby/vendor_ruby/vines/stanza/iq/roster.rb
-f5c3446c275a287e610bf9f1980a3d07  usr/lib/ruby/vendor_ruby/vines/stanza/iq/session.rb
-87a707373de38ecd28f47d8c09607dec  usr/lib/ruby/vendor_ruby/vines/stanza/iq/vcard.rb
-ffc4e43c7428ee72e9a702beb0620d6f  usr/lib/ruby/vendor_ruby/vines/stanza/iq/version.rb
-023b80a741d47ac68d7e42fc2dc74092  usr/lib/ruby/vendor_ruby/vines/stanza/message.rb
-b9ee7e521ba7b9a6c37847d4b568d955  usr/lib/ruby/vendor_ruby/vines/stanza/presence.rb
-df5993fa2142b5f537275731284974d5  usr/lib/ruby/vendor_ruby/vines/stanza/presence/error.rb
-225d1b018d1b6e61d93d4d6cd012093f  usr/lib/ruby/vendor_ruby/vines/stanza/presence/probe.rb
-211759563ed021379db8c104aaf2078a  usr/lib/ruby/vendor_ruby/vines/stanza/presence/subscribe.rb
-c2331041fbd02c2b09149d766a6e677d  usr/lib/ruby/vendor_ruby/vines/stanza/presence/subscribed.rb
-9dc4a8b21982070c3b1027266cb62a72  usr/lib/ruby/vendor_ruby/vines/stanza/presence/unavailable.rb
-f01c1b5ce588d624e1359f3755f70176  usr/lib/ruby/vendor_ruby/vines/stanza/presence/unsubscribe.rb
-37d7acafc6f0adb33717debf6f2e1df9  usr/lib/ruby/vendor_ruby/vines/stanza/presence/unsubscribed.rb
-59de91b51eb81636735281321ca3df01  usr/lib/ruby/vendor_ruby/vines/stanza/pubsub.rb
-f7538132e1ed90e7fab7fadba8ff3aac  usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/create.rb
-84195b776c4bd72bd9c8d404c1d234c3  usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/delete.rb
-4b6772aa684db7706fbf6f6ac218c4a2  usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/publish.rb
-cdf30ccc2016e6eb1043ffcb686364e4  usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/subscribe.rb
-5922338be22794ecb92cc1cf4af29f16  usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/unsubscribe.rb
-53683b3f11aa7a3ea180eedc35953461  usr/lib/ruby/vendor_ruby/vines/storage.rb
-167f8d11586c9fb12bc8b533ccc2ee13  usr/lib/ruby/vendor_ruby/vines/storage/local.rb
-ea4af6f25d6c0d7d7c20361c4f961659  usr/lib/ruby/vendor_ruby/vines/storage/null.rb
-6cadd393c8b6b1f631fb1a59392e042d  usr/lib/ruby/vendor_ruby/vines/storage/sql.rb
-4a7d755d2df447f1f11df8f826cbdd67  usr/lib/ruby/vendor_ruby/vines/store.rb
-98ba4c7df9dd7585bb457850e0300f57  usr/lib/ruby/vendor_ruby/vines/stream.rb
-a352adf2074b018cb58cdf7e305d98ae  usr/lib/ruby/vendor_ruby/vines/stream/client.rb
-d3befae6bb1ea89e48b642f8cc5bb842  usr/lib/ruby/vendor_ruby/vines/stream/client/auth.rb
-663a3330d899a5b17a4a44c18397c480  usr/lib/ruby/vendor_ruby/vines/stream/client/auth_restart.rb
-778eac3c054201744e31f434c01f73bb  usr/lib/ruby/vendor_ruby/vines/stream/client/bind.rb
-59a4e3bdb6bd363bb0fa4ee182375a47  usr/lib/ruby/vendor_ruby/vines/stream/client/bind_restart.rb
-975012a25d2c60bf8fa4549dbe351de8  usr/lib/ruby/vendor_ruby/vines/stream/client/closed.rb
-ec0bacf752442eef0d3d6e5100b1eec2  usr/lib/ruby/vendor_ruby/vines/stream/client/ready.rb
-c45946f98442954356fc338e4dcdcff3  usr/lib/ruby/vendor_ruby/vines/stream/client/session.rb
-abb60e592a34c6fea433f8244af83392  usr/lib/ruby/vendor_ruby/vines/stream/client/start.rb
-66502ab2f8beb75ba1d528c768ceffba  usr/lib/ruby/vendor_ruby/vines/stream/client/tls.rb
-ff92d63b90f85ab5f2b463da7561c688  usr/lib/ruby/vendor_ruby/vines/stream/component.rb
-8546bd23564476dee5cb46d6ee14b876  usr/lib/ruby/vendor_ruby/vines/stream/component/handshake.rb
-b8ecd74915232049371b92332a3b5f85  usr/lib/ruby/vendor_ruby/vines/stream/component/ready.rb
-f5c522dcaa53addd14328cfbb699992b  usr/lib/ruby/vendor_ruby/vines/stream/component/start.rb
-6516c8a6d2e378ffab61151b673bfbe7  usr/lib/ruby/vendor_ruby/vines/stream/http.rb
-0f85aa42b6e689bc0343902050779901  usr/lib/ruby/vendor_ruby/vines/stream/http/auth.rb
-8dbdbb82e01768d899c8a2cb17f95ac0  usr/lib/ruby/vendor_ruby/vines/stream/http/bind.rb
-a65cfaf0af94297d263324ed790650d4  usr/lib/ruby/vendor_ruby/vines/stream/http/bind_restart.rb
-7ac55b15f6db8f53bd27c2640050d316  usr/lib/ruby/vendor_ruby/vines/stream/http/ready.rb
-90708b2f9774173e9b96ff403123bc65  usr/lib/ruby/vendor_ruby/vines/stream/http/request.rb
-76907f8a1a43af83ec2d20249b6710e2  usr/lib/ruby/vendor_ruby/vines/stream/http/session.rb
-be75f7e199dd7c3b247519e135c7b575  usr/lib/ruby/vendor_ruby/vines/stream/http/sessions.rb
-d2b4551dc53cd472d269b06907c875f8  usr/lib/ruby/vendor_ruby/vines/stream/http/start.rb
-779968f538175e851a9ca9c32cd2672d  usr/lib/ruby/vendor_ruby/vines/stream/parser.rb
-0e55475603a113e658b85f67774868c8  usr/lib/ruby/vendor_ruby/vines/stream/sasl.rb
-83760ab1eb5462ecd722e2f6154bef6d  usr/lib/ruby/vendor_ruby/vines/stream/server.rb
-0fe4debf64f0c81de0d22c9cde725830  usr/lib/ruby/vendor_ruby/vines/stream/server/auth.rb
-fc874998cba50403ef944284d7b5115c  usr/lib/ruby/vendor_ruby/vines/stream/server/auth_method.rb
-1a3bd54771a79be47adbccc18808eb21  usr/lib/ruby/vendor_ruby/vines/stream/server/auth_restart.rb
-a9a832f7ced91342b36bae240d139d64  usr/lib/ruby/vendor_ruby/vines/stream/server/final_restart.rb
-7bf5d304375f728c0423a8e73d69a5fa  usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth.rb
-c323ec0a8a24e5f67e23fc69fd07eb8b  usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_dialback_result.rb
-a37bc98cfc7aac2790d205153cc38b20  usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_external.rb
-49e4348e61e949e90f807753e85cbcd5  usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_external_result.rb
-647bf4c9083055968ac445fc2231f3fd  usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_restart.rb
-ca2eb9760a77b9d2142b6b22c27116c6  usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/authoritative.rb
-dec2558692525a2c40041df1ad534bba  usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/final_features.rb
-1e0cc723c521463476b6dc1cf2e775e8  usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/final_restart.rb
-cc8b9197358277671ca3638e68f396f1  usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/start.rb
-1f060b7bb290c89a4b4b6c511c0bd65a  usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/tls_result.rb
-30e533393450de814a31bf6162ad83a6  usr/lib/ruby/vendor_ruby/vines/stream/server/ready.rb
-b04af899f7b120337b953186b3204d4f  usr/lib/ruby/vendor_ruby/vines/stream/server/start.rb
-ef08f22bb12f11a542e5483e27825ec7  usr/lib/ruby/vendor_ruby/vines/stream/state.rb
-c9a259957fd1553c1226ad9ab76f1335  usr/lib/ruby/vendor_ruby/vines/token_bucket.rb
-3fa87b9be603d4b9ddae54974bccfa86  usr/lib/ruby/vendor_ruby/vines/user.rb
-38352e690eb69553c96dd7f690d86b0a  usr/lib/ruby/vendor_ruby/vines/version.rb
-636f92f05e0003cd8db554b0e585fe1c  usr/lib/ruby/vendor_ruby/vines/xmpp_server.rb
-29a37069c5b9c9fa96084b0aaed670d0  usr/share/doc/ruby-diaspora-vines/changelog.Debian.gz
-57c43b1061f69f12ce71e7a5c50c7bc4  usr/share/doc/ruby-diaspora-vines/copyright
-a4bedd83404ea553d09dbbe4f3c2d0a0  usr/share/rubygems-integration/1.9.1/specifications/diaspora-vines-0.2.0.develop.4.gemspec
-a4bedd83404ea553d09dbbe4f3c2d0a0  usr/share/rubygems-integration/2.0/specifications/diaspora-vines-0.2.0.develop.4.gemspec
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines.rb
deleted file mode 100644
index 139e7ea..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines.rb
+++ /dev/null
@@ -1,216 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  NAMESPACES = {
-    :stream           => 'http://etherx.jabber.org/streams'.freeze,
-    :client           => 'jabber:client'.freeze,
-    :server           => 'jabber:server'.freeze,
-    :component        => 'jabber:component:accept'.freeze,
-    :roster           => 'jabber:iq:roster'.freeze,
-    :non_sasl         => 'jabber:iq:auth'.freeze,
-    :storage          => 'jabber:iq:private'.freeze,
-    :version          => 'jabber:iq:version'.freeze,
-    :sasl             => 'urn:ietf:params:xml:ns:xmpp-sasl'.freeze,
-    :tls              => 'urn:ietf:params:xml:ns:xmpp-tls'.freeze,
-    :bind             => 'urn:ietf:params:xml:ns:xmpp-bind'.freeze,
-    :session          => 'urn:ietf:params:xml:ns:xmpp-session'.freeze,
-    :stanzas          => 'urn:ietf:params:xml:ns:xmpp-stanzas'.freeze,
-    :ping             => 'urn:xmpp:ping'.freeze,
-    :delay            => 'urn:xmpp:delay'.freeze,
-    :pubsub           => 'http://jabber.org/protocol/pubsub'.freeze,
-    :pubsub_event     => 'http://jabber.org/protocol/pubsub#event'.freeze,
-    :pubsub_create    => 'http://jabber.org/protocol/pubsub#create-nodes'.freeze,
-    :pubsub_delete    => 'http://jabber.org/protocol/pubsub#delete-nodes'.freeze,
-    :pubsub_instant   => 'http://jabber.org/protocol/pubsub#instant-nodes'.freeze,
-    :pubsub_item_ids  => 'http://jabber.org/protocol/pubsub#item-ids'.freeze,
-    :pubsub_publish   => 'http://jabber.org/protocol/pubsub#publish'.freeze,
-    :pubsub_subscribe => 'http://jabber.org/protocol/pubsub#subscribe'.freeze,
-    :disco_items      => 'http://jabber.org/protocol/disco#items'.freeze,
-    :disco_info       => 'http://jabber.org/protocol/disco#info'.freeze,
-    :http_bind        => 'http://jabber.org/protocol/httpbind'.freeze,
-    :offline          => 'msgoffline'.freeze,
-    :bosh             => 'urn:xmpp:xbosh'.freeze,
-    :vcard            => 'vcard-temp'.freeze,
-    :vcard_update     => 'vcard-temp:x:update'.freeze,
-    :si               => 'http://jabber.org/protocol/si'.freeze,
-    :byte_streams     => 'http://jabber.org/protocol/bytestreams'.freeze,
-    :dialback         => 'urn:xmpp:features:dialback'.freeze,
-    :legacy_dialback  => 'jabber:server:dialback'.freeze
-  }.freeze
-
-  module Log
-    @@logger = nil
-    def log
-      unless @@logger
-        @@logger = Logger.new(STDOUT)
-        @@logger.level = Logger::INFO
-        @@logger.progname = 'vines'
-        @@logger.formatter = Class.new(Logger::Formatter) do
-          def initialize
-            @time = "%Y-%m-%dT%H:%M:%SZ".freeze
-            @fmt  = "[%s] %5s -- %s: %s\n".freeze
-          end
-          def call(severity, time, program, msg)
-            @fmt % [time.utc.strftime(@time), severity, program, msg2str(msg)]
-          end
-        end.new
-      end
-      @@logger
-    end
-  end
-end
-
-%w[
-  active_record
-  base64
-  bcrypt
-  digest/sha1
-  em-hiredis
-  eventmachine
-  fiber
-  fileutils
-  http/parser
-  json
-  logger
-  nokogiri
-  openssl
-  optparse
-  resolv
-  set
-  socket
-  time
-  uri
-  yaml
-
-  vines/cli
-  vines/log
-  vines/jid
-
-  vines/stanza
-  vines/stanza/iq
-  vines/stanza/iq/query
-  vines/stanza/iq/auth
-  vines/stanza/iq/disco_info
-  vines/stanza/iq/disco_items
-  vines/stanza/iq/error
-  vines/stanza/iq/ping
-  vines/stanza/iq/private_storage
-  vines/stanza/iq/result
-  vines/stanza/iq/roster
-  vines/stanza/iq/session
-  vines/stanza/iq/vcard
-  vines/stanza/iq/version
-  vines/stanza/dialback
-  vines/stanza/message
-  vines/stanza/presence
-  vines/stanza/presence/error
-  vines/stanza/presence/probe
-  vines/stanza/presence/subscribe
-  vines/stanza/presence/subscribed
-  vines/stanza/presence/unavailable
-  vines/stanza/presence/unsubscribe
-  vines/stanza/presence/unsubscribed
-  vines/stanza/pubsub
-  vines/stanza/pubsub/create
-  vines/stanza/pubsub/delete
-  vines/stanza/pubsub/publish
-  vines/stanza/pubsub/subscribe
-  vines/stanza/pubsub/unsubscribe
-
-  vines/storage
-  vines/storage/local
-  vines/storage/sql
-  vines/storage/null
-
-  vines/config
-  vines/config/host
-  vines/config/port
-  vines/config/pubsub
-
-  vines/store
-  vines/contact
-  vines/daemon
-  vines/error
-  vines/kit
-  vines/node
-  vines/router
-  vines/token_bucket
-  vines/user
-  vines/version
-  vines/xmpp_server
-
-  vines/cluster
-  vines/cluster/connection
-  vines/cluster/publisher
-  vines/cluster/pubsub
-  vines/cluster/sessions
-  vines/cluster/subscriber
-
-  vines/stream
-  vines/stream/sasl
-  vines/stream/state
-  vines/stream/parser
-
-  vines/stream/client
-  vines/stream/client/session
-  vines/stream/client/start
-  vines/stream/client/tls
-  vines/stream/client/auth_restart
-  vines/stream/client/auth
-  vines/stream/client/bind_restart
-  vines/stream/client/bind
-  vines/stream/client/ready
-  vines/stream/client/closed
-
-  vines/stream/component
-  vines/stream/component/start
-  vines/stream/component/handshake
-  vines/stream/component/ready
-
-  vines/stream/http
-  vines/stream/http/session
-  vines/stream/http/sessions
-  vines/stream/http/request
-  vines/stream/http/start
-  vines/stream/http/auth
-  vines/stream/http/bind_restart
-  vines/stream/http/bind
-  vines/stream/http/ready
-
-  vines/stream/server
-  vines/stream/server/start
-  vines/stream/server/auth_method
-  vines/stream/server/auth_restart
-  vines/stream/server/auth
-  vines/stream/server/final_restart
-  vines/stream/server/ready
-
-  vines/stream/server/outbound/start
-  vines/stream/server/outbound/auth
-  vines/stream/server/outbound/tls_result
-  vines/stream/server/outbound/authoritative
-  vines/stream/server/outbound/auth_restart
-  vines/stream/server/outbound/auth_external
-  vines/stream/server/outbound/auth_external_result
-  vines/stream/server/outbound/auth_dialback_result
-  vines/stream/server/outbound/final_restart
-  vines/stream/server/outbound/final_features
-
-  vines/command/cert
-  vines/command/restart
-  vines/command/start
-  vines/command/stop
-].each {|f| require f }
-
-# Try loading diaspora configuration
-%w[
-  config/application.rb
-  config/load_config.rb
-  config/initializers/devise.rb
-].each {|c|
-  begin
-    require "#{Dir.pwd}/#{c}"
-  rescue LoadError
-    puts "Was not able to load #{c}! This not a standalone version. You should use it only in a diaspora environment."
-  end
-}
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cli.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cli.rb
deleted file mode 100644
index c5c9029..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cli.rb
+++ /dev/null
@@ -1,103 +0,0 @@
-module Vines
-  # The command line application that's invoked by the `vines` binary included
-  # in the gem. Parses the command line arguments to create a new server
-  # directory, and starts and stops the server.
-  class CLI
-    COMMANDS = %w[start stop restart cert]
-
-    def self.start
-      self.new.start
-    end
-
-    # Run the command line application to parse arguments and run sub-commands.
-    # Exits the process with a non-zero return code to indicate failure.
-    #
-    # Returns nothing.
-    def start
-      opts = parse(ARGV)
-      command = Command.const_get(opts[:command].capitalize).new
-      begin
-        command.run(opts)
-      rescue SystemExit
-        # do nothing
-      end
-    end
-
-    private
-
-    # Parse the command line arguments and run the matching sub-command
-    # (e.g. init, start, stop, etc).
-    #
-    # args - The ARGV array provided by the command line.
-    #
-    # Returns nothing.
-    def parse(args)
-      options = {}
-      parser = OptionParser.new do |opts|
-        opts.banner = "Usage: vines [options] #{COMMANDS.join('|')}"
-
-        opts.separator ""
-        opts.separator "Daemon options:"
-
-        opts.on('-d', '--daemonize', 'Run daemonized in the background') do |daemonize|
-          options[:daemonize] = daemonize
-        end
-
-        options[:log] = 'log/vines.log'
-        opts.on('-l', '--log FILE', 'File to redirect output (default: log/vines.log)') do |log|
-          options[:log] = log
-        end
-
-        options[:pid] = 'pid/vines.pid'
-        opts.on('-P', '--pid FILE', 'File to store PID (default: pid/vines.pid)') do |pid|
-          options[:pid] = pid
-        end
-
-        opts.separator ""
-        opts.separator "Common options:"
-
-        opts.on('-h', '--help', 'Show this message') do |help|
-          options[:help] = help
-        end
-
-        opts.on('-v', '--version', 'Show version') do |version|
-          options[:version] = version
-        end
-      end
-
-      begin
-        parser.parse!(args)
-      rescue
-        puts parser
-        exit(1)
-      end
-
-      if options[:version]
-        puts Vines::VERSION
-        exit
-      end
-
-      if options[:help]
-        puts parser
-        exit
-      end
-
-      command = args.shift
-      unless COMMANDS.include?(command)
-        puts parser
-        exit(1)
-      end
-
-      options.tap do |opts|
-        opts[:args]    = args
-        opts[:command] = command
-        opts[:config]  = File.expand_path("conf/config.rb")
-        opts[:pid]     = File.expand_path(opts[:pid])
-        opts[:log]     = File.expand_path(opts[:log])
-        if defined? AppConfig
-          opts[:config] = "vines/config/diaspora"
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster.rb
deleted file mode 100644
index 29f559e..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster.rb
+++ /dev/null
@@ -1,246 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  # Server instances may be connected to one another in a cluster so they
-  # can host a single chat domain, or set of domains, across many servers,
-  # transparently to users. A redis database is used for the session routing
-  # table, mapping JIDs to their node's location. Redis pubsub channels are
-  # used to communicate amongst nodes.
-  #
-  # Using a shared in-memory cache, like redis, rather than synchronizing the
-  # cache to each node, allows us to add cluster nodes dynamically, without
-  # updating all other nodes' config files. It also greatly reduces the amount
-  # of memory required by the chat server processes.
-  class Cluster
-    include Vines::Log
-
-    attr_reader :id
-
-    %w[host port database password].each do |name|
-      define_method(name) do |*args|
-        if args.first
-          @connection.send("#{name}=", args.first)
-        else
-          @connection.send(name)
-        end
-      end
-    end
-
-    def initialize(config, &block)
-      @config, @id = config, Kit.uuid
-      @connection = Connection.new
-      @sessions = Sessions.new(self)
-      @publisher = Publisher.new(self)
-      @subscriber = Subscriber.new(self)
-      @pubsub = PubSub.new(self)
-      instance_eval(&block)
-    end
-
-    # Join this node to the cluster by broadcasting its state to the
-    # other nodes, subscribing to redis channels, and scheduling periodic
-    # heartbeat broadcasts. This method must be called after initialize
-    # or this node will not be a cluster member.
-    def start
-      @connection.connect
-      @publisher.broadcast(:online)
-      @subscriber.subscribe
-
-      EM.add_periodic_timer(1) { heartbeat }
-
-      at_exit do
-        @publisher.broadcast(:offline)
-        @sessions.delete_all(@id)
-      end
-    end
-
-    # Returns any streams hosted at remote nodes for these JIDs. The streams act
-    # like normal EM::Connections, but are actually proxies that route stanzas
-    # over redis pubsub channels to remote nodes.
-    def remote_sessions(*jids)
-      @sessions.find(*jids).map do |session|
-        StreamProxy.new(self, session)
-      end
-    end
-
-    # Persist the user's session to the shared redis cache so that other cluster
-    # nodes can locate the node hosting this user's connection and route messages
-    # to them.
-    def save_session(jid, attrs)
-      @sessions.save(jid, attrs)
-    end
-
-    # Remove this user from the cluster routing table so that no further stanzas
-    # may be routed to them. This must be called when the user's session is
-    # terminated, either by logout or stream disconnect.
-    def delete_session(jid)
-      @sessions.delete(jid)
-    end
-
-    # Remove all user sessions from the routing table associated with the
-    # given node ID. Cluster nodes call this themselves during normal shutdown.
-    # However, if a node dies without being properly shutdown, the other nodes
-    # will cleanup its sessions when they detect the node is offline.
-    def delete_sessions(node)
-      @sessions.delete_all(node)
-    end
-
-    # Notify the session store that this node is still alive. The node
-    # broadcasts its current time, so all cluster members' clocks don't
-    # necessarily need to be in sync.
-    def poke(node, time)
-      @sessions.poke(node, time)
-    end
-
-    # Send the stanza to the node hosting the user's session. The stanza is
-    # published to the channel to which the remote node is listening for
-    # messages.
-    def route(stanza, node)
-      @publisher.route(stanza, node)
-    end
-
-    # Notify the remote node that the user's roster has changed and it should
-    # reload the user from storage.
-    def update_user(jid, node)
-      @publisher.update_user(jid, node)
-    end
-
-    # Return the shared redis connection for most queries to use.
-    def connection
-      @connection.connect
-    end
-
-    # Create a new redis connection.
-    def connect
-      @connection.create
-    end
-
-    # Turn an asynchronous redis query into a blocking call by pausing the
-    # fiber in which this code is running. Return the result of the query
-    # from this method, rather than passing it to a callback block.
-    def query(name, *args)
-      fiber, yielding = Fiber.current, true
-      req = connection.send(name, *args)
-      req.errback  { fiber.resume rescue yielding = false }
-      req.callback {|response| fiber.resume(response) }
-      Fiber.yield if yielding
-    end
-
-    # Return the connected streams for this user, without any proxy streams
-    # to remote cluster nodes (locally connected streams only).
-    def connected_resources(jid)
-      @config.router.connected_resources(jid, jid, false)
-    end
-
-    # Return the Storage implementation for this domain or nil if the
-    # domain is not hosted here.
-    def storage(domain)
-      @config.storage(domain)
-    end
-
-    # Create a pubsub topic (a.k.a. node), in the given domain, to which
-    # messages may be published. The domain argument will be one of the
-    # configured pubsub subdomains in conf/config.rb (e.g. games.wonderland.lit,
-    # topics.wonderland.lit, etc).
-    def add_pubsub_node(domain, node)
-      @pubsub.add_node(domain, node)
-    end
-
-    # Remove a pubsub topic so messages may no longer be broadcast to it.
-    def delete_pubsub_node(domain, node)
-      @pubsub.delete_node(domain, node)
-    end
-
-    # Subscribe the JID to the pubsub topic so it will receive any messages
-    # published to it.
-    def subscribe_pubsub(domain, node, jid)
-      @pubsub.subscribe(domain, node, jid)
-    end
-
-    # Unsubscribe the JID from the pubsub topic, deregistering its interest
-    # in receiving any messages published to it.
-    def unsubscribe_pubsub(domain, node, jid)
-      @pubsub.unsubscribe(domain, node, jid)
-    end
-
-    # Unsubscribe the JID from all pubsub topics. This is useful when the
-    # JID's session ends by logout or disconnect.
-    def unsubscribe_all_pubsub(domain, jid)
-      @pubsub.unsubscribe_all(domain, jid)
-    end
-
-    # Return true if the pubsub topic exists and messages may be published to it.
-    def pubsub_node?(domain, node)
-      @pubsub.node?(domain, node)
-    end
-
-    # Return true if the JID is a registered subscriber to the pubsub topic and
-    # messages published to it should be routed to the JID.
-    def pubsub_subscribed?(domain, node, jid)
-      @pubsub.subscribed?(domain, node, jid)
-    end
-
-    # Return a list of JIDs subscribed to the pubsub topic.
-    def pubsub_subscribers(domain, node)
-      @pubsub.subscribers(domain, node)
-    end
-
-    private
-
-    # Call this method once per second to broadcast this node's heartbeat and
-    # expire stale user sessions. This method must not raise exceptions or the
-    # timer will stop.
-    def heartbeat
-      @publisher.broadcast(:heartbeat)
-      @sessions.expire
-    rescue => e
-      log.error("Cluster session cleanup failed: #{e}")
-    end
-
-    # StreamProxy behaves like an EM::Connection so that stanzas may be sent to
-    # remote nodes just as they are to locally connected streams. The rest of the
-    # system doesn't know or care that these "streams" send their traffic over
-    # redis pubsub channels.
-    class StreamProxy
-      attr_reader :user
-
-      def initialize(cluster, session)
-        @cluster, @user = cluster, UserProxy.new(cluster, session)
-        @node, @available, @interested, @presence =
-          session.values_at('node', 'available', 'interested', 'presence')
-
-        unless @presence.nil? || @presence.empty?
-          @presence = Nokogiri::XML(@presence).root rescue nil
-        end
-      end
-
-      def available?
-        @available
-      end
-
-      def interested?
-        @interested
-      end
-
-      def last_broadcast_presence
-        @presence
-      end
-
-      def write(stanza)
-        @cluster.route(stanza, @node)
-      end
-    end
-
-    # Proxy User#update_from calls to remote cluster nodes over redis
-    # pubsub channels.
-    class UserProxy < User
-      def initialize(cluster, session)
-        super(jid: session['jid'])
-        @cluster, @node = cluster, session['node']
-      end
-
-      def update_from(user)
-        @cluster.update_user(@jid.bare, @node)
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/connection.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/connection.rb
deleted file mode 100644
index 84d8dca..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/connection.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Cluster
-    # Create and cache a redis database connection.
-    class Connection
-      attr_accessor :host, :port, :database, :password
-
-      def initialize
-        @redis, @host, @port, @database, @password = nil, nil, nil, nil, nil
-      end
-
-      # Return a shared redis connection.
-      def connect
-        @redis ||= create
-      end
-
-      # Return a new redis connection.
-      def create
-        conn = EM::Hiredis::Client.new(@host, @port, @password, @database)
-        conn.connect
-        conn
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/publisher.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/publisher.rb
deleted file mode 100644
index 83731ad..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/publisher.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Cluster
-    # Broadcast messages to other cluster nodes via redis pubsub channels. All
-    # members subscribe to a channel for heartbeats, online, and offline
-    # messages from other nodes. This allows new nodes to be added to the
-    # cluster dynamically, without configuring all other nodes.
-    class Publisher
-      include Vines::Log
-
-      ALL, STANZA, USER = %w[cluster:nodes:all stanza user].map {|s| s.freeze }
-
-      def initialize(cluster)
-        @cluster = cluster
-      end
-
-      # Publish a :heartbeat, :online, or :offline message to the nodes:all
-      # broadcast channel.
-      def broadcast(type)
-        redis.publish(ALL, {
-          from: @cluster.id,
-          type: type,
-          time: Time.now.to_i
-        }.to_json)
-      end
-
-      # Send the stanza to the node hosting the user's session. The stanza is
-      # published to the channel to which the remote node is listening for
-      # messages.
-      def route(stanza, node)
-        log.debug { "Sent cluster stanza: %s -> %s\n%s\n" % [@cluster.id, node, stanza] }
-        redis.publish("cluster:nodes:#{node}", {
-          from: @cluster.id,
-          type: STANZA,
-          stanza: stanza.to_s
-        }.to_json)
-      end
-
-      # Notify the remote node that the user's roster has changed and it should
-      # reload the user from storage.
-      def update_user(jid, node)
-        redis.publish("cluster:nodes:#{node}", {
-          from: @cluster.id,
-          type: USER,
-          jid: jid.to_s
-        }.to_json)
-      end
-
-      def redis
-        @cluster.connection
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/pubsub.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/pubsub.rb
deleted file mode 100644
index 2e14679..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/pubsub.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Cluster
-    # Manages the pubsub topic list and subscribers stored in redis. When a
-    # message is published to a topic, the receiving cluster node broadcasts
-    # the message to all subscribers at all other cluster nodes.
-    class PubSub
-      def initialize(cluster)
-        @cluster = cluster
-      end
-
-      # Create a pubsub topic (a.k.a. node), in the given domain, to which
-      # messages may be published. The domain argument will be one of the
-      # configured pubsub subdomains in conf/config.rb (e.g. games.wonderland.lit,
-      # topics.wonderland.lit, etc).
-      def add_node(domain, node)
-        redis.sadd("pubsub:#{domain}:nodes", node)
-      end
-
-      # Remove a pubsub topic so messages may no longer be broadcast to it.
-      def delete_node(domain, node)
-        redis.smembers("pubsub:#{domain}:subscribers_#{node}") do |subscribers|
-          redis.multi
-          subscribers.each do |jid|
-            redis.srem("pubsub:#{domain}:subscriptions_#{jid}", node)
-          end
-          redis.del("pubsub:#{domain}:subscribers_#{node}")
-          redis.srem("pubsub:#{domain}:nodes", node)
-          redis.exec
-        end
-      end
-
-      # Subscribe the JID to the pubsub topic so it will receive any messages
-      # published to it.
-      def subscribe(domain, node, jid)
-        jid = JID.new(jid)
-        redis.multi
-        redis.sadd("pubsub:#{domain}:subscribers_#{node}", jid.to_s)
-        redis.sadd("pubsub:#{domain}:subscriptions_#{jid}", node)
-        redis.exec
-      end
-
-      # Unsubscribe the JID from the pubsub topic, deregistering its interest
-      # in receiving any messages published to it.
-      def unsubscribe(domain, node, jid)
-        jid = JID.new(jid)
-        redis.multi
-        redis.srem("pubsub:#{domain}:subscribers_#{node}", jid.to_s)
-        redis.srem("pubsub:#{domain}:subscriptions_#{jid}", node)
-        redis.exec
-        redis.scard("pubsub:#{domain}:subscribers_#{node}") do |count|
-          delete_node(domain, node) if count == 0
-        end
-      end
-
-      # Unsubscribe the JID from all pubsub topics. This is useful when the
-      # JID's session ends by logout or disconnect.
-      def unsubscribe_all(domain, jid)
-        jid = JID.new(jid)
-        redis.smembers("pubsub:#{domain}:subscriptions_#{jid}") do |nodes|
-          nodes.each do |node|
-            unsubscribe(domain, node, jid)
-          end
-        end
-      end
-
-      # Return true if the pubsub topic exists and messages may be published to it.
-      def node?(domain, node)
-        @cluster.query(:sismember, "pubsub:#{domain}:nodes", node) == 1
-      end
-
-      # Return true if the JID is a registered subscriber to the pubsub topic and
-      # messages published to it should be routed to the JID.
-      def subscribed?(domain, node, jid)
-        jid = JID.new(jid)
-        @cluster.query(:sismember, "pubsub:#{domain}:subscribers_#{node}", jid.to_s) == 1
-      end
-
-      # Return a list of JIDs subscribed to the pubsub topic.
-      def subscribers(domain, node)
-        @cluster.query(:smembers, "pubsub:#{domain}:subscribers_#{node}")
-      end
-
-      private
-
-      def redis
-        @cluster.connection
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/sessions.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/sessions.rb
deleted file mode 100644
index a343667..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/sessions.rb
+++ /dev/null
@@ -1,125 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Cluster
-    # Manages the cluster node list and user session routing table stored in
-    # redis. All cluster nodes share this in-memory database to quickly discover
-    # the node hosting a particular user session. Once a session is located,
-    # stanzas can be routed to that node via the +Publisher+.
-    class Sessions
-      include Vines::Log
-
-      NODES = 'cluster:nodes'.freeze
-
-      def initialize(cluster)
-        @cluster, @nodes = cluster, {}
-      end
-
-      # Return the sessions for these JIDs. If a bare JID is used, all sessions
-      # for that user will be returned. If a full JID is used, the session for
-      # that single connected stream is returned.
-      def find(*jids)
-        jids.flatten.map do |jid|
-          jid = JID.new(jid)
-          jid.bare? ? user_sessions(jid) : user_session(jid)
-        end.compact.flatten
-      end
-
-      # Persist the user's session to the shared redis cache so that other cluster
-      # nodes can locate the node hosting this user's connection and route messages
-      # to them.
-      def save(jid, attrs)
-        jid = JID.new(jid)
-        session = {node: @cluster.id}.merge(attrs)
-        redis.multi
-        redis.hset("sessions:#{jid.bare}", jid.resource, session.to_json)
-        redis.sadd("cluster:nodes:#{@cluster.id}", jid.to_s)
-        redis.exec
-      end
-
-      # Remove this user from the cluster routing table so that no further stanzas
-      # may be routed to them. This must be called when the user's session is
-      # terminated, either by logout or stream disconnect.
-      def delete(jid)
-        jid = JID.new(jid)
-        redis.hget("sessions:#{jid.bare}", jid.resource) do |response|
-          if doc = JSON.parse(response) rescue nil
-            redis.multi
-            redis.hdel("sessions:#{jid.bare}", jid.resource)
-            redis.srem("cluster:nodes:#{doc['node']}", jid.to_s)
-            redis.exec
-          end
-        end
-      end
-
-      # Remove all user sessions from the routing table associated with the
-      # given node ID. Cluster nodes call this themselves during normal shutdown.
-      # However, if a node dies without being properly shutdown, the other nodes
-      # will cleanup its sessions when they detect the node is offline.
-      def delete_all(node)
-        @nodes.delete(node)
-        redis.smembers("cluster:nodes:#{node}") do |jids|
-          redis.multi
-          redis.del("cluster:nodes:#{node}")
-          redis.hdel(NODES, node)
-          jids.each do |jid|
-            jid = JID.new(jid)
-            redis.hdel("sessions:#{jid.bare}", jid.resource)
-          end
-          redis.exec
-        end
-      end
-
-      # Cluster nodes broadcast a heartbeat to other members every second. If we
-      # haven't heard from a node in five seconds, assume it's offline and cleanup
-      # its session cache for it. Nodes may die abrubtly, without a chance to clear
-      # their sessions, so other members cleanup for them.
-      def expire
-        redis.hset(NODES, @cluster.id, Time.now.to_i)
-        redis.hgetall(NODES) do |response|
-          now = Time.now
-          expired = Hash[*response].select do |node, active|
-            offset = @nodes[node] || 0
-            (now - offset) - Time.at(active.to_i) > 5
-          end.keys
-          expired.each {|node| delete_all(node) }
-        end
-      end
-
-      # Notify the session store that this node is still alive. The node
-      # broadcasts its current time, so all cluster members' clocks don't
-      # necessarily need to be in sync.
-      def poke(node, time)
-        offset = Time.now.to_i - time
-        @nodes[node] = offset
-      end
-
-      private
-
-      # Return all remote sessions for this user's bare JID.
-      def user_sessions(jid)
-        response = @cluster.query(:hgetall, "sessions:#{jid.bare}") || []
-        Hash[*response].map do |resource, json|
-          if session = JSON.parse(json) rescue nil
-            session['jid'] = JID.new(jid.node, jid.domain, resource).to_s
-          end
-          session
-        end.compact.reject {|session| session['node'] == @cluster.id }
-      end
-
-      # Return the remote session for this full JID or nil if not found.
-      def user_session(jid)
-        response = @cluster.query(:hget, "sessions:#{jid.bare}", jid.resource)
-        return unless response
-        session = JSON.parse(response) rescue nil
-        return if session.nil? || session['node'] == @cluster.id
-        session['jid'] = jid.to_s
-        session
-      end
-
-      def redis
-        @cluster.connection
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/subscriber.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/subscriber.rb
deleted file mode 100644
index 0d7845a..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/cluster/subscriber.rb
+++ /dev/null
@@ -1,133 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Cluster
-    # Subscribes to the redis `nodes:all` broadcast channel to listen for
-    # heartbeats from other cluster members. Also subscribes to a channel
-    # exclusively for this particular node, listening for stanzas routed to us
-    # from other nodes.
-    class Subscriber
-      include Vines::Log
-
-      ALL, FROM, HEARTBEAT, OFFLINE, ONLINE, STANZA, TIME, TO, TYPE, USER =
-        %w[cluster:nodes:all from heartbeat offline online stanza time to type user].map {|s| s.freeze }
-
-      def initialize(cluster)
-        @cluster = cluster
-        @channel = "cluster:nodes:#{@cluster.id}"
-        @messages = EM::Queue.new
-        process_messages
-      end
-
-      # Create a new redis connection and subscribe to the nodes:all broadcast
-      # channel as well as the channel for this cluster node. Redis connections
-      # in subscribe mode cannot be used for other key/value operations.
-      #
-      # Returns nothing.
-      def subscribe
-        conn = @cluster.connect
-        conn.subscribe(ALL)
-        conn.subscribe(@channel)
-        conn.on(:message) do |channel, message|
-          @messages.push([channel, message])
-        end
-      end
-
-      private
-
-      # Recursively process incoming messages from the queue, guaranteeing they
-      # are processed in the order they are received.
-      #
-      # Returns nothing.
-      def process_messages
-        @messages.pop do |channel, message|
-          Fiber.new do
-            on_message(channel, message)
-            process_messages
-          end.resume
-        end
-      end
-
-      # Process messages as they arrive on the pubsub channels to which we're
-      # subscribed.
-      #
-      # channel - The String channel name on which the message was received.
-      # message - The JSON formatted message String.
-      #
-      # Returns nothing.
-      def on_message(channel, message)
-        doc = JSON.parse(message)
-        case channel
-        when ALL      then to_all(doc)
-        when @channel then to_node(doc)
-        end
-      rescue => e
-        log.error("Cluster subscription message failed: #{e}")
-      end
-
-      # Process a message sent to the `nodes:all` broadcast channel. In the case
-      # of node heartbeats, we update the last time we heard from this node so
-      # we can cleanup its session if it goes offline.
-      #
-      # message - The parsed Hash of received message data.
-      #
-      # Returns nothing.
-      def to_all(message)
-        case message[TYPE]
-        when ONLINE, HEARTBEAT
-          @cluster.poke(message[FROM], message[TIME])
-        when OFFLINE
-          @cluster.delete_sessions(message[FROM])
-        end
-      end
-
-      # Process a message published to this node's channel. Messages sent to
-      # this channel are stanzas that need to be routed to connections attached
-      # to this node.
-      #
-      # message - The parsed Hash of received message data.
-      #
-      # Returns nothing.
-      def to_node(message)
-        case message[TYPE]
-        when STANZA then route_stanza(message)
-        when USER   then update_user(message)
-        end
-      end
-
-      # Send the stanza, from a remote cluster node, to locally connected
-      # streams for the destination user.
-      #
-      # message - The parsed Hash of received message data.
-      #
-      # Returns nothing.
-      def route_stanza(message)
-        node = Nokogiri::XML(message[STANZA]).root rescue nil
-        return unless node
-        log.debug { "Received cluster stanza: %s -> %s\n%s\n" % [message[FROM], @cluster.id, node] }
-        if node[TO]
-          @cluster.connected_resources(node[TO]).each do |recipient|
-            recipient.write(node)
-          end
-        else
-          log.warn("Cluster stanza missing address:\n#{node}")
-        end
-      end
-
-      # Update the roster information, that's cached in locally connected
-      # streams, for this user.
-      #
-      # message - The parsed Hash of received message data.
-      #
-      # Returns nothing.
-      def update_user(message)
-        jid = JID.new(message['jid']).bare
-        if user = @cluster.storage(jid.domain).find_user(jid)
-          @cluster.connected_resources(jid).each do |stream|
-            stream.user.update_from(user)
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/command/cert.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/command/cert.rb
deleted file mode 100644
index 7bcbc16..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/command/cert.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  module Command
-    class Cert
-      def run(opts)
-        raise 'vines cert <domain>' unless opts[:args].size == 1
-        require opts[:config]
-        create_cert(opts[:args].first, Config.instance.certs)
-      end
-
-      def create_cert(domain, dir)
-        domain = domain.downcase
-        key = OpenSSL::PKey::RSA.generate(2048)
-        ca = OpenSSL::X509::Name.parse("/C=US/ST=Colorado/L=Denver/O=Vines XMPP Server/CN=#{domain}")
-        cert = OpenSSL::X509::Certificate.new
-        cert.version = 2
-        cert.subject = ca
-        cert.issuer = ca
-        cert.serial = Time.now.to_i
-        cert.public_key = key.public_key
-        cert.not_before = Time.now - (24 * 60 * 60)
-        cert.not_after = Time.now + (365 * 24 * 60 * 60)
-
-        factory = OpenSSL::X509::ExtensionFactory.new
-        factory.subject_certificate = cert
-        factory.issuer_certificate = cert
-        cert.extensions = [
-          %w[basicConstraints CA:TRUE],
-          %w[subjectKeyIdentifier hash],
-          %w[subjectAltName] << [domain, hostname].map {|n| "DNS:#{n}" }.join(',')
-        ].map {|k, v| factory.create_ext(k, v) }
-
-        cert.sign(key, OpenSSL::Digest::SHA1.new)
-
-        {'key' => key, 'crt' => cert}.each_pair do |ext, o|
-          name = File.join(dir, "#{domain}.#{ext}")
-          File.open(name, 'w:utf-8') {|f| f.write(o.to_pem) }
-          File.chmod(0600, name) if ext == 'key'
-        end
-      end
-
-      private
-
-      def hostname
-        Socket.gethostbyname(Socket.gethostname).first.downcase
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/command/restart.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/command/restart.rb
deleted file mode 100644
index f7f2530..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/command/restart.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  module Command
-    class Restart
-      def run(opts)
-        Stop.new.run(opts)
-        Start.new.run(opts)
-      end
-    end
-  end
-end
\ No newline at end of file
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/command/start.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/command/start.rb
deleted file mode 100644
index 6ab3615..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/command/start.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  module Command
-    class Start
-      def run(opts)
-        raise 'vines [--pid FILE] start' unless opts[:args].size == 0
-        require opts[:config]
-        server = XmppServer.new(Config.instance)
-        daemonize(opts) if opts[:daemonize]
-        server.start
-      end
-
-      private
-
-      def daemonize(opts)
-        daemon = Daemon.new(:pid => opts[:pid], :stdout => opts[:log],
-          :stderr => opts[:log])
-        if daemon.running?
-          raise "Vines is running as process #{daemon.pid}"
-        else
-          puts "Vines has started"
-          daemon.start
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/command/stop.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/command/stop.rb
deleted file mode 100644
index 1474b4f..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/command/stop.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  module Command
-    class Stop
-      def run(opts)
-        raise 'vines [--pid FILE] stop' unless opts[:args].size == 0
-        daemon = Daemon.new(:pid => opts[:pid])
-        if daemon.running?
-          daemon.stop
-          puts 'Vines has been shutdown'
-        else
-          puts 'Vines is not running'
-        end
-      end
-    end
-  end
-end
\ No newline at end of file
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config.rb
deleted file mode 100644
index a43c6b9..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config.rb
+++ /dev/null
@@ -1,236 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-
-  # A Config object is passed to the stream handlers to give them access
-  # to server configuration information like virtual host names, storage
-  # systems, etc. This class provides the DSL methods used in the
-  # conf/config.rb file.
-  class Config
-    LOG_LEVELS = %w[debug info warn error fatal].freeze
-
-    attr_reader :router
-
-    @@instance = nil
-    def self.configure(&block)
-      @@instance = self.new(&block)
-    end
-
-    def self.instance
-      @@instance
-    end
-
-    def initialize(&block)
-      @max_offline_msgs = 150
-      @certs = File.expand_path('conf/certs')
-      @vhosts, @ports, @cluster = {}, {}, nil
-      @null = Storage::Null.new
-      @router = Router.new(self)
-      instance_eval(&block)
-      raise "must define at least one virtual host" if @vhosts.empty?
-    end
-
-    def certs(dir=nil)
-      dir ? @certs = File.expand_path(dir) : @certs
-    end
-
-    def max_offline_msgs(count=nil)
-      count ? @max_offline_msgs = count : @max_offline_msgs
-    end
-
-    def host(*names, &block)
-      names = names.flatten.map {|name| name.downcase }
-      dupes = names.uniq.size != names.size || (@vhosts.keys & names).any?
-      raise "one host definition per domain allowed" if dupes
-      names.each do |name|
-        @vhosts[name] = Host.new(self, name, &block)
-      end
-    end
-
-    def diaspora_domain
-      AppConfig.environment.url
-        .gsub(/^http(s){0,1}:\/\/|\/$/, '')
-        .to_s rescue "localhost"
-    end
-
-    %w[client server http component].each do |name|
-      define_method(name) do |*args, &block|
-        port = Vines::Config.const_get("#{name.capitalize}Port")
-        raise "one #{name} port definition allowed" if @ports[name.to_sym]
-        @ports[name.to_sym] = port.new(self, *args) do
-          instance_eval(&block) if block
-        end
-      end
-    end
-
-    def cluster(&block)
-      return @cluster unless block
-      raise "one cluster definition allowed" if @cluster
-      @cluster = Cluster.new(self, &block)
-    end
-
-    def log(file=nil, &block)
-      unless file.nil?
-        unless File.exists?(file)
-          File.new(file, 'w') rescue raise "log directory doesn't exists"
-        end
-
-        if File.exists?(file)
-          Vines::Log.set_log_file(file)
-        end
-      end
-      instance_eval(&block) if block  
-    end
-
-    def level(level)
-      const = Logger.const_get(level.to_s.upcase) rescue nil
-      unless LOG_LEVELS.include?(level.to_s) && const
-        raise "log level must be one of: #{LOG_LEVELS.join(', ')}"
-      end
-      Class.new.extend(Vines::Log).log.level = const
-    end
-
-    def ports
-      @ports.values
-    end
-
-    # Return true if the domain is virtual hosted by this server.
-    def vhost?(domain)
-      !!vhost(domain)
-    end
-
-    # Return the Host config object for this domain if it's hosted by this
-    # server.
-    def vhost(domain)
-      @vhosts[domain.to_s]
-    end
-
-    # Returns the storage system for the domain or a Storage::Null instance if
-    # the domain is not hosted at this server.
-    def storage(domain)
-      host = vhost(domain)
-      host ? host.storage : @null
-    end
-
-    # Returns the PubSub system for the domain or nil if pubsub is not enabled
-    # for this domain.
-    def pubsub(domain)
-      host = @vhosts.values.find {|host| host.pubsub?(domain) }
-      host.pubsubs[domain.to_s] if host
-    end
-
-    # Return true if the domain is a pubsub service hosted at a virtual host
-    # at this server.
-    def pubsub?(domain)
-      @vhosts.values.any? {|host| host.pubsub?(domain) }
-    end
-
-    # Return true if all JIDs belong to components hosted by this server.
-    def component?(*jids)
-      !jids.flatten.index do |jid|
-        !component_password(JID.new(jid).domain)
-      end
-    end
-
-    # Return the password for the component or nil if it's not hosted here.
-    def component_password(domain)
-      host = @vhosts.values.find {|host| host.component?(domain) }
-      host.password(domain) if host
-    end
-
-    # Return true if all of the JIDs are hosted by this server.
-    def local_jid?(*jids)
-      !jids.flatten.index do |jid|
-        !vhost?(JID.new(jid).domain)
-      end
-    end
-
-    # Return true if private XML fragment storage is enabled for this domain.
-    def private_storage?(domain)
-      host = vhost(domain)
-      host.private_storage? if host
-    end
-
-    # Returns true if server-to-server connections are allowed with the
-    # given domain.
-    def s2s?(domain)
-      # Disabled whitelisting to allow anonymous hosts,
-      # otherwise everyone has to add manually all hosts.
-      # Using blacklist in case we have to block a malicious host.
-      @ports[:server] && !@ports[:server].blacklist.include?(domain.to_s)
-    end
-
-    # Return true if the server is a member of a cluster, serving the same
-    # domains from different machines.
-    def cluster?
-      !!@cluster
-    end
-
-    # Retrieve the Port subclass with this name:
-    # [:client, :server, :http, :component]
-    def [](name)
-      @ports[name] or raise ArgumentError.new("no port named #{name}")
-    end
-
-    # Return true if the two JIDs are allowed to send messages to each other.
-    # Both domains must have enabled cross_domain_messages in their config files.
-    def allowed?(to, from)
-      to, from = JID.new(to), JID.new(from)
-      return false                      if to.empty? || from.empty?
-      return true                       if to.domain == from.domain # same domain always allowed
-      return cross_domain?(to, from)    if local_jid?(to, from)     # both virtual hosted here
-      return check_subdomains(to, from) if subdomain?(to, from)     # component/pubsub to component/pubsub
-      return check_subdomain(to, from)  if subdomain?(to)           # to component/pubsub
-      return check_subdomain(from, to)  if subdomain?(from)         # from component/pubsub
-      return cross_domain?(to)          if local_jid?(to)           # from is remote
-      return cross_domain?(from)        if local_jid?(from)         # to is remote
-      return false
-    end
-
-    private
-
-    # Return true if all of the JIDs are some kind of subdomain resource hosted
-    # here (either a component or a pubsub domain).
-    def subdomain?(*jids)
-      !jids.flatten.index do |jid|
-        !component?(jid) && !pubsub?(jid)
-      end
-    end
-
-    # Return true if the third-level subdomain JIDs (components and pubsubs)
-    # are allowed to communicate with each other. For example, a
-    # tea.wonderland.lit component should be allowed to send messages to
-    # pubsub.wonderland.lit because they share the second-level wonderland.lit
-    # domain.
-    def check_subdomains(to, from)
-      sub1, sub2 = strip_domain(to), strip_domain(from)
-      (sub1 == sub2) || cross_domain?(sub1, sub2)
-    end
-
-    # Return true if the third-level subdomain JID (component or pubsub) is
-    # allowed to communicate with the other JID. For example,
-    # pubsub.wonderland.lit should be allowed to send messages to
-    # alice at wonderland.lit because they share the second-level wonderland.lit
-    # domain.
-    def check_subdomain(subdomain, jid)
-      comp = strip_domain(subdomain)
-      return true if comp.domain == jid.domain
-      local_jid?(jid) ? cross_domain?(comp, jid) : cross_domain?(comp)
-    end
-
-    # Return the third-level JID's domain with the first subdomain stripped off
-    # to create a second-level domain. For example, alice at tea.wonderland.lit
-    # returns wonderland.lit.
-    def strip_domain(jid)
-      domain = jid.domain.split('.').drop(1).join('.')
-      JID.new(domain)
-    end
-
-    # Return true if all JIDs are allowed to exchange cross domain messages.
-    def cross_domain?(*jids)
-      !jids.flatten.index do |jid|
-        !vhost(jid.domain).cross_domain_messages?
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config/diaspora.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config/diaspora.rb
deleted file mode 100644
index 24d7907..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config/diaspora.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-# ############################################################## #
-# Do NOT touch this file you'll find the options in diaspora.yml #
-# ############################################################## #
-
-Vines::Config.configure do
-  log AppConfig.chat.server.log.file.to_s do
-    level AppConfig.chat.server.log.level.to_sym
-  end
-
-  certs AppConfig.chat.server.certs.to_s
-
-  max_offline_msgs AppConfig.chat.server.max_offline_msgs.to_i
-
-  host diaspora_domain do
-    cross_domain_messages AppConfig.chat.server.cross_domain_messages
-    accept_self_signed AppConfig.chat.server.accept_self_signed
-    storage 'sql'
-  end
-
-  client AppConfig.chat.server.c2s.address.to_s, AppConfig.chat.server.c2s.port.to_i do
-    max_stanza_size AppConfig.chat.server.c2s.max_stanza_size.to_i
-    max_resources_per_account AppConfig.chat.server.c2s.max_resources_per_account.to_i
-  end
-
-  server AppConfig.chat.server.s2s.address.to_s, AppConfig.chat.server.s2s.port.to_i do
-    max_stanza_size AppConfig.chat.server.s2s.max_stanza_size.to_i
-    blacklist AppConfig.chat.server.s2s.blacklist.get
-  end
-
-  http AppConfig.chat.server.bosh.address.to_s, AppConfig.chat.server.bosh.port.to_i do
-    bind AppConfig.chat.server.bosh.bind.to_s
-    max_stanza_size AppConfig.chat.server.bosh.max_stanza_size.to_i
-    max_resources_per_account AppConfig.chat.server.bosh.max_resources_per_account.to_i
-    root 'public'
-    vroute ''
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config/host.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config/host.rb
deleted file mode 100644
index 92ad26e..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config/host.rb
+++ /dev/null
@@ -1,137 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Config
-
-    # Provides the DSL methods for the virtual host definitions in the
-    # conf/config.rb file. Host instances can be accessed at runtime through
-    # the +Config#vhosts+ method.
-    class Host
-      attr_reader :pubsubs
-
-      def initialize(config, name, &block)
-        @config, @name = config, name.downcase
-        @storage = nil
-        @cross_domain_messages = false
-        @private_storage = false
-        @accept_self_signed = false
-        @force_s2s_encryption = false
-        @components, @pubsubs = {}, {}
-        validate_domain(@name)
-        instance_eval(&block)
-        raise "storage required for #{@name}" unless @storage
-      end
-
-      def storage(name=nil, &block)
-        if name
-          raise "one storage mechanism per host allowed" if @storage
-          @storage = Storage.from_name(name, &block)
-        else
-          @storage
-        end
-      end
-
-      def force_s2s_encryption(enabled)
-        @force_s2s_encryption = !!enabled
-      end
-
-      def force_s2s_encryption?
-        @force_s2s_encryption
-      end
-
-      def accept_self_signed(enabled)
-        @accept_self_signed = !!enabled
-      end
-
-      def accept_self_signed?
-        @accept_self_signed
-      end
-
-      def cross_domain_messages(enabled)
-        @cross_domain_messages = !!enabled
-      end
-
-      def cross_domain_messages?
-        @cross_domain_messages
-      end
-
-      def components(options=nil)
-        return @components unless options
-
-        names = options.keys.map {|domain| "#{domain}.#{@name}".downcase }
-        raise "duplicate component domains not allowed" if dupes?(names, @components.keys)
-        raise "pubsub domains overlap component domains" if dupes?(names, @pubsubs.keys)
-
-        options.each do |domain, password|
-          raise 'component domain required' if (domain || '').to_s.strip.empty?
-          raise 'component password required' if (password || '').strip.empty?
-          name = "#{domain}.#{@name}".downcase
-          raise "components must be one level below their host: #{name}" if domain.to_s.include?('.')
-          validate_domain(name)
-          @components[name] = password
-        end
-      end
-
-      def component?(domain)
-        !!@components[domain.to_s]
-      end
-
-      def password(domain)
-        @components[domain.to_s]
-      end
-
-      def pubsub(*domains)
-        domains.flatten!
-        raise 'define at least one pubsub domain' if domains.empty?
-        names = domains.map {|domain| "#{domain}.#{@name}".downcase }
-        raise "duplicate pubsub domains not allowed" if dupes?(names, @pubsubs.keys)
-        raise "pubsub domains overlap component domains" if dupes?(names, @components.keys)
-        domains.each do |domain|
-          raise 'pubsub domain required' if (domain || '').to_s.strip.empty?
-          name = "#{domain}.#{@name}".downcase
-          raise "pubsub domains must be one level below their host: #{name}" if domain.to_s.include?('.')
-          validate_domain(name)
-          @pubsubs[name] = PubSub.new(@config, name)
-        end
-      end
-
-      def pubsub?(domain)
-        @pubsubs.key?(domain.to_s)
-      end
-
-      # Unsubscribe this JID from all pubsub topics hosted at this virtual host.
-      # This should be called when the user's session ends via logout or
-      # disconnect.
-      def unsubscribe_pubsub(jid)
-        @pubsubs.values.each do |pubsub|
-          pubsub.unsubscribe_all(jid)
-        end
-      end
-
-      def disco_items
-        [@components.keys, @pubsubs.keys].flatten.sort
-      end
-
-      def private_storage(enabled)
-        @private_storage = !!enabled
-      end
-
-      def private_storage?
-        @private_storage
-      end
-
-      private
-
-      # Return true if the arrays contain any duplicate items.
-      def dupes?(a, b)
-        a.uniq.size != a.size || b.uniq.size != b.size || (a & b).any?
-      end
-
-      # Prevent domains in config files that won't form valid JIDs.
-      def validate_domain(name)
-        jid = JID.new(name)
-        raise "incorrect domain: #{name}" if jid.node || jid.resource
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config/port.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config/port.rb
deleted file mode 100644
index 40f7fad..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config/port.rb
+++ /dev/null
@@ -1,132 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Config
-    class Port
-      include Vines::Log
-
-      attr_reader :config, :stream
-
-      %w[host port].each do |name|
-        define_method(name) do
-          @settings[name.to_sym]
-        end
-      end
-
-      def initialize(config, host, port, &block)
-        @config, @settings = config, {}
-        instance_eval(&block) if block
-        defaults = {:host => host, :port => port,
-          :max_resources_per_account => 5, :max_stanza_size => 128 * 1024}
-        @settings = defaults.merge(@settings)
-      end
-
-      def max_stanza_size(max=nil)
-        if max
-          # rfc 6120 section 13.12
-          @settings[:max_stanza_size] = [10000, max].max
-        else
-          @settings[:max_stanza_size]
-        end
-      end
-
-      def start
-        type = stream.name.split('::').last.downcase
-        log.info("Accepting #{type} connections on #{host}:#{port}")
-        EventMachine::start_server(host, port, stream, config)
-      end
-    end
-
-    class ClientPort < Port
-      def initialize(config, host='0.0.0.0', port=5222, &block)
-        @stream = Vines::Stream::Client
-        super(config, host, port, &block)
-      end
-
-      def max_resources_per_account(max=nil)
-        if max
-          @settings[:max_resources_per_account] = max
-        else
-          @settings[:max_resources_per_account]
-        end
-      end
-
-      def start
-        super
-        config.cluster.start if config.cluster?
-      end
-    end
-
-    class ServerPort < Port
-      def initialize(config, host='0.0.0.0', port=5269, &block)
-        @blacklist, @stream = [], Vines::Stream::Server
-        super(config, host, port, &block)
-      end
-
-      def blacklist(*blacklist)
-        if blacklist.any?
-          @blacklist << blacklist
-          @blacklist.flatten!
-        else
-          @blacklist
-        end
-      end
-    end
-
-    class HttpPort < Port
-      def initialize(config, host='0.0.0.0', port=5280, &block)
-        @stream = Vines::Stream::Http
-        super(config, host, port, &block)
-        defaults = {:root => File.expand_path('web'), :bind => '/xmpp'}
-        @settings = defaults.merge(@settings)
-      end
-
-      def max_resources_per_account(max=nil)
-        if max
-          @settings[:max_resources_per_account] = max
-        else
-          @settings[:max_resources_per_account]
-        end
-      end
-
-      def root(dir=nil)
-        if dir
-          @settings[:root] = File.expand_path(dir)
-        else
-          @settings[:root]
-        end
-      end
-
-      def bind(url=nil)
-        if url
-          @settings[:bind] = url
-        else
-          @settings[:bind]
-        end
-      end
-
-      def vroute(id=nil)
-        if id
-          id = id.to_s.strip
-          @settings[:vroute] = id.empty? ? nil : id
-        else
-          @settings[:vroute]
-        end
-      end
-
-      def start
-        super
-        if config.cluster? && vroute.nil?
-          log.warn("vroute sticky session cookie not set")
-        end
-      end
-    end
-
-    class ComponentPort < Port
-      def initialize(config, host='0.0.0.0', port=5347, &block)
-        @stream = Vines::Stream::Component
-        super(config, host, port, &block)
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config/pubsub.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config/pubsub.rb
deleted file mode 100644
index 2423629..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/config/pubsub.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Config
-    # Provides the configuration DSL to conf/config.rb for pubsub subdomains and
-    # exposes the storage and notification systems that the pubsub stanzas need
-    # to process. This class hides the complexity of determining pubsub behavior
-    # in a standalone vs. clustered chat server environment from the stanzas.
-    class PubSub
-      def initialize(config, name)
-        @config, @name = config, name
-        @nodes = {}
-      end
-
-      def add_node(id)
-        if @config.cluster?
-          @config.cluster.add_pubsub_node(@name, id)
-        else
-          @nodes[id] ||= Set.new
-        end
-      end
-
-      def delete_node(id)
-        if @config.cluster?
-          @config.cluster.delete_pubsub_node(@name, id)
-        else
-          @nodes.delete(id)
-        end
-      end
-
-      def subscribe(node, jid)
-        return unless node?(node) && @config.allowed?(jid, @name)
-        if @config.cluster?
-          @config.cluster.subscribe_pubsub(@name, node, jid)
-        else
-          @nodes[node] << JID.new(jid)
-        end
-      end
-
-      def unsubscribe(node, jid)
-        return unless node?(node)
-        if @config.cluster?
-          @config.cluster.unsubscribe_pubsub(@name, node, jid)
-        else
-          @nodes[node].delete(JID.new(jid))
-          delete_node(node) if subscribers(node).empty?
-        end
-      end
-
-      def unsubscribe_all(jid)
-        if @config.cluster?
-          @config.cluster.unsubscribe_all_pubsub(@name, jid)
-        else
-          @nodes.keys.each do |node|
-            unsubscribe(node, jid)
-          end
-        end
-      end
-
-      def node?(node)
-        if @config.cluster?
-          @config.cluster.pubsub_node?(@name, node)
-        else
-          @nodes.key?(node)
-        end
-      end
-
-      def subscribed?(node, jid)
-        return false unless node?(node)
-        if @config.cluster?
-          @config.cluster.pubsub_subscribed?(@name, node, jid)
-        else
-          @nodes[node].include?(JID.new(jid))
-        end
-      end
-
-      def publish(node, stanza)
-        stanza['id'] = Kit.uuid
-        stanza['from'] = @name
-
-        local, remote = subscribers(node).partition {|jid| @config.local_jid?(jid) }
-
-        local.flat_map do |jid|
-          @config.router.connected_resources(jid, @name)
-        end.each do |recipient|
-          stanza['to'] = recipient.user.jid.to_s
-          recipient.write(stanza)
-        end
-
-        remote.each do |jid|
-          el = stanza.clone
-          el['to'] = jid.to_s
-          @config.router.route(el) rescue nil # ignore RemoteServerNotFound
-        end
-      end
-
-      private
-
-      def subscribers(node)
-        if @config.cluster?
-          @config.cluster.pubsub_subscribers(@name, node)
-        else
-          @nodes[node] || []
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/contact.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/contact.rb
deleted file mode 100644
index 4701da9..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/contact.rb
+++ /dev/null
@@ -1,115 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Contact
-    include Comparable
-
-    attr_accessor :name, :subscription, :ask, :groups, :from_diaspora
-    attr_reader :jid
-
-    def initialize(args={})
-      @jid = JID.new(args[:jid]).bare
-      raise ArgumentError, 'invalid jid' if @jid.empty?
-      @name = args[:name]
-      @subscription = args[:subscription] || 'none'
-      @from_diaspora = args[:from_diaspora] || false
-      @ask = args[:ask]
-      @groups = args[:groups] || []
-    end
-
-    def <=>(contact)
-      contact.is_a?(Contact) ? self.jid.to_s <=> contact.jid.to_s : nil
-    end
-
-    alias :eql? :==
-
-    def hash
-      jid.to_s.hash
-    end
-
-    def update_from(contact)
-      @name = contact.name
-      @subscription = contact.subscription
-      @from_diaspora = contact.from_diaspora
-      @ask = contact.ask
-      @groups = contact.groups.clone
-    end
-
-    # Returns true if this contact is in a state that allows the user
-    # to subscribe to their presence updates.
-    def can_subscribe?
-      @ask == 'subscribe' && %w[none from].include?(@subscription)
-    end
-
-    def subscribe_to
-      @subscription = (@subscription == 'none') ? 'to' : 'both'
-      @ask = nil
-    end
-
-    def unsubscribe_to
-      @subscription = (@subscription == 'both') ? 'from' : 'none'
-    end
-
-    def subscribe_from
-      @subscription = (@subscription == 'none') ? 'from' : 'both'
-      @ask = nil
-    end
-
-    def unsubscribe_from
-      @subscription = (@subscription == 'both') ? 'to' : 'none'
-    end
-
-    # Returns true if the user is subscribed to this contact's
-    # presence updates.
-    def subscribed_to?
-      %w[to both].include?(@subscription)
-    end
-
-    # Returns true if the user has a presence subscription from
-    # this contact. The contact is subscribed to this user's presence.
-    def subscribed_from?
-      %w[from both].include?(@subscription)
-    end
-
-    # Returns a hash of this contact's attributes suitable for persisting in
-    # a document store.
-    def to_h
-      {
-        'name' => @name,
-        'subscription' => @subscription,
-        'from_diaspora' => @from_diaspora,
-        'ask' => @ask,
-        'groups' => @groups.sort!
-      }
-    end
-
-    # Write an iq stanza to the recipient stream representing this contact's
-    # current roster item state.
-    def send_roster_push(recipient)
-      doc = Nokogiri::XML::Document.new
-      node = doc.create_element('iq',
-        'id'   => Kit.uuid,
-        'to'   => recipient.user.jid.to_s,
-        'type' => 'set')
-      node << doc.create_element('query', 'xmlns' => NAMESPACES[:roster]) do |query|
-        query << to_roster_xml
-      end
-      recipient.write(node)
-    end
-
-    # Returns this contact as an xmpp <item> element.
-    def to_roster_xml
-      doc = Nokogiri::XML::Document.new
-      doc.create_element('item') do |el|
-        el['ask'] = @ask unless @ask.nil? || @ask.empty?
-        el['jid'] = @jid.bare.to_s
-        el['name'] = @name unless @name.nil? || @name.empty?
-        el['subscription'] = @subscription
-        el['from_diaspora'] = @from_diaspora
-        @groups.sort!.each do |group|
-          el << doc.create_element('group', group)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/daemon.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/daemon.rb
deleted file mode 100644
index a666b38..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/daemon.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-
-  # Fork the current process into the background and manage pid
-  # files so we can kill the process later.
-  class Daemon
-
-    # Configure a new daemon process.  Arguments hash can include the following
-    # keys: :pid (pid file name, required),
-    # :stdin, :stdout, :stderr (default to /dev/null)
-    def initialize(args)
-      @pid = args[:pid]
-      raise ArgumentError.new('pid file is required') unless @pid
-      raise ArgumentError.new('pid must be a file name') if File.directory?(@pid)
-      raise ArgumentError.new('pid file must be writable') unless File.writable?(File.dirname(@pid))
-      @stdin, @stdout, @stderr = [:stdin, :stdout, :stderr].map {|k| args[k] || '/dev/null' }
-    end
-
-    # Fork the current process into the background to start the
-    # daemon. Do nothing if the daemon is already running.
-    def start
-      daemonize unless running?
-    end
-
-    # Use the pid stored in the pid file created from a previous
-    # call to start to send a TERM signal to the process. Do nothing
-    # if the daemon is not running.
-    def stop
-      10.times do
-        break unless running?
-        Process.kill('TERM', pid)
-        sleep(0.1)
-      end
-    end
-
-    # Returns true if the process is running as determined by the numeric
-    # pid stored in the pid file created by a previous call to start.
-    def running?
-      begin
-        pid && Process.kill(0, pid)
-      rescue Errno::ESRCH
-        delete_pid
-        false
-      rescue Errno::EPERM
-        true
-      end
-    end
-
-    # Returns the numeric process ID from the pid file.
-    # If the pid file does not exist, returns nil.
-    def pid
-      File.read(@pid).to_i if File.exists?(@pid) 
-    end
-
-    private
-
-    def delete_pid
-      File.delete(@pid) if File.exists?(@pid)
-    end
-
-    # Fork process into background twice to release it from
-    # the controlling tty. Point open file descriptors shared
-    # with the parent process to separate destinations (e.g. /dev/null).
-    def daemonize
-      exit if fork
-      Process.setsid
-      exit if fork
-      Dir.chdir('/')
-      $stdin.reopen(@stdin)
-      $stdout.reopen(@stdout, 'a').sync = true
-      $stderr.reopen(@stderr, 'a').sync = true
-      File.open(@pid, 'w') {|f| f.write(Process.pid) }
-      at_exit { delete_pid }
-      trap('TERM') { exit }
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/error.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/error.rb
deleted file mode 100644
index 2098ed0..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/error.rb
+++ /dev/null
@@ -1,150 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class XmppError < StandardError
-    include Nokogiri::XML
-
-    # Returns the XML element name based on the exception class name.
-    # For example, Vines::BadFormat becomes bad-format.
-    def element_name
-      name = self.class.name.split('::').last
-      name.gsub(/([A-Z])/, '-\1').downcase[1..-1]
-    end
-  end
-
-  class SaslError < XmppError
-    NAMESPACE = 'urn:ietf:params:xml:ns:xmpp-sasl'.freeze
-
-    def initialize(text=nil)
-      @text = text
-    end
-
-    def to_xml
-      doc = Document.new
-      doc.create_element('failure') do |node|
-        node.add_namespace(nil, NAMESPACE)
-        node << doc.create_element(element_name)
-        if @text
-          node << doc.create_element('text') do |text|
-            text['xml:lang'] = 'en'
-            text.content = @text
-          end
-        end
-      end.to_xml(:indent => 0).gsub(/\n/, '')
-    end
-  end
-
-  class StreamError < XmppError
-    NAMESPACE = 'urn:ietf:params:xml:ns:xmpp-streams'.freeze
-
-    def initialize(text=nil)
-      @text = text
-    end
-
-    def to_xml
-      doc = Document.new
-      doc.create_element('stream:error') do |el|
-        el << doc.create_element(element_name, 'xmlns' => NAMESPACE)
-        if @text
-          el << doc.create_element('text', @text, 'xmlns' => NAMESPACE, 'xml:lang' => 'en')
-        end
-      end.to_xml(:indent => 0).gsub(/\n/, '')
-    end
-  end
-
-  class StanzaError < XmppError
-    TYPES = %w[auth cancel continue modify wait].freeze
-    KINDS = %w[message presence iq].freeze
-    NAMESPACE = 'urn:ietf:params:xml:ns:xmpp-stanzas'.freeze
-
-    def initialize(el, type, text=nil)
-      raise "type must be one of: %s"   % TYPES.join(', ') unless TYPES.include?(type)
-      raise "stanza must be one of: %s" % KINDS.join(', ') unless KINDS.include?(el.name)
-      @stanza_kind, @type, @text = el.name, type, text
-      @id, @from, @to = %w[id from to].map {|a| el[a] }
-    end
-
-    def to_xml
-      doc = Document.new
-      doc.create_element(@stanza_kind) do |el|
-        el['from'] = @to   if @to
-        el['id']   = @id   if @id
-        el['to']   = @from if @from
-        el['type'] = 'error'
-        el << doc.create_element('error', 'type' => @type) do |error|
-          error << doc.create_element(element_name, 'xmlns' => NAMESPACE)
-          if @text
-            error << doc.create_element('text', @text, 'xmlns' => NAMESPACE, 'xml:lang' => 'en')
-          end
-        end
-      end.to_xml(:indent => 0).gsub(/\n/, '')
-    end
-  end
-
-  module SaslErrors
-    class Aborted < SaslError; end
-    class AccountDisabled < SaslError; end
-    class CredentialsExpired < SaslError; end
-    class EncryptionRequired < SaslError; end
-    class IncorrectEncoding < SaslError; end
-    class InvalidAuthzid < SaslError; end
-    class InvalidMechanism < SaslError; end
-    class MalformedRequest < SaslError; end
-    class MechanismTooWeak < SaslError; end
-    class NotAuthorized < SaslError; end
-    class TemporaryAuthFailure < SaslError; end
-  end
-
-  module StreamErrors
-    class BadFormat < StreamError; end
-    class BadNamespacePrefix < StreamError; end
-    class Conflict < StreamError; end
-    class ConnectionTimeout < StreamError; end
-    class HostGone < StreamError; end
-    class HostUnknown < StreamError; end
-    class ImproperAddressing < StreamError; end
-    class InternalServerError < StreamError; end
-    class InvalidFrom < StreamError; end
-    class InvalidNamespace < StreamError; end
-    class InvalidXml < StreamError; end
-    class NotAuthorized < StreamError; end
-    class NotWellFormed < StreamError; end
-    class PolicyViolation < StreamError; end
-    class RemoteConnectionFailed < StreamError; end
-    class Reset < StreamError; end
-    class ResourceConstraint < StreamError; end
-    class RestrictedXml < StreamError; end
-    class SeeOtherHost < StreamError; end
-    class SystemShutdown < StreamError; end
-    class UndefinedCondition < StreamError; end
-    class UnsupportedEncoding < StreamError; end
-    class UnsupportedFeature < StreamError; end
-    class UnsupportedStanzaType < StreamError; end
-    class UnsupportedVersion < StreamError; end
-  end
-
-  module StanzaErrors
-    class BadRequest < StanzaError; end
-    class Conflict < StanzaError; end
-    class FeatureNotImplemented < StanzaError; end
-    class Forbidden < StanzaError; end
-    class Gone < StanzaError; end
-    class InternalServerError < StanzaError; end
-    class ItemNotFound < StanzaError; end
-    class JidMalformed < StanzaError; end
-    class NotAcceptable < StanzaError; end
-    class NotAllowed < StanzaError; end
-    class NotAuthorized < StanzaError; end
-    class PolicyViolation < StanzaError; end
-    class RecipientUnavailable < StanzaError; end
-    class Redirect < StanzaError; end
-    class RegistrationRequired < StanzaError; end
-    class RemoteServerNotFound < StanzaError; end
-    class RemoteServerTimeout < StanzaError; end
-    class ResourceConstraint < StanzaError; end
-    class ServiceUnavailable < StanzaError; end
-    class SubscriptionRequired < StanzaError; end
-    class UndefinedCondition < StanzaError; end
-    class UnexpectedRequest < StanzaError; end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/jid.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/jid.rb
deleted file mode 100644
index b84c00c..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/jid.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class JID
-    include Comparable
-
-    PATTERN = /\A(?:([^@]*)@)??([^@\/]*)(?:\/(.*?))?\Z/.freeze
-
-    # http://tools.ietf.org/html/rfc6122#appendix-A
-    NODE_PREP = /[[:cntrl:] "&'\/:<>@]/.freeze
-
-    # http://tools.ietf.org/html/rfc3454#appendix-C
-    NAME_PREP = /[[:cntrl:] ]/.freeze
-
-    # http://tools.ietf.org/html/rfc6122#appendix-B
-    RESOURCE_PREP = /[[:cntrl:]]/.freeze
-
-    attr_reader :node, :domain, :resource
-    attr_writer :resource
-
-    def self.new(node, domain=nil, resource=nil)
-      node.is_a?(JID) ? node : super
-    end
-
-    def initialize(node, domain=nil, resource=nil)
-      @node, @domain, @resource = node, domain, resource
-
-      if @domain.nil? && @resource.nil?
-        @node, @domain, @resource = @node.to_s.scan(PATTERN).first
-      end
-      [@node, @domain].each {|part| part.downcase! if part }
-
-      validate
-    end
-
-    # Strip the resource part from this JID and return it as a new
-    # JID object. The new JID contains only the optional node part
-    # and the required domain part from the original. This JID remains
-    # unchanged.
-    def bare
-      JID.new(@node, @domain)
-    end
-
-    # Return true if this is a bare JID without a resource part.
-    def bare?
-      @resource.nil?
-    end
-
-    # Return true if this is a domain-only JID without a node or resource part.
-    def domain?
-      !empty? && to_s == @domain
-    end
-
-    # Return true if this JID is equal to the empty string ''. That is, it's
-    # missing the node, domain, and resource parts that form a valid JID. It
-    # makes for easier error handling to be able to create JID objects from
-    # strings and then check if they're empty rather than nil.
-    def empty?
-      to_s == ''
-    end
-
-    def <=>(jid)
-      self.to_s <=> jid.to_s
-    end
-
-    def eql?(jid)
-      jid.is_a?(JID) && self == jid
-    end
-
-    def hash
-      self.to_s.hash
-    end
-
-    def to_s
-      s = @domain
-      s = "#{@node}@#{s}" if @node
-      s = "#{s}/#{@resource}" if @resource
-      s
-    end
-
-    private
-
-    def validate
-      [@node, @domain, @resource].each do |part|
-        raise ArgumentError, 'jid too long' if (part || '').size > 1023
-      end
-      raise ArgumentError, 'empty node' if @node && @node.strip.empty?
-      raise ArgumentError, 'node contains invalid characters' if @node && @node =~ NODE_PREP
-      raise ArgumentError, 'empty resource' if @resource && @resource.strip.empty?
-      raise ArgumentError, 'resource contains invalid characters' if @resource && @resource =~ RESOURCE_PREP
-      raise ArgumentError, 'empty domain' if @domain == '' && (@node || @resource)
-      raise ArgumentError, 'domain contains invalid characters' if @domain && @domain =~ NAME_PREP
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/kit.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/kit.rb
deleted file mode 100644
index 33b71c4..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/kit.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  # A module for utility methods with no better home.
-  module Kit
-    # Create a hex-encoded, SHA-512 HMAC of the data, using the secret key.
-    def self.hmac(key, data)
-      digest = OpenSSL::Digest.new("sha512")
-      OpenSSL::HMAC.hexdigest(digest, key, data)
-    end
-
-    # Generates a random uuid per rfc 4122 that's useful for including in
-    # stream, iq, and other xmpp stanzas.
-    def self.uuid
-      SecureRandom.uuid
-    end
-
-    # Generates a random 128 character authentication token.
-    def self.auth_token
-      SecureRandom.hex(64)
-    end
-
-    # Generate a HMAC for dialback as recommended in XEP-0185
-    def self.dialback_key(key, receiving, originating, id)
-      digest = OpenSSL::Digest.new('sha256')
-      data = "#{receiving} #{originating} #{id}"
-      OpenSSL::HMAC.hexdigest(digest, digest.hexdigest(key), data)
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/log.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/log.rb
deleted file mode 100644
index 8041c29..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/log.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  module Log
-    @@logger = nil
-    def log
-      unless @@logger
-        @@logger = Logger.new(STDOUT)
-        @@logger.level = Logger::INFO
-        @@logger.progname = 'vines'
-        @@logger.formatter = Class.new(Logger::Formatter) do
-          def initialize
-            @time = "%Y-%m-%dT%H:%M:%SZ".freeze
-            @fmt  = "[%s] %5s -- %s: %s\n".freeze
-          end
-          def call(severity, time, program, msg)
-            @fmt % [time.utc.strftime(@time), severity, program, msg2str(msg)]
-          end
-        end.new
-      end
-      @@logger
-    end
-
-    def self.set_log_file(file)
-      @@logger = Logger.new(file)
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/node.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/node.rb
deleted file mode 100644
index 2cc4f3d..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/node.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-module Vines
-  # Utility functions to work with nodes
-  module Node
-
-    STREAM = 'stream'.freeze
-    BODY   = 'body'.freeze
-
-    module_function
-
-    # Check if node starts a new stream
-    def stream?(node)
-      node.name == STREAM && namespace(node) == NAMESPACES[:stream]
-    end
-
-    # Check if BOSH body
-    def body?(node)
-      node.name == BODY && namespace(node) == NAMESPACES[:http_bind]
-    end
-
-    # Get the namespace
-    def namespace(node)
-      namespace = node.namespace
-      namespace && namespace.href
-    end
-
-    # Convert to stanza
-    def to_stanza(node, stream)
-      Stanza.from_node(node, stream)
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/router.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/router.rb
deleted file mode 100644
index b8ab653..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/router.rb
+++ /dev/null
@@ -1,184 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  # The router tracks all stream connections to the server for all clients,
-  # servers, and components. It sends stanzas to the correct stream based on
-  # the 'to' attribute. Router is a singleton, shared by all streams, that must
-  # be accessed with +Config#router+.
-  class Router
-    EMPTY = [].freeze
-
-    STREAM_TYPES = [:client, :server, :component].freeze
-
-    def initialize(config)
-      @config = config
-      @clients, @servers, @components = {}, [], []
-      @pending = Hash.new {|h,k| h[k] = [] }
-    end
-
-    # Returns streams for all connected resources for this JID. A resource is
-    # considered connected after it has completed authentication and resource
-    # binding.
-    def connected_resources(jid, from, proxies=true)
-      jid, from = JID.new(jid), JID.new(from)
-      return [] unless @config.allowed?(jid, from)
-
-      local = @clients[jid.bare] || EMPTY
-      local = local.select {|stream| stream.user.jid == jid } unless jid.bare?
-      remote = proxies ? proxies(jid) : EMPTY
-      [local, remote].flatten
-    end
-
-    # Returns streams for all available resources for this JID. A resource is
-    # marked available after it sends initial presence.
-    def available_resources(*jids, from)
-      clients(jids, from) do |stream|
-        stream.available?
-      end
-    end
-
-    # Returns streams for all interested resources for this JID. A resource is
-    # marked interested after it requests the roster.
-    def interested_resources(*jids, from)
-      clients(jids, from) do |stream|
-        stream.interested?
-      end
-    end
-
-    # Add the connection to the routing table. The connection must return
-    # :client, :server, or :component from its +stream_type+ method so the
-    # router can properly route stanzas to the stream.
-    def <<(stream)
-      case stream_type(stream)
-      when :client then
-        return unless stream.connected?
-        jid = stream.user.jid.bare
-        @clients[jid] ||= []
-        @clients[jid] << stream
-      when :server then @servers << stream
-      when :component then @components << stream
-      end
-    end
-
-    # Remove the connection from the routing table.
-    def delete(stream)
-      case stream_type(stream)
-      when :client then
-        return unless stream.connected?
-        jid = stream.user.jid.bare
-        streams = @clients[jid] || []
-        streams.delete(stream)
-        @clients.delete(jid) if streams.empty?
-      when :server then @servers.delete(stream)
-      when :component then @components.delete(stream)
-      end
-    end
-
-    # Send the stanza to the appropriate remote server-to-server stream
-    # or an external component stream.
-    def route(stanza)
-      to, from = %w[to from].map {|attr| JID.new(stanza[attr]) }
-      return unless @config.allowed?(to, from)
-      key = [to.domain, from.domain]
-
-      if stream = connection_to(to, from)
-        stream.write(stanza)
-      elsif @pending.key?(key)
-        @pending[key] << stanza
-      elsif @config.s2s?(to.domain)
-        @pending[key] << stanza
-        Vines::Stream::Server.start(@config, to.domain, from.domain) do |stream|
-          stream ? send_pending(key, stream) : return_pending(key)
-          @pending.delete(key)
-        end
-      else
-        raise StanzaErrors::RemoteServerNotFound.new(stanza, 'cancel')
-      end
-    end
-
-    # Return stream by id
-    def stream_by_id(id)
-      (@servers+ at clients.values.flatten+@components).find {|stream| stream.id == id }
-    end
-
-    # Returns the total number of streams connected to the server.
-    def size
-      clients = @clients.values.inject(0) {|sum, arr| sum + arr.size }
-      clients + @servers.size + @components.size
-    end
-
-    private
-
-    # Write all pending stanzas for this domain to the stream. Called after a
-    # s2s stream has successfully connected and we need to dequeue all stanzas
-    # we received while waiting for the connection to finish.
-    def send_pending(key, stream)
-      @pending[key].each do |stanza|
-        stream.write(stanza)
-      end
-    end
-
-    # Return all pending stanzas to their senders as remote-server-not-found
-    # errors. Called after a s2s stream has failed to connect.
-    def return_pending(key)
-      @pending[key].each do |stanza|
-        to, from = JID.new(stanza['to']), JID.new(stanza['from'])
-        xml = StanzaErrors::RemoteServerNotFound.new(stanza, 'cancel').to_xml
-        if @config.component?(from)
-          connection_to(from, to).write(xml) rescue nil
-        else
-          connected_resources(from, to).each {|c| c.write(xml) }
-        end
-      end
-    end
-
-    # Return the client streams to which the from address is allowed to
-    # contact. Apply the filter block to each stream to narrow the results
-    # before returning the streams.
-    def clients(jids, from, &filter)
-      jids = filter_allowed(jids, from)
-      local = @clients.values_at(*jids).compact.flatten.select(&filter)
-      proxies = proxies(*jids).select(&filter)
-      [local, proxies].flatten
-    end
-
-    # Return the bare JIDs from the list that are allowed to talk to
-    # the +from+ JID.
-    def filter_allowed(jids, from)
-      from = JID.new(from)
-      jids.flatten.map {|jid| JID.new(jid).bare }
-        .select {|jid| @config.allowed?(jid, from) }
-    end
-
-    def proxies(*jids)
-      return EMPTY unless @config.cluster?
-      @config.cluster.remote_sessions(*jids)
-    end
-
-    def connection_to(to, from)
-      component_stream(to) || server_stream(to, from)
-    end
-
-    def component_stream(to)
-      @components.select do |stream|
-        stream.ready? && stream.remote_domain == to.domain
-      end.sample
-    end
-
-    def server_stream(to, from)
-      @servers.select do |stream|
-        stream.ready? &&
-          stream.remote_domain == to.domain &&
-            stream.domain == from.domain
-      end.sample
-    end
-
-    def stream_type(connection)
-      connection.stream_type.tap do |type|
-        unless STREAM_TYPES.include?(type)
-          raise ArgumentError, "unexpected stream type: #{type}"
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza.rb
deleted file mode 100644
index bc426b8..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza.rb
+++ /dev/null
@@ -1,175 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    include Nokogiri::XML
-
-    attr_reader :stream
-
-    EMPTY = ''.freeze
-    FROM, MESSAGE, TO = %w[from message to].map {|s| s.freeze }
-    ROUTABLE_STANZAS  = %w[message iq presence].freeze
-
-    @@types = {}
-
-    def self.register(xpath, ns={})
-      @@types[[xpath, ns]] = self
-    end
-
-    def self.from_node(node, stream)
-      # optimize common case
-      return Message.new(node, stream) if node.name == MESSAGE
-      found = @@types.select {|pair, v| node.xpath(*pair).any? }
-        .sort {|a, b| b[0][0].length - a[0][0].length }.first
-      found ? found[1].new(node, stream) : nil
-    end
-
-    def initialize(node, stream)
-      @node, @stream = node, stream
-    end
-
-    # Send the stanza to all recipients, stamping it with from and
-    # to addresses first.
-    def broadcast(recipients)
-      @node[FROM] = stream.user.jid.to_s
-      recipients.each do |recipient|
-        @node[TO] = recipient.user.jid.to_s
-        recipient.write(@node)
-      end
-    end
-
-    # Returns true if this stanza should be processed locally. Returns false
-    # if it's destined for a remote domain or external component.
-    def local?
-      return true unless ROUTABLE_STANZAS.include?(@node.name)
-      to = JID.new(@node[TO])
-      to.empty? || local_jid?(to)
-    end
-
-    def local_jid?(*jids)
-      stream.config.local_jid?(*jids)
-    end
-
-    # Return true if this stanza is addressed to a pubsub subdomain hosted
-    # at this server. This helps differentiate between IQ stanzas addressed
-    # to the server and stanzas addressed to pubsub domains, both of which must
-    # be handled locally and not routed.
-    def to_pubsub_domain?
-      stream.config.pubsub?(validate_to)
-    end
-
-    def route
-      stream.router.route(@node)
-    end
-
-    def router
-      stream.router
-    end
-
-    def storage(domain=stream.domain)
-      stream.storage(domain)
-    end
-
-    def process
-      raise 'subclass must implement'
-    end
-
-    # Broadcast unavailable presence from the user's available resources to the
-    # recipient's available resources. Route the stanza to a remote server if
-    # the recipient isn't hosted locally.
-    def send_unavailable(from, to)
-      available = router.available_resources(from, to)
-      stanzas = available.map {|stream| unavailable(stream.user.jid) }
-      broadcast_to_available_resources(stanzas, to)
-    end
-
-    # Return an unavailable presence stanza addressed from the given JID.
-    def unavailable(from)
-      doc = Document.new
-      doc.create_element('presence',
-        'from' => from.to_s,
-        'id'   => Kit.uuid,
-        'type' => 'unavailable')
-    end
-
-    # Return nil if this stanza has no 'to' attribute. Return a Vines::JID
-    # if it contains a valid 'to' attribute.  Raise a JidMalformed error if
-    # the JID is invalid.
-    def validate_to
-      validate_address(TO)
-    end
-
-    # Return nil if this stanza has no 'from' attribute. Return a Vines::JID
-    # if it contains a valid 'from' attribute.  Raise a JidMalformed error if
-    # the JID is invalid.
-    def validate_from
-      validate_address(FROM)
-    end
-
-    def method_missing(method, *args, &block)
-      @node.send(method, *args, &block)
-    end
-
-    private
-
-    # Send the stanzas to the destination JID, routing to a s2s stream
-    # if the address is remote. This method properly stamps the to address
-    # on each stanza before it's sent. The caller must set the from address.
-    def broadcast_to_available_resources(stanzas, to)
-      return if send_to_remote(stanzas, to)
-      send_to_recipients(stanzas, stream.available_resources(to))
-    end
-
-    # Send the stanzas to the destination JID, routing to a s2s stream
-    # if the address is remote. This method properly stamps the to address
-    # on each stanza before it's sent. The caller must set the from address.
-    def broadcast_to_interested_resources(stanzas, to)
-      return if send_to_remote(stanzas, to)
-      send_to_recipients(stanzas, stream.interested_resources(to))
-    end
-
-    # Route the stanzas to a remote server, stamping a bare JID as the
-    # to address. Bare JIDs are required for presence subscription stanzas
-    # sent to the remote contact's server. Return true if the stanzas were
-    # routed, false if they must be delivered locally.
-    def send_to_remote(stanzas, to)
-      return false if local_jid?(to)
-      to = JID.new(to)
-      stanzas.each do |el|
-        el[TO] = to.bare.to_s
-        router.route(el)
-      end
-      true
-    end
-
-    # Send the stanzas to the local recipient streams, stamping a full JID as
-    # the to address. It's important to use full JIDs, even when sending to
-    # local clients, because the stanzas may be routed to other cluster nodes
-    # for delivery. We need the receiving cluster node to send the stanza just
-    # to this full JID, not to lookup all JIDs for this user.
-    def send_to_recipients(stanzas, recipients)
-      recipients.each do |recipient|
-        stanzas.each do |el|
-          el[TO] = recipient.user.jid.to_s
-          recipient.write(el)
-        end
-      end
-    end
-
-    # Return true if the to and from JIDs are allowed to communicate with one
-    # another based on the cross_domain_messages setting in conf/config.rb. If
-    # a domain's users are isolated to sending messages only within their own
-    # domain, pubsub stanzas must not be processed from remote JIDs.
-    def allowed?
-      stream.config.allowed?(validate_to || stream.domain, stream.user.jid)
-    end
-
-    def validate_address(attr)
-      jid = (self[attr] || EMPTY)
-      return if jid.empty?
-      JID.new(jid)
-    rescue
-      raise StanzaErrors::JidMalformed.new(self, 'modify')
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/dialback.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/dialback.rb
deleted file mode 100644
index ff51ef9..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/dialback.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Dialback < Stanza
-      VALID_TYPE, INVALID_TYPE = %w[valid invalid].map {|t| t.freeze }
-      NS = NAMESPACES[:legacy_dialback]
-
-      register "/db:verify", 'db' => NS
-
-      def process
-        id, from, to = %w[id from to].map {|a| @node[a] }
-        key = @node.text
-
-        outbound_stream = router.stream_by_id(id)
-        unless outbound_stream && outbound_stream.state.is_a?(Stream::Server::Outbound::AuthDialbackResult)
-          @stream.write(%Q{<db:verify from="#{to}" to="#{from}" id="#{id}" type="error"><error type="cancel"><item-not-found xmlns="#{NAMESPACES[:stanzas]}"/></error></db:verify>})
-          return
-        end
-
-        secret = outbound_stream.state.dialback_secret
-        type = Kit.dialback_key(secret, from, to, id) == key ? VALID_TYPE : INVALID_TYPE
-        @stream.write(%Q{<db:verify from="#{to}" to="#{from}" id="#{id}" type="#{type}"/>})
-        @stream.close_connection_after_writing
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq.rb
deleted file mode 100644
index 3e4e21d..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Iq < Stanza
-      register "/iq"
-
-      VALID_TYPES = %w[get set result error].freeze
-
-      VALID_TYPES.each do |type|
-        define_method "#{type}?" do
-          self['type'] == type
-        end
-      end
-
-      def process
-        if self['id'] && VALID_TYPES.include?(self['type'])
-          route_iq or raise StanzaErrors::FeatureNotImplemented.new(@node, 'cancel')
-        else
-          raise StanzaErrors::BadRequest.new(@node, 'modify')
-        end
-      end
-
-      def to_result
-        doc = Document.new
-        doc.create_element('iq',
-          'from' => validate_to || stream.domain,
-          'id'   => self['id'],
-          'to'   => stream.user.jid,
-          'type' => 'result')
-      end
-
-      private
-
-      # Return false if this IQ stanza is addressed to the server, or a pubsub
-      # service hosted here, and must be handled locally. Return true if the
-      # stanza must not be handled locally and has been routed to the appropriate
-      # component, s2s, or c2s stream.
-      def route_iq
-        to = validate_to
-        return false if to.nil? || stream.config.vhost?(to) || to_pubsub_domain?
-        self['from'] = stream.user.jid.to_s
-        local? ? broadcast(stream.connected_resources(to)) : route
-        true
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/auth.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/auth.rb
deleted file mode 100644
index d854bc1..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/auth.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Iq
-      class Auth < Query
-        register "/iq[@id and @type='get']/ns:query", 'ns' => NAMESPACES[:non_sasl]
-
-        def process
-          # XEP-0078 says we MUST send a service-unavailable error
-          # here, but Adium 1.4.1 won't login if we do that, so just
-          # swallow this stanza.
-          # raise StanzaErrors::ServiceUnavailable.new(@node, 'cancel')
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/disco_info.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/disco_info.rb
deleted file mode 100644
index 0073df6..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/disco_info.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Iq
-      class DiscoInfo < Query
-        NS = NAMESPACES[:disco_info]
-
-        register "/iq[@id and @type='get']/ns:query", 'ns' => NS
-
-        def process
-          return if route_iq || !allowed?
-          result = to_result.tap do |el|
-            el << el.document.create_element('query') do |query|
-              query.default_namespace = NS
-              if to_pubsub_domain?
-                identity(query, 'pubsub', 'service')
-                pubsub = [:pubsub_create, :pubsub_delete, :pubsub_instant, :pubsub_item_ids, :pubsub_publish, :pubsub_subscribe]
-                features(query, :disco_info, :ping, :pubsub, *pubsub)
-              else
-                identity(query, 'server', 'im')
-                features = [:disco_info, :disco_items, :offline, :ping, :vcard, :version]
-                features << :storage if stream.config.private_storage?(validate_to || stream.domain)
-                features(query, features)
-              end
-            end
-          end
-          stream.write(result)
-        end
-
-        private
-
-        def identity(query, category, type)
-          query << query.document.create_element('identity', 'category' => category, 'type' => type)
-        end
-
-        def features(query, *features)
-          features.flatten.each do |feature|
-            query << query.document.create_element('feature', 'var' => NAMESPACES[feature])
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/disco_items.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/disco_items.rb
deleted file mode 100644
index 8d95615..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/disco_items.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Iq
-      class DiscoItems < Query
-        NS = NAMESPACES[:disco_items]
-
-        register "/iq[@id and @type='get']/ns:query", 'ns' => NS
-
-        def process
-          return if route_iq || !allowed?
-          result = to_result.tap do |el|
-            el << el.document.create_element('query') do |query|
-              query.default_namespace = NS
-              unless to_pubsub_domain?
-                to = (validate_to || stream.domain).to_s
-                stream.config.vhost(to).disco_items.each do |domain|
-                  query << el.document.create_element('item', 'jid' => domain)
-                end
-              end
-            end
-          end
-          stream.write(result)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/error.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/error.rb
deleted file mode 100644
index 8530c5c..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/error.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Iq
-      class Error < Iq
-        register "/iq[@id and @type='error']"
-
-        def process
-          return if route_iq
-          # do nothing
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/ping.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/ping.rb
deleted file mode 100644
index 6584617..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/ping.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Iq
-      class Ping < Iq
-        register "/iq[@id and @type='get']/ns:ping", 'ns' => NAMESPACES[:ping]
-
-        def process
-          return if route_iq || !allowed?
-          stream.write(to_result)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/private_storage.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/private_storage.rb
deleted file mode 100644
index 6a2aadb..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/private_storage.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Iq
-      # Implements the Private Storage feature defined in XEP-0049. Clients are
-      # allowed to save arbitrary XML documents on the server, identified by
-      # element name and namespace.
-      class PrivateStorage < Query
-        NS = NAMESPACES[:storage]
-
-        register "/iq[@id and (@type='get' or @type='set')]/ns:query", 'ns' => NS
-
-        def process
-          validate_to_address
-          validate_storage_enabled
-          validate_children_size
-          validate_namespaces
-          get? ? retrieve_fragment : update_fragment
-        end
-
-        private
-
-        def retrieve_fragment
-          found = storage.find_fragment(stream.user.jid, elements.first.elements.first)
-          raise StanzaErrors::ItemNotFound.new(self, 'cancel') unless found
-
-          result = to_result do |node|
-            node << node.document.create_element('query') do |query|
-              query.default_namespace = NS
-              query << found
-            end
-          end
-          stream.write(result)
-        end
-
-        def update_fragment
-          elements.first.elements.each do |node|
-            storage.save_fragment(stream.user.jid, node)
-          end
-          stream.write(to_result)
-        end
-
-        private
-
-        def to_result
-          super.tap do |node|
-            node['from'] = stream.user.jid.to_s
-            yield node if block_given?
-          end
-        end
-
-        def validate_children_size
-          size = elements.first.elements.size
-          if (get? && size != 1) || (set? && size == 0)
-            raise StanzaErrors::NotAcceptable.new(self, 'modify')
-          end
-        end
-
-        def validate_to_address
-          to = validate_to
-          unless to.nil? || to == stream.user.jid.bare
-            raise StanzaErrors::Forbidden.new(self, 'cancel')
-          end
-        end
-
-        def validate_storage_enabled
-          unless stream.config.private_storage?(stream.domain)
-            raise StanzaErrors::ServiceUnavailable.new(self, 'cancel')
-          end
-        end
-
-        def validate_namespaces
-          elements.first.elements.each do |node|
-            if node.namespace.nil? || NAMESPACES.values.include?(node.namespace.href)
-              raise StanzaErrors::NotAcceptable.new(self, 'modify')
-            end
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/query.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/query.rb
deleted file mode 100644
index d741129..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/query.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Iq
-      class Query < Iq
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/result.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/result.rb
deleted file mode 100644
index 341c594..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/result.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Iq
-      class Result < Iq
-        register "/iq[@id and @type='result']"
-
-        def process
-          return if route_iq
-          # do nothing
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/roster.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/roster.rb
deleted file mode 100644
index 21eae66..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/roster.rb
+++ /dev/null
@@ -1,140 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Iq
-      class Roster < Query
-        NS = NAMESPACES[:roster]
-
-        register "/iq[@id and (@type='get' or @type='set')]/ns:query", 'ns' => NS
-
-        def process
-          validate_to_address
-          get? ? roster_query : update_roster
-        end
-
-        private
-
-        # Send an iq result stanza containing roster items to the user in
-        # response to their roster get request. Requesting the roster makes
-        # this stream an "interested resource" that can now receive roster
-        # updates.
-        def roster_query
-          stream.requested_roster!
-          stream.write(stream.user.to_roster_xml(self['id']))
-        end
-
-        # Roster sets must have no 'to' address or be addressed to the same
-        # JID that sent the stanza. RFC 6121 sections 2.1.5 and 2.3.3.
-        def validate_to_address
-          to = validate_to
-          unless to.nil? || to.bare == stream.user.jid.bare
-            raise StanzaErrors::Forbidden.new(self, 'auth')
-          end
-        end
-
-        # Add, update, or delete the roster item contained in the iq set
-        # stanza received from the client. RFC 6121 sections 2.3, 2.4, 2.5.
-        def update_roster
-          items = self.xpath('ns:query/ns:item', 'ns' => NS)
-          raise StanzaErrors::BadRequest.new(self, 'modify') if items.size != 1
-          item = items.first
-
-          jid = JID.new(item['jid']) rescue (raise StanzaErrors::JidMalformed.new(self, 'modify'))
-          raise StanzaErrors::BadRequest.new(self, 'modify') if jid.empty? || !jid.bare?
-
-          if item['subscription'] == 'remove'
-            remove_contact(jid)
-            return
-          end
-
-          raise StanzaErrors::NotAllowed.new(self, 'modify') if jid == stream.user.jid.bare
-          groups = item.xpath('ns:group', 'ns' => NS).map {|g| g.text.strip }
-          raise StanzaErrors::BadRequest.new(self, 'modify') if groups.uniq!
-          raise StanzaErrors::NotAcceptable.new(self, 'modify') if groups.include?('')
-
-          contact = stream.user.contact(jid)
-          unless contact
-            contact = Contact.new(jid: jid)
-            stream.user.roster << contact
-          end
-          contact.name = item['name']
-          contact.groups = groups
-          storage.save_user(stream.user)
-          stream.update_user_streams(stream.user)
-          send_result_iq
-          push_roster_updates(stream.user.jid, contact)
-        end
-
-        # Remove the contact with this JID from the user's roster and send
-        # roster pushes to the user's interested resources. This is triggered
-        # by receiving an iq set with an item element like
-        # <item jid="alice at wonderland.lit" subscription="remove"/>. RFC 6121
-        # section 2.5.
-        def remove_contact(jid)
-          contact = stream.user.contact(jid)
-          raise StanzaErrors::ItemNotFound.new(self, 'modify') unless contact
-          if local_jid?(contact.jid)
-            user = storage(contact.jid.domain).find_user(contact.jid)
-          end
-
-          if user && user.contact(stream.user.jid)
-            user.contact(stream.user.jid).subscription = 'none'
-            user.contact(stream.user.jid).ask = nil
-          end
-          stream.user.remove_contact(contact.jid)
-          [user, stream.user].compact.each do |save|
-            storage(save.jid.domain).save_user(save)
-            stream.update_user_streams(save)
-          end
-
-          send_result_iq
-          push_roster_updates(stream.user.jid,
-            Contact.new(jid: contact.jid, subscription: 'remove'))
-
-          if local_jid?(contact.jid)
-            send_unavailable(stream.user.jid, contact.jid) if contact.subscribed_from?
-            send_unsubscribe(contact)
-            if user && user.contact(stream.user.jid)
-              push_roster_updates(contact.jid, user.contact(stream.user.jid))
-            end
-          else
-            send_unsubscribe(contact)
-          end
-        end
-
-        # Notify the contact that it's been removed from the user's roster
-        # and no longer has any presence relationship with the user.
-        def send_unsubscribe(contact)
-          presence = [%w[to unsubscribe], %w[from unsubscribed]].map do |meth, type|
-            presence(contact.jid, type) if contact.send("subscribed_#{meth}?")
-          end.compact
-          broadcast_to_interested_resources(presence, contact.jid)
-        end
-
-        def presence(to, type)
-          doc = Document.new
-          doc.create_element('presence',
-            'from' => stream.user.jid.bare.to_s,
-            'id'   => Kit.uuid,
-            'to'   => to.to_s,
-            'type' => type)
-        end
-
-        # Send an iq set stanza to the user's interested resources, letting them
-        # know their roster has been updated.
-        def push_roster_updates(to, contact)
-          stream.interested_resources(to).each do |recipient|
-            contact.send_roster_push(recipient)
-          end
-        end
-
-        def send_result_iq
-          node = to_result
-          node.remove_attribute('from')
-          stream.write(node)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/session.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/session.rb
deleted file mode 100644
index b51fc04..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/session.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Iq
-      # Session support is deprecated, but Adium requires it, so reply with an
-      # iq result stanza.
-      class Session < Iq
-        register "/iq[@id and @type='set']/ns:session", 'ns' => NAMESPACES[:session]
-
-        def process
-          stream.write(to_result)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/vcard.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/vcard.rb
deleted file mode 100644
index 11c558c..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/vcard.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Iq
-      class Vcard < Iq
-        NS = NAMESPACES[:vcard]
-
-        register "/iq[@id and @type='get' or @type='set']/ns:vCard", 'ns' => NS
-
-        def process
-          return unless allowed?
-          if local?
-            get? ? vcard_query : vcard_update
-          else
-            self['from'] = stream.user.jid.to_s
-            route
-          end
-        end
-
-        private
-
-        def vcard_query
-          to = validate_to
-          jid = to ? to.bare : stream.user.jid.bare
-          card = storage(jid.domain).find_vcard(jid)
-
-          raise StanzaErrors::ItemNotFound.new(self, 'cancel') unless card
-
-          doc = Document.new
-          result = doc.create_element('iq') do |node|
-            node['from'] = jid.to_s unless jid == stream.user.jid.bare
-            node['id']   = self['id']
-            node['to']   = stream.user.jid.to_s
-            node['type'] = 'result'
-            node << card
-          end
-          stream.write(result)
-        end
-
-        def vcard_update
-          to = validate_to
-          unless to.nil? || to == stream.user.jid.bare
-            raise StanzaErrors::Forbidden.new(self, 'auth')
-          end
-
-          storage.save_vcard(stream.user.jid, elements.first)
-
-          result = to_result
-          result.remove_attribute('from')
-          stream.write(result)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/version.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/version.rb
deleted file mode 100644
index 1da59f9..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/iq/version.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Iq
-      class Version < Query
-        NS = NAMESPACES[:version]
-
-        register "/iq[@id and @type='get']/ns:query", 'ns' => NS
-
-        def process
-          return if route_iq || to_pubsub_domain? || !allowed?
-          result = to_result.tap do |node|
-            node << node.document.create_element('query') do |query|
-              query.default_namespace = NS
-              query << node.document.create_element('name', 'Vines')
-              query << node.document.create_element('version', VERSION)
-            end
-          end
-          stream.write(result)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/message.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/message.rb
deleted file mode 100644
index 97dced9..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/message.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Message < Stanza
-      register "/message"
-
-      TYPE, FROM  = %w[type from].map {|s| s.freeze }
-      VALID_TYPES = %w[chat error groupchat headline normal].freeze
-
-      VALID_TYPES.each do |type|
-        define_method "#{type}?" do
-          self[TYPE] == type
-        end
-      end
-
-      def process
-        unless self[TYPE].nil? || VALID_TYPES.include?(self[TYPE])
-          raise StanzaErrors::BadRequest.new(self, 'modify')
-        end
-
-        if local?
-          to = validate_to || stream.user.jid.bare
-          recipients = stream.connected_resources(to)
-          if recipients.empty?
-            if user = storage(to.domain).find_user(to)
-              if Config.instance.max_offline_msgs > 0 && self[TYPE].match(/(chat|normal)/i)
-                storage(to.domain).save_message(stream.user.jid.bare.to_s, to.to_s, @node.text)
-              else
-                raise StanzaErrors::ServiceUnavailable.new(self, 'cancel')
-              end
-            end
-          else
-            broadcast(recipients)
-          end
-        else
-          self[FROM] = stream.user.jid.to_s
-          route
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence.rb
deleted file mode 100644
index db68f10..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence.rb
+++ /dev/null
@@ -1,182 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Presence < Stanza
-      register "/presence"
-
-      VALID_TYPES = %w[subscribe subscribed unsubscribe unsubscribed unavailable probe error].freeze
-
-      VALID_TYPES.each do |type|
-        define_method "#{type}?" do
-          self['type'] == type
-        end
-      end
-
-      def process
-        stream.last_broadcast_presence = @node.clone unless validate_to
-        unless self['type'].nil?
-          raise StanzaErrors::BadRequest.new(self, 'modify')
-        end
-        if Config.instance.max_offline_msgs > 0 && !validate_to
-          check_offline_messages(stream.last_broadcast_presence)
-        end
-        dir = outbound? ? 'outbound' : 'inbound'
-        method("#{dir}_broadcast_presence").call
-      end
-
-      def check_offline_messages(presence)
-        priority = presence.xpath("//priority").text.to_i rescue nil
-        if priority != nil && priority >= 0
-          jid = stream.user.jid.to_s
-          storage.find_messages(jid).each do |id, m|
-            stamp = Time.parse(m[:created_at].to_s)
-            doc = Nokogiri::XML::Builder.new
-            doc.message(:type => "chat", :from => m[:from], :to => m[:to]) do |msg|
-              msg.send(:"body", m[:message])
-              msg.send(:"delay", "Offline Storage",
-                       :xmlns => NAMESPACES[:delay],
-                       :from => m[:from],
-                       :stamp => stamp.iso8601)
-            end
-            xml = doc.to_xml :save_with => Nokogiri::XML::Node::SaveOptions::NO_DECLARATION
-            stream.write(xml)
-            # after delivering it we should
-            # delete the message from database
-            storage.destroy_message(id)
-          end
-        end
-      end
-
-      def outbound?
-        !inbound?
-      end
-
-      def inbound?
-        stream.class == Vines::Stream::Server ||
-        stream.class == Vines::Stream::Component
-      end
-
-      def outbound_broadcast_presence
-        self['from'] = stream.user.jid.to_s
-        to = validate_to
-        type = (self['type'] || '').strip
-        initial = to.nil? && type.empty? && !stream.available?
-
-        recipients = if to.nil?
-          stream.available_subscribers
-        else
-          stream.user.subscribed_from?(to) ? stream.available_resources(to) : []
-        end
-
-        # NOTE overriding vCard information is not concurring
-        # with XEP-153 due the fact that the user can only update
-        # his vCard via the Diaspora environment we should act
-        # the same way for the avatar update
-        override_vcard_update
-
-        broadcast(recipients)
-        broadcast(stream.available_resources(stream.user.jid))
-
-        if initial
-          stream.available_subscribed_to_resources.each do |recipient|
-            if recipient.last_broadcast_presence
-              el = recipient.last_broadcast_presence.clone
-              el['to'] = stream.user.jid.to_s
-              el['from'] = recipient.user.jid.to_s
-              stream.write(el)
-            end
-          end
-          stream.remote_subscribed_to_contacts.each do |contact|
-            send_probe(contact.jid.bare)
-          end
-          stream.available!
-        end
-
-        stream.remote_subscribers(to).each do |contact|
-          node = @node.clone
-          node['to'] = contact.jid.bare.to_s
-          router.route(node) rescue nil # ignore RemoteServerNotFound
-        end
-      end
-
-      def inbound_broadcast_presence
-        broadcast(stream.available_resources(validate_to))
-      end
-
-      private
-
-      def send_probe(to)
-        to = JID.new(to)
-        doc = Document.new
-        probe = doc.create_element('presence',
-          'from' => stream.user.jid.bare.to_s,
-          'id'   => Kit.uuid,
-          'to'   => to.bare.to_s,
-          'type' => 'probe')
-        router.route(probe) rescue nil # ignore RemoteServerNotFound
-      end
-
-      def auto_reply_to_subscription_request(from, type)
-        doc = Document.new
-        node = doc.create_element('presence') do |el|
-          el['from'] = from.to_s
-          el['id'] = self['id'] if self['id']
-          el['to'] = stream.user.jid.bare.to_s
-          el['type'] = type
-        end
-        stream.write(node)
-      end
-
-      # Send the contact's roster item to the current user's interested streams.
-      # Roster pushes are required, following presence subscription updates, to
-      # notify the user's clients of the contact's current state.
-      def send_roster_push(to)
-        contact = stream.user.contact(to)
-        stream.interested_resources(stream.user.jid).each do |recipient|
-          contact.send_roster_push(recipient)
-        end
-      end
-
-      # Notify the current user's interested streams of a contact's subscription
-      # state change as a result of receiving a subscribed, unsubscribe, or
-      # unsubscribed presence stanza.
-      def broadcast_subscription_change(contact)
-        stamp_from
-        stream.interested_resources(stamp_to).each do |recipient|
-          @node['to'] = recipient.user.jid.to_s
-          recipient.write(@node)
-          contact.send_roster_push(recipient)
-        end
-      end
-
-      # Validate that the incoming stanza has a 'to' attribute and strip any
-      # resource part from it so it's a bare jid. Return the bare JID object
-      # that was stamped.
-      def stamp_to
-        to = validate_to
-        raise StanzaErrors::BadRequest.new(self, 'modify') unless to
-        to.bare.tap do |bare|
-          self['to'] = bare.to_s
-        end
-      end
-
-      # Presence subscription stanzas must be addressed from the user's bare
-      # JID. Return the user's bare JID object that was stamped.
-      def stamp_from
-        stream.user.jid.bare.tap do |bare|
-          self['from'] = bare.to_s
-        end
-      end
-
-      def override_vcard_update
-        image_path = storage.find_avatar_by_jid(@node['from'])
-        return if image_path.nil?
-        photo_tag = "<photo><EXTVAL>#{image_path}</EXTVAL></photo>"
-        node = @node.xpath("//xmlns:x", 'xmlns' => NAMESPACES[:vcard_update]).first
-        node.remove unless node.blank?
-        @node << "<x xmlns=\"#{NAMESPACES[:vcard_update]}\">#{photo_tag}</x>"
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/error.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/error.rb
deleted file mode 100644
index 7df6d64..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/error.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Presence
-      class Error < Presence
-        register "/presence[@type='error']"
-
-        def process
-          inbound? ? process_inbound : process_outbound
-        end
-
-        def process_outbound
-          # FIXME Implement error handling
-        end
-
-        def process_inbound
-          # FIXME Implement error handling
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/probe.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/probe.rb
deleted file mode 100644
index ea92d48..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/probe.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Presence
-      class Probe < Presence
-        register "/presence[@type='probe']"
-
-        def process
-          inbound? ? process_inbound : process_outbound
-        end
-
-        def process_outbound
-          self['from'] = stream.user.jid.to_s
-          local? ? process_inbound : route
-        end
-
-        def process_inbound
-          to = validate_to
-          raise StanzaErrors::BadRequest.new(self, 'modify') unless to
-
-          user = storage(to.domain).find_user(to)
-          unless user && user.subscribed_from?(stream.user.jid)
-            auto_reply_to_subscription_request(to.bare, 'unsubscribed')
-          else
-            stream.available_resources(to).each do |recipient|
-              el = recipient.last_broadcast_presence.clone
-              el['from'] = recipient.user.jid.to_s
-              el['to'] = stream.user.jid.to_s
-              stream.write(el)
-            end
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/subscribe.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/subscribe.rb
deleted file mode 100644
index 524aab5..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/subscribe.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Presence
-      class Subscribe < Presence
-        register "/presence[@type='subscribe']"
-
-        def process
-          stamp_from
-          inbound? ? process_inbound : process_outbound
-        end
-
-        def process_outbound
-          to = stamp_to
-          stream.user.request_subscription(to)
-          storage.save_user(stream.user)
-          stream.update_user_streams(stream.user)
-          local? ? process_inbound : route
-          send_roster_push(to)
-        end
-
-        def process_inbound
-          to = stamp_to
-          contact = storage(to.domain).find_user(to)
-          if contact.nil?
-            auto_reply_to_subscription_request(to, 'unsubscribed')
-          elsif contact.subscribed_from?(stream.user.jid)
-            auto_reply_to_subscription_request(to, 'subscribed')
-          else
-            recipients = stream.available_resources(to)
-            if recipients.empty?
-              # TODO store subscription request per RFC 6121 3.1.3 #4
-            else
-              broadcast_to_available_resources([@node], to)
-            end
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/subscribed.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/subscribed.rb
deleted file mode 100644
index bc9768d..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/subscribed.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Presence
-      class Subscribed < Presence
-        register "/presence[@type='subscribed']"
-
-        def process
-          stamp_from
-          inbound? ? process_inbound : process_outbound
-        end
-
-        def process_outbound
-          to = stamp_to
-          stream.user.add_subscription_from(to)
-          storage.save_user(stream.user)
-          stream.update_user_streams(stream.user)
-          local? ? process_inbound : route
-          send_roster_push(to)
-          send_known_presence(to)
-        end
-
-        def process_inbound
-          to = stamp_to
-          user = storage(to.domain).find_user(to)
-          contact = user.contact(stream.user.jid) if user
-          return unless contact && contact.can_subscribe?
-          contact.subscribe_to
-          storage(to.domain).save_user(user)
-          stream.update_user_streams(user)
-          broadcast_subscription_change(contact)
-        end
-
-        private
-
-        # After approving a contact's subscription to this user's presence,
-        # broadcast this user's most recent presence stanzas to the contact.
-        def send_known_presence(to)
-          stanzas = stream.available_resources(stream.user.jid).map do |stream|
-            stream.last_broadcast_presence.clone.tap do |node|
-              node['from'] = stream.user.jid.to_s
-              node['id'] = Kit.uuid
-            end
-          end
-          broadcast_to_available_resources(stanzas, to)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/unavailable.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/unavailable.rb
deleted file mode 100644
index c0b119a..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/unavailable.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Presence
-      class Unavailable < Presence
-        register "/presence[@type='unavailable']"
-
-        def process
-          inbound? ? inbound_broadcast_presence : outbound_broadcast_presence
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/unsubscribe.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/unsubscribe.rb
deleted file mode 100644
index b06d3f6..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/unsubscribe.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Presence
-      class Unsubscribe < Presence
-        register "/presence[@type='unsubscribe']"
-
-        def process
-          stamp_from
-          inbound? ? process_inbound : process_outbound
-        end
-
-        def process_outbound
-          to = stamp_to
-          return unless stream.user.subscribed_to?(to)
-          stream.user.remove_subscription_to(to)
-          storage.save_user(stream.user)
-          stream.update_user_streams(stream.user)
-          local? ? process_inbound : route
-          send_roster_push(to)
-        end
-
-        def process_inbound
-          to = stamp_to
-          user = storage(to.domain).find_user(to)
-          return unless user && user.subscribed_from?(stream.user.jid)
-          contact = user.contact(stream.user.jid)
-          contact.unsubscribe_from
-          storage(to.domain).save_user(user)
-          stream.update_user_streams(user)
-          broadcast_subscription_change(contact)
-          send_unavailable(to, stream.user.jid.bare)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/unsubscribed.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/unsubscribed.rb
deleted file mode 100644
index 94be9a9..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/presence/unsubscribed.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class Presence
-      class Unsubscribed < Presence
-        register "/presence[@type='unsubscribed']"
-
-        def process
-          stamp_from
-          inbound? ? process_inbound : process_outbound
-        end
-
-        def process_outbound
-          to = stamp_to
-          return unless stream.user.subscribed_from?(to)
-          send_unavailable(stream.user.jid, to)
-          stream.user.remove_subscription_from(to)
-          storage.save_user(stream.user)
-          stream.update_user_streams(stream.user)
-          local? ? process_inbound : route
-          send_roster_push(to)
-        end
-
-        def process_inbound
-          to = stamp_to
-          user = storage(to.domain).find_user(to)
-          return unless user && user.subscribed_to?(stream.user.jid)
-          contact = user.contact(stream.user.jid)
-          contact.unsubscribe_to
-          storage(to.domain).save_user(user)
-          stream.update_user_streams(user)
-          broadcast_subscription_change(contact)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub.rb
deleted file mode 100644
index b9ff731..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class PubSub < Iq
-
-      private
-
-      # Return the Config::PubSub system for the domain to which this stanza is
-      # addressed or nil if it's not to a pubsub subdomain.
-      def pubsub
-        stream.config.pubsub(validate_to)
-      end
-
-      # Raise feature-not-implemented if this stanza is addressed to the chat
-      # server itself, rather than a pubsub subdomain.
-      def validate_to_address
-        raise StanzaErrors::FeatureNotImplemented.new(self, 'cancel') unless pubsub
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/create.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/create.rb
deleted file mode 100644
index 2e43ea1..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/create.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class PubSub
-      class Create < PubSub
-        NS = NAMESPACES[:pubsub]
-
-        register "/iq[@id and @type='set']/ns:pubsub/ns:create", 'ns' => NS
-
-        def process
-          return if route_iq || !allowed?
-          validate_to_address
-
-          node = self.xpath('ns:pubsub/ns:create', 'ns' => NS)
-          raise StanzaErrors::BadRequest.new(self, 'modify') if node.size != 1
-          node = node.first
-
-          id = (node['node'] || '').strip
-          id = Kit.uuid if id.empty?
-          raise StanzaErrors::Conflict.new(self, 'cancel') if pubsub.node?(id)
-          pubsub.add_node(id)
-          send_result_iq(id)
-        end
-
-        private
-
-        def send_result_iq(id)
-          el = to_result
-          el << el.document.create_element('pubsub') do |node|
-            node.default_namespace = NS
-            node << el.document.create_element('create', 'node' => id)
-          end
-          stream.write(el)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/delete.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/delete.rb
deleted file mode 100644
index 9980b15..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/delete.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class PubSub
-      class Delete < PubSub
-        NS = NAMESPACES[:pubsub]
-
-        register "/iq[@id and @type='set']/ns:pubsub/ns:delete", 'ns' => NS
-
-        def process
-          return if route_iq || !allowed?
-          validate_to_address
-
-          node = self.xpath('ns:pubsub/ns:delete', 'ns' => NS)
-          raise StanzaErrors::BadRequest.new(self, 'modify') if node.size != 1
-          node = node.first
-
-          id = node['node']
-          raise StanzaErrors::ItemNotFound.new(self, 'cancel') unless pubsub.node?(id)
-
-          pubsub.publish(id, message(id))
-          pubsub.delete_node(id)
-          stream.write(to_result)
-        end
-
-        private
-
-        def message(id)
-          doc = Document.new
-          doc.create_element('message') do |node|
-            node << node.document.create_element('event') do |event|
-              event.default_namespace = NAMESPACES[:pubsub_event]
-              event << node.document.create_element('delete', 'node' => id)
-            end
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/publish.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/publish.rb
deleted file mode 100644
index be97339..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/publish.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class PubSub
-      class Publish < PubSub
-        NS = NAMESPACES[:pubsub]
-
-        register "/iq[@id and @type='set']/ns:pubsub/ns:publish", 'ns' => NS
-
-        def process
-          return if route_iq || !allowed?
-          validate_to_address
-
-          node = self.xpath('ns:pubsub/ns:publish', 'ns' => NS)
-          raise StanzaErrors::BadRequest.new(self, 'modify') if node.size != 1
-          node = node.first
-          id = node['node']
-
-          raise StanzaErrors::ItemNotFound.new(self, 'cancel') unless pubsub.node?(id)
-
-          item = node.xpath('ns:item', 'ns' => NS)
-          raise StanzaErrors::BadRequest.new(self, 'modify') unless item.size == 1
-          item = item.first
-          unless item['id']
-            item['id'] = Kit.uuid
-            include_item = true
-          end
-
-          raise StanzaErrors::BadRequest.new(self, 'modify') unless item.elements.size == 1
-          pubsub.publish(id, message(id, item))
-          send_result_iq(id, include_item ? item : nil)
-        end
-
-        private
-
-        def message(node, item)
-          doc = Document.new
-          doc.create_element('message') do |message|
-            message << doc.create_element('event') do |event|
-              event.default_namespace = NAMESPACES[:pubsub_event]
-              event << doc.create_element('items', 'node' => node) do |items|
-                items << doc.create_element('item', 'id' => item['id'], 'publisher' => stream.user.jid.to_s) do |el|
-                  el << item.elements.first
-                end
-              end
-            end
-          end
-        end
-
-        def send_result_iq(node, item)
-          result = to_result
-          if item
-            result << result.document.create_element('pubsub') do |pubsub|
-              pubsub.default_namespace = NS
-              pubsub << result.document.create_element('publish', 'node' => node) do |publish|
-                publish << result.document.create_element('item', 'id' => item['id'])
-              end
-            end
-          end
-          stream.write(result)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/subscribe.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/subscribe.rb
deleted file mode 100644
index 24934e8..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/subscribe.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class PubSub
-      class Subscribe < PubSub
-        NS = NAMESPACES[:pubsub]
-
-        register "/iq[@id and @type='set']/ns:pubsub/ns:subscribe", 'ns' => NS
-
-        def process
-          return if route_iq || !allowed?
-          validate_to_address
-
-          node = self.xpath('ns:pubsub/ns:subscribe', 'ns' => NS)
-          raise StanzaErrors::BadRequest.new(self, 'modify') if node.size != 1
-          node = node.first
-          id, jid = node['node'], JID.new(node['jid'])
-
-          raise StanzaErrors::BadRequest.new(self, 'modify') unless stream.user.jid.bare == jid.bare
-          raise StanzaErrors::ItemNotFound.new(self, 'cancel') unless pubsub.node?(id)
-          raise StanzaErrors::PolicyViolation.new(self, 'wait') if pubsub.subscribed?(id, jid)
-
-          pubsub.subscribe(id, jid)
-          send_result_iq(id, jid)
-        end
-
-        private
-
-        def send_result_iq(id, jid)
-          result = to_result
-          result << result.document.create_element('pubsub') do |node|
-            node.default_namespace = NS
-            node << result.document.create_element('subscription',
-              'node' => id,
-              'jid' => jid.to_s,
-              'subscription' => 'subscribed')
-          end
-          stream.write(result)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/unsubscribe.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/unsubscribe.rb
deleted file mode 100644
index bda5887..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stanza/pubsub/unsubscribe.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stanza
-    class PubSub
-      class Unsubscribe < PubSub
-        NS = NAMESPACES[:pubsub]
-
-        register "/iq[@id and @type='set']/ns:pubsub/ns:unsubscribe", 'ns' => NS
-
-        def process
-          return if route_iq || !allowed?
-          validate_to_address
-
-          node = self.xpath('ns:pubsub/ns:unsubscribe', 'ns' => NS)
-          raise StanzaErrors::BadRequest.new(self, 'modify') if node.size != 1
-          node = node.first
-          id, jid = node['node'], JID.new(node['jid'])
-
-          raise StanzaErrors::Forbidden.new(self, 'auth') unless stream.user.jid.bare == jid.bare
-          raise StanzaErrors::ItemNotFound.new(self, 'cancel') unless pubsub.node?(id)
-          raise StanzaErrors::UnexpectedRequest.new(self, 'cancel') unless pubsub.subscribed?(id, jid)
-
-          pubsub.unsubscribe(id, jid)
-          stream.write(to_result)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/storage.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/storage.rb
deleted file mode 100644
index 0e09590..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/storage.rb
+++ /dev/null
@@ -1,291 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Storage
-    include Vines::Log
-
-    @@nicks = {}
-
-    # Register a nickname that can be used in the config file to specify this
-    # storage implementation.
-    #
-    # name - The String name for this storage backend.
-    #
-    # Returns nothing.
-    def self.register(name)
-      @@nicks[name.to_sym] = self
-    end
-
-    def self.from_name(name, &block)
-      klass = @@nicks[name.to_sym]
-      raise "#{name} storage class not found" unless klass
-      klass.new(&block)
-    end
-
-    # Wrap a blocking IO method in a new method that pushes the original method
-    # onto EventMachine's thread pool using EM#defer. Storage classes implemented
-    # with blocking IO don't need to worry about threading or blocking the
-    # EventMachine reactor thread if they wrap their methods with this one.
-    #
-    # Examples
-    #
-    #   def find_user(jid)
-    #     some_blocking_lookup(jid)
-    #   end
-    #   defer :find_user
-    #
-    # Storage classes that use asynchronous IO (through an EventMachine
-    # enabled library like em-http-request or em-redis) don't need any special
-    # consideration and must not use this method.
-    #
-    # Returns nothing.
-    def self.defer(method)
-      old = instance_method(method)
-      define_method method do |*args|
-        fiber = Fiber.current
-        op = operation { old.bind(self).call(*args) }
-        cb = proc {|result| fiber.resume(result) }
-        EM.defer(op, cb)
-        Fiber.yield
-      end
-    end
-
-    # Wrap a method with Fiber yield and resume logic. The method must yield
-    # its result to a block. This makes it easier to write asynchronous
-    # implementations of `authenticate`, `find_user`, and `save_user` that
-    # block and return a result rather than yielding.
-    #
-    # Examples
-    #
-    #   def find_user(jid)
-    #     http = EM::HttpRequest.new(url).get
-    #     http.callback { yield build_user_from_http_response(http) }
-    #   end
-    #   fiber :find_user
-    #
-    # Because `find_user` has been wrapped in Fiber logic, we can call it
-    # synchronously even though it uses asynchronous EventMachine calls.
-    #
-    #   user = storage.find_user('alice at wonderland.lit')
-    #   puts user.nil?
-    #
-    # Returns nothing.
-    def self.fiber(method)
-      old = instance_method(method)
-      define_method method do |*args|
-        fiber, yielding = Fiber.current, true
-        old.bind(self).call(*args) do |user|
-          fiber.resume(user) rescue yielding = false
-        end
-        Fiber.yield if yielding
-      end
-    end
-
-    # Validate the username and password pair.
-    #
-    # username - The String login JID to verify.
-    # password - The String password the user presented to the server.
-    #
-    # Examples
-    #
-    #   user = storage.authenticate('alice at wonderland.lit', 'secr3t')
-    #   puts user.nil?
-    #
-    # This default implementation validates the password against a bcrypt hash
-    # of the password stored in the database. Sub-classes not using bcrypt
-    # passwords must override this method.
-    #
-    # Returns a Vines::User object on success, nil on failure.
-    def authenticate(username, password)
-      user = find_user(username)
-      hash = BCrypt::Password.new(user.password) rescue nil
-      (hash && hash == password) ? user : nil
-    end
-
-    # Find the user in the storage database by their unique JID.
-    #
-    # jid - The String or JID of the user, possibly nil. This may be either a
-    #       bare JID or full JID. Implementations of this method must convert
-    #       the JID to a bare JID before searching for the user in the database.
-    #
-    # Examples
-    #
-    #   # Bare JID lookup.
-    #   user = storage.find_user('alice at wonderland.lit')
-    #   puts user.nil?
-    #
-    #   # Full JID lookup.
-    #   user = storage.find_user('alice at wonderland.lit/tea')
-    #   puts user.nil?
-    #
-    # Returns the User identified by the JID, nil if not found.
-    def find_user(jid)
-      raise 'subclass must implement'
-    end
-
-    # Persist the user to the database, and return when the save is complete.
-    #
-    # user - The User to persist.
-    #
-    # Examples
-    #
-    #   alice = Vines::User.new(jid: 'alice at wonderland.lit')
-    #   storage.save_user(alice)
-    #   puts 'saved'
-    #
-    # Returns nothing.
-    def save_user(user)
-      raise 'subclass must implement'
-    end
-
-    # Find the user's vcard by their unique JID.
-    #
-    # jid - The String or JID of the user, possibly nil. This may be either a
-    #       bare JID or full JID. Implementations of this method must convert
-    #       the JID to a bare JID before searching for the vcard in the database.
-    #
-    # Examples
-    #
-    #   card = storage.find_vcard('alice at wonderland.lit')
-    #   puts card.nil?
-    #
-    # Returns the vcard's Nokogiri::XML::Node, nil if not found.
-    def find_vcard(jid)
-      raise 'subclass must implement'
-    end
-
-    # Save the vcard to the database, and return when the save is complete.
-    #
-    # jid  - The String or JID of the user, possibly nil. This may be either a
-    #        bare JID or full JID. Implementations of this method must convert
-    #        the JID to a bare JID before saving the vcard.
-    # card - The vcard's Nokogiri::XML::Node.
-    #
-    # Examples
-    #
-    #   card = Nokogiri::XML('<vCard>...</vCard>').root
-    #   storage.save_vcard('alice at wonderland.lit', card)
-    #   puts 'saved'
-    #
-    # Returns nothing.
-    def save_vcard(jid, card)
-      raise 'subclass must implement'
-    end
-
-    # Find the private XML fragment previously stored by the user. Private
-    # XML storage uniquely identifies fragments by JID, root element name,
-    # and root element namespace.
-    #
-    # jid  - The String or JID of the user, possibly nil. This may be either a
-    #        bare JID or full JID. Implementations of this method must convert
-    #        the JID to a bare JID before searching for the fragment in the database.
-    # node - The XML::Node that uniquely identifies the fragment by element
-    #        name and namespace.
-    #
-    # Examples
-    #
-    #   root = Nokogiri::XML('<custom xmlns="urn:custom:ns"/>').root
-    #   fragment = storage.find_fragment('alice at wonderland.lit', root)
-    #   puts fragment.nil?
-    #
-    # Returns the fragment's Nokogiri::XML::Node or nil if not found.
-    def find_fragment(jid, node)
-      raise 'subclass must implement'
-    end
-
-    # Save the XML fragment to the database, and return when the save is complete.
-    #
-    # jid      - The String or JID of the user, possibly nil. This may be
-    #            either a bare JID or full JID. Implementations of this method
-    #            must convert the JID to a bare JID before searching for the
-    #            fragment.
-    # fragment - The XML::Node to save.
-    #
-    # Examples
-    #
-    #   fragment = Nokogiri::XML('<custom xmlns="urn:custom:ns">some data</custom>').root
-    #   storage.save_fragment('alice at wonderland.lit', fragment)
-    #   puts 'saved'
-    #
-    # Returns nothing.
-    def save_fragment(jid, fragment)
-      raise 'subclass must implement'
-    end
-
-    # Check whether offline messages are available for the user
-    # jid      - The String or JID of the user, possibly nil. This may be
-    #            either a bare JID or full JID. Implementations of this method
-    #            must convert the JID to a bare JID before searching for
-    #            offline messages.
-    #
-    # Returns hash
-    def find_messages(jid)
-      raise 'subclass must implement'
-    end
-
-    # Save the offline message to the database, and return when the save is complete.
-    #
-    # from      - The String or JID of the user.
-    # to        - The String or JID of the user.
-    # message   - The message you want to store.
-    #
-    # Returns nothing.
-    def save_message(from, to, message)
-      raise 'subclass must implement'
-    end
-
-    # Delete a offline message from database.
-    #
-    # id       - The identifier of the offline message
-    #
-    # Returns nothing.
-    def destroy_message(id)
-      raise 'subclass must implement'
-    end
-
-    # Retrieve the avatar url by jid.
-    #
-    # jid      - The String or JID of the user.
-    #
-    # Returns string
-    def find_avatar_by_jid(jid)
-      raise 'subclass must implement'
-    end
-
-    private
-
-    # Determine if any of the arguments are nil or empty strings.
-    #
-    # Examples
-    #
-    #   username, password = 'alice at wonderland.lit', ''
-    #   empty?(username, password) #=> true
-    #
-    # Returns true if any of the arguments are nil or empty strings.
-    def empty?(*args)
-      args.flatten.any? {|arg| (arg || '').strip.empty? }
-    end
-
-    # Create a proc suitable for running on the EM.defer thread pool, that
-    # traps and logs any errors thrown by the provided block.
-    #
-    # block - The block to wrap in error handling.
-    #
-    # Examples
-    #
-    #   op = operation { do_something_on_thread_pool() }
-    #   EM.defer(op)
-    #
-    # Returns a Proc.
-    def operation
-      proc do
-        begin
-          yield
-        rescue => e
-          log.error("Thread pool operation failed: #{e.message}")
-          nil
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/storage/local.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/storage/local.rb
deleted file mode 100644
index c0e47ea..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/storage/local.rb
+++ /dev/null
@@ -1,151 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Storage
-
-    # A storage implementation that persists data to YAML files on the
-    # local file system.
-    class Local < Storage
-      register :fs
-
-      def initialize(&block)
-        @dir = nil
-        instance_eval(&block)
-        unless @dir && File.directory?(@dir) && File.writable?(@dir)
-          raise 'Must provide a writable storage directory'
-        end
-
-        %w[user vcard fragment].each do |sub|
-          sub = File.expand_path(sub, @dir)
-          Dir.mkdir(sub, 0700) unless File.exists?(sub)
-        end
-      end
-
-      def dir(dir=nil)
-        dir ? @dir = File.expand_path(dir) : @dir
-      end
-
-      def find_user(jid)
-        jid = JID.new(jid).bare.to_s
-        file = "user/#{jid}" unless jid.empty?
-        record = YAML.load(read(file)) rescue nil
-        return User.new(jid: jid).tap do |user|
-          user.name, user.password = record.values_at('name', 'password')
-          (record['roster'] || {}).each_pair do |jid, props|
-            user.roster << Contact.new(
-              jid: jid,
-              name: props['name'],
-              subscription: props['subscription'],
-              ask: props['ask'],
-              groups: props['groups'] || [])
-          end
-        end if record
-      end
-
-      def save_user(user)
-        record = {'name' => user.name, 'password' => user.password, 'roster' => {}}
-        user.roster.each do |contact|
-          record['roster'][contact.jid.bare.to_s] = contact.to_h
-        end
-        save("user/#{user.jid.bare}", YAML.dump(record))
-      end
-
-      def find_vcard(jid)
-        jid = JID.new(jid).bare.to_s
-        return if jid.empty?
-        file = "vcard/#{jid}"
-        Nokogiri::XML(read(file)).root rescue nil
-      end
-
-      def save_vcard(jid, card)
-        jid = JID.new(jid).bare.to_s
-        return if jid.empty?
-        save("vcard/#{jid}", card.to_xml)
-      end
-
-      def find_fragment(jid, node)
-        jid = JID.new(jid).bare.to_s
-        return if jid.empty?
-        file = 'fragment/%s' % fragment_id(jid, node)
-        Nokogiri::XML(read(file)).root rescue nil
-      end
-
-      def save_fragment(jid, node)
-        jid = JID.new(jid).bare.to_s
-        return if jid.empty?
-        file = 'fragment/%s' % fragment_id(jid, node)
-        save(file, node.to_xml)
-      end
-
-      def find_messages(jid)
-        {}
-      end
-
-      def save_message(from, to, message)
-        # do nothing
-      end
-
-      def destroy_message(id)
-        # do nothing
-      end
-
-      private
-
-      # Resolves a relative file name into an absolute path inside the
-      # storage directory.
-      #
-      # file - A fully-qualified or relative file name String.
-      #
-      # Returns the fully-qualified file path String.
-      #
-      # Raises RuntimeError if the resolved path is outside of the storage
-      # directory. This prevents directory path traversals with maliciously
-      # crafted JIDs.
-      def absolute_path(file)
-        File.expand_path(file, @dir).tap do |absolute|
-          parent = File.dirname(File.dirname(absolute))
-          raise 'path traversal' unless parent == @dir
-        end
-      end
-
-      # Read the file from the filesystem and return its contents as a String.
-      # All files are assumed to be encoded as UTF-8.
-      #
-      # file - A fully-qualified or relative file name String.
-      #
-      # Returns the file content as a UTF-8 encoded String.
-      def read(file)
-        file = absolute_path(file)
-        File.read(file, encoding: 'utf-8')
-      end
-
-      # Write the content to the file. Make sure to consistently encode files
-      # we read and write as UTF-8.
-      #
-      # file    - A fully-qualified or relative file name String.
-      # content - The String to write.
-      #
-      # Returns nothing.
-      def save(file, content)
-        file = absolute_path(file)
-        File.open(file, 'w:utf-8') {|f| f.write(content) }
-        File.chmod(0600, file)
-      end
-
-      # Generates a unique file id for the user's private XML fragment.
-      #
-      # Private XML fragment storage needs to uniquely identify fragment files
-      # on disk. We combine the user's JID with a SHA-1 hash of the element's
-      # name and namespace to avoid special characters in the file name.
-      #
-      # jid  - A bare JID identifying the user who owns this fragment.
-      # node - A Nokogiri::XML::Node for the XML to be stored.
-      #
-      # Returns an id String suitable for use in a file name.
-      def fragment_id(jid, node)
-        id = Digest::SHA1.hexdigest("#{node.name}:#{node.namespace.href}")
-        "#{jid}-#{id}"
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/storage/null.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/storage/null.rb
deleted file mode 100644
index d06ce59..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/storage/null.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Storage
-    # A storage implementation that does not persist data to any form of storage.
-    # When looking up the storage object for a domain, it's easier to treat a
-    # missing domain with a Null storage than checking for nil.
-    #
-    # For example, presence subscription stanzas sent to a pubsub subdomain
-    # have no storage. Rather than checking for nil storage or pubsub addresses,
-    # it's easier to treat stanzas to pubsub domains as Null storage that never
-    # finds or saves users and their rosters.
-    class Null < Storage
-      def find_user(jid)
-        nil
-      end
-
-      def save_user(user)
-        # do nothing
-      end
-
-      def find_vcard(jid)
-        nil
-      end
-
-      def save_vcard(jid, card)
-        # do nothing
-      end
-
-      def find_fragment(jid, node)
-        nil
-      end
-
-      def save_fragment(jid, node)
-        # do nothing
-      end
-
-      def find_messages(jid)
-        {}
-      end
-
-      def save_message(from, to, message)
-        # do nothing
-      end
-
-      def destroy_message(id)
-        # do nothing
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/storage/sql.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/storage/sql.rb
deleted file mode 100644
index 1ea0047..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/storage/sql.rb
+++ /dev/null
@@ -1,346 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Storage
-    class Sql < Storage
-      include Vines::Log
-
-      register :sql
-
-      class Profile < ActiveRecord::Base
-        belongs_to :person
-      end
-      class Person < ActiveRecord::Base
-        has_one :profile
-
-        def local?
-          !self.owner_id.nil?
-        end
-
-        def name(opts = {})
-          self.profile.first_name.blank? && self.profile.last_name.blank? ?
-            self.diaspora_handle : "#{self.profile.first_name.to_s.strip} #{self.profile.last_name.to_s.strip}".strip
-        end
-      end
-
-      class Aspect < ActiveRecord::Base
-        belongs_to :users
-
-        has_many :aspect_memberships
-        has_many :contacts
-      end
-
-      class AspectMembership < ActiveRecord::Base
-        belongs_to :aspect
-        belongs_to :contact
-
-        has_one :users, :through => :contact
-        has_one :person, :through => :contact
-      end
-
-      class Contact < ActiveRecord::Base
-        scope :chat_enabled, -> {
-          joins(:aspects)
-          .where("aspects.chat_enabled = ?", true)
-          .group("person_id, contacts.id")
-        }
-
-        belongs_to :users
-        belongs_to :person
-
-        has_many :aspect_memberships
-        has_many :aspects, :through => :aspect_memberships
-      end
-
-      class User < ActiveRecord::Base
-        has_many :contacts
-        has_many :chat_contacts, :dependent => :destroy
-        has_many :fragments, :dependent => :delete_all
-
-        has_one :person, :foreign_key => :owner_id
-      end
-
-      class ChatOfflineMessage < ActiveRecord::Base; end
-
-      class ChatContact < ActiveRecord::Base
-        belongs_to :users
-      end
-
-      class ChatFragment < ActiveRecord::Base
-        belongs_to :users
-      end
-
-      # Wrap the method with ActiveRecord connection pool logic, so we properly
-      # return connections to the pool when we're finished with them. This also
-      # defers the original method by pushing it onto the EM thread pool because
-      # ActiveRecord uses blocking IO.
-      def self.with_connection(method, args={})
-        deferrable = args.key?(:defer) ? args[:defer] : true
-        old = instance_method(method)
-        define_method method do |*args|
-          ActiveRecord::Base.connection_pool.with_connection do
-            old.bind(self).call(*args)
-          end
-        end
-        defer(method) if deferrable
-      end
-
-      def initialize(&block)
-        @config = {}
-        unless defined? Rails
-          raise "You configured diaspora-sql adapter without Diaspora environment"
-        end
-
-        config = Rails.application.config.database_configuration[Rails.env]
-        %w[adapter database host port username password].each do |key|
-          @config[key.to_sym] = config[key]
-        end
-
-        required = [:adapter, :database]
-        required << [:host, :port] unless @config[:adapter] == 'sqlite3'
-        required.flatten.each {|key| raise "Must provide #{key}" unless @config[key] }
-        [:username, :password].each {|key| @config.delete(key) if empty?(@config[key]) }
-        establish_connection
-      end
-
-      def find_user(jid)
-        jid = JID.new(jid).bare.to_s
-        return if jid.empty?
-        xuser = user_by_jid(jid)
-        return Vines::User.new(jid: jid).tap do |user|
-          user.name, user.password, user.token =
-            xuser.username,
-            xuser.encrypted_password,
-            xuser.authentication_token
-
-          # add diaspora contacts
-          xuser.contacts.chat_enabled.each do |contact|
-            handle = contact.person.diaspora_handle
-            profile = contact.person.profile
-            name = "#{profile.first_name} #{profile.last_name}"
-            name = handle.gsub(/\@.*?$/, '') if name.strip.empty?
-            ask, subscription, groups = get_diaspora_flags(contact)
-            user.roster << Vines::Contact.new(
-              jid: handle,
-              name: name,
-              subscription: subscription,
-              from_diaspora: true,
-              groups: groups,
-              ask: ask)
-          end
-
-          # add external contacts
-          xuser.chat_contacts.each do |contact|
-            user.roster << Vines::Contact.new(
-              jid: contact.jid,
-              name: contact.name,
-              subscription: contact.subscription,
-              groups: get_external_groups,
-              ask: contact.ask)
-          end
-        end if xuser
-      end
-      with_connection :find_user
-
-      def authenticate(username, password)
-        user = find_user(username)
-
-        pepper = "#{password}#{Devise.pepper}" rescue password
-        dbhash = BCrypt::Password.new(user.password) rescue nil
-        hash = BCrypt::Engine.hash_secret(pepper, dbhash.salt) rescue nil
-
-        userAuth = ((hash && dbhash) && hash == dbhash)
-        tokenAuth = ((password && user) && password == user.token)
-        (tokenAuth || userAuth)? user : nil
-      end
-
-      def save_user(user)
-        # it is not possible to register an account via xmpp server
-        xuser = user_by_jid(user.jid) || return
-
-        # remove deleted contacts from roster
-        xuser.chat_contacts.delete(xuser.chat_contacts.select do |contact|
-          !user.contact?(contact.jid)
-        end)
-
-        # update contacts
-        xuser.chat_contacts.each do |contact|
-          fresh = user.contact(contact.jid)
-          contact.update_attributes(
-            name: fresh.name,
-            ask: fresh.ask,
-            subscription: fresh.subscription)
-        end
-
-        # add new contacts to roster
-        jids = xuser.chat_contacts.map {|c|
-          c.jid if (c.user_id == xuser.id)
-        }.compact
-        user.roster.select {|contact|
-          unless contact.from_diaspora
-            xuser.chat_contacts.build(
-              user_id: xuser.id,
-              jid: contact.jid.bare.to_s,
-              name: contact.name,
-              ask: contact.ask,
-              subscription: contact.subscription) unless jids.include?(contact.jid.bare.to_s)
-          end
-        }
-        xuser.save
-      end
-      with_connection :save_user
-
-      def find_vcard(jid)
-        jid = JID.new(jid).bare.to_s
-        return nil if jid.empty?
-        person = Sql::Person.find_by_diaspora_handle(jid)
-        return nil unless person.nil? || person.local?
-
-        build_vcard(person)
-      end
-      with_connection :find_vcard
-
-      def save_vcard(jid, card)
-        # NOTE this is not supported. If you'd like to change your
-        # vcard details you can edit it via diaspora-web-interface
-        nil
-      end
-      with_connection :save_vcard
-
-      def find_messages(jid)
-        jid = JID.new(jid).bare.to_s
-        return if jid.empty?
-        results = Hash.new
-        Sql::ChatOfflineMessage.where(:to => jid).each do |r|
-          results[r.id] = {
-            :from => r.from,
-            :to => r.to,
-            :message => r.message,
-            :created_at => r.created_at
-          }
-        end
-        return results
-      end
-      with_connection :find_messages
-
-      def save_message(from, to, msg)
-        return if from.empty? || to.empty? || msg.empty?
-        com = Sql::ChatOfflineMessage
-        current = com.count(:to => to)
-        unless current < Config.instance.max_offline_msgs
-          com.where(:to => to)
-             .order(created_at: :asc)
-             .first
-             .delete
-        end
-        com.create(:from => from, :to => to, :message => msg)
-      end
-      with_connection :save_message
-
-      def destroy_message(id)
-        id = id.to_i rescue nil
-        return if id.nil?
-        Sql::ChatOfflineMessage.find(id).destroy
-      end
-      with_connection :destroy_message
-
-      def find_fragment(jid, node)
-        jid = JID.new(jid).bare.to_s
-        return if jid.empty?
-        if fragment = fragment_by_jid(jid, node)
-          Nokogiri::XML(fragment.xml).root rescue nil
-        end
-      end
-      with_connection :find_fragment
-
-      def save_fragment(jid, node)
-        jid = JID.new(jid).bare.to_s
-        fragment = fragment_by_jid(jid, node) ||
-        Sql::ChatFragment.new(
-          user: user_by_jid(jid),
-          root: node.name,
-          namespace: node.namespace.href)
-        fragment.xml = node.to_xml
-        fragment.save
-      end
-      with_connection :save_fragment
-
-      def find_avatar_by_jid(jid)
-        jid = JID.new(jid).bare.to_s
-        return nil if jid.empty?
-
-        person = Sql::Person.find_by_diaspora_handle(jid)
-        return nil if person.nil?
-        return nil if person.profile.nil?
-        return nil unless person.local?
-        person.profile.image_url
-      end
-      with_connection :find_avatar_by_jid
-
-      private
-        def establish_connection
-          ActiveRecord::Base.logger = log # using vines logger
-          ActiveRecord::Base.establish_connection(@config)
-        end
-
-        def user_by_jid(jid)
-          name = JID.new(jid).node
-          Sql::User.find_by_username(name)
-        end
-
-        def get_external_groups
-          # TODO Make the group name configurable by the user
-          # https://github.com/diaspora/vines/issues/39
-          group_name = "External XMPP Contacts"
-          matches = Sql::Aspect.where(:name => group_name).count
-          if matches > 0
-            group_name = "#{group_name} (#{matches + 1})"
-          end
-          [ group_name ]
-        end
-
-        def fragment_by_jid(jid, node)
-          jid = JID.new(jid).bare.to_s
-          clause = 'user_id=(select id from users where jid=?) and root=? and namespace=?'
-          Sql::ChatFragment.where(clause, jid, node.name, node.namespace.href).first
-        end
-
-        def build_vcard(person)
-          builder = Nokogiri::XML::Builder.new
-          builder.vCard('xmlns' => 'vcard-temp') do |xml|
-            xml.send(:"FN", person.name) if person.name
-            xml.send(:"N") do |sub|
-              sub.send(:"FAMILY", person.profile.last_name) if person.profile.last_name
-              sub.send(:"GIVEN", person.profile.first_name) if person.profile.first_name
-            end if (person.profile.last_name? || person.profile.first_name?)
-            xml.send(:"URL", person.url) if person.url
-            xml.send(:"PHOTO") do |sub|
-              sub.send(:"EXTVAL", person.profile.image_url)
-            end if person.profile.image_url
-          end
-
-          builder.to_xml :save_with => Nokogiri::XML::Node::SaveOptions::NO_DECLARATION
-        end
-
-        def get_diaspora_flags(contact)
-          groups = Array.new
-          ask, subscription = 'none', 'none'
-          contact.aspects.each do |aspect|
-            groups.push(aspect.name)
-          end
-
-          if contact.sharing && contact.receiving
-            subscription = 'both'
-          elsif contact.sharing && !contact.receiving
-            ask = 'suscribe'
-            subscription = 'from'
-          elsif !contact.sharing && contact.receiving
-            subscription = 'to'
-          else
-            ask = 'suscribe'
-          end
-          return ask, subscription, groups
-        end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/store.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/store.rb
deleted file mode 100644
index 6b1fdb6..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/store.rb
+++ /dev/null
@@ -1,152 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  # An X509 certificate store that validates certificate trust chains.
-  # This uses the conf/certs/*.crt files as the list of trusted root
-  # CA certificates.
-  class Store
-    include Vines::Log
-    @@sources = nil
-
-    # Create a certificate store to read certificate files from the given
-    # directory.
-    #
-    # dir - The String directory name (absolute or relative).
-    def initialize(dir)
-      @dir = File.expand_path(dir)
-      @store = OpenSSL::X509::Store.new
-      certs.each {|cert| append(cert) }
-    end
-
-    # Return true if the certificate is signed by a CA certificate in the
-    # store. If the certificate can be trusted, it's added to the store so
-    # it can be used to trust other certs.
-    #
-    # pem - The PEM encoded certificate String.
-    #
-    # Returns true if the certificate is trusted.
-    def trusted?(pem)
-      if cert = OpenSSL::X509::Certificate.new(pem) rescue nil
-        @store.verify(cert).tap do |trusted|
-          append(cert) if trusted
-        end
-      end
-    end
-
-    # Return true if the domain name matches one of the names in the
-    # certificate. In other words, is the certificate provided to us really
-    # for the domain to which we think we're connected?
-    #
-    # pem    - The PEM encoded certificate String.
-    # domain - The domain name String.
-    #
-    # Returns true if the certificate was issued for the domain.
-    def domain?(pem, domain)
-      if cert = OpenSSL::X509::Certificate.new(pem) rescue nil
-        OpenSSL::SSL.verify_certificate_identity(cert, domain) rescue false
-      end
-    end
-
-    # Return the trusted root CA certificates installed in conf/certs. These
-    # certificates are used to start the trust chain needed to validate certs
-    # we receive from clients and servers.
-    #
-    # Returns an Array of OpenSSL::X509::Certificate objects.
-    def certs
-      @@sources ||= begin
-        pattern = /-{5}BEGIN CERTIFICATE-{5}\n.*?-{5}END CERTIFICATE-{5}\n/m
-        files = Dir[File.join(@dir, '*.crt')]
-        if defined?(AppConfig)
-          chain = AppConfig.environment.certificate_authorities.get
-          files << chain unless chain.nil?
-        end
-        pairs = files.map do |name|
-          begin
-            File.open(name, "r:UTF-8") do |f|
-              pems = f.read.scan(pattern)
-              certs = pems.map {|pem| OpenSSL::X509::Certificate.new(pem) }
-              certs.reject! {|cert| cert.not_after < Time.now }
-              [name, certs]
-            end
-          rescue ArgumentError => e
-            log.error("Skipping '#{name}' cause of '#{e.message.to_s}'! "+
-                      "Checkout https://wiki.diasporafoundation.org/Vines#FAQ "+
-                      "for further instructions.")
-          end
-        end
-        Hash[pairs.compact]
-      end
-      @@sources.values.flatten
-    end
-
-    # Returns a pair of file names containing the public key certificate
-    # and matching private key for the given domain. This supports using
-    # wildcard certificate files to serve several subdomains.
-    #
-    # Finding the certificate and private key file for a domain follows these steps:
-    #
-    # - Look for <domain>.crt and <domain>.key files in the conf/certs
-    #   directory. If found, return those file names, otherwise . . .
-    #
-    # - Inspect all conf/certs/*.crt files for certificates that contain the
-    #   domain name either as the subject common name (CN) or as a DNS
-    #   subjectAltName. The corresponding private key must be in a file of the
-    #   same name as the certificate's, but with a .key extension.
-    #
-    # So in the simplest configuration, the tea.wonderland.lit encryption files
-    # would be named:
-    #
-    # - conf/certs/tea.wonderland.lit.crt
-    # - conf/certs/tea.wonderland.lit.key
-    #
-    # However, in the case of a wildcard certificate for *.wonderland.lit,
-    # the files would be:
-    #
-    # - conf/certs/wonderland.lit.crt
-    # - conf/certs/wonderland.lit.key
-    #
-    # These same two files would be returned for the subdomains of:
-    #
-    # - tea.wonderland.lit
-    # - crumpets.wonderland.lit
-    # - etc.
-    #
-    # domain - The String domain name.
-    #
-    # Returns a two element String array for the certificate and private key
-    #   file names or nil if not found.
-    def files_for_domain(domain)
-      crt = File.expand_path("#{domain}.crt", @dir)
-      key = File.expand_path("#{domain}.key", @dir)
-      return [crt, key] if File.exists?(crt) && File.exists?(key)
-
-      # Might be a wildcard cert file.
-      @@sources.each do |file, certs|
-        certs.each do |cert|
-          if OpenSSL::SSL.verify_certificate_identity(cert, domain)
-            key = file.chomp(File.extname(file)) + '.key'
-            return [file, key] if File.exists?(file) && File.exists?(key)
-          end
-        end
-      end
-      log.error("Your're using vines without a certificate! "+
-                "Checkout https://wiki.diasporafoundation.org/Vines#Certificates "+
-                "for further instructions.")
-      nil
-    end
-
-    private
-
-    # Add a trusted certificate to the store, suppressing any OpenSSL errors
-    # caused by the certificate already being stored.
-    #
-    # cert - The OpenSSL::X509::Certificate to add.
-    #
-    # Returns nothing.
-    def append(cert)
-      @store.add_cert(cert)
-    rescue OpenSSL::X509::StoreError
-      # Already added to store.
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream.rb
deleted file mode 100644
index bd322bd..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream.rb
+++ /dev/null
@@ -1,309 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  # The base class for various XMPP streams (c2s, s2s, component, http),
-  # containing behavior common to all streams like rate limiting, stanza
-  # parsing, and stream error handling.
-  class Stream < EventMachine::Connection
-    include Vines::Log
-
-    ERROR = 'error'.freeze
-    STREAM = 'stream'.freeze
-    PAD   = 20
-
-    attr_reader   :config, :domain, :id, :state
-    attr_accessor :user
-
-    def initialize(config)
-      @config = config
-    end
-
-    # Initialize the stream after its connection to the server has completed.
-    # EventMachine calls this method when an incoming connection is accepted
-    # into the event loop.
-    #
-    # Returns nothing.
-    def post_init
-      @remote_addr, @local_addr = addresses
-      @user, @closed, @stanza_size = nil, false, 0
-      @bucket = TokenBucket.new(100, 10)
-      @store = Store.new(@config.certs)
-      @nodes = EM::Queue.new
-      process_node_queue
-      create_parser
-      log.info { "%s %21s -> %s" %
-        ['Stream connected:'.ljust(PAD), @remote_addr, @local_addr] }
-    end
-
-    # Initialize a new XML parser for this connection. This is called when the
-    # stream is first connected as well as for stream restarts during
-    # negotiation. Subclasses can override this method to provide a different
-    # type of parser (e.g. HTTP).
-    #
-    # Returns nothing.
-    def create_parser
-      @parser = Parser.new.tap do |parser|
-        parser.stream_open {|node| @nodes.push(node) }
-        parser.stream_close { close_connection }
-        parser.stanza {|node| @nodes.push(node) }
-      end
-    end
-
-    # Advance the state machine into the `Closed` state so any remaining queued
-    # nodes are not processed while we're waiting for EM to actually close the
-    # connection.
-    #
-    # Returns nothing.
-    def close_connection(after_writing=false)
-      super
-      @closed = true
-      advance(Client::Closed.new(self))
-    end
-
-    # Read bytes off the stream and feed them into the XML parser. EventMachine
-    # is responsible for calling this method on its event loop as connections
-    # become readable.
-    #
-    # data - The byte String sent to the server from the client, hopefully XML.
-    #
-    # Returns nothing.
-    def receive_data(data)
-      return if @closed
-      @stanza_size += data.bytesize
-      if @stanza_size < max_stanza_size
-        @parser << data rescue error(StreamErrors::NotWellFormed.new)
-      else
-        error(StreamErrors::PolicyViolation.new('max stanza size reached'))
-      end
-    end
-
-    # Reset the connection's XML parser when a new <stream:stream> header
-    # is received.
-    #
-    # Returns nothing.
-    def reset
-      create_parser
-    end
-
-    # Returns the storage system for the domain. If no domain is given,
-    # the stream's storage mechanism is returned.
-    def storage(domain=nil)
-      @config.storage(domain || self.domain)
-    end
-
-    # Returns the Config::Host virtual host for the stream's domain.
-    def vhost
-      @config.vhost(domain)
-    end
-
-    # Reload the user's information into their active connections. Call this
-    # after storage.save_user() to sync the new user state with their other
-    # connections.
-    #
-    # user - The User whose connection info needs refreshing.
-    #
-    # Returns nothing.
-    def update_user_streams(user)
-      connected_resources(user.jid.bare).each do |stream|
-        stream.user.update_from(user)
-      end
-    end
-
-    def connected_resources(jid)
-      router.connected_resources(jid, user.jid)
-    end
-
-    def available_resources(*jid)
-      router.available_resources(*jid, user.jid)
-    end
-
-    def interested_resources(*jid)
-      router.interested_resources(*jid, user.jid)
-    end
-
-    def ssl_verify_peer(pem)
-      # Skip verifying if user accept self-signed certificates
-      return true if self.vhost.accept_self_signed?
-      # EM is supposed to close the connection when this returns false,
-      # but it only does that for inbound connections, not when we
-      # make a connection to another server.
-      @store.trusted?(pem).tap do |trusted|
-        close_connection unless trusted
-      end
-    end
-
-    def cert_domain_matches?(domain)
-      @store.domain?(get_peer_cert, domain)
-    end
-
-    # Send the data over the wire to this client.
-    #
-    # data - The XML String or XML::Node to write to the socket.
-    #
-    # Returns nothing.
-    def write(data)
-      log_node(data, :out)
-      if data.respond_to?(:to_xml)
-        data = data.to_xml(:indent => 0)
-      end
-      send_data(data)
-    end
-
-    def encrypt
-      cert, key = @store.files_for_domain(domain)
-      start_tls(cert_chain_file: cert, private_key_file: key, verify_peer: true)
-    end
-
-    # Returns true if the TLS certificate and private key files for this domain
-    # exist and can be used to encrypt this stream.
-    def encrypt?
-      !@store.files_for_domain(domain).nil?
-    end
-
-    def unbind
-      router.delete(self)
-      log.info { "%s %21s -> %s" %
-        ['Stream disconnected:'.ljust(PAD), @remote_addr, @local_addr] }
-      log.info { "Streams connected: #{router.size}" }
-    end
-
-    # Advance the stream's state machine to the new state. XML nodes received
-    # by the stream will be passed to this state's `node` method.
-    #
-    # state - The Stream::State to process the stanzas next.
-    #
-    # Returns the new Stream::State.
-    def advance(state)
-      @state = state
-    end
-
-    # Stream level errors close the stream while stanza and SASL errors are
-    # written to the client and leave the stream open. All exceptions should
-    # pass through this method for consistent handling.
-    #
-    # e - The StandardError, usually XmppError, that occurred.
-    #
-    # Returns nothing.
-    def error(e)
-      case e
-      when SaslError, StanzaError
-        write(e.to_xml)
-      when StreamError
-        send_stream_error(e)
-        close_stream
-      else
-        log.error(e)
-        send_stream_error(StreamErrors::InternalServerError.new)
-        close_stream
-      end
-    end
-
-    def router
-      @config.router
-    end
-
-    private
-
-    # Determine the remote and local socket addresses used by this connection.
-    #
-    # Returns a two-element Array of String addresses.
-    def addresses
-      [get_peername, get_sockname].map do |addr|
-        addr ? Socket.unpack_sockaddr_in(addr)[0, 2].reverse.join(':') : 'unknown'
-      end
-    end
-
-    # Write the StreamError's xml to the stream. Subclasses can override
-    # this method with custom error writing behavior.
-    #
-    # A call to `close_stream` should follow this method. Stream level errors
-    # are fatal to the connection.
-    #
-    # e - The StreamError that caused the connection to close.
-    #
-    # Returns nothing.
-    def send_stream_error(e)
-      write(e.to_xml)
-    end
-
-    # Write a closing stream tag and close the connection. Subclasses can
-    # override this method for custom close behavior.
-    #
-    # Returns nothing.
-    def close_stream
-      write('</stream:stream>')
-      close_connection_after_writing
-    end
-
-    def error?(node)
-      ns = node.namespace ? node.namespace.href : nil
-      node.name == ERROR && ns == NAMESPACES[:stream]
-    end
-
-    # Schedule a queue pop on the EM thread to handle the next element. This
-    # guarantees all stanzas received on this stream are processed in order.
-    #
-    #   http://tools.ietf.org/html/rfc6120#section-10.1
-    #
-    # Once a node is processed, this method recursively schedules itself to pop
-    # the next node and so on. A single call to this method effectively begins
-    # an asynchronous node processing loop.
-    #
-    # Returns nothing.
-    def process_node_queue
-      @nodes.pop do |node|
-        Fiber.new do
-          process_node(node)
-          process_node_queue
-        end.resume unless @closed
-      end
-    end
-
-    def process_node(node)
-      log_node(node, :in)
-      @stanza_size = 0
-      enforce_rate_limit
-      if error?(node)
-        close_stream
-      else
-        update_stream_id(node)
-        state.node(node)
-      end
-    rescue => e
-      error(e)
-    end
-
-    def enforce_rate_limit
-      unless @bucket.take(1)
-        raise StreamErrors::PolicyViolation.new('rate limit exceeded')
-      end
-    end
-
-    def log_node(node, direction)
-      return unless log.debug?
-      from, to = @remote_addr, @local_addr
-      from, to = to, from if direction == :out
-      label = (direction == :out) ? 'Sent' : 'Received'
-      log.debug("%s %21s -> %s\n%s\n" %
-        ["#{label} stanza:".ljust(PAD), from, to, node])
-    end
-
-    # Determine if this is a valid domain-only JID that can be used in
-    # stream initiation stanza headers.
-    #
-    # jid - The String or JID to verify (e.g. 'wonderland.lit').
-    #
-    # Return true if the jid is domain-only.
-    def valid_address?(jid)
-      JID.new(jid).domain? rescue false
-    end
-
-    def update_stream_id(id_or_node)
-      if id_or_node.is_a? String
-        @id = id_or_node.freeze
-      elsif Node.stream?(id_or_node) # move stream? method somewhere else?
-        @id = id_or_node['id'].freeze
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client.rb
deleted file mode 100644
index ead9709..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client.rb
+++ /dev/null
@@ -1,88 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    # Implements the XMPP protocol for client-to-server (c2s) streams. This
-    # serves connected streams using the jabber:client namespace.
-    class Client < Stream
-      MECHANISMS = %w[PLAIN].freeze
-
-      def initialize(config)
-        super
-        @session = Client::Session.new(self)
-      end
-
-      # Delegate behavior to the session that's storing our stream state.
-      def method_missing(name, *args)
-        @session.send(name, *args)
-      end
-
-      %w[advance domain state user user=].each do |name|
-        define_method name do |*args|
-          @session.send(name, *args)
-        end
-      end
-
-      %w[max_stanza_size max_resources_per_account].each do |name|
-        define_method name do |*args|
-          config[:client].send(name, *args)
-        end
-      end
-
-      # Return an array of allowed authentication mechanisms advertised as
-      # client stream features.
-      def authentication_mechanisms
-        MECHANISMS
-      end
-
-      def ssl_handshake_completed
-        if get_peer_cert
-          close_connection unless cert_domain_matches?(@session.domain)
-        end
-      end
-
-      def unbind
-        @session.unbind!(self)
-        super
-      end
-
-      def start(node)
-        to, from = %w[to from].map {|a| node[a] }
-        @session.domain = to unless @session.domain
-        send_stream_header(from)
-        raise StreamErrors::NotAuthorized if domain_change?(to)
-        raise StreamErrors::UnsupportedVersion unless node['version'] == '1.0'
-        raise StreamErrors::ImproperAddressing unless valid_address?(@session.domain)
-        raise StreamErrors::HostUnknown unless config.vhost?(@session.domain)
-        raise StreamErrors::InvalidNamespace unless node.namespaces['xmlns'] == NAMESPACES[:client]
-        raise StreamErrors::InvalidNamespace unless node.namespaces['xmlns:stream'] == NAMESPACES[:stream]
-      end
-
-      private
-
-      # The `to` domain address set on the initial stream header must not change
-      # during stream restarts. This prevents a user from authenticating in one
-      # domain, then using a stream in a different domain.
-      #
-      # to - The String domain JID to verify (e.g. 'wonderland.lit').
-      #
-      # Returns true if the client connection is misbehaving and should be closed.
-      def domain_change?(to)
-        to != @session.domain
-      end
-
-      def send_stream_header(to)
-        attrs = {
-          'xmlns'        => NAMESPACES[:client],
-          'xmlns:stream' => NAMESPACES[:stream],
-          'xml:lang'     => 'en',
-          'id'           => Kit.uuid,
-          'from'         => @session.domain,
-          'version'      => '1.0'
-        }
-        attrs['to'] = to if to
-        write "<stream:stream %s>" % attrs.to_a.map{|k,v| "#{k}='#{v}'"}.join(' ')
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/auth.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/auth.rb
deleted file mode 100644
index cdc2419..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/auth.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Client
-      class Auth < State
-        NS        = NAMESPACES[:sasl]
-        MECHANISM = 'mechanism'.freeze
-        AUTH      = 'auth'.freeze
-        PLAIN     = 'PLAIN'.freeze
-        EXTERNAL  = 'EXTERNAL'.freeze
-        SUCCESS   = %Q{<success xmlns="#{NS}"/>}.freeze
-        MAX_AUTH_ATTEMPTS = 3
-
-        def initialize(stream, success=BindRestart)
-          super
-          @attempts = 0
-          @sasl = SASL.new(stream)
-        end
-
-        def node(node)
-          raise StreamErrors::NotAuthorized unless auth?(node)
-          if node.text.empty?
-            send_auth_fail(SaslErrors::MalformedRequest.new)
-          elsif stream.authentication_mechanisms.include?(node[MECHANISM])
-            case node[MECHANISM]
-            when PLAIN    then plain_auth(node)
-            when EXTERNAL then external_auth(node)
-            end
-          else
-            send_auth_fail(SaslErrors::InvalidMechanism.new)
-          end
-        end
-
-        private
-
-        def auth?(node)
-          node.name == AUTH && namespace(node) == NS
-        end
-
-        def plain_auth(node)
-          stream.user = @sasl.plain_auth(node.text)
-          send_auth_success
-        rescue => e
-          send_auth_fail(e)
-        end
-
-        def external_auth(node)
-          @sasl.external_auth(node.text)
-          send_auth_success
-        rescue => e
-          send_auth_fail(e)
-          stream.write('</stream:stream>')
-          stream.close_connection_after_writing
-        end
-
-        def send_auth_success
-          stream.write(SUCCESS)
-          stream.reset
-          advance
-        end
-
-        def send_auth_fail(condition)
-          @attempts += 1
-          if @attempts >= MAX_AUTH_ATTEMPTS
-            stream.error(StreamErrors::PolicyViolation.new("max authentication attempts exceeded"))
-          else
-            stream.error(condition)
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/auth_restart.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/auth_restart.rb
deleted file mode 100644
index c53f53e..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/auth_restart.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Client
-      class AuthRestart < State
-        def initialize(stream, success=Auth)
-          super
-        end
-
-        def node(node)
-          raise StreamErrors::NotAuthorized unless stream?(node)
-          stream.start(node)
-          doc = Document.new
-          features = doc.create_element('stream:features') do |el|
-            el << doc.create_element('mechanisms') do |parent|
-              parent.default_namespace = NAMESPACES[:sasl]
-              stream.authentication_mechanisms.each do |name|
-                parent << doc.create_element('mechanism', name)
-              end
-            end
-          end
-          stream.write(features)
-          advance
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/bind.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/bind.rb
deleted file mode 100644
index c90a952..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/bind.rb
+++ /dev/null
@@ -1,64 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Client
-      class Bind < State
-        NS = NAMESPACES[:bind]
-        MAX_ATTEMPTS = 5
-
-        def initialize(stream, success=Ready)
-          super
-          @attempts = 0
-        end
-
-        def node(node)
-          @attempts += 1
-          raise StreamErrors::NotAuthorized unless bind?(node)
-          raise StreamErrors::PolicyViolation.new('max bind attempts reached') if @attempts > MAX_ATTEMPTS
-          raise StanzaErrors::ResourceConstraint.new(node, 'wait') if resource_limit_reached?
-
-          stream.bind!(resource(node))
-          doc = Document.new
-          result = doc.create_element('iq', 'id' => node['id'], 'type' => 'result') do |el|
-            el << doc.create_element('bind') do |bind|
-              bind.default_namespace = NS
-              bind << doc.create_element('jid', stream.user.jid.to_s)
-            end
-          end
-          stream.write(result)
-          advance
-        end
-
-        private
-
-        def bind?(node)
-          node.name == 'iq' && node['type'] == 'set' && node.xpath('ns:bind', 'ns' => NS).any?
-        end
-
-        def resource(node)
-          el = node.xpath('ns:bind/ns:resource', 'ns' => NS).first
-          resource = el ? el.text.strip : ''
-          generate = resource.empty? || !resource_valid?(resource) || resource_used?(resource)
-          generate ? Kit.uuid : resource
-        end
-
-        def resource_limit_reached?
-          used = stream.connected_resources(stream.user.jid.bare).size
-          used >= stream.max_resources_per_account
-        end
-
-        def resource_used?(resource)
-          stream.available_resources(stream.user.jid).any? do |c|
-            c.user.jid.resource == resource
-          end
-        end
-
-        def resource_valid?(resource)
-          jid = stream.user.jid
-          JID.new(jid.node, jid.domain, resource) rescue false
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/bind_restart.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/bind_restart.rb
deleted file mode 100644
index 3aa6445..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/bind_restart.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Client
-      class BindRestart < State
-        def initialize(stream, success=Bind)
-          super
-        end
-
-        def node(node)
-          raise StreamErrors::NotAuthorized unless stream?(node)
-          stream.start(node)
-          doc = Document.new
-          features = doc.create_element('stream:features') do |el|
-            # Session support is deprecated, but like we do it for Adium
-            # in the iq-session-stanza we have to serve the feature for Xabber.
-            # Otherwise it will disconnect after authentication!
-            el << doc.create_element('session', 'xmlns' => NAMESPACES[:session]) do |session|
-              session << doc.create_element('optional')
-            end
-            el << doc.create_element('bind', 'xmlns' => NAMESPACES[:bind])
-          end
-          stream.write(features)
-          advance
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/closed.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/closed.rb
deleted file mode 100644
index 3882ecf..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/closed.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Client
-      class Closed < State
-        def node(node)
-          # ignore data received after close_connection
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/ready.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/ready.rb
deleted file mode 100644
index 8dd5d82..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/ready.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Client
-      class Ready < State
-        def node(node)
-          stanza = to_stanza(node)
-          raise StreamErrors::UnsupportedStanzaType unless stanza
-          stanza.validate_to
-          stanza.validate_from
-          stanza.process
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/session.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/session.rb
deleted file mode 100644
index ac8456b..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/session.rb
+++ /dev/null
@@ -1,210 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Client
-      # A Session tracks the state of a client stream over its lifetime from
-      # negotiation to processing stanzas to shutdown. By disconnecting the
-      # stream's state from the stream, we can allow multiple TCP connections
-      # to access one logical session (e.g. HTTP streams).
-      class Session
-        include Comparable
-
-        attr_accessor :domain, :user
-        attr_reader   :id, :last_broadcast_presence, :state
-
-        def initialize(stream)
-          @stream = stream
-          @id = Kit.uuid
-          @config = stream.config
-          @state = Client::Start.new(stream)
-          @available = false
-          @domain = nil
-          @last_broadcast_presence = nil
-          @requested_roster = false
-          @unbound = false
-          @user = nil
-        end
-
-        def <=>(session)
-          session.is_a?(Session) ? self.id <=> session.id : nil
-        end
-
-        alias :eql? :==
-
-        def hash
-          @id.hash
-        end
-
-        def advance(state)
-          @state = state
-        end
-
-        # Returns true if this client has properly authenticated with
-        # the server.
-        def authenticated?
-          !@user.nil?
-        end
-
-        # Notify the session that the client has sent an initial presence
-        # broadcast and is now considered to be an "available" resource.
-        # Available resources are sent presence subscription stanzas.
-        def available!
-          @available = true
-          save_to_cluster
-        end
-
-        # An available resource has sent initial presence and can
-        # receive presence subscription requests.
-        def available?
-          @available && connected?
-        end
-
-        # Complete resource binding with the given resource name, provided by the
-        # client or generated by the server. Once resource binding is completed,
-        # the stream is considered to be "connected" and ready for traffic.
-        def bind!(resource)
-          @user.jid.resource = resource
-          router << self
-          save_to_cluster
-        end
-
-        # A connected resource has authenticated and bound a resource
-        # identifier.
-        def connected?
-          !@unbound && authenticated? && !@user.jid.bare?
-        end
-
-        # An interested resource has requested its roster and can
-        # receive roster pushes.
-        def interested?
-          @requested_roster && connected?
-        end
-
-        def last_broadcast_presence=(node)
-          @last_broadcast_presence = node
-          save_to_cluster
-        end
-
-        def ready?
-          @state.class == Client::Ready
-        end
-
-        # Notify the session that the client has requested its roster and is now
-        # considered to be an "interested" resource. Interested resources are sent
-        # roster pushes when changes are made to their contacts.
-        def requested_roster!
-          @requested_roster = true
-          save_to_cluster
-        end
-
-        def stream_type
-          :client
-        end
-
-        def write(data)
-          @stream.write(data)
-        end
-
-        # Called by the stream when it's disconnected from the client. The stream
-        # passes itself to this method in case multiple streams are accessing this
-        # session (e.g. BOSH/HTTP).
-        def unbind!(stream)
-          router.delete(self)
-          delete_from_cluster
-          unsubscribe_pubsub
-          @unbound = true
-          @available = false
-          broadcast_unavailable
-        end
-
-        # Returns streams for available resources to which this user
-        # has successfully subscribed.
-        def available_subscribed_to_resources
-          subscribed = @user.subscribed_to_contacts.map {|c| c.jid }
-          router.available_resources(subscribed, @user.jid)
-        end
-
-        # Returns streams for available resources that are subscribed
-        # to this user's presence updates.
-        def available_subscribers
-          subscribed = @user.subscribed_from_contacts.map {|c| c.jid }
-          router.available_resources(subscribed, @user.jid)
-        end
-
-        # Returns contacts hosted at remote servers to which this user has
-        # successfully subscribed.
-        def remote_subscribed_to_contacts
-          @user.subscribed_to_contacts.reject do |c|
-            @config.local_jid?(c.jid)
-          end
-        end
-
-        # Returns contacts hosted at remote servers that are subscribed
-        # to this user's presence updates.
-        def remote_subscribers(to=nil)
-          jid = (to.nil? || to.empty?) ? nil : JID.new(to).bare
-          @user.subscribed_from_contacts.reject do |c|
-            @config.local_jid?(c.jid) || (jid && c.jid.bare != jid)
-          end
-        end
-
-        private
-
-        def broadcast_unavailable
-          return unless authenticated?
-          Fiber.new do
-            broadcast(unavailable, available_subscribers)
-            broadcast(unavailable, router.available_resources(@user.jid, @user.jid))
-            remote_subscribers.each do |contact|
-              node = unavailable
-              node['to'] = contact.jid.bare.to_s
-              router.route(node) rescue nil # ignore RemoteServerNotFound
-            end
-          end.resume
-        end
-
-        def unavailable
-          doc = Nokogiri::XML::Document.new
-          doc.create_element('presence',
-            'from' => @user.jid.to_s,
-            'type' => 'unavailable')
-        end
-
-        def broadcast(stanza, recipients)
-          recipients.each do |recipient|
-            stanza['to'] = recipient.user.jid.to_s
-            recipient.write(stanza)
-          end
-        end
-
-        def router
-          @config.router
-        end
-
-        def save_to_cluster
-          if @config.cluster?
-            @config.cluster.save_session(@user.jid, to_hash)
-          end
-        end
-
-        def delete_from_cluster
-          if connected? && @config.cluster?
-            @config.cluster.delete_session(@user.jid)
-          end
-        end
-
-        def unsubscribe_pubsub
-          if connected?
-            @config.vhost(@user.jid.domain).unsubscribe_pubsub(@user.jid)
-          end
-        end
-
-        def to_hash
-          presence = @last_broadcast_presence ? @last_broadcast_presence.to_s : nil
-          {available: @available, interested: @requested_roster, presence: presence.to_s}
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/start.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/start.rb
deleted file mode 100644
index 6f18c30..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/start.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Client
-      class Start < State
-        def initialize(stream, success=TLS)
-          super
-        end
-
-        def node(node)
-          raise StreamErrors::NotAuthorized unless stream?(node)
-          stream.start(node)
-          doc = Document.new
-          features = doc.create_element('stream:features') do |el|
-            el << doc.create_element('starttls') do |tls|
-              tls.default_namespace = NAMESPACES[:tls]
-              tls << doc.create_element('required')
-            end
-          end
-          stream.write(features)
-          advance
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/tls.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/tls.rb
deleted file mode 100644
index bc9c371..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/client/tls.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Client
-      class TLS < State
-        NS = NAMESPACES[:tls]
-        PROCEED  = %Q{<proceed xmlns="#{NS}"/>}.freeze
-        FAILURE  = %Q{<failure xmlns="#{NS}"/>}.freeze
-        STARTTLS = 'starttls'.freeze
-
-        def initialize(stream, success=AuthRestart)
-          super
-        end
-
-        def node(node)
-          raise StreamErrors::NotAuthorized unless starttls?(node)
-          if stream.encrypt?
-            stream.write(PROCEED)
-            stream.encrypt
-            stream.reset
-            advance
-          else
-            stream.write(FAILURE)
-            stream.write('</stream:stream>')
-            stream.close_connection_after_writing
-          end
-        end
-
-        private
-
-        def starttls?(node)
-          node.name == STARTTLS && namespace(node) == NS
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/component.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/component.rb
deleted file mode 100644
index 9978483..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/component.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-
-    # Implements the XMPP protocol for trusted, external component (XEP-0114)
-    # streams. This serves connected streams using the jabber:component:accept
-    # namespace.
-    class Component < Stream
-      attr_reader :remote_domain
-
-      def initialize(config)
-        super
-        @remote_domain = nil
-        @stream_id = Kit.uuid
-        advance(Start.new(self))
-      end
-
-      def max_stanza_size
-        config[:component].max_stanza_size
-      end
-
-      def ready?
-        state.class == Component::Ready
-      end
-
-      def stream_type
-        :component
-      end
-
-      def start(node)
-        @remote_domain = node['to']
-        send_stream_header
-        raise StreamErrors::ImproperAddressing unless valid_address?(@remote_domain)
-        raise StreamErrors::HostUnknown unless config.component?(@remote_domain)
-        raise StreamErrors::InvalidNamespace unless node.namespaces['xmlns'] == NAMESPACES[:component]
-        raise StreamErrors::InvalidNamespace unless node.namespaces['xmlns:stream'] == NAMESPACES[:stream]
-      end
-
-      def secret
-        password = config.component_password(@remote_domain)
-        Digest::SHA1.hexdigest(@stream_id + password)
-      end
-
-      private
-
-      def send_stream_header
-        attrs = {
-          'xmlns'        => NAMESPACES[:component],
-          'xmlns:stream' => NAMESPACES[:stream],
-          'id'           => @stream_id,
-          'from'         => @remote_domain
-        }
-        write "<stream:stream %s>" % attrs.to_a.map{|k,v| "#{k}='#{v}'"}.join(' ')
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/component/handshake.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/component/handshake.rb
deleted file mode 100644
index 93948cc..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/component/handshake.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Component
-      class Handshake < State
-        def initialize(stream, success=Ready)
-          super
-        end
-
-        def node(node)
-          raise StreamErrors::NotAuthorized unless handshake?(node)
-          stream.write('<handshake/>')
-          stream.router << stream
-          advance
-        end
-
-        private
-
-        def handshake?(node)
-          node.name == 'handshake' && node.text == stream.secret
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/component/ready.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/component/ready.rb
deleted file mode 100644
index fe2eac9..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/component/ready.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Component
-      class Ready < State
-        def node(node)
-          stanza = to_stanza(node)
-          raise StreamErrors::UnsupportedStanzaType unless stanza
-          to, from = stanza.validate_to, stanza.validate_from
-          raise StreamErrors::ImproperAddressing unless to && from
-          raise StreamErrors::InvalidFrom unless from.domain == stream.remote_domain
-          stream.user = User.new(jid: from)
-          if stanza.local? || stanza.to_pubsub_domain?
-            stanza.process
-          else
-            stanza.route
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/component/start.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/component/start.rb
deleted file mode 100644
index a948623..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/component/start.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Component
-      class Start < State
-        def initialize(stream, success=Handshake)
-          super
-        end
-
-        def node(node)
-          raise StreamErrors::NotAuthorized unless stream?(node)
-          stream.start(node)
-          advance
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http.rb
deleted file mode 100644
index f3b4bb9..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http.rb
+++ /dev/null
@@ -1,185 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Http < Client
-      attr_accessor :session
-
-      def initialize(config)
-        super
-        @session = Http::Session.new(self)
-      end
-
-      # Override Stream#create_parser to provide an HTTP parser rather than
-      # a Nokogiri XML parser.
-      #
-      # Returns nothing.
-      def create_parser
-        @parser = ::Http::Parser.new.tap do |parser|
-          body = ''
-          parser.on_body = proc {|data| body << data }
-          parser.on_message_complete = proc do
-            process_request(Request.new(self, @parser, body))
-            body = ''
-          end
-        end
-      end
-
-      # If the session ID is valid, switch this stream's session to the new
-      # ID and return true. Some clients, like Google Chrome, reuse one stream
-      # for multiple sessions.
-      #
-      # sid - The String session ID.
-      #
-      # Returns true if the server previously distributed this SID to a client.
-      def valid_session?(sid)
-        if session = Sessions[sid]
-          @session = session
-        end
-        !!session
-      end
-
-      %w[max_stanza_size max_resources_per_account bind root].each do |name|
-        define_method name do |*args|
-          config[:http].send(name, *args)
-        end
-      end
-
-      def process_request(request)
-        if request.method == 'POST'
-          if request.path == self.bind && request.options?
-            request.reply_to_options
-          elsif request.path == self.bind
-            body = Nokogiri::XML(request.body).root
-            if session = Sessions[body['sid']]
-              @session = session
-            else
-              @session = Http::Session.new(self)
-            end
-            @session.request(request)
-            @nodes.push(body)
-          end
-        else
-          request.reply('It works!', 'text/plain')
-        end
-      end
-
-      # Alias the Stream#write method before overriding it so we can call
-      # it later from a Session instance.
-      alias :stream_write :write
-
-      # Override Stream#write to queue stanzas rather than immediately writing
-      # to the stream. Stanza responses must be paired with a queued request.
-      #
-      # If a request is not waiting, the written stanzas will buffer until they
-      # can be sent in the next response.
-      #
-      # data - The XML String or XML::Node to write to the HTTP socket.
-      #
-      # Returns nothing.
-      def write(data)
-        @session.write(data)
-      end
-
-      # Parse the one or more stanzas from a single body element. BOSH clients
-      # buffer stanzas sent in quick succession, and send them as a bundle, to
-      # save on the request/response cycle.
-      #
-      # TODO This parses the XML again just to strip namespaces. Figure out
-      # Nokogiri namespace handling instead.
-      #
-      # body - The XML::Node containing the BOSH `body` element.
-      #
-      # Returns an Array of XML::Node stanzas.
-      def parse_body(body)
-        body.namespace = nil
-        body.elements.map do |node|
-          Nokogiri::XML(node.to_s.sub(' xmlns="jabber:client"', '')).root
-        end
-      end
-
-      def start(node)
-        domain, type, hold, wait, rid = %w[to content hold wait rid].map {|a| (node[a] || '').strip }
-        version = node.attribute_with_ns('version', NAMESPACES[:bosh]).value rescue nil
-
-        @session.inactivity = 20
-        @session.domain = domain
-        @session.content_type = type unless type.empty?
-        @session.hold = hold.to_i unless hold.empty?
-        @session.wait = wait.to_i unless wait.empty?
-
-        raise StreamErrors::UndefinedCondition.new('rid required') if rid.empty?
-        raise StreamErrors::UnsupportedVersion unless version == '1.0'
-        raise StreamErrors::ImproperAddressing unless valid_address?(domain)
-        raise StreamErrors::HostUnknown unless config.vhost?(domain)
-        raise StreamErrors::InvalidNamespace unless node.namespaces['xmlns'] == NAMESPACES[:http_bind]
-
-        Sessions[@session.id] = @session
-        send_stream_header
-      end
-
-      def terminate
-        doc = Nokogiri::XML::Document.new
-        node = doc.create_element('body',
-          'type'  => 'terminate',
-          'xmlns' => NAMESPACES[:http_bind])
-        @session.reply(node)
-        close_stream
-      end
-
-      private
-
-      def send_stream_header
-        doc = Nokogiri::XML::Document.new
-        node = doc.create_element('body',
-          'charsets'     => 'UTF-8',
-          'from'         => @session.domain,
-          'hold'         => @session.hold,
-          'inactivity'   => @session.inactivity,
-          'polling'      => '5',
-          'requests'     => '2',
-          'sid'          => @session.id,
-          'ver'          => '1.6',
-          'wait'         => @session.wait,
-          'xmpp:version' => '1.0',
-          'xmlns'        => NAMESPACES[:http_bind],
-          'xmlns:xmpp'   => NAMESPACES[:bosh],
-          'xmlns:stream' => NAMESPACES[:stream])
-
-        node << doc.create_element('stream:features') do |el|
-          el << doc.create_element('mechanisms') do |mechanisms|
-            mechanisms.default_namespace = NAMESPACES[:sasl]
-            mechanisms << doc.create_element('mechanism', 'PLAIN')
-          end
-        end
-        @session.reply(node)
-      end
-
-      # Override Stream#send_stream_error to wrap the error XML in a BOSH
-      # terminate body tag.
-      #
-      # e - The StreamError that caused the connection to close.
-      #
-      # Returns nothing.
-      def send_stream_error(e)
-        doc = Nokogiri::XML::Document.new
-        node = doc.create_element('body',
-          'condition'    => 'remote-stream-error',
-          'type'         => 'terminate',
-          'xmlns'        => NAMESPACES[:http_bind],
-          'xmlns:stream' => NAMESPACES[:stream])
-        node.inner_html = e.to_xml
-        @session.reply(node)
-      end
-
-      # Override Stream#close_stream to simply close the connection without
-      # writing a closing stream tag.
-      #
-      # Returns nothing.
-      def close_stream
-        close_connection_after_writing
-        @session.close
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/auth.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/auth.rb
deleted file mode 100644
index cbf1aa7..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/auth.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Http
-      class Auth < Client::Auth
-        def initialize(stream, success=BindRestart)
-          super
-        end
-
-        def node(node)
-          unless stream.valid_session?(node['sid']) && body?(node) && node['rid']
-            raise StreamErrors::NotAuthorized
-          end
-          nodes = stream.parse_body(node)
-          raise StreamErrors::NotAuthorized unless nodes.size == 1
-          super(nodes.first)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/bind.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/bind.rb
deleted file mode 100644
index 8c6a4a7..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/bind.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Http
-      class Bind < Client::Bind
-        FEATURES = %Q{<stream:features xmlns:stream="#{NAMESPACES[:stream]}"/>}.freeze
-
-        def initialize(stream, success=Ready)
-          super
-        end
-
-        def node(node)
-          unless stream.valid_session?(node['sid']) && body?(node) && node['rid']
-            raise StreamErrors::NotAuthorized
-          end
-          nodes = stream.parse_body(node)
-          raise StreamErrors::NotAuthorized unless nodes.size == 1
-          super(nodes.first)
-        end
-
-        private
-
-        # Override Client::Bind#send_empty_features to properly namespace the
-        # empty features element.
-        def send_empty_features
-          stream.write(FEATURES)
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/bind_restart.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/bind_restart.rb
deleted file mode 100644
index 7e73073..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/bind_restart.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Http
-      class BindRestart < State
-        def initialize(stream, success=Bind)
-          super
-        end
-
-        def node(node)
-          raise StreamErrors::NotAuthorized unless restart?(node)
-
-          doc = Document.new
-          body = doc.create_element('body') do |el|
-            el.add_namespace(nil, NAMESPACES[:http_bind])
-            el.add_namespace('stream', NAMESPACES[:stream])
-            el << doc.create_element('stream:features') do |features|
-              features << doc.create_element('bind', 'xmlns' => NAMESPACES[:bind])
-            end
-          end
-          stream.reply(body)
-          advance
-        end
-
-        private
-
-        def restart?(node)
-          session = stream.valid_session?(node['sid'])
-          restart = node.attribute_with_ns('restart', NAMESPACES[:bosh]).value rescue nil
-          domain  = node['to'] == stream.domain
-          session && body?(node) && domain && restart == 'true' && node['rid']
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/ready.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/ready.rb
deleted file mode 100644
index c379319..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/ready.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Http
-      class Ready < Client::Ready
-        RID, SID, TYPE, TERMINATE = %w[rid sid type terminate].map {|s| s.freeze }
-
-        def node(node)
-          unless stream.valid_session?(node[SID]) && body?(node) && node[RID]
-            raise StreamErrors::NotAuthorized
-          end
-          stream.parse_body(node).each do |child|
-            begin
-              super(child)
-            rescue StanzaError => e
-              stream.error(e)
-            end
-          end
-          stream.terminate if terminate?(node)
-        end
-
-        def terminate?(node)
-          node[TYPE] == TERMINATE
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/request.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/request.rb
deleted file mode 100644
index 70f02f3..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/request.rb
+++ /dev/null
@@ -1,193 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Http
-      class Request
-        BUF_SIZE      = 1024
-        MODIFIED      = '%a, %d %b %Y %H:%M:%S GMT'.freeze
-        MOVED         = 'Moved Permanently'.freeze
-        NOT_FOUND     = 'Not Found'.freeze
-        NOT_MODIFIED  = 'Not Modified'.freeze
-        IF_MODIFIED   = 'If-Modified-Since'.freeze
-        TEXT_PLAIN    = 'text/plain'.freeze
-        OPTIONS       = 'OPTIONS'.freeze
-        CONTENT_TYPES = {
-          'html'     => 'text/html; charset="utf-8"',
-          'js'       => 'application/javascript; charset="utf-8"',
-          'css'      => 'text/css',
-          'png'      => 'image/png',
-          'jpg'      => 'image/jpeg',
-          'jpeg'     => 'image/jpeg',
-          'gif'      => 'image/gif',
-          'manifest' => 'text/cache-manifest'
-        }.freeze
-
-        attr_reader :stream, :body, :headers, :method, :path, :url, :query
-
-        # Create a new request parsed from an HTTP client connection. We'll try
-        # to keep this request open until there are stanzas available to send
-        # as a response.
-        #
-        # stream - The Stream::Http client connection that received the request.
-        # parser - The Http::Parser that parsed the HTTP request.
-        # body   - The String request body.
-        def initialize(stream, parser, body)
-          uri       = URI(parser.request_url)
-          @stream   = stream
-          @body     = body
-          @headers  = parser.headers
-          @method   = parser.http_method
-          @url      = parser.request_url
-          @path     = uri.path
-          @query    = uri.query
-          @received = Time.now
-        end
-
-        # Return the number of seconds since this request was received.
-        def age
-          Time.now - @received
-        end
-
-        # Write the requested file to the client out of the given document root
-        # directory. Take care to prevent directory traversal attacks with paths
-        # like ../../../etc/passwd. Use the If-Modified-Since request header
-        # to implement caching.
-        #
-        # Returns nothing.
-        def reply_with_file(dir)
-          path = File.expand_path(File.join(dir, @path))
-
-          # Redirect requests missing a slash so relative links work.
-          if File.directory?(path) && !@path.end_with?('/')
-            send_status(301, MOVED, "Location: #{redirect_uri}")
-            return
-          end
-
-          path = File.join(path, 'index.html') if File.directory?(path)
-
-          if path.start_with?(dir) && File.exist?(path)
-            modified?(path) ? send_file(path) : send_status(304, NOT_MODIFIED)
-          else
-            missing = File.join(dir, '404.html')
-            if File.exist?(missing)
-              send_file(missing, 404, NOT_FOUND)
-            else
-              send_status(404, NOT_FOUND)
-            end
-          end
-        end
-
-        # Send an HTTP 200 OK response wrapping the XMPP node content back
-        # to the client.
-        #
-        # Returns nothing.
-        def reply(node, content_type)
-          body = node.to_s
-          header = [
-            "HTTP/1.1 200 OK",
-            "Access-Control-Allow-Origin: *",
-            "Content-Type: #{content_type}",
-            "Content-Length: #{body.bytesize}",
-            vroute_cookie
-          ].compact.join("\r\n")
-          @stream.stream_write([header, body].join("\r\n\r\n"))
-        end
-
-        # Return true if the request method is OPTIONS, signaling a
-        # CORS preflight check.
-        def options?
-          @method == OPTIONS
-        end
-
-        # Send a 200 OK response, allowing any origin domain to connect to the
-        # server, in response to CORS preflight OPTIONS requests. This allows
-        # any web application using strophe.js to connect to our BOSH port.
-        #
-        # Returns nothing.
-        def reply_to_options
-          allow = @headers['Access-Control-Request-Headers']
-          headers = [
-            "Access-Control-Allow-Origin: *",
-            "Access-Control-Allow-Methods: POST, GET, OPTIONS",
-            "Access-Control-Allow-Headers: #{allow}",
-            "Access-Control-Max-Age: #{60 * 60 * 24 * 30}"
-          ]
-          send_status(200, 'OK', headers)
-        end
-
-        private
-
-        # Attempt to rebuild the full request URI from the Host header. If it
-        # wasn't sent by the client, just return the relative path that
-        # was requested. The Location response header must contain the fully
-        # qualified URI, but most browsers will accept relative paths as well.
-        #
-        # Returns the String URL.
-        def redirect_uri
-          host = headers['Host']
-          uri = "#{path}/"
-          uri = "#{uri}?#{query}" unless (query || '').empty?
-          uri = "http://#{host}#{uri}" if host
-          uri
-        end
-
-        # Return true if the file has been modified since the client last
-        # requested it with the If-Modified-Since header.
-        def modified?(path)
-          @headers[IF_MODIFIED] != mtime(path)
-        end
-
-        def mtime(path)
-          File.mtime(path).utc.strftime(MODIFIED)
-        end
-
-        def send_status(status, message, *headers)
-          header = [
-            "HTTP/1.1 #{status} #{message}",
-            "Content-Length: 0",
-            *headers
-          ].join("\r\n")
-          @stream.stream_write("#{header}\r\n\r\n")
-        end
-
-        # Stream the contents of the file to the client in a 200 OK response.
-        # Send a Last-Modified response header so clients can send us an
-        # If-Modified-Since request header for caching.
-        #
-        # Returns nothing.
-        def send_file(path, status=200, message='OK')
-          header = [
-            "HTTP/1.1 #{status} #{message}",
-            "Content-Type: #{content_type(path)}",
-            "Content-Length: #{File.size(path)}",
-            "Last-Modified: #{mtime(path)}"
-          ].join("\r\n")
-          @stream.stream_write("#{header}\r\n\r\n")
-
-          File.open(path) do |file|
-            while (buf = file.read(BUF_SIZE)) != nil
-              @stream.stream_write(buf)
-            end
-          end
-        end
-
-        def content_type(path)
-          ext = File.extname(path).sub('.', '')
-          CONTENT_TYPES[ext] || TEXT_PLAIN
-        end
-
-        # Provide a vroute cookie in each response that uniquely identifies this
-        # HTTP server. Reverse proxy servers (nginx/apache) can use this cookie
-        # to implement sticky sessions. Return nil if vroute was not set in
-        # config.rb and no cookie should be sent.
-        #
-        # Returns a String cookie value or nil if disabled.
-        def vroute_cookie
-          route = @stream.config[:http].vroute
-          route ? "Set-Cookie: vroute=#{route}; path=/; HttpOnly" : nil
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/session.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/session.rb
deleted file mode 100644
index a697900..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/session.rb
+++ /dev/null
@@ -1,128 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Http
-      class Session < Client::Session
-        include Nokogiri::XML
-
-        attr_accessor :content_type, :hold, :inactivity, :wait
-
-        CONTENT_TYPE = 'text/xml; charset=utf-8'.freeze
-
-        def initialize(stream)
-          super
-          @state = Http::Start.new(stream)
-          @inactivity, @wait, @hold = 20, 60, 1
-          @replied = Time.now
-          @requests, @responses = [], []
-          @content_type = CONTENT_TYPE
-        end
-
-        def close
-          Sessions.delete(@id)
-          router.delete(self)
-          delete_from_cluster
-          unsubscribe_pubsub
-          @requests.each {|req| req.stream.close_connection }
-          @requests.clear
-          @responses.clear
-          @state = Client::Closed.new(nil)
-          @unbound = true
-          @available = false
-          broadcast_unavailable
-        end
-
-        def ready?
-          @state.class == Http::Ready
-        end
-
-        def requests
-          @requests.clone
-        end
-
-        def expired?
-          respond_to_expired_requests
-          @requests.empty? && (Time.now - @replied > @inactivity)
-        end
-
-        # Resume this session from its most recent state with a new client
-        # stream and incoming node.
-        def resume(stream, node)
-          stream.session.requests.each do |req|
-            request(req)
-          end
-          stream.session = self
-          @state.stream = stream
-          @state.node(node)
-        end
-
-        def request(request)
-          if @responses.any?
-            request.reply(wrap_body(@responses.join), @content_type)
-            @replied = Time.now
-            @responses.clear
-          else
-            while @requests.size >= @hold
-              @requests.shift.reply(wrap_body(''), @content_type)
-              @replied = Time.now
-            end
-            @requests << request
-          end
-        end
-
-        # Send an HTTP 200 OK response wrapping the XMPP node content back
-        # to the client.
-        #
-        # node - The XML::Node to send to the client.
-        #
-        # Returns nothing.
-        def reply(node)
-          if request = @requests.shift
-            request.reply(node, @content_type)
-            @replied = Time.now
-          end
-        end
-
-        # Write the XMPP node to the client stream after wrapping it in a BOSH
-        # body tag. If there's a waiting request, the node is written
-        # immediately. If not, it's queued until the next request arrives.
-        #
-        # data - The XML String or XML::Node to send in the next HTTP response.
-        #
-        # Returns nothing.
-        def write(node)
-          if request = @requests.shift
-            request.reply(wrap_body(node), @content_type)
-            @replied = Time.now
-          else
-            @responses << node.to_s
-          end
-        end
-
-        def unbind!(stream)
-          @requests.reject! {|req| req.stream == stream }
-        end
-
-        private
-
-        def respond_to_expired_requests
-          expired = @requests.select {|req| req.age > @wait }
-          expired.each do |request|
-            request.reply(wrap_body(''), @content_type)
-            @requests.delete(request)
-            @replied = Time.now
-          end
-        end
-
-        def wrap_body(data)
-          doc = Document.new
-          doc.create_element('body') do |node|
-            node.add_namespace(nil, NAMESPACES[:http_bind])
-            node.inner_html = data.to_s
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/sessions.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/sessions.rb
deleted file mode 100644
index d31f8fe..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/sessions.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Http
-      # Sessions is a cache of Http::Session objects for transient HTTP
-      # connections. The cache is monitored for expired client connections.
-      class Sessions
-        include Vines::Log
-
-        @@instance = nil
-        def self.instance
-          @@instance ||= self.new
-        end
-
-        def self.[](sid)
-          instance[sid]
-        end
-
-        def self.[]=(sid, session)
-          instance[sid] = session
-        end
-
-        def self.delete(sid)
-          instance.delete(sid)
-        end
-
-        def initialize
-          @sessions = {}
-          start_timer
-        end
-
-        def []=(sid, session)
-          @sessions[sid] = session
-        end
-
-        def [](sid)
-          @sessions[sid]
-        end
-
-        def delete(sid)
-          @sessions.delete(sid)
-        end
-
-        private
-
-        # Check for expired clients to cleanup every second.
-        def start_timer
-          @timer ||= EventMachine::PeriodicTimer.new(1) { cleanup }
-        end
-
-        # Remove cached information for all expired connections. An expired
-        # HTTP client is one that has no queued requests and has had no activity
-        # for over 20 seconds.
-        def cleanup
-          @sessions.each_value do |session|
-            session.close if session.expired?
-          end
-        rescue => e
-          log.error("Expired session cleanup failed: #{e}")
-        end
-      end
-    end
-  end
-end
\ No newline at end of file
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/start.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/start.rb
deleted file mode 100644
index 8db2622..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/http/start.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Http
-      class Start < State
-        def initialize(stream, success=Auth)
-          super
-        end
-
-        def node(node)
-          raise StreamErrors::NotAuthorized unless body?(node)
-          if session = Sessions[node['sid']]
-            session.resume(stream, node)
-          else
-            stream.start(node)
-            advance
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/parser.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/parser.rb
deleted file mode 100644
index a59aded..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/parser.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Parser < Nokogiri::XML::SAX::Document
-      include Nokogiri::XML
-      STREAM_NAME = 'stream'.freeze
-      STREAM_URI  = 'http://etherx.jabber.org/streams'.freeze
-      IGNORE = NAMESPACES.values_at(:client, :component, :server)
-
-      def initialize(&block)
-        @listeners, @node = Hash.new {|h, k| h[k] = []}, nil
-        @parser = Nokogiri::XML::SAX::PushParser.new(self)
-        instance_eval(&block) if block
-      end
-
-      [:stream_open, :stream_close, :stanza].each do |name|
-        define_method(name) do |&block|
-          @listeners[name] << block
-        end
-      end
-
-      def <<(data)
-        @parser << data
-        self
-      end
-
-      def start_element_namespace(name, attrs=[], prefix=nil, uri=nil, ns=[])
-        el = node(name, attrs, prefix, uri, ns)
-        if stream?(name, uri)
-          notify(:stream_open, el)
-        else
-          @node << el if @node
-          @node = el
-        end
-      end
-
-      def end_element_namespace(name, prefix=nil, uri=nil)
-        if stream?(name, uri)
-          notify(:stream_close)
-        elsif @node.parent != @node.document
-          @node = @node.parent
-        else
-          notify(:stanza, @node)
-          @node = nil
-        end
-      end
-
-      def characters(chars)
-        @node << Text.new(chars, @node.document) if @node
-      end
-      alias :cdata_block :characters
-
-      private
-
-      def notify(msg, node=nil)
-        @listeners[msg].each do |b|
-          (node ? b.call(node) : b.call) rescue nil
-        end
-      end
-
-      def stream?(name, uri)
-        name == STREAM_NAME && uri == STREAM_URI
-      end
-
-      def node(name, attrs=[], prefix=nil, uri=nil, ns=[])
-        ignore = stream?(name, uri) ? [] : IGNORE
-        doc = @node ? @node.document : Document.new
-        node = doc.create_element(name) do |node|
-          attrs.each {|attr| node[attr.localname] = attr.value }
-          ns.each {|prefix, uri| node.add_namespace(prefix, uri) unless ignore.include?(uri) }
-          doc << node unless @node
-        end
-        node.namespace = node.add_namespace(prefix, uri) unless ignore.include?(uri)
-        node
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/sasl.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/sasl.rb
deleted file mode 100644
index 2f46d02..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/sasl.rb
+++ /dev/null
@@ -1,128 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    # Provides plain (username/password) and external (TLS certificate) SASL
-    # authentication to client and server streams.
-    class SASL
-      include Vines::Log
-      EMPTY = '='.freeze
-
-      def initialize(stream)
-        @stream = stream
-      end
-
-      # Authenticate server-to-server streams, comparing their domain to their
-      # SSL certificate.
-      #
-      #   http://xmpp.org/extensions/xep-0178.html#s2s
-      #
-      # encoded - The Base64 encoded remote domain name String sent by the
-      #           server stream.
-      #
-      # Returns true if the Base64 encoded domain matches the TLS certificate
-      #   presented earlier in stream negotiation.
-      #
-      # Raises a SaslError if authentication failed.
-      def external_auth(encoded)
-        unless encoded == EMPTY
-          authzid = decode64(encoded)
-          matches_from = (authzid == @stream.remote_domain)
-          raise SaslErrors::InvalidAuthzid unless matches_from
-        end
-        matches_from = @stream.cert_domain_matches?(@stream.remote_domain)
-        matches_from or raise SaslErrors::NotAuthorized
-      end
-
-      # Authenticate client-to-server streams using a username and password.
-      #
-      # encoded - The Base64 encoded jid and password String sent by the
-      #           client stream.
-      #
-      # Returns the authenticated User or raises SaslError if authentication failed.
-      def plain_auth(encoded)
-        jid, password = decode_credentials(encoded)
-        user = authenticate(jid, password)
-        user or raise SaslErrors::NotAuthorized
-      end
-
-      private
-
-      # Storage backends should not raise errors, but if an unexpected error
-      # occurs during authentication, convert it to a temporary-auth-failure.
-      #
-      # jid      - The user's jid String.
-      # password - The String password.
-      #
-      # Returns the authenticated User or nil if authentication failed.
-      #
-      # Raises TemoraryAuthFailure if the storage system failed.
-      def authenticate(jid, password)
-        log.info("Authenticating user: %s" % jid)
-        @stream.storage.authenticate(jid, password).tap do |user|
-          log.info("Authentication succeeded: %s" % user.jid) if user
-        end
-      rescue => e
-        log.error("Failed to authenticate: #{e.to_s}")
-        raise SaslErrors::TemporaryAuthFailure
-      end
-
-      # Return the JID and password decoded from the Base64 encoded SASL PLAIN
-      # credentials formatted as authzid\0authcid\0password.
-      #
-      #   http://tools.ietf.org/html/rfc6120#section-6.3.8
-      #   http://tools.ietf.org/html/rfc4616
-      #
-      # encoded - The Base64 encoded String from which to extract jid and password.
-      #
-      # Returns an Array of jid String and password String.
-      def decode_credentials(encoded)
-        authzid, node, password = decode64(encoded).split("\x00")
-        raise SaslErrors::NotAuthorized if node.nil? || node.empty? || password.nil? || password.empty?
-        jid = JID.new(node, @stream.domain) rescue (raise SaslErrors::NotAuthorized)
-        validate_authzid!(authzid, jid)
-        [jid, password]
-      end
-
-      # An optional SASL authzid allows a user to authenticate with one
-      # user name and password and then have their connection authorized as a
-      # different ID (the authzid). We don't support that, so raise an error if
-      # the authzid is provided and different than the authcid.
-      #
-      # Most clients don't send an authzid at all because it's optional and not
-      # widely supported. However, Strophe and Blather send a bare JID, in
-      # compliance with RFC 6120, but Smack sends just the user name as the
-      # authzid. So, take care to handle non-compliant clients here.
-      #
-      #   http://tools.ietf.org/html/rfc6120#section-6.3.8
-      #
-      # authzid - The authzid String (may be nil).
-      # jid     - The username String.
-      #
-      # Returns nothing.
-      def validate_authzid!(authzid, jid)
-        return if authzid.nil? || authzid.empty?
-        authzid.downcase!
-        smack = authzid == jid.node
-        compliant = authzid == jid.to_s
-        raise SaslErrors::InvalidAuthzid unless compliant || smack
-      end
-
-      # Decode the Base64 encoded string, raising an error for invalid data.
-      #
-      #   http://tools.ietf.org/html/rfc6120#section-13.9.1
-      #
-      # encoded - The Base64 encoded String.
-      #
-      # Returns a UTF-8 String.
-      def decode64(encoded)
-        Base64.strict_decode64(encoded).tap do |decoded|
-          decoded.force_encoding(Encoding::UTF_8)
-          raise SaslErrors::IncorrectEncoding unless decoded.valid_encoding?
-        end
-      rescue
-        raise SaslErrors::IncorrectEncoding
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server.rb
deleted file mode 100644
index 5ae4efe..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server.rb
+++ /dev/null
@@ -1,207 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    # Implements the XMPP protocol for server-to-server (s2s) streams. This
-    # serves connected streams using the jabber:server namespace. This handles
-    # both accepting incoming s2s streams and initiating outbound s2s streams
-    # to other servers.
-    class Server < Stream
-      MECHANISMS, FROM, TO = %w(EXTERNAL from to).map(&:freeze)
-
-      # Starts the connection to the remote server. When the stream is
-      # connected and ready to send stanzas it will yield to the callback
-      # block. The callback is run on the EventMachine reactor thread. The
-      # yielded stream will be nil if the remote connection failed. We need to
-      # use a background thread to avoid blocking the server on DNS SRV
-      # lookups.
-      def self.start(config, to, from, dialback_verify_key = false, &callback)
-        op = proc do
-          Resolv::DNS.open do |dns|
-            dns.getresources("_xmpp-server._tcp.#{to}", Resolv::DNS::Resource::IN::SRV)
-          end.sort! {|a,b| a.priority == b.priority ? b.weight <=> a.weight : a.priority <=> b.priority }
-        end
-        cb = proc do |srv|
-          if srv.empty?
-            srv << {target: to, port: 5269}
-            class << srv.first
-              def method_missing(name); self[name]; end
-            end
-          end
-          Server.connect(config, to, from, srv, dialback_verify_key, callback)
-        end
-        EM.defer(proc { op.call rescue [] }, cb)
-      end
-
-      def self.connect(config, to, from, srv, dialback_verify_key = false, callback)
-        if srv.empty?
-          # fiber so storage calls work properly
-          Fiber.new { callback.call(nil) }.resume
-        else
-          begin
-            rr = srv.shift
-            opts = {to: to, from: from, srv: srv, dialback_verify_key: dialback_verify_key, callback: callback}
-            EM.connect(rr.target.to_s, rr.port, Server, config, opts)
-          rescue => e
-            connect(config, to, from, srv, dialback_verify_key, callback)
-          end
-        end
-      end
-
-      attr_reader   :domain
-      attr_accessor :remote_domain
-
-      def initialize(config, options={})
-        super(config)
-        @outbound_tls_required = false
-        @peer_trusted = nil
-        @connected = false
-        @remote_domain = options[:to]
-        @domain = options[:from]
-        @srv = options[:srv]
-        @dialback_verify_key = options[:dialback_verify_key]
-        @callback = options[:callback]
-        @outbound = @remote_domain && @domain
-        start = @outbound ? Outbound::Start.new(self) : Start.new(self)
-        advance(start)
-      end
-
-      def post_init
-        super
-        send_stream_header if @outbound
-      end
-
-      def max_stanza_size
-        config[:server].max_stanza_size
-      end
-
-      def ssl_verify_peer(pem)
-        @peer_trusted = @store.trusted?(pem)
-        true
-      end
-
-      def peer_trusted?
-        !@peer_trusted.nil? && @peer_trusted
-      end
-
-      def dialback_retry?
-        return false if @peer_trusted.nil? || @peer_trusted
-        true
-      end
-
-      def ssl_handshake_completed
-        @peer_trusted = cert_domain_matches?(@remote_domain) && peer_trusted?
-      end
-
-      def outbound_tls_required?
-        @outbound_tls_required
-      end
-
-      def outbound_tls_required(required)
-        @outbound_tls_required = required
-      end
-
-      # Return an array of allowed authentication mechanisms advertised as
-      # server stream features.
-      def authentication_mechanisms
-        MECHANISMS
-      end
-
-      def stream_type
-        :server
-      end
-
-      def unbind
-        super
-        if @outbound && !@connected
-          Server.connect(config, @remote_domain, @domain, @srv, @callback)
-        end
-      end
-
-      def vhost?(domain)
-        config.vhost?(domain)
-      end
-
-      def notify_connected
-        @connected = true
-        self.callback!
-        @callback = nil
-      end
-
-      def callback!
-        @callback.call(self) if @callback
-      end
-
-      def dialback_verify_key?
-        @dialback_verify_key
-      end
-
-      def ready?
-        state.class == Server::Ready
-      end
-
-      def authoritative_dialback(node)
-        stream = self
-        Server.start(stream.config, node[FROM], node[TO], true) do |authoritative|
-          if authoritative
-            # will be closed in outbound/authoritative.rb
-            authoritative.write("<db:verify from='#{node[TO]}' id='#{stream.id}' " \
-                                "to='#{node[FROM]}'>#{node.text}</db:verify>")
-          end
-        end
-        # We need to be discoverable for the dialback connection
-        router << stream
-      rescue StanzaErrors::RemoteServerNotFound
-        write("<db:result from='#{node[TO]}' to='#{node[FROM]}' " \
-              "type='error'><error type='cancel'><item-not-found " \
-              "xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></db:result>")
-        close_connection_after_writing
-      end
-
-      def start(node)
-        if @outbound then send_stream_header; return end
-        to, from = %w[to from].map {|a| node[a] }
-        @domain, @remote_domain = to, from unless @domain
-        send_stream_header
-        raise StreamErrors::NotAuthorized if domain_change?(to, from)
-        raise StreamErrors::ImproperAddressing unless valid_address?(@domain) && valid_address?(@remote_domain)
-        raise StreamErrors::HostUnknown unless config.vhost?(@domain) || config.pubsub?(@domain) || config.component?(@domain)
-        raise StreamErrors::NotAuthorized unless config.s2s?(@remote_domain) && config.allowed?(@domain, @remote_domain)
-        raise StreamErrors::InvalidNamespace unless node.namespaces['xmlns'] == NAMESPACES[:server]
-        raise StreamErrors::InvalidNamespace unless node.namespaces['xmlns:stream'] == NAMESPACES[:stream]
-      end
-
-      private
-
-      # The `to` and `from` domain addresses set on the initial stream header
-      # must not change during stream restarts. This prevents a server from
-      # authenticating as one domain, then sending stanzas from users in a
-      # different domain.
-      #
-      # to   - The String domain the other server thinks we are.
-      # from - The String domain the other server is asserting as its identity.
-      #
-      # Returns true if the other server is misbehaving and its connection
-      #   should be closed.
-      def domain_change?(to, from)
-        to != @domain || from != @remote_domain
-      end
-
-      def send_stream_header
-        stream_id = Kit.uuid
-        update_stream_id(stream_id)
-        attrs = {
-          'xmlns'        => NAMESPACES[:server],
-          'xmlns:stream' => NAMESPACES[:stream],
-          'xmlns:db'     => NAMESPACES[:legacy_dialback],
-          'xml:lang'     => 'en',
-          'id'           => stream_id,
-          'version'      => '1.0',
-          'from'         => @domain,
-          'to'           => @remote_domain,
-        }
-        write "<stream:stream %s>" % attrs.to_a.map{|k,v| "#{k}='#{v}'"}.join(' ')
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/auth.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/auth.rb
deleted file mode 100644
index 0198541..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/auth.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class Auth < Client::Auth
-        RESULT = "result".freeze
-
-        def initialize(stream, success=FinalRestart)
-          super
-        end
-
-        def node(node)
-          if dialback_result?(node)
-            # open a new connection and verify the dialback key
-            stream.authoritative_dialback(node)
-          else
-            super
-          end
-        end
-
-        private
-
-        def dialback_result?(node)
-          node.name == RESULT && namespace(node) == NAMESPACES[:legacy_dialback]
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/auth_method.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/auth_method.rb
deleted file mode 100644
index 22331d3..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/auth_method.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class AuthMethod < State
-        VERIFY, VALID_TYPE, INVALID_TYPE = %w[verify valid invalid].map {|t| t.freeze }
-        STARTTLS, RESULT, FROM, TO = %w[starttls result from to].map {|s| s.freeze }
-        PROCEED  = %Q{<proceed xmlns="#{NAMESPACES[:tls]}"/>}.freeze
-        FAILURE  = %Q{<failure xmlns="#{NAMESPACES[:tls]}"/>}.freeze
-
-        def initialize(stream, success=AuthRestart)
-          super
-        end
-
-        def node(node)
-          if dialback_verify?(node)
-            id, from, to = %w[id from to].map {|a| node[a] }
-            key = node.text
-            outbound_stream = stream.router.stream_by_id(id)
-
-            unless outbound_stream && outbound_stream.state.is_a?(Stream::Server::Outbound::AuthDialbackResult)
-              stream.write(%Q{<db:verify from="#{to}" to=#{from} id=#{id} type="error"><error type="cancel"><item-not-found xmlns="#{NAMESPACES[:stanzas]}" /></error></db:verify>})
-              return
-            end
-
-            secret = outbound_stream.state.dialback_secret
-            type = Kit.dialback_key(secret, from, to, id) == key ? VALID_TYPE : INVALID_TYPE
-            stream.write(%Q{<db:verify from="#{to}" to="#{from}" id="#{id}" type="#{type}" />})
-            stream.close_connection_after_writing
-          elsif starttls?(node)
-            if stream.encrypt?
-              stream.write(PROCEED)
-              stream.encrypt
-              stream.reset
-              advance
-            else
-              stream.write(FAILURE)
-              stream.write('</stream:stream>')
-              stream.close_connection_after_writing
-            end
-          elsif dialback_result?(node)
-            # open a new connection and verify the dialback key
-            stream.authoritative_dialback(node)
-          else
-            raise StreamErrors::NotAuthorized
-          end
-        end
-
-        private
-
-        def starttls?(node)
-          node.name == STARTTLS && namespace(node) == NAMESPACES[:tls]
-        end
-
-        def dialback_verify?(node)
-          node.name == VERIFY && namespace(node) == NAMESPACES[:legacy_dialback]
-        end
-
-        def dialback_result?(node)
-          node.name == RESULT && namespace(node) == NAMESPACES[:legacy_dialback]
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/auth_restart.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/auth_restart.rb
deleted file mode 100644
index f5703af..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/auth_restart.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class AuthRestart < State
-        def initialize(stream, success=Auth)
-          super
-        end
-
-        def node(node)
-          raise StreamErrors::NotAuthorized unless stream?(node)
-          stream.start(node)
-          doc = Document.new
-          features = doc.create_element('stream:features')
-          if stream.dialback_retry?
-            if stream.vhost.force_s2s_encryption?
-              stream.close_connection
-              return
-            end
-            @success = AuthMethod
-            features << doc.create_element('dialback') do |db|
-              db.default_namespace = NAMESPACES[:dialback]
-            end
-          else
-            features << doc.create_element('mechanisms') do |parent|
-              parent.default_namespace = NAMESPACES[:sasl]
-              stream.authentication_mechanisms.each do |name|
-                parent << doc.create_element('mechanism', name)
-              end
-            end
-          end
-          stream.write(features)
-          advance
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/final_restart.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/final_restart.rb
deleted file mode 100644
index 1c96f45..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/final_restart.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class FinalRestart < State
-        def initialize(stream, success=Ready)
-          super
-        end
-
-        def node(node)
-          raise StreamErrors::NotAuthorized unless stream?(node)
-          stream.start(node)
-          stream.write('<stream:features/>')
-          stream.router << stream
-          advance
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth.rb
deleted file mode 100644
index b0567db..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class Outbound
-        class Auth < State
-          REQUIRED = 'required'.freeze
-          FEATURES = 'features'.freeze
-
-          def initialize(stream, success=AuthDialbackResult)
-            super
-          end
-
-          def node(node)
-            # We have to remember tls_require for
-            # closing or restarting the stream
-            stream.outbound_tls_required(tls_required?(node))
-
-            if stream.dialback_verify_key?
-              @success = Authoritative
-              stream.callback!
-              advance
-            elsif dialback?(node)
-              secret = Kit.auth_token
-              dialback_key = Kit.dialback_key(secret, stream.remote_domain, stream.domain, stream.id)
-              stream.write("<db:result xmlns:db='#{NAMESPACES[:legacy_dialback]}' " \
-                "from='#{stream.domain}' to='#{stream.remote_domain}'>#{dialback_key}</db:result>")
-              advance
-              stream.router << stream # We need to be discoverable for the dialback connection
-              stream.state.dialback_secret = secret
-            elsif tls?(node)
-              @success = TLSResult
-              stream.write("<starttls xmlns='#{NAMESPACES[:tls]}'/>")
-              advance
-            else
-              raise StreamErrors::NotAuthorized
-            end
-          end
-
-          private
-
-          def tls_required?(node)
-            child = node.xpath('ns:starttls', 'ns' => NAMESPACES[:tls]).children.first
-            child && child.name == REQUIRED
-          end
-
-          def dialback?(node)
-            dialback = node.xpath('ns:dialback', 'ns' => NAMESPACES[:dialback]).any?
-            features?(node) && dialback && !tls_required?(node)
-          end
-
-          def tls?(node)
-            tls = node.xpath('ns:starttls', 'ns' => NAMESPACES[:tls]).any?
-            features?(node) && tls
-          end
-
-          def features?(node)
-            node.name == FEATURES && namespace(node) == NAMESPACES[:stream]
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_dialback_result.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_dialback_result.rb
deleted file mode 100644
index 0e2848b..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_dialback_result.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class Outbound
-        class AuthDialbackResult < State
-          RESULT, VALID, INVALID, TYPE = %w[result valid invalid type].map {|s| s.freeze }
-
-          attr_accessor :dialback_secret
-
-          def initialize(stream, success=Ready)
-            super
-          end
-
-          def node(node)
-            raise StreamErrors::NotAuthorized unless result?(node)
-
-            case node[TYPE]
-            when VALID
-              advance
-              stream.notify_connected
-            when INVALID
-              stream.close_connection
-            else
-              raise StreamErrors::NotAuthorized
-            end
-          end
-
-          private
-
-          def result?(node)
-            node.name == RESULT && namespace(node) == NAMESPACES[:legacy_dialback]
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_external.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_external.rb
deleted file mode 100644
index 1575fdb..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_external.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class Outbound
-        class AuthExternal < State
-          def initialize(stream, success=AuthExternalResult)
-            super
-          end
-
-          def node(node)
-            raise StreamErrors::NotAuthorized unless external?(node)
-            authzid = Base64.strict_encode64(stream.domain)
-            stream.write(%Q{<auth xmlns="#{NAMESPACES[:sasl]}" mechanism="EXTERNAL">#{authzid}</auth>})
-            advance
-          end
-
-          private
-
-          def external?(node)
-            external = node.xpath("ns:mechanisms/ns:mechanism[text()='EXTERNAL']", 'ns' => NAMESPACES[:sasl]).any?
-            features?(node) && external
-          end
-
-          def features?(node)
-            node.name == 'features' && namespace(node) == NAMESPACES[:stream]
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_external_result.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_external_result.rb
deleted file mode 100644
index 795c935..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_external_result.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class Outbound
-        class AuthExternalResult < State
-          SUCCESS = 'success'.freeze
-          FAILURE = 'failure'.freeze
-
-          def initialize(stream, success=FinalRestart)
-            super
-          end
-
-          def node(node)
-            raise StreamErrors::NotAuthorized unless namespace(node) == NAMESPACES[:sasl]
-            case node.name
-            when SUCCESS
-              stream.start(node)
-              stream.reset
-              advance
-            when FAILURE
-              stream.close_connection
-            else
-              raise StreamErrors::NotAuthorized
-            end
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_restart.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_restart.rb
deleted file mode 100644
index 9a04b62..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/auth_restart.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class Outbound
-        class AuthRestart < State
-          def initialize(stream, success=AuthExternal)
-            super
-          end
-
-          def node(node)
-            raise StreamErrors::NotAuthorized unless stream?(node)
-            if stream.dialback_retry?
-              if stream.outbound_tls_required?
-                stream.close_connection
-                return
-              end
-              @success = Auth
-            end
-            advance
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/authoritative.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/authoritative.rb
deleted file mode 100644
index 05c5422..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/authoritative.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class Outbound
-        class Authoritative < State
-          VALID, INVALID, ERROR, TYPE = %w[valid invalid error type]
-          VERIFY, ID, FROM, TO = %w[verify id from to].map {|s| s.freeze }
-
-          def initialize(stream, success=nil)
-            super
-          end
-
-          def node(node)
-            raise StreamErrors::NotAuthorized unless authoritative?(node)
-
-            case node[TYPE]
-            when VALID
-              @inbound.write("<db:result xmlns:db='#{NAMESPACES[:legacy_dialback]}' " \
-                "from='#{node[TO]}' to='#{node[FROM]}' type='#{node[TYPE]}'/>")
-              @inbound.advance(Server::Ready.new(@inbound))
-              @inbound.notify_connected
-            when INVALID
-              @inbound.write("<db:result xmlns:db='#{NAMESPACES[:legacy_dialback]}' " \
-                "from='#{node[TO]}' to='#{node[FROM]}' type='#{node[TYPE]}'/>")
-              @inbound.close_connection_after_writing
-            else
-              @inbound.write("<db:result xmlns:db='#{NAMESPACES[:legacy_dialback]}' " \
-                "from='#{node[TO]}' to='#{node[FROM]}' type='#{ERROR}'>" \
-                "<error type='cancel'><item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" \
-                "</error></db:result>")
-              @inbound.close_connection_after_writing
-            end
-            stream.close_connection
-          end
-
-          private
-
-          def authoritative?(node)
-            @inbound = stream.router.stream_by_id(node[ID])
-            node.name == VERIFY && namespace(node) == NAMESPACES[:legacy_dialback] && !@inbound.nil?
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/final_features.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/final_features.rb
deleted file mode 100644
index 0848533..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/final_features.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class Outbound
-        class FinalFeatures < State
-          def initialize(stream, success=Server::Ready)
-            super
-          end
-
-          def node(node)
-            raise StreamErrors::NotAuthorized unless empty_features?(node)
-            stream.router << stream
-            advance
-            stream.notify_connected
-          end
-
-          private
-
-          def empty_features?(node)
-            node.name == 'features' && namespace(node) == NAMESPACES[:stream] && node.elements.empty?
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/final_restart.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/final_restart.rb
deleted file mode 100644
index 46ba30b..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/final_restart.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class Outbound
-        class FinalRestart < State
-          def initialize(stream, success=FinalFeatures)
-            super
-          end
-
-          def node(node)
-            raise StreamErrors::NotAuthorized unless stream?(node)
-            advance
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/start.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/start.rb
deleted file mode 100644
index 4677278..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/start.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class Outbound
-        class Start < State
-          def initialize(stream, success=Auth)
-            super
-          end
-
-          def node(node)
-            raise StreamErrors::NotAuthorized unless stream?(node)
-            advance
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/tls_result.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/tls_result.rb
deleted file mode 100644
index 6467a2d..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/outbound/tls_result.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class Outbound
-        class TLSResult < State
-          NS      = NAMESPACES[:tls]
-          PROCEED = 'proceed'.freeze
-          FAILURE = 'failure'.freeze
-
-          def initialize(stream, success=AuthRestart)
-            super
-          end
-
-          def node(node)
-            raise StreamErrors::NotAuthorized unless namespace(node) == NS
-            case node.name
-            when PROCEED
-              stream.encrypt
-              stream.start(node)
-              stream.reset
-              advance
-            when FAILURE
-              stream.close_connection
-            else
-              raise StreamErrors::NotAuthorized
-            end
-          end
-        end
-      end
-    end
-  end
-end
\ No newline at end of file
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/ready.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/ready.rb
deleted file mode 100644
index aa538e5..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/ready.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class Ready < State
-        def node(node)
-          stanza = to_stanza(node)
-          raise StreamErrors::UnsupportedStanzaType unless stanza
-          to, from = stanza.validate_to, stanza.validate_from
-          raise StreamErrors::ImproperAddressing unless to && from
-          raise StreamErrors::InvalidFrom unless from.domain == stream.remote_domain
-          raise StreamErrors::HostUnknown unless to.domain == stream.domain
-          stream.user = User.new(jid: from)
-          if stanza.local? || stanza.to_pubsub_domain?
-            stanza.process
-          else
-            stanza.route
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/start.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/start.rb
deleted file mode 100644
index 876f5de..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/server/start.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-    class Server
-      class Start < State
-        FROM = "from".freeze
-
-        def initialize(stream, success=AuthMethod)
-          super
-        end
-
-        def node(node)
-          raise StreamErrors::NotAuthorized unless stream?(node)
-          stream.start(node)
-          doc = Document.new
-          features = doc.create_element('stream:features', 'xmlns:stream' => NAMESPACES[:stream]) do |el|
-            unless stream.dialback_retry?
-              el << doc.create_element('starttls') do |tls|
-                tls.default_namespace = NAMESPACES[:tls]
-                tls << doc.create_element('required') if force_s2s_encryption?
-              end
-            end
-            el << doc.create_element('dialback') do |db|
-              db.default_namespace = NAMESPACES[:dialback]
-            end
-          end
-          stream.write(features)
-          advance
-        end
-
-        private
-
-        def force_s2s_encryption?
-          stream.vhost.force_s2s_encryption?
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/state.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/state.rb
deleted file mode 100644
index 167ff59..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/stream/state.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class Stream
-
-    # The base class of Stream state machines. States know how to process XML
-    # nodes and advance to their next valid state or fail the stream.
-    class State
-      include Nokogiri::XML
-      include Vines::Log
-      include Vines::Node
-
-      attr_accessor :stream
-
-      def initialize(stream, success=nil)
-        @stream, @success = stream, success
-      end
-
-      def node(node)
-        raise 'subclass must implement'
-      end
-
-      def ==(state)
-        self.class == state.class
-      end
-
-      def eql?(state)
-        state.is_a?(State) && self == state
-      end
-
-      def hash
-        self.class.hash
-      end
-
-      private
-
-      def advance
-        stream.advance(@success.new(stream))
-      end
-
-      def to_stanza(node)
-        super(node, stream)
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/token_bucket.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/token_bucket.rb
deleted file mode 100644
index 87becf3..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/token_bucket.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-
-  # The token bucket algorithm is useful for rate limiting.
-  # Before an operation can be completed, a token is taken from
-  # the bucket.  If no tokens are available, the operation fails.
-  # The bucket is refilled with tokens at the maximum allowed rate
-  # of operations.
-  class TokenBucket
-
-    # Create a full bucket with `capacity` number of tokens to be filled
-    # at the given rate of tokens/second.
-    #
-    # capacity - The Fixnum maximum number of tokens the bucket can hold.
-    # rate     - The Fixnum number of tokens per second at which the bucket is
-    #            refilled.
-    def initialize(capacity, rate)
-      raise ArgumentError.new('capacity must be > 0') unless capacity > 0
-      raise ArgumentError.new('rate must be > 0') unless rate > 0
-      @capacity = capacity
-      @tokens = capacity
-      @rate = rate
-      @timestamp = Time.new
-    end
-
-    # Remove tokens from the bucket if it's full enough. There's no way, or
-    # need, to add tokens to the bucket. It refills over time.
-    #
-    # tokens - The Fixnum number of tokens to attempt to take from the bucket.
-    #
-    # Returns true if the bucket contains enough tokens to take, false if the
-    # bucket isn't full enough to satisy the request.
-    def take(tokens)
-      raise ArgumentError.new('tokens must be > 0') unless tokens > 0
-      tokens <= fill ? @tokens -= tokens : false
-    end
-
-    private
-
-    # Add tokens to the bucket at the `rate` provided in the constructor. This
-    # fills the bucket slowly over time.
-    #
-    # Returns the Fixnum number of tokens left in the bucket.
-    def fill
-      if @tokens < @capacity
-        now = Time.new
-        @tokens += (@rate * (now - @timestamp)).round
-        @tokens = @capacity if @tokens > @capacity
-        @timestamp = now
-      end
-      @tokens
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/user.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/user.rb
deleted file mode 100644
index 2d0253d..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/user.rb
+++ /dev/null
@@ -1,125 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  class User
-    include Comparable
-
-    attr_accessor :name, :token, :password, :roster
-    attr_reader :jid
-
-    def initialize(args={})
-      @jid = JID.new(args[:jid])
-      raise ArgumentError, 'invalid jid' if @jid.empty?
-
-      @name = args[:name]
-      @password = args[:password]
-      @token = args[:token]
-      @roster = args[:roster] || []
-    end
-
-    def <=>(user)
-      user.is_a?(User) ? self.jid.to_s <=> user.jid.to_s : nil
-    end
-
-    alias :eql? :==
-
-    def hash
-      jid.to_s.hash
-    end
-
-    # Update this user's information from the given user object.
-    def update_from(user)
-      @name = user.name
-      @password = user.password
-      @token = user.token
-      @roster = user.roster.map {|c| c.clone }
-    end
-
-    # Return true if the jid is on this user's roster.
-    def contact?(jid)
-      !contact(jid).nil?
-    end
-
-    # Returns the contact with this jid or nil if not found.
-    def contact(jid)
-      bare = JID.new(jid).bare
-      @roster.find {|c| c.jid.bare == bare }
-    end
-
-    # Returns true if the user is subscribed to this contact's
-    # presence updates.
-    def subscribed_to?(jid)
-      contact = contact(jid)
-      contact && contact.subscribed_to?
-    end
-
-    # Returns true if the user has a presence subscription from this contact.
-    # The contact is subscribed to this user's presence.
-    def subscribed_from?(jid)
-      contact = contact(jid)
-      contact && contact.subscribed_from?
-    end
-
-    # Removes the contact with this jid from the user's roster.
-    def remove_contact(jid)
-      bare = JID.new(jid).bare
-      @roster.reject! {|c| c.jid.bare == bare }
-    end
-
-    # Returns a list of the contacts to which this user has
-    # successfully subscribed.
-    def subscribed_to_contacts
-      @roster.select {|c| c.subscribed_to? }
-    end
-
-    # Returns a list of the contacts that are subscribed to this user's
-    # presence updates.
-    def subscribed_from_contacts
-      @roster.select {|c| c.subscribed_from? }
-    end
-
-    # Update the contact's jid on this user's roster to signal that this user
-    # has requested the contact's permission to receive their presence updates.
-    def request_subscription(jid)
-      unless contact = contact(jid)
-        contact = Contact.new(:jid => jid)
-        @roster << contact
-      end
-      contact.ask = 'subscribe' if %w[none from].include?(contact.subscription)
-    end
-
-    # Add the user's jid to this contact's roster with a subscription state of
-    # 'from.' This signals that this contact has approved a user's subscription.
-    def add_subscription_from(jid)
-      unless contact = contact(jid)
-        contact = Contact.new(:jid => jid)
-        @roster << contact
-      end
-      contact.subscribe_from
-    end
-
-    def remove_subscription_to(jid)
-      if contact = contact(jid)
-        contact.unsubscribe_to
-      end
-    end
-
-    def remove_subscription_from(jid)
-      if contact = contact(jid)
-        contact.unsubscribe_from
-      end
-    end
-
-    # Returns this user's roster contacts as an iq query element.
-    def to_roster_xml(id)
-      doc = Nokogiri::XML::Document.new
-      doc.create_element('iq', 'id' => id, 'type' => 'result') do |el|
-        el << doc.create_element('query', 'xmlns' => 'jabber:iq:roster') do |query|
-          @roster.sort!.each do |contact|
-            query << contact.to_roster_xml
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/version.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/version.rb
deleted file mode 100644
index 422c464..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/version.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-  # vines forked version 0.4.10
-  VERSION = '0.2.0.develop.4'
-end
diff --git a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/xmpp_server.rb b/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/xmpp_server.rb
deleted file mode 100644
index b59c3a5..0000000
--- a/debian/ruby-diaspora-vines/usr/lib/ruby/vendor_ruby/vines/xmpp_server.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# encoding: UTF-8
-
-module Vines
-
-  # The main starting point for the XMPP server process. Starts the
-  # EventMachine processing loop and registers the XMPP protocol handler
-  # with the ports defined in the server configuration file.
-  class XmppServer
-    include Vines::Log
-
-    def initialize(config)
-      @config = config
-    end
-
-    def start
-      log.info('XMPP server started')
-      at_exit { log.fatal('XMPP server stopped') }
-      EM.epoll
-      EM.kqueue
-      EM.run do
-        @config.ports.each {|port| port.start }
-      end
-    end
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/share/doc/ruby-diaspora-vines/changelog.Debian.gz b/debian/ruby-diaspora-vines/usr/share/doc/ruby-diaspora-vines/changelog.Debian.gz
deleted file mode 100644
index 3cecdb5..0000000
Binary files a/debian/ruby-diaspora-vines/usr/share/doc/ruby-diaspora-vines/changelog.Debian.gz and /dev/null differ
diff --git a/debian/ruby-diaspora-vines/usr/share/doc/ruby-diaspora-vines/copyright b/debian/ruby-diaspora-vines/usr/share/doc/ruby-diaspora-vines/copyright
deleted file mode 100644
index be8c2ed..0000000
--- a/debian/ruby-diaspora-vines/usr/share/doc/ruby-diaspora-vines/copyright
+++ /dev/null
@@ -1,31 +0,0 @@
-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
-Upstream-Name: diaspora-vines
-Source: https://github.com/diaspora/vines
-
-Files: *
-Copyright: 2010-2014 Negative Code
-License: Expat
-
-Files: debian/*
-Copyright: 2016 Sudheesh Shetty <sudheeshshetty at gmail.com>
-License: Expat
-Comment: the Debian packaging is licensed under the same terms as the original package.
-
-License: Expat
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- .
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
- .
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
diff --git a/debian/ruby-diaspora-vines/usr/share/rubygems-integration/1.9.1/specifications/diaspora-vines-0.2.0.develop.4.gemspec b/debian/ruby-diaspora-vines/usr/share/rubygems-integration/1.9.1/specifications/diaspora-vines-0.2.0.develop.4.gemspec
deleted file mode 100644
index cc6aaf8..0000000
--- a/debian/ruby-diaspora-vines/usr/share/rubygems-integration/1.9.1/specifications/diaspora-vines-0.2.0.develop.4.gemspec
+++ /dev/null
@@ -1,66 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = "diaspora-vines"
-  s.version = "0.2.0.develop.4"
-
-  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
-  s.authors = ["David Graham", "Lukas Matt"]
-  s.date = "2015-10-10"
-  s.description = "Diaspora-vines is a Vines fork build for diaspora integration. DO NOT use it unless you know what you are doing!"
-  s.email = ["david at negativecode.com", "lukas at zauberstuhl.de"]
-  s.executables = ["vines"]
-  s.files = ["Gemfile", "LICENSE", "README.md", "Rakefile", "bin/vines", "conf/certs/README", "conf/certs/ca-bundle.crt", "conf/config.rb", "lib/vines.rb", "lib/vines/cli.rb", "lib/vines/cluster.rb", "lib/vines/cluster/connection.rb", "lib/vines/cluster/publisher.rb", "lib/vines/cluster/pubsub.rb", "lib/vines/cluster/sessions.rb", "lib/vines/cluster/subscriber.rb", "lib/vines/command/cert.rb", "lib/vines/command/restart.rb", "lib/vines/command/start.rb", "lib/vines/command/stop.rb", "lib [...]
-  s.homepage = "https://diasporafoundation.org"
-  s.licenses = ["MIT"]
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new(">= 1.9.3")
-  s.rubygems_version = "1.8.23"
-  s.summary = "Diaspora-vines is a Vines fork build for diaspora integration."
-  s.test_files = ["test/error_test.rb", "test/test_helper.rb", "test/storage/local_test.rb", "test/storage/mock_redis.rb", "test/storage/sql_schema.rb", "test/storage/sql_test.rb", "test/storage/null_test.rb", "test/storage/storage_tests.rb", "test/ext/nokogiri.rb", "test/contact_test.rb", "test/store_test.rb", "test/cluster/sessions_test.rb", "test/cluster/publisher_test.rb", "test/cluster/subscriber_test.rb", "test/config_test.rb", "test/stream/parser_test.rb", "test/stream/client/read [...]
-
-  if s.respond_to? :specification_version then
-    s.specification_version = 4
-
-    if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<bcrypt>, ["~> 3.1"])
-      s.add_runtime_dependency(%q<em-hiredis>, ["~> 0.3.0"])
-      s.add_runtime_dependency(%q<eventmachine>, ["~> 1.0.8"])
-      s.add_runtime_dependency(%q<http_parser.rb>, ["~> 0.6"])
-      s.add_runtime_dependency(%q<nokogiri>, ["~> 1.6"])
-      s.add_runtime_dependency(%q<activerecord>, ["~> 4.1"])
-      s.add_development_dependency(%q<pronto>, ["~> 0.4.2"])
-      s.add_development_dependency(%q<pronto-rubocop>, ["~> 0.4.4"])
-      s.add_development_dependency(%q<rails>, ["~> 4.1"])
-      s.add_development_dependency(%q<sqlite3>, ["~> 1.3.9"])
-      s.add_development_dependency(%q<minitest>, ["~> 5.8"])
-      s.add_development_dependency(%q<rake>, ["~> 10.3"])
-    else
-      s.add_dependency(%q<bcrypt>, ["~> 3.1"])
-      s.add_dependency(%q<em-hiredis>, ["~> 0.3.0"])
-      s.add_dependency(%q<eventmachine>, ["~> 1.0.8"])
-      s.add_dependency(%q<http_parser.rb>, ["~> 0.6"])
-      s.add_dependency(%q<nokogiri>, ["~> 1.6"])
-      s.add_dependency(%q<activerecord>, ["~> 4.1"])
-      s.add_dependency(%q<pronto>, ["~> 0.4.2"])
-      s.add_dependency(%q<pronto-rubocop>, ["~> 0.4.4"])
-      s.add_dependency(%q<rails>, ["~> 4.1"])
-      s.add_dependency(%q<sqlite3>, ["~> 1.3.9"])
-      s.add_dependency(%q<minitest>, ["~> 5.8"])
-      s.add_dependency(%q<rake>, ["~> 10.3"])
-    end
-  else
-    s.add_dependency(%q<bcrypt>, ["~> 3.1"])
-    s.add_dependency(%q<em-hiredis>, ["~> 0.3.0"])
-    s.add_dependency(%q<eventmachine>, ["~> 1.0.8"])
-    s.add_dependency(%q<http_parser.rb>, ["~> 0.6"])
-    s.add_dependency(%q<nokogiri>, ["~> 1.6"])
-    s.add_dependency(%q<activerecord>, ["~> 4.1"])
-    s.add_dependency(%q<pronto>, ["~> 0.4.2"])
-    s.add_dependency(%q<pronto-rubocop>, ["~> 0.4.4"])
-    s.add_dependency(%q<rails>, ["~> 4.1"])
-    s.add_dependency(%q<sqlite3>, ["~> 1.3.9"])
-    s.add_dependency(%q<minitest>, ["~> 5.8"])
-    s.add_dependency(%q<rake>, ["~> 10.3"])
-  end
-end
diff --git a/debian/ruby-diaspora-vines/usr/share/rubygems-integration/2.0/specifications/diaspora-vines-0.2.0.develop.4.gemspec b/debian/ruby-diaspora-vines/usr/share/rubygems-integration/2.0/specifications/diaspora-vines-0.2.0.develop.4.gemspec
deleted file mode 100644
index cc6aaf8..0000000
--- a/debian/ruby-diaspora-vines/usr/share/rubygems-integration/2.0/specifications/diaspora-vines-0.2.0.develop.4.gemspec
+++ /dev/null
@@ -1,66 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
-  s.name = "diaspora-vines"
-  s.version = "0.2.0.develop.4"
-
-  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
-  s.authors = ["David Graham", "Lukas Matt"]
-  s.date = "2015-10-10"
-  s.description = "Diaspora-vines is a Vines fork build for diaspora integration. DO NOT use it unless you know what you are doing!"
-  s.email = ["david at negativecode.com", "lukas at zauberstuhl.de"]
-  s.executables = ["vines"]
-  s.files = ["Gemfile", "LICENSE", "README.md", "Rakefile", "bin/vines", "conf/certs/README", "conf/certs/ca-bundle.crt", "conf/config.rb", "lib/vines.rb", "lib/vines/cli.rb", "lib/vines/cluster.rb", "lib/vines/cluster/connection.rb", "lib/vines/cluster/publisher.rb", "lib/vines/cluster/pubsub.rb", "lib/vines/cluster/sessions.rb", "lib/vines/cluster/subscriber.rb", "lib/vines/command/cert.rb", "lib/vines/command/restart.rb", "lib/vines/command/start.rb", "lib/vines/command/stop.rb", "lib [...]
-  s.homepage = "https://diasporafoundation.org"
-  s.licenses = ["MIT"]
-  s.require_paths = ["lib"]
-  s.required_ruby_version = Gem::Requirement.new(">= 1.9.3")
-  s.rubygems_version = "1.8.23"
-  s.summary = "Diaspora-vines is a Vines fork build for diaspora integration."
-  s.test_files = ["test/error_test.rb", "test/test_helper.rb", "test/storage/local_test.rb", "test/storage/mock_redis.rb", "test/storage/sql_schema.rb", "test/storage/sql_test.rb", "test/storage/null_test.rb", "test/storage/storage_tests.rb", "test/ext/nokogiri.rb", "test/contact_test.rb", "test/store_test.rb", "test/cluster/sessions_test.rb", "test/cluster/publisher_test.rb", "test/cluster/subscriber_test.rb", "test/config_test.rb", "test/stream/parser_test.rb", "test/stream/client/read [...]
-
-  if s.respond_to? :specification_version then
-    s.specification_version = 4
-
-    if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<bcrypt>, ["~> 3.1"])
-      s.add_runtime_dependency(%q<em-hiredis>, ["~> 0.3.0"])
-      s.add_runtime_dependency(%q<eventmachine>, ["~> 1.0.8"])
-      s.add_runtime_dependency(%q<http_parser.rb>, ["~> 0.6"])
-      s.add_runtime_dependency(%q<nokogiri>, ["~> 1.6"])
-      s.add_runtime_dependency(%q<activerecord>, ["~> 4.1"])
-      s.add_development_dependency(%q<pronto>, ["~> 0.4.2"])
-      s.add_development_dependency(%q<pronto-rubocop>, ["~> 0.4.4"])
-      s.add_development_dependency(%q<rails>, ["~> 4.1"])
-      s.add_development_dependency(%q<sqlite3>, ["~> 1.3.9"])
-      s.add_development_dependency(%q<minitest>, ["~> 5.8"])
-      s.add_development_dependency(%q<rake>, ["~> 10.3"])
-    else
-      s.add_dependency(%q<bcrypt>, ["~> 3.1"])
-      s.add_dependency(%q<em-hiredis>, ["~> 0.3.0"])
-      s.add_dependency(%q<eventmachine>, ["~> 1.0.8"])
-      s.add_dependency(%q<http_parser.rb>, ["~> 0.6"])
-      s.add_dependency(%q<nokogiri>, ["~> 1.6"])
-      s.add_dependency(%q<activerecord>, ["~> 4.1"])
-      s.add_dependency(%q<pronto>, ["~> 0.4.2"])
-      s.add_dependency(%q<pronto-rubocop>, ["~> 0.4.4"])
-      s.add_dependency(%q<rails>, ["~> 4.1"])
-      s.add_dependency(%q<sqlite3>, ["~> 1.3.9"])
-      s.add_dependency(%q<minitest>, ["~> 5.8"])
-      s.add_dependency(%q<rake>, ["~> 10.3"])
-    end
-  else
-    s.add_dependency(%q<bcrypt>, ["~> 3.1"])
-    s.add_dependency(%q<em-hiredis>, ["~> 0.3.0"])
-    s.add_dependency(%q<eventmachine>, ["~> 1.0.8"])
-    s.add_dependency(%q<http_parser.rb>, ["~> 0.6"])
-    s.add_dependency(%q<nokogiri>, ["~> 1.6"])
-    s.add_dependency(%q<activerecord>, ["~> 4.1"])
-    s.add_dependency(%q<pronto>, ["~> 0.4.2"])
-    s.add_dependency(%q<pronto-rubocop>, ["~> 0.4.4"])
-    s.add_dependency(%q<rails>, ["~> 4.1"])
-    s.add_dependency(%q<sqlite3>, ["~> 1.3.9"])
-    s.add_dependency(%q<minitest>, ["~> 5.8"])
-    s.add_dependency(%q<rake>, ["~> 10.3"])
-  end
-end
diff --git a/vines.log b/vines.log
deleted file mode 100644
index deb56da..0000000
--- a/vines.log
+++ /dev/null
@@ -1,130 +0,0 @@
-E, [2016-02-12T23:47:55.085846 #25416] ERROR -- : Thread pool operation failed: Unknown key: to
-D, [2016-02-12T23:48:06.486896 #25629] DEBUG -- :    (143.3ms)  CREATE TABLE "people" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "guid" varchar(255) NOT NULL, "url" text NOT NULL, "diaspora_handle" varchar(255) NOT NULL, "serialized_public_key" text NOT NULL, "owner_id" integer, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "closed_account" boolean DEFAULT 'f', "fetch_status" integer DEFAULT 0) 
-D, [2016-02-12T23:48:06.577985 #25629] DEBUG -- :    (89.6ms)  CREATE UNIQUE INDEX "index_people_on_diaspora_handle" ON "people" ("diaspora_handle")
-D, [2016-02-12T23:48:06.645059 #25629] DEBUG -- :    (65.5ms)  CREATE UNIQUE INDEX "index_people_on_guid" ON "people" ("guid")
-D, [2016-02-12T23:48:06.712373 #25629] DEBUG -- :    (65.2ms)  CREATE UNIQUE INDEX "index_people_on_owner_id" ON "people" ("owner_id")
-D, [2016-02-12T23:48:06.779652 #25629] DEBUG -- :    (63.4ms)  CREATE TABLE "profiles" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "diaspora_handle" varchar(255), "first_name" varchar(127), "last_name" varchar(127), "image_url" varchar(255), "image_url_small" varchar(255), "image_url_medium" varchar(255), "birthday" date, "gender" varchar(255), "bio" text, "searchable" boolean DEFAULT 't' NOT NULL, "person_id" integer NOT NULL, "created_at" datetime NOT NULL, "upda [...]
-D, [2016-02-12T23:48:06.846775 #25629] DEBUG -- :    (65.6ms)  CREATE INDEX "index_profiles_on_full_name_and_searchable" ON "profiles" ("full_name", "searchable")
-D, [2016-02-12T23:48:06.924884 #25629] DEBUG -- :    (75.4ms)  CREATE INDEX "index_profiles_on_full_name" ON "profiles" ("full_name")
-D, [2016-02-12T23:48:07.025226 #25629] DEBUG -- :    (98.2ms)  CREATE INDEX "index_profiles_on_person_id" ON "profiles" ("person_id")
-D, [2016-02-12T23:48:07.125525 #25629] DEBUG -- :    (98.3ms)  CREATE TABLE "aspects" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255) NOT NULL, "user_id" integer NOT NULL, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "contacts_visible" boolean DEFAULT 't' NOT NULL, "order_id" integer, "chat_enabled" boolean DEFAULT 'f') 
-D, [2016-02-12T23:48:07.238834 #25629] DEBUG -- :    (112.4ms)  CREATE INDEX "index_aspects_on_user_id_and_contacts_visible" ON "aspects" ("user_id", "contacts_visible")
-D, [2016-02-12T23:48:07.360023 #25629] DEBUG -- :    (120.2ms)  CREATE INDEX "index_aspects_on_user_id" ON "aspects" ("user_id")
-D, [2016-02-12T23:48:07.484572 #25629] DEBUG -- :    (122.6ms)  CREATE TABLE "aspect_memberships" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "aspect_id" integer NOT NULL, "contact_id" integer NOT NULL, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
-D, [2016-02-12T23:48:07.595908 #25629] DEBUG -- :    (109.9ms)  CREATE UNIQUE INDEX "index_aspect_memberships_on_aspect_id_and_contact_id" ON "aspect_memberships" ("aspect_id", "contact_id")
-D, [2016-02-12T23:48:07.708083 #25629] DEBUG -- :    (110.7ms)  CREATE INDEX "index_aspect_memberships_on_aspect_id" ON "aspect_memberships" ("aspect_id")
-D, [2016-02-12T23:48:07.817086 #25629] DEBUG -- :    (106.8ms)  CREATE INDEX "index_aspect_memberships_on_contact_id" ON "aspect_memberships" ("contact_id")
-D, [2016-02-12T23:48:07.928633 #25629] DEBUG -- :    (109.8ms)  CREATE TABLE "contacts" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer NOT NULL, "person_id" integer NOT NULL, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "sharing" boolean DEFAULT 'f' NOT NULL, "receiving" boolean DEFAULT 'f' NOT NULL) 
-D, [2016-02-12T23:48:08.040263 #25629] DEBUG -- :    (110.4ms)  CREATE INDEX "index_contacts_on_person_id" ON "contacts" ("person_id")
-D, [2016-02-12T23:48:08.154332 #25629] DEBUG -- :    (111.8ms)  CREATE UNIQUE INDEX "index_contacts_on_user_id_and_person_id" ON "contacts" ("user_id", "person_id")
-D, [2016-02-12T23:48:08.254694 #25629] DEBUG -- :    (98.3ms)  CREATE TABLE "chat_contacts" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer NOT NULL, "jid" varchar(255) NOT NULL, "name" varchar(255), "ask" varchar(128), "subscription" varchar(128) NOT NULL, "groups" text) 
-D, [2016-02-12T23:48:08.321845 #25629] DEBUG -- :    (65.8ms)  CREATE UNIQUE INDEX "index_chat_contacts_on_user_id_and_jid" ON "chat_contacts" ("user_id", "jid")
-D, [2016-02-12T23:48:08.388890 #25629] DEBUG -- :    (64.9ms)  CREATE TABLE "chat_fragments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer NOT NULL, "root" varchar(256) NOT NULL, "namespace" varchar(256) NOT NULL, "xml" text NOT NULL) 
-D, [2016-02-12T23:48:08.489381 #25629] DEBUG -- :    (99.1ms)  CREATE UNIQUE INDEX "index_chat_fragments_on_user_id" ON "chat_fragments" ("user_id")
-D, [2016-02-12T23:48:08.600853 #25629] DEBUG -- :    (109.2ms)  CREATE TABLE "chat_offline_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from" varchar(255) NOT NULL, "to" varchar(255) NOT NULL, "message" text NOT NULL, "created_at" datetime NOT NULL) 
-D, [2016-02-12T23:48:08.733871 #25629] DEBUG -- :    (129.6ms)  CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "username" varchar(255), "serialized_private_key" text, "getting_started" boolean DEFAULT 't' NOT NULL, "disable_mail" boolean DEFAULT 'f' NOT NULL, "language" varchar(255), "email" varchar(255) DEFAULT '' NOT NULL, "encrypted_password" varchar(255) DEFAULT '' NOT NULL, "invitation_token" varchar(60), "invitation_sent_at" datetime, "reset_pas [...]
-D, [2016-02-12T23:48:08.878627 #25629] DEBUG -- :    (143.4ms)  CREATE UNIQUE INDEX "index_users_on_authentication_token" ON "users" ("authentication_token")
-D, [2016-02-12T23:48:09.006061 #25629] DEBUG -- :    (125.8ms)  CREATE INDEX "index_users_on_email" ON "users" ("email")
-D, [2016-02-12T23:48:09.172983 #25629] DEBUG -- :    (165.6ms)  CREATE UNIQUE INDEX "index_users_on_invitation_service_and_invitation_identifier" ON "users" ("invitation_service", "invitation_identifier")
-D, [2016-02-12T23:48:09.331707 #25629] DEBUG -- :    (156.9ms)  CREATE INDEX "index_users_on_invitation_token" ON "users" ("invitation_token")
-D, [2016-02-12T23:48:09.561798 #25629] DEBUG -- :    (227.6ms)  CREATE UNIQUE INDEX "index_users_on_username" ON "users" ("username")
-D, [2016-02-12T23:48:09.609386 #25629] DEBUG -- :    (0.1ms)  begin transaction
-D, [2016-02-12T23:48:09.613066 #25629] DEBUG -- :   SQL (0.5ms)  INSERT INTO "users" ("authentication_token", "created_at", "email", "encrypted_password", "updated_at", "username") VALUES (?, ?, ?, ?, ?, ?)  [["authentication_token", "1234"], ["created_at", 2016-02-12 18:18:09 UTC], ["email", "test at test.de"], ["encrypted_password", "$2a$10$c2G6rHjGeamQIOFI0c1/b.4mvFBw4AfOtgVrAkO1QPMuAyporj5e6"], ["updated_at", 2016-02-12 18:18:09 UTC], ["username", "test"]]
-D, [2016-02-12T23:48:09.740016 #25629] DEBUG -- :    (126.5ms)  commit transaction
-D, [2016-02-12T23:48:09.752720 #25629] DEBUG -- :    (0.1ms)  begin transaction
-D, [2016-02-12T23:48:09.755773 #25629] DEBUG -- :   SQL (1.0ms)  INSERT INTO "people" ("created_at", "diaspora_handle", "guid", "owner_id", "serialized_public_key", "updated_at", "url") VALUES (?, ?, ?, ?, ?, ?, ?)  [["created_at", 2016-02-12 18:18:09 UTC], ["diaspora_handle", "test at local.host"], ["guid", "1697a4b0198901321e9b10e6ba921ce9"], ["owner_id", 1], ["serialized_public_key", "some pub key"], ["updated_at", 2016-02-12 18:18:09 UTC], ["url", "http://remote.host/"]]
-D, [2016-02-12T23:48:09.918366 #25629] DEBUG -- :    (162.0ms)  commit transaction
-D, [2016-02-12T23:48:09.937458 #25629] DEBUG -- :    (0.1ms)  begin transaction
-D, [2016-02-12T23:48:09.939663 #25629] DEBUG -- :   SQL (0.9ms)  INSERT INTO "profiles" ("created_at", "diaspora_handle", "first_name", "image_url", "last_name", "person_id", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?)  [["created_at", 2016-02-12 18:18:09 UTC], ["diaspora_handle", "test at local.host"], ["first_name", "Harry"], ["image_url", "http://path.to/image.png"], ["last_name", "Hirsch"], ["person_id", 1], ["updated_at", 2016-02-12 18:18:09 UTC]]
-D, [2016-02-12T23:48:10.098728 #25629] DEBUG -- :    (158.7ms)  commit transaction
-D, [2016-02-12T23:48:10.109731 #25629] DEBUG -- :    (0.1ms)  begin transaction
-D, [2016-02-12T23:48:10.112385 #25629] DEBUG -- :   SQL (0.6ms)  INSERT INTO "contacts" ("created_at", "person_id", "receiving", "sharing", "updated_at", "user_id") VALUES (?, ?, ?, ?, ?, ?)  [["created_at", 2016-02-12 18:18:10 UTC], ["person_id", 1], ["receiving", true], ["sharing", true], ["updated_at", 2016-02-12 18:18:10 UTC], ["user_id", 1]]
-D, [2016-02-12T23:48:10.244333 #25629] DEBUG -- :    (131.5ms)  commit transaction
-D, [2016-02-12T23:48:10.260495 #25629] DEBUG -- :    (0.1ms)  begin transaction
-D, [2016-02-12T23:48:10.262514 #25629] DEBUG -- :   SQL (0.7ms)  INSERT INTO "aspects" ("created_at", "name", "updated_at", "user_id") VALUES (?, ?, ?, ?)  [["created_at", 2016-02-12 18:18:10 UTC], ["name", "without_chat"], ["updated_at", 2016-02-12 18:18:10 UTC], ["user_id", 1]]
-D, [2016-02-12T23:48:10.389111 #25629] DEBUG -- :    (126.2ms)  commit transaction
-D, [2016-02-12T23:48:10.402073 #25629] DEBUG -- :    (0.1ms)  begin transaction
-D, [2016-02-12T23:48:10.405202 #25629] DEBUG -- :   SQL (0.8ms)  INSERT INTO "aspect_memberships" ("aspect_id", "contact_id", "created_at", "updated_at") VALUES (?, ?, ?, ?)  [["aspect_id", 1], ["contact_id", 1], ["created_at", 2016-02-12 18:18:10 UTC], ["updated_at", 2016-02-12 18:18:10 UTC]]
-D, [2016-02-12T23:48:10.555570 #25629] DEBUG -- :    (149.7ms)  commit transaction
-D, [2016-02-12T23:48:10.567804 #25629] DEBUG -- :    (0.1ms)  begin transaction
-D, [2016-02-12T23:48:10.571148 #25629] DEBUG -- :   SQL (1.4ms)  INSERT INTO "chat_offline_messages" ("created_at", "from", "message", "to") VALUES (?, ?, ?, ?)  [["created_at", 2016-02-12 18:18:10 UTC], ["from", "test at local.host"], ["message", "test"], ["to", "someone at inthe.void"]]
-D, [2016-02-12T23:48:10.700746 #25629] DEBUG -- :    (128.9ms)  commit transaction
-D, [2016-02-12T23:48:10.702464 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.7ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages"
-D, [2016-02-12T23:48:10.769189 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.4ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages" WHERE "chat_offline_messages"."id" = ? LIMIT 1  [["id", 1]]
-D, [2016-02-12T23:48:10.769857 #25629] DEBUG -- :    (0.1ms)  begin transaction
-D, [2016-02-12T23:48:10.771754 #25629] DEBUG -- :   SQL (0.5ms)  DELETE FROM "chat_offline_messages" WHERE "chat_offline_messages"."id" = ?  [["id", 1]]
-D, [2016-02-12T23:48:10.923421 #25629] DEBUG -- :    (151.3ms)  commit transaction
-D, [2016-02-12T23:48:10.925786 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.4ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages"
-D, [2016-02-12T23:48:10.988387 #25629] DEBUG -- :   Vines::Storage::Sql::User Load (0.5ms)  SELECT "users".* FROM "users" WHERE "users"."username" = 'test' LIMIT 1
-D, [2016-02-12T23:48:11.012548 #25629] DEBUG -- :   Vines::Storage::Sql::Contact Load (0.3ms)  SELECT "contacts".* FROM "contacts" INNER JOIN "aspect_memberships" ON "aspect_memberships"."contact_id" = "contacts"."id" INNER JOIN "aspects" ON "aspects"."id" = "aspect_memberships"."aspect_id" WHERE "contacts"."user_id" = ? AND (aspects.chat_enabled = 't') GROUP BY person_id, contacts.id  [["user_id", 1]]
-D, [2016-02-12T23:48:11.015611 #25629] DEBUG -- :   Vines::Storage::Sql::ChatContact Load (0.2ms)  SELECT "chat_contacts".* FROM "chat_contacts" WHERE "chat_contacts"."user_id" = ?  [["user_id", 1]]
-D, [2016-02-12T23:48:11.634679 #25629] DEBUG -- :   SQL (618.1ms)  UPDATE "aspects" SET "name" = 'with_chat', "chat_enabled" = 't' WHERE "aspects"."id" = 1
-D, [2016-02-12T23:48:11.641931 #25629] DEBUG -- :   Vines::Storage::Sql::User Load (0.6ms)  SELECT "users".* FROM "users" WHERE "users"."username" = 'test' LIMIT 1
-D, [2016-02-12T23:48:11.648091 #25629] DEBUG -- :   Vines::Storage::Sql::Contact Load (0.6ms)  SELECT "contacts".* FROM "contacts" INNER JOIN "aspect_memberships" ON "aspect_memberships"."contact_id" = "contacts"."id" INNER JOIN "aspects" ON "aspects"."id" = "aspect_memberships"."aspect_id" WHERE "contacts"."user_id" = ? AND (aspects.chat_enabled = 't') GROUP BY person_id, contacts.id  [["user_id", 1]]
-D, [2016-02-12T23:48:11.653867 #25629] DEBUG -- :   Vines::Storage::Sql::Person Load (0.2ms)  SELECT "people".* FROM "people" WHERE "people"."id" = ? ORDER BY "people"."id" ASC LIMIT 1  [["id", 1]]
-D, [2016-02-12T23:48:11.657626 #25629] DEBUG -- :   Vines::Storage::Sql::Profile Load (0.2ms)  SELECT "profiles".* FROM "profiles" WHERE "profiles"."person_id" = ? ORDER BY "profiles"."id" ASC LIMIT 1  [["person_id", 1]]
-D, [2016-02-12T23:48:11.661667 #25629] DEBUG -- :   Vines::Storage::Sql::Aspect Load (0.3ms)  SELECT "aspects".* FROM "aspects" INNER JOIN "aspect_memberships" ON "aspects"."id" = "aspect_memberships"."aspect_id" WHERE "aspect_memberships"."contact_id" = ?  [["contact_id", 1]]
-D, [2016-02-12T23:48:11.663822 #25629] DEBUG -- :   Vines::Storage::Sql::ChatContact Load (0.2ms)  SELECT "chat_contacts".* FROM "chat_contacts" WHERE "chat_contacts"."user_id" = ?  [["user_id", 1]]
-D, [2016-02-12T23:48:11.666804 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.3ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages"
-D, [2016-02-12T23:48:11.668970 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.2ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages"
-D, [2016-02-12T23:48:11.675639 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.3ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages" WHERE "chat_offline_messages"."to" = 'someone at inthe.void'
-D, [2016-02-12T23:48:11.676873 #25629] DEBUG -- :    (0.1ms)  begin transaction
-D, [2016-02-12T23:48:11.678910 #25629] DEBUG -- :   SQL (0.8ms)  INSERT INTO "chat_offline_messages" ("created_at", "from", "message", "to") VALUES (?, ?, ?, ?)  [["created_at", 2016-02-12 18:18:11 UTC], ["from", "test at local.host"], ["message", "test"], ["to", "someone at inthe.void"]]
-D, [2016-02-12T23:48:11.834382 #25629] DEBUG -- :    (155.0ms)  commit transaction
-D, [2016-02-12T23:48:11.840302 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.5ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages" WHERE "chat_offline_messages"."to" = 'someone at inthe.void'
-D, [2016-02-12T23:48:11.843017 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.4ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages"
-D, [2016-02-12T23:48:11.843478 #25629] DEBUG -- :    (0.1ms)  begin transaction
-D, [2016-02-12T23:48:11.845474 #25629] DEBUG -- :   SQL (0.6ms)  DELETE FROM "chat_offline_messages" WHERE "chat_offline_messages"."id" = ?  [["id", 2]]
-D, [2016-02-12T23:48:12.023724 #25629] DEBUG -- :    (153.5ms)  commit transaction
-E, [2016-02-12T23:48:12.030536 #25629] ERROR -- : Thread pool operation failed: Unknown key: to
-D, [2016-02-12T23:48:12.034472 #25629] DEBUG -- :    (0.3ms)  SELECT COUNT(*) FROM "chat_offline_messages" WHERE "chat_offline_messages"."to" = 'someone at inthe.void'
-D, [2016-02-12T23:48:12.048540 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.8ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages"
-D, [2016-02-12T23:48:12.052123 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.4ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages"
-D, [2016-02-12T23:48:12.060116 #25629] DEBUG -- :   Vines::Storage::Sql::Person Load (0.4ms)  SELECT "people".* FROM "people" WHERE "people"."diaspora_handle" = 'test at local.host' LIMIT 1
-D, [2016-02-12T23:48:12.063652 #25629] DEBUG -- :   Vines::Storage::Sql::Profile Load (0.6ms)  SELECT "profiles".* FROM "profiles" WHERE "profiles"."person_id" = ? ORDER BY "profiles"."id" ASC LIMIT 1  [["person_id", 1]]
-D, [2016-02-12T23:48:12.070412 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.3ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages"
-D, [2016-02-12T23:48:12.080356 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.3ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages"
-D, [2016-02-12T23:48:12.090811 #25629] DEBUG -- :   Vines::Storage::Sql::User Load (0.5ms)  SELECT "users".* FROM "users" WHERE "users"."username" = 'test' LIMIT 1
-D, [2016-02-12T23:48:12.096454 #25629] DEBUG -- :   Vines::Storage::Sql::Contact Load (0.4ms)  SELECT "contacts".* FROM "contacts" INNER JOIN "aspect_memberships" ON "aspect_memberships"."contact_id" = "contacts"."id" INNER JOIN "aspects" ON "aspects"."id" = "aspect_memberships"."aspect_id" WHERE "contacts"."user_id" = ? AND (aspects.chat_enabled = 't') GROUP BY person_id, contacts.id  [["user_id", 1]]
-D, [2016-02-12T23:48:12.097640 #25629] DEBUG -- :   Vines::Storage::Sql::Person Load (0.1ms)  SELECT "people".* FROM "people" WHERE "people"."id" = ? ORDER BY "people"."id" ASC LIMIT 1  [["id", 1]]
-D, [2016-02-12T23:48:12.098852 #25629] DEBUG -- :   Vines::Storage::Sql::Profile Load (0.2ms)  SELECT "profiles".* FROM "profiles" WHERE "profiles"."person_id" = ? ORDER BY "profiles"."id" ASC LIMIT 1  [["person_id", 1]]
-D, [2016-02-12T23:48:12.099977 #25629] DEBUG -- :   Vines::Storage::Sql::Aspect Load (0.3ms)  SELECT "aspects".* FROM "aspects" INNER JOIN "aspect_memberships" ON "aspects"."id" = "aspect_memberships"."aspect_id" WHERE "aspect_memberships"."contact_id" = ?  [["contact_id", 1]]
-D, [2016-02-12T23:48:12.101192 #25629] DEBUG -- :   Vines::Storage::Sql::ChatContact Load (0.1ms)  SELECT "chat_contacts".* FROM "chat_contacts" WHERE "chat_contacts"."user_id" = ?  [["user_id", 1]]
-D, [2016-02-12T23:48:12.103202 #25629] DEBUG -- :   Vines::Storage::Sql::User Load (0.6ms)  SELECT "users".* FROM "users" WHERE "users"."username" = 'test' LIMIT 1
-D, [2016-02-12T23:48:12.105621 #25629] DEBUG -- :   Vines::Storage::Sql::Contact Load (0.4ms)  SELECT "contacts".* FROM "contacts" INNER JOIN "aspect_memberships" ON "aspect_memberships"."contact_id" = "contacts"."id" INNER JOIN "aspects" ON "aspects"."id" = "aspect_memberships"."aspect_id" WHERE "contacts"."user_id" = ? AND (aspects.chat_enabled = 't') GROUP BY person_id, contacts.id  [["user_id", 1]]
-D, [2016-02-12T23:48:12.107151 #25629] DEBUG -- :   Vines::Storage::Sql::Person Load (0.4ms)  SELECT "people".* FROM "people" WHERE "people"."id" = ? ORDER BY "people"."id" ASC LIMIT 1  [["id", 1]]
-D, [2016-02-12T23:48:12.108644 #25629] DEBUG -- :   Vines::Storage::Sql::Profile Load (0.3ms)  SELECT "profiles".* FROM "profiles" WHERE "profiles"."person_id" = ? ORDER BY "profiles"."id" ASC LIMIT 1  [["person_id", 1]]
-D, [2016-02-12T23:48:12.110462 #25629] DEBUG -- :   Vines::Storage::Sql::Aspect Load (0.2ms)  SELECT "aspects".* FROM "aspects" INNER JOIN "aspect_memberships" ON "aspects"."id" = "aspect_memberships"."aspect_id" WHERE "aspect_memberships"."contact_id" = ?  [["contact_id", 1]]
-D, [2016-02-12T23:48:12.112166 #25629] DEBUG -- :   Vines::Storage::Sql::ChatContact Load (0.2ms)  SELECT "chat_contacts".* FROM "chat_contacts" WHERE "chat_contacts"."user_id" = ?  [["user_id", 1]]
-D, [2016-02-12T23:48:12.114044 #25629] DEBUG -- :   Vines::Storage::Sql::User Load (0.5ms)  SELECT "users".* FROM "users" WHERE "users"."username" = 'test' LIMIT 1
-D, [2016-02-12T23:48:12.116255 #25629] DEBUG -- :   Vines::Storage::Sql::Contact Load (0.3ms)  SELECT "contacts".* FROM "contacts" INNER JOIN "aspect_memberships" ON "aspect_memberships"."contact_id" = "contacts"."id" INNER JOIN "aspects" ON "aspects"."id" = "aspect_memberships"."aspect_id" WHERE "contacts"."user_id" = ? AND (aspects.chat_enabled = 't') GROUP BY person_id, contacts.id  [["user_id", 1]]
-D, [2016-02-12T23:48:12.117670 #25629] DEBUG -- :   Vines::Storage::Sql::Person Load (0.2ms)  SELECT "people".* FROM "people" WHERE "people"."id" = ? ORDER BY "people"."id" ASC LIMIT 1  [["id", 1]]
-D, [2016-02-12T23:48:12.119046 #25629] DEBUG -- :   Vines::Storage::Sql::Profile Load (0.2ms)  SELECT "profiles".* FROM "profiles" WHERE "profiles"."person_id" = ? ORDER BY "profiles"."id" ASC LIMIT 1  [["person_id", 1]]
-D, [2016-02-12T23:48:12.120133 #25629] DEBUG -- :   Vines::Storage::Sql::Aspect Load (0.1ms)  SELECT "aspects".* FROM "aspects" INNER JOIN "aspect_memberships" ON "aspects"."id" = "aspect_memberships"."aspect_id" WHERE "aspect_memberships"."contact_id" = ?  [["contact_id", 1]]
-D, [2016-02-12T23:48:12.120731 #25629] DEBUG -- :   Vines::Storage::Sql::ChatContact Load (0.1ms)  SELECT "chat_contacts".* FROM "chat_contacts" WHERE "chat_contacts"."user_id" = ?  [["user_id", 1]]
-D, [2016-02-12T23:48:12.122647 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.2ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages"
-D, [2016-02-12T23:48:12.132814 #25629] DEBUG -- :   Vines::Storage::Sql::User Load (0.5ms)  SELECT "users".* FROM "users" WHERE "users"."username" = 'test2' LIMIT 1
-D, [2016-02-12T23:48:12.134433 #25629] DEBUG -- :   Vines::Storage::Sql::User Load (0.6ms)  SELECT "users".* FROM "users" WHERE "users"."username" = 'test2' LIMIT 1
-D, [2016-02-12T23:48:12.136764 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.3ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages"
-D, [2016-02-12T23:48:12.148501 #25629] DEBUG -- :   Vines::Storage::Sql::User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."username" IS NULL LIMIT 1
-D, [2016-02-12T23:48:12.149870 #25629] DEBUG -- :   Vines::Storage::Sql::User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."username" = 'test' LIMIT 1
-D, [2016-02-12T23:48:12.153525 #25629] DEBUG -- :   Vines::Storage::Sql::Contact Load (0.3ms)  SELECT "contacts".* FROM "contacts" INNER JOIN "aspect_memberships" ON "aspect_memberships"."contact_id" = "contacts"."id" INNER JOIN "aspects" ON "aspects"."id" = "aspect_memberships"."aspect_id" WHERE "contacts"."user_id" = ? AND (aspects.chat_enabled = 't') GROUP BY person_id, contacts.id  [["user_id", 1]]
-D, [2016-02-12T23:48:12.155170 #25629] DEBUG -- :   Vines::Storage::Sql::Person Load (0.2ms)  SELECT "people".* FROM "people" WHERE "people"."id" = ? ORDER BY "people"."id" ASC LIMIT 1  [["id", 1]]
-D, [2016-02-12T23:48:12.156944 #25629] DEBUG -- :   Vines::Storage::Sql::Profile Load (0.2ms)  SELECT "profiles".* FROM "profiles" WHERE "profiles"."person_id" = ? ORDER BY "profiles"."id" ASC LIMIT 1  [["person_id", 1]]
-D, [2016-02-12T23:48:12.158140 #25629] DEBUG -- :   Vines::Storage::Sql::Aspect Load (0.2ms)  SELECT "aspects".* FROM "aspects" INNER JOIN "aspect_memberships" ON "aspects"."id" = "aspect_memberships"."aspect_id" WHERE "aspect_memberships"."contact_id" = ?  [["contact_id", 1]]
-D, [2016-02-12T23:48:12.159616 #25629] DEBUG -- :   Vines::Storage::Sql::ChatContact Load (0.2ms)  SELECT "chat_contacts".* FROM "chat_contacts" WHERE "chat_contacts"."user_id" = ?  [["user_id", 1]]
-D, [2016-02-12T23:48:12.229953 #25629] DEBUG -- :   Vines::Storage::Sql::User Load (0.5ms)  SELECT "users".* FROM "users" WHERE "users"."username" = 'test' LIMIT 1
-D, [2016-02-12T23:48:12.231801 #25629] DEBUG -- :   Vines::Storage::Sql::Contact Load (0.3ms)  SELECT "contacts".* FROM "contacts" INNER JOIN "aspect_memberships" ON "aspect_memberships"."contact_id" = "contacts"."id" INNER JOIN "aspects" ON "aspects"."id" = "aspect_memberships"."aspect_id" WHERE "contacts"."user_id" = ? AND (aspects.chat_enabled = 't') GROUP BY person_id, contacts.id  [["user_id", 1]]
-D, [2016-02-12T23:48:12.233066 #25629] DEBUG -- :   Vines::Storage::Sql::Person Load (0.4ms)  SELECT "people".* FROM "people" WHERE "people"."id" = ? ORDER BY "people"."id" ASC LIMIT 1  [["id", 1]]
-D, [2016-02-12T23:48:12.234183 #25629] DEBUG -- :   Vines::Storage::Sql::Profile Load (0.3ms)  SELECT "profiles".* FROM "profiles" WHERE "profiles"."person_id" = ? ORDER BY "profiles"."id" ASC LIMIT 1  [["person_id", 1]]
-D, [2016-02-12T23:48:12.235585 #25629] DEBUG -- :   Vines::Storage::Sql::Aspect Load (0.2ms)  SELECT "aspects".* FROM "aspects" INNER JOIN "aspect_memberships" ON "aspects"."id" = "aspect_memberships"."aspect_id" WHERE "aspect_memberships"."contact_id" = ?  [["contact_id", 1]]
-D, [2016-02-12T23:48:12.236636 #25629] DEBUG -- :   Vines::Storage::Sql::ChatContact Load (0.2ms)  SELECT "chat_contacts".* FROM "chat_contacts" WHERE "chat_contacts"."user_id" = ?  [["user_id", 1]]
-D, [2016-02-12T23:48:12.312647 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.4ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages"
-D, [2016-02-12T23:48:12.316812 #25629] DEBUG -- :   Vines::Storage::Sql::Person Load (0.2ms)  SELECT "people".* FROM "people" WHERE "people"."diaspora_handle" = 'someone at inthe.void' LIMIT 1
-D, [2016-02-12T23:48:12.317598 #25629] DEBUG -- :   Vines::Storage::Sql::Person Load (0.2ms)  SELECT "people".* FROM "people" WHERE "people"."diaspora_handle" = 'test at local.host' LIMIT 1
-D, [2016-02-12T23:48:12.319368 #25629] DEBUG -- :   Vines::Storage::Sql::Profile Load (0.2ms)  SELECT "profiles".* FROM "profiles" WHERE "profiles"."person_id" = ? ORDER BY "profiles"."id" ASC LIMIT 1  [["person_id", 1]]
-D, [2016-02-12T23:48:12.320718 #25629] DEBUG -- :   Vines::Storage::Sql::ChatOfflineMessage Load (0.1ms)  SELECT "chat_offline_messages".* FROM "chat_offline_messages"
-I, [2016-02-12T23:48:12.542995 #25629]  INFO -- : Authenticating user: alice at wonderland.lit
-I, [2016-02-12T23:48:12.544076 #25629]  INFO -- : Authenticating user: alice at wonderland.lit
-I, [2016-02-12T23:48:12.544442 #25629]  INFO -- : Authenticating user: alice at wonderland.lit
-I, [2016-02-12T23:48:12.544535 #25629]  INFO -- : Authentication succeeded: alice at wonderland.lit

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-diaspora-vines.git



More information about the Pkg-ruby-extras-commits mailing list