cerberus 0.6 → 0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. data/Authors.txt +4 -0
  2. data/Changelog.txt +11 -0
  3. data/Copyright.txt +16 -0
  4. data/Rakefile +16 -25
  5. data/Readme.markdown +1 -3
  6. data/bin/cerberus +5 -0
  7. data/lib/cerberus/builder/bjam.rb +1 -3
  8. data/lib/cerberus/builder/maven2.rb +0 -1
  9. data/lib/cerberus/builder/rake.rb +1 -1
  10. data/lib/cerberus/builder/rspec.rb +0 -1
  11. data/lib/cerberus/builder/ruby_base.rb +0 -1
  12. data/lib/cerberus/component_lazy_loader.rb +6 -2
  13. data/lib/cerberus/config.example.yml +1 -0
  14. data/lib/cerberus/constants.rb +2 -2
  15. data/lib/cerberus/manager.rb +7 -1
  16. data/lib/cerberus/publisher/mail.rb +4 -4
  17. data/lib/cerberus/publisher/twitter.rb +0 -1
  18. data/lib/cerberus/scm/base.rb +19 -0
  19. data/lib/cerberus/scm/bzr.rb +62 -0
  20. data/lib/cerberus/scm/cvs.rb +2 -7
  21. data/lib/cerberus/scm/darcs.rb +2 -11
  22. data/lib/cerberus/scm/git.rb +6 -14
  23. data/lib/cerberus/scm/perforce.rb +4 -4
  24. data/lib/cerberus/scm/svn.rb +2 -7
  25. data/lib/cerberus/utils.rb +5 -0
  26. data/lib/vendor/irc/README +23 -0
  27. data/lib/vendor/irc/lib/IRC.rb +164 -0
  28. data/lib/vendor/irc/lib/IRCChannel.rb +33 -0
  29. data/lib/vendor/irc/lib/IRCConnection.rb +134 -0
  30. data/lib/vendor/irc/lib/IRCEvent.rb +91 -0
  31. data/lib/vendor/irc/lib/IRCUser.rb +23 -0
  32. data/lib/vendor/irc/lib/IRCUtil.rb +49 -0
  33. data/lib/vendor/irc/lib/eventmap.yml +247 -0
  34. data/lib/vendor/twitter/CHANGES +129 -0
  35. data/lib/vendor/twitter/MIT-LICENSE +20 -0
  36. data/lib/vendor/twitter/README +37 -0
  37. data/lib/vendor/twitter/TODO +7 -0
  38. data/lib/vendor/twitter/lib/twitter.rb +34 -0
  39. data/lib/vendor/twitter/lib/twitter/client.rb +24 -0
  40. data/lib/vendor/twitter/lib/twitter/client/account.rb +24 -0
  41. data/lib/vendor/twitter/lib/twitter/client/auth.rb +27 -0
  42. data/lib/vendor/twitter/lib/twitter/client/base.rb +93 -0
  43. data/lib/vendor/twitter/lib/twitter/client/blocks.rb +35 -0
  44. data/lib/vendor/twitter/lib/twitter/client/favorites.rb +53 -0
  45. data/lib/vendor/twitter/lib/twitter/client/friendship.rb +35 -0
  46. data/lib/vendor/twitter/lib/twitter/client/graph.rb +37 -0
  47. data/lib/vendor/twitter/lib/twitter/client/messaging.rb +79 -0
  48. data/lib/vendor/twitter/lib/twitter/client/profile.rb +29 -0
  49. data/lib/vendor/twitter/lib/twitter/client/search.rb +27 -0
  50. data/lib/vendor/twitter/lib/twitter/client/status.rb +51 -0
  51. data/lib/vendor/twitter/lib/twitter/client/timeline.rb +72 -0
  52. data/lib/vendor/twitter/lib/twitter/client/user.rb +65 -0
  53. data/lib/vendor/twitter/lib/twitter/config.rb +77 -0
  54. data/lib/vendor/twitter/lib/twitter/console.rb +31 -0
  55. data/lib/vendor/twitter/lib/twitter/core.rb +137 -0
  56. data/lib/vendor/twitter/lib/twitter/ext.rb +2 -0
  57. data/lib/vendor/twitter/lib/twitter/ext/stdlib.rb +52 -0
  58. data/lib/vendor/twitter/lib/twitter/extras.rb +39 -0
  59. data/lib/vendor/twitter/lib/twitter/meta.rb +56 -0
  60. data/lib/vendor/twitter/lib/twitter/model.rb +360 -0
  61. data/lib/vendor/twitter/lib/twitter/version.rb +19 -0
  62. data/lib/vendor/twitter/spec/twitter/client/account_spec.rb +28 -0
  63. data/lib/vendor/twitter/spec/twitter/client/auth_spec.rb +34 -0
  64. data/lib/vendor/twitter/spec/twitter/client/base_spec.rb +242 -0
  65. data/lib/vendor/twitter/spec/twitter/client/blocks_spec.rb +76 -0
  66. data/lib/vendor/twitter/spec/twitter/client/favorites_spec.rb +183 -0
  67. data/lib/vendor/twitter/spec/twitter/client/friendship_spec.rb +76 -0
  68. data/lib/vendor/twitter/spec/twitter/client/graph_spec.rb +67 -0
  69. data/lib/vendor/twitter/spec/twitter/client/messaging_spec.rb +135 -0
  70. data/lib/vendor/twitter/spec/twitter/client/profile_spec.rb +91 -0
  71. data/lib/vendor/twitter/spec/twitter/client/search_spec.rb +68 -0
  72. data/lib/vendor/twitter/spec/twitter/client/status_spec.rb +119 -0
  73. data/lib/vendor/twitter/spec/twitter/client/timeline_spec.rb +79 -0
  74. data/lib/vendor/twitter/spec/twitter/client/user_spec.rb +203 -0
  75. data/lib/vendor/twitter/spec/twitter/client_spec.rb +2 -0
  76. data/lib/vendor/twitter/spec/twitter/config_spec.rb +86 -0
  77. data/lib/vendor/twitter/spec/twitter/console_spec.rb +15 -0
  78. data/lib/vendor/twitter/spec/twitter/core_spec.rb +127 -0
  79. data/lib/vendor/twitter/spec/twitter/ext/stdlib_spec.rb +59 -0
  80. data/lib/vendor/twitter/spec/twitter/extras_spec.rb +46 -0
  81. data/lib/vendor/twitter/spec/twitter/meta_spec.rb +90 -0
  82. data/lib/vendor/twitter/spec/twitter/model_spec.rb +508 -0
  83. data/lib/vendor/twitter/spec/twitter/version_spec.rb +19 -0
  84. data/lib/vendor/xmpp4r/CHANGELOG +83 -0
  85. data/lib/vendor/xmpp4r/COPYING +340 -0
  86. data/lib/vendor/xmpp4r/LICENSE +59 -0
  87. data/lib/vendor/xmpp4r/README.rdoc +110 -0
  88. data/lib/vendor/xmpp4r/README_ruby19.txt +43 -0
  89. data/lib/vendor/xmpp4r/Rakefile +262 -0
  90. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/README +56 -0
  91. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/adventure.rb +23 -0
  92. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/adventuremuc.rb +136 -0
  93. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/cube.xml +15 -0
  94. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/tower.xml +69 -0
  95. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/world.rb +424 -0
  96. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/fileserve.conf +11 -0
  97. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/fileserve.rb +346 -0
  98. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/getonline.rb +56 -0
  99. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/gtkmucclient.rb +315 -0
  100. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/migrate.rb +88 -0
  101. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/minimuc.rb +266 -0
  102. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/pep-aggregator/index.xsl +235 -0
  103. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/pep-aggregator/pep-aggregator.rb +147 -0
  104. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/recvfile.rb +84 -0
  105. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/rosterdiscovery.rb +129 -0
  106. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/sendfile.conf +10 -0
  107. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/sendfile.rb +72 -0
  108. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr.rb +51 -0
  109. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_jabber.rb +43 -0
  110. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_test.rb +10 -0
  111. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/versionpoll.rb +90 -0
  112. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/xmpping.rb +146 -0
  113. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/xmppingrc.sample +14 -0
  114. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/change_password.rb +41 -0
  115. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/client.rb +70 -0
  116. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/component.rb +11 -0
  117. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/echo.rb +37 -0
  118. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/jabbersend.rb +41 -0
  119. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mass_sender.rb +68 -0
  120. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/muc_owner_config.rb +12 -0
  121. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mucinfo.rb +41 -0
  122. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mucsimplebot.rb +82 -0
  123. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/register.rb +42 -0
  124. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/remove_registration.rb +18 -0
  125. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/roster.rb +44 -0
  126. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterprint.rb +50 -0
  127. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterrename.rb +34 -0
  128. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterwatch.rb +171 -0
  129. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/send_vcard.rb +67 -0
  130. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/tune_client.rb +56 -0
  131. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/tune_server.rb +58 -0
  132. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/versionbot.rb +75 -0
  133. data/lib/vendor/xmpp4r/lib/xmpp4r.rb +116 -0
  134. data/lib/vendor/xmpp4r/lib/xmpp4r/base64.rb +32 -0
  135. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams.rb +15 -0
  136. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb +319 -0
  137. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/base.rb +257 -0
  138. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/initiator.rb +31 -0
  139. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/target.rb +47 -0
  140. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/base.rb +152 -0
  141. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/initiator.rb +86 -0
  142. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/server.rb +198 -0
  143. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/socks5.rb +65 -0
  144. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb +73 -0
  145. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb.orig +62 -0
  146. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/iq/bytestreams.rb +170 -0
  147. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/iq/si.rb +206 -0
  148. data/lib/vendor/xmpp4r/lib/xmpp4r/callbacks.rb +124 -0
  149. data/lib/vendor/xmpp4r/lib/xmpp4r/caps.rb +1 -0
  150. data/lib/vendor/xmpp4r/lib/xmpp4r/caps/c.rb +53 -0
  151. data/lib/vendor/xmpp4r/lib/xmpp4r/caps/helper/generator.rb +160 -0
  152. data/lib/vendor/xmpp4r/lib/xmpp4r/caps/helper/helper.rb +87 -0
  153. data/lib/vendor/xmpp4r/lib/xmpp4r/client.rb +317 -0
  154. data/lib/vendor/xmpp4r/lib/xmpp4r/command/helper/responder.rb +53 -0
  155. data/lib/vendor/xmpp4r/lib/xmpp4r/command/iq/command.rb +154 -0
  156. data/lib/vendor/xmpp4r/lib/xmpp4r/component.rb +103 -0
  157. data/lib/vendor/xmpp4r/lib/xmpp4r/connection.rb +219 -0
  158. data/lib/vendor/xmpp4r/lib/xmpp4r/dataforms.rb +5 -0
  159. data/lib/vendor/xmpp4r/lib/xmpp4r/dataforms/x/data.rb +297 -0
  160. data/lib/vendor/xmpp4r/lib/xmpp4r/debuglog.rb +42 -0
  161. data/lib/vendor/xmpp4r/lib/xmpp4r/delay.rb +5 -0
  162. data/lib/vendor/xmpp4r/lib/xmpp4r/delay/x/delay.rb +99 -0
  163. data/lib/vendor/xmpp4r/lib/xmpp4r/discovery.rb +7 -0
  164. data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/helper/responder.rb +165 -0
  165. data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/iq/discoinfo.rb +211 -0
  166. data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/iq/discoitems.rb +147 -0
  167. data/lib/vendor/xmpp4r/lib/xmpp4r/errors.rb +281 -0
  168. data/lib/vendor/xmpp4r/lib/xmpp4r/feature_negotiation.rb +5 -0
  169. data/lib/vendor/xmpp4r/lib/xmpp4r/feature_negotiation/iq/feature.rb +28 -0
  170. data/lib/vendor/xmpp4r/lib/xmpp4r/framework/base.rb +55 -0
  171. data/lib/vendor/xmpp4r/lib/xmpp4r/framework/bot.rb +148 -0
  172. data/lib/vendor/xmpp4r/lib/xmpp4r/httpbinding.rb +5 -0
  173. data/lib/vendor/xmpp4r/lib/xmpp4r/httpbinding/client.rb +285 -0
  174. data/lib/vendor/xmpp4r/lib/xmpp4r/idgenerator.rb +37 -0
  175. data/lib/vendor/xmpp4r/lib/xmpp4r/iq.rb +221 -0
  176. data/lib/vendor/xmpp4r/lib/xmpp4r/jid.rb +167 -0
  177. data/lib/vendor/xmpp4r/lib/xmpp4r/message.rb +148 -0
  178. data/lib/vendor/xmpp4r/lib/xmpp4r/muc.rb +14 -0
  179. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/mucbrowser.rb +92 -0
  180. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/mucclient.rb +462 -0
  181. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/simplemucclient.rb +332 -0
  182. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucadmin.rb +23 -0
  183. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucadminitem.rb +20 -0
  184. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucowner.rb +15 -0
  185. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/item.rb +143 -0
  186. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/muc.rb +70 -0
  187. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/mucuserinvite.rb +60 -0
  188. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/mucuseritem.rb +36 -0
  189. data/lib/vendor/xmpp4r/lib/xmpp4r/presence.rb +232 -0
  190. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub.rb +8 -0
  191. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/configuration.rb +86 -0
  192. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/event.rb +49 -0
  193. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/item.rb +35 -0
  194. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/items.rb +44 -0
  195. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/node_config.rb +48 -0
  196. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/publish.rb +24 -0
  197. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/subscription.rb +62 -0
  198. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/subscription_config.rb +67 -0
  199. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/unsubscribe.rb +48 -0
  200. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/nodebrowser.rb +130 -0
  201. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/nodehelper.rb +156 -0
  202. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb +417 -0
  203. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/iq/pubsub.rb +19 -0
  204. data/lib/vendor/xmpp4r/lib/xmpp4r/query.rb +15 -0
  205. data/lib/vendor/xmpp4r/lib/xmpp4r/rexmladdons.rb +151 -0
  206. data/lib/vendor/xmpp4r/lib/xmpp4r/roster.rb +7 -0
  207. data/lib/vendor/xmpp4r/lib/xmpp4r/roster/helper/roster.rb +519 -0
  208. data/lib/vendor/xmpp4r/lib/xmpp4r/roster/iq/roster.rb +215 -0
  209. data/lib/vendor/xmpp4r/lib/xmpp4r/roster/x/roster.rb +138 -0
  210. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc.rb +2 -0
  211. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/client.rb +123 -0
  212. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/server.rb +74 -0
  213. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/xmlrpcaddons.rb +67 -0
  214. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/iq/rpc.rb +23 -0
  215. data/lib/vendor/xmpp4r/lib/xmpp4r/sasl.rb +237 -0
  216. data/lib/vendor/xmpp4r/lib/xmpp4r/semaphore.rb +38 -0
  217. data/lib/vendor/xmpp4r/lib/xmpp4r/stream.rb +497 -0
  218. data/lib/vendor/xmpp4r/lib/xmpp4r/streamparser.rb +77 -0
  219. data/lib/vendor/xmpp4r/lib/xmpp4r/tune.rb +2 -0
  220. data/lib/vendor/xmpp4r/lib/xmpp4r/tune/helper/helper.rb +58 -0
  221. data/lib/vendor/xmpp4r/lib/xmpp4r/tune/tune.rb +113 -0
  222. data/lib/vendor/xmpp4r/lib/xmpp4r/vcard.rb +6 -0
  223. data/lib/vendor/xmpp4r/lib/xmpp4r/vcard/helper/vcard.rb +84 -0
  224. data/lib/vendor/xmpp4r/lib/xmpp4r/vcard/iq/vcard.rb +109 -0
  225. data/lib/vendor/xmpp4r/lib/xmpp4r/version.rb +7 -0
  226. data/lib/vendor/xmpp4r/lib/xmpp4r/version/helper/responder.rb +72 -0
  227. data/lib/vendor/xmpp4r/lib/xmpp4r/version/helper/simpleresponder.rb +44 -0
  228. data/lib/vendor/xmpp4r/lib/xmpp4r/version/iq/version.rb +105 -0
  229. data/lib/vendor/xmpp4r/lib/xmpp4r/x.rb +37 -0
  230. data/lib/vendor/xmpp4r/lib/xmpp4r/xhtml.rb +1 -0
  231. data/lib/vendor/xmpp4r/lib/xmpp4r/xhtml/html.rb +115 -0
  232. data/lib/vendor/xmpp4r/lib/xmpp4r/xmpp4r.rb +18 -0
  233. data/lib/vendor/xmpp4r/lib/xmpp4r/xmppelement.rb +168 -0
  234. data/lib/vendor/xmpp4r/lib/xmpp4r/xmppstanza.rb +162 -0
  235. data/lib/vendor/xmpp4r/setup.rb +1586 -0
  236. data/lib/vendor/xmpp4r/test/bytestreams/tc_ibb.rb +186 -0
  237. data/lib/vendor/xmpp4r/test/bytestreams/tc_socks5bytestreams.rb +113 -0
  238. data/lib/vendor/xmpp4r/test/caps/tc_helper.rb +156 -0
  239. data/lib/vendor/xmpp4r/test/dataforms/tc_data.rb +81 -0
  240. data/lib/vendor/xmpp4r/test/delay/tc_xdelay.rb +51 -0
  241. data/lib/vendor/xmpp4r/test/discovery/tc_responder.rb +91 -0
  242. data/lib/vendor/xmpp4r/test/lib/assert_equal_xml.rb +14 -0
  243. data/lib/vendor/xmpp4r/test/lib/clienttester.rb +120 -0
  244. data/lib/vendor/xmpp4r/test/muc/tc_muc_mucclient.rb +830 -0
  245. data/lib/vendor/xmpp4r/test/muc/tc_muc_simplemucclient.rb +114 -0
  246. data/lib/vendor/xmpp4r/test/muc/tc_mucowner.rb +50 -0
  247. data/lib/vendor/xmpp4r/test/pubsub/tc_helper.rb +662 -0
  248. data/lib/vendor/xmpp4r/test/pubsub/tc_nodeconfig.rb +54 -0
  249. data/lib/vendor/xmpp4r/test/pubsub/tc_subscriptionconfig.rb +41 -0
  250. data/lib/vendor/xmpp4r/test/roster/tc_helper.rb +514 -0
  251. data/lib/vendor/xmpp4r/test/roster/tc_iqqueryroster.rb +173 -0
  252. data/lib/vendor/xmpp4r/test/roster/tc_xroster.rb +73 -0
  253. data/lib/vendor/xmpp4r/test/rpc/tc_helper.rb +96 -0
  254. data/lib/vendor/xmpp4r/test/tc_callbacks.rb +129 -0
  255. data/lib/vendor/xmpp4r/test/tc_class_names.rb +146 -0
  256. data/lib/vendor/xmpp4r/test/tc_client.rb +30 -0
  257. data/lib/vendor/xmpp4r/test/tc_errors.rb +146 -0
  258. data/lib/vendor/xmpp4r/test/tc_idgenerator.rb +30 -0
  259. data/lib/vendor/xmpp4r/test/tc_iq.rb +113 -0
  260. data/lib/vendor/xmpp4r/test/tc_iqquery.rb +31 -0
  261. data/lib/vendor/xmpp4r/test/tc_jid.rb +204 -0
  262. data/lib/vendor/xmpp4r/test/tc_message.rb +116 -0
  263. data/lib/vendor/xmpp4r/test/tc_presence.rb +150 -0
  264. data/lib/vendor/xmpp4r/test/tc_rexml.rb +139 -0
  265. data/lib/vendor/xmpp4r/test/tc_stream.rb +229 -0
  266. data/lib/vendor/xmpp4r/test/tc_streamComponent.rb +95 -0
  267. data/lib/vendor/xmpp4r/test/tc_streamError.rb +131 -0
  268. data/lib/vendor/xmpp4r/test/tc_streamSend.rb +59 -0
  269. data/lib/vendor/xmpp4r/test/tc_streamparser.rb +112 -0
  270. data/lib/vendor/xmpp4r/test/tc_xmppstanza.rb +135 -0
  271. data/lib/vendor/xmpp4r/test/ts_xmpp4r.rb +53 -0
  272. data/lib/vendor/xmpp4r/test/tune/tc_helper_recv.rb +84 -0
  273. data/lib/vendor/xmpp4r/test/tune/tc_helper_send.rb +74 -0
  274. data/lib/vendor/xmpp4r/test/tune/tc_tune.rb +79 -0
  275. data/lib/vendor/xmpp4r/test/vcard/tc_helper.rb +49 -0
  276. data/lib/vendor/xmpp4r/test/vcard/tc_iqvcard.rb +62 -0
  277. data/lib/vendor/xmpp4r/test/version/tc_helper.rb +60 -0
  278. data/lib/vendor/xmpp4r/test/version/tc_iqqueryversion.rb +97 -0
  279. data/lib/vendor/xmpp4r/test/xhtml/tc_html.rb +41 -0
  280. data/lib/vendor/xmpp4r/tools/gen_requires.bash +31 -0
  281. data/lib/vendor/xmpp4r/tools/xmpp4r-gemspec-test.rb +11 -0
  282. data/lib/vendor/xmpp4r/xmpp4r.gemspec +291 -0
  283. data/test/jabber_publisher_test.rb +1 -1
  284. data/test/mail_publisher_test.rb +2 -2
  285. data/test/mock/twitter.rb +0 -1
  286. data/test/rspec_builder_test.rb +39 -2
  287. data/test/rss_publisher_test.rb +1 -1
  288. data/test/twitter_publisher_test.rb +1 -1
  289. metadata +268 -53
  290. data/lib/cerberus/publisher/gmailer.rb +0 -17
@@ -0,0 +1,86 @@
1
+ # =XMPP4R - XMPP Library for Ruby
2
+ # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option.
3
+ # Website::http://home.gna.org/xmpp4r/
4
+
5
+ module Jabber
6
+ module Bytestreams
7
+ ##
8
+ # SOCKS5Bytestreams implementation for the initiator side
9
+ class SOCKS5BytestreamsInitiator < SOCKS5Bytestreams
10
+ attr_reader :streamhosts
11
+
12
+ def initialize(stream, session_id, initiator_jid, target_jid)
13
+ super
14
+ @streamhosts = []
15
+ end
16
+
17
+ ##
18
+ # Add a streamhost which will be offered to the target
19
+ #
20
+ # streamhost:: can be:
21
+ # * [StreamHost] if already got all information (host/port)
22
+ # * [SOCKS5BytestreamsServer] if this is the local streamhost
23
+ # * [String] or [JID] if information should be automatically resolved by SOCKS5Bytestreams::query_streamhost
24
+ def add_streamhost(streamhost)
25
+ if streamhost.kind_of?(StreamHost)
26
+ @streamhosts << streamhost
27
+ elsif streamhost.kind_of?(SOCKS5BytestreamsServer)
28
+ streamhost.each_streamhost(@initiator_jid) { |sh|
29
+ @streamhosts << sh
30
+ }
31
+ elsif streamhost.kind_of?(String) or streamhost.kind_of?(JID)
32
+ @streamhosts << SOCKS5Bytestreams::query_streamhost(@stream, streamhost, @initiator_jid)
33
+ else
34
+ raise "Unknwon streamhost type: #{streamhost.class}"
35
+ end
36
+ end
37
+
38
+ ##
39
+ # Send the configured streamhosts to the target,
40
+ # wait for an answer and
41
+ # connect to the host the target chose.
42
+ def open
43
+ iq1 = Iq.new(:set, @target_jid)
44
+ iq1.from = @initiator_jid
45
+ bs = iq1.add IqQueryBytestreams.new(@session_id)
46
+ @streamhosts.each { |se|
47
+ bs.add(se)
48
+ }
49
+
50
+ peer_used = nil
51
+ @stream.send_with_id(iq1) { |response|
52
+ if response.query.kind_of?(IqQueryBytestreams)
53
+ peer_used = response.query.streamhost_used
54
+ raise "No streamhost-used" unless peer_used
55
+ raise "Invalid streamhost-used" unless peer_used.jid
56
+ end
57
+ }
58
+
59
+ @streamhost_used = nil
60
+ @streamhosts.each { |sh|
61
+ if peer_used.jid == sh.jid
62
+ @streamhost_used = sh
63
+ break
64
+ end
65
+ }
66
+ if @streamhost_used.jid == @initiator_jid
67
+ # This is our own JID, so the target chose SOCKS5BytestreamsServer
68
+ @socks = @streamhost_used.server.peer_sock(stream_address)
69
+ raise "Target didn't connect" unless @socks
70
+ @streamhost_cbs.process(@streamhost_used, :success, nil)
71
+ else
72
+ begin
73
+ @socks = connect_socks(@streamhost_used)
74
+ rescue Exception => e
75
+ Jabber::debuglog("SOCKS5 Bytestreams: #{e.class}: #{e}\n#{e.backtrace.join("\n")}")
76
+ @streamhost_cbs.process(@streamhost_used, :failure, e)
77
+ raise e
78
+ end
79
+ iq2 = Iq.new(:set, @streamhost_used.jid)
80
+ iq2.add(IqQueryBytestreams.new(@session_id)).activate = @target_jid.to_s
81
+ @stream.send_with_id(iq2)
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,198 @@
1
+ # =XMPP4R - XMPP Library for Ruby
2
+ # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option.
3
+ # Website::http://home.gna.org/xmpp4r/
4
+
5
+ module Jabber
6
+ module Bytestreams
7
+ ##
8
+ # The SOCKS5BytestreamsServer is an implementation of a SOCKS5 server.
9
+ #
10
+ # You can use it if you're reachable by your SOCKS5Bytestreams peers,
11
+ # thus avoiding use of an external proxy.
12
+ #
13
+ # ==Usage:
14
+ # * Instantiate with an unfirewalled port
15
+ # * Add your external IP addresses with SOCKS5BytestreamsServer#add_address
16
+ # * Once you've got an *outgoing* SOCKS5BytestreamsInitiator, do
17
+ # <tt>SOCKS5BytestreamsInitiator#add_streamhost(my_socks5bytestreamsserver)</tt>
18
+ # *before* you do <tt>SOCKS5BytestreamsInitiator#open</tt>
19
+ class SOCKS5BytestreamsServer
20
+ ##
21
+ # Start a local SOCKS5BytestreamsServer
22
+ #
23
+ # Will start to listen on the given TCP port and
24
+ # accept new peers
25
+ # port:: [Fixnum] TCP port to listen on
26
+ # listen_on:: [String] Optional address for the server socket to listen on (i.e. '0.0.0.0' or '::')
27
+ def initialize(port, listen_on=nil)
28
+ @port = port
29
+ @addresses = []
30
+ @peers = []
31
+ @peers_lock = Mutex.new
32
+ if listen_on
33
+ socket = TCPServer.new(listen_on, port)
34
+ else
35
+ socket = TCPServer.new(port)
36
+ end
37
+
38
+ Thread.new do
39
+ Thread.current.abort_on_exception = true
40
+ loop do
41
+ peer = SOCKS5BytestreamsPeer.new(socket.accept)
42
+ Thread.new do
43
+ Thread.current.abort_on_exception = true
44
+ begin
45
+ peer.start
46
+ rescue
47
+ Jabber::debuglog("SOCKS5 BytestreamsServer: Error accepting peer: #{$!}")
48
+ end
49
+ end
50
+ @peers_lock.synchronize do
51
+ @peers << peer
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+ ##
58
+ # Find the socket a peer is associated to
59
+ #
60
+ # This method also performs some housekeeping, ie. removing
61
+ # peers with closed sockets.
62
+ # addr:: [String] Address like SOCKS5Bytestreams#stream_address
63
+ # result:: [TCPSocker] or [nil]
64
+ def peer_sock(addr)
65
+ res = nil
66
+ @peers_lock.synchronize {
67
+ removes = []
68
+
69
+ @peers.each { |peer|
70
+ if peer.socket and peer.socket.closed?
71
+ # Queue peers with closed socket for removal
72
+ removes << peer
73
+ elsif peer.address == addr and res.nil?
74
+ res = peer.socket
75
+ end
76
+
77
+ # If we sent multiple addresses of our own, clients may
78
+ # connect multiple times. DO NOT close any other connections
79
+ # here. These may belong to other concurrent bytestreams,
80
+ # believe that the peer will close any unneeded sockets
81
+ # which will then be picked up by the next call to peer_sock.
82
+ }
83
+
84
+ # If we sent multiple addresses of our own, clients may
85
+ # connect multiple times. Close these connections here.
86
+ @peers.delete_if { |peer|
87
+ if removes.include? peer
88
+ peer.socket.close rescue IOError
89
+ true
90
+ else
91
+ false
92
+ end
93
+ }
94
+ }
95
+
96
+ res
97
+ end
98
+
99
+ ##
100
+ # Add an external IP address
101
+ #
102
+ # This is a must-have, as SOCKS5BytestreamsInitiator must inform
103
+ # the target where to connect
104
+ def add_address(address)
105
+ @addresses << address
106
+ end
107
+
108
+ ##
109
+ # Iterate through all configured addresses,
110
+ # yielding SOCKS5BytestreamsServerStreamHost
111
+ # instances, which should be passed to
112
+ # SOCKS5BytestreamsInitiator#add_streamhost
113
+ #
114
+ # This will be automatically invoked if you pass an instance
115
+ # of SOCKS5BytestreamsServer to
116
+ # SOCKS5BytestreamsInitiator#add_streamhost
117
+ # my_jid:: [JID] My Jabber-ID
118
+ def each_streamhost(my_jid, &block)
119
+ @addresses.each { |address|
120
+ yield SOCKS5BytestreamsServerStreamHost.new(self, my_jid, address, @port)
121
+ }
122
+ end
123
+ end
124
+
125
+ ##
126
+ # A subclass of StreamHost which possesses a
127
+ # server attribute, to let SOCKS5BytestreamsInitiator
128
+ # know this is the local SOCKS5BytestreamsServer
129
+ class SOCKS5BytestreamsServerStreamHost < StreamHost
130
+ attr_reader :server
131
+ def initialize(server, jid=nil, host=nil, port=nil)
132
+ super(jid, host, port)
133
+ @server = server
134
+ end
135
+ end
136
+
137
+ ##
138
+ # This class will be instantiated by SOCKS5BytestreamsServer
139
+ # upon accepting a new connection
140
+ class SOCKS5BytestreamsPeer
141
+ attr_reader :address, :socket
142
+
143
+ ##
144
+ # Initialize a new peer
145
+ # socket:: [TCPSocket]
146
+ def initialize(socket)
147
+ @socket = socket
148
+ Jabber::debuglog("SOCKS5 BytestreamsServer: accepted peer #{@socket.peeraddr[2]}:#{@socket.peeraddr[1]}")
149
+ end
150
+
151
+ ##
152
+ # Start handshake process
153
+ def start
154
+ if !@socket.respond_to? :getbyte
155
+ class << @socket; alias getbyte getc; end
156
+ end
157
+
158
+ auth_ver = @socket.getbyte
159
+ if auth_ver != 5
160
+ # Unsupported version
161
+ @socket.close
162
+ return
163
+ end
164
+
165
+ auth_nmethods = @socket.getbyte
166
+ auth_methods = @socket.read(auth_nmethods)
167
+ unless auth_methods.index("\x00")
168
+ # Client won't accept no authentication
169
+ @socket.write("\x05\xff")
170
+ @socket.close
171
+ return
172
+ end
173
+ @socket.write("\x05\x00")
174
+ Jabber::debuglog("SOCKS5 BytestreamsServer: peer #{@socket.peeraddr[2]}:#{@socket.peeraddr[1]} authenticated")
175
+
176
+ req = @socket.read(4)
177
+ if req != "\x05\x01\x00\x03"
178
+ # Unknown version, command, reserved, address-type
179
+ @socket.close
180
+ return
181
+ end
182
+ req_addrlen = @socket.getbyte
183
+ req_addr = @socket.read(req_addrlen)
184
+ req_port = @socket.read(2)
185
+ if req_port != "\x00\x00"
186
+ # Port is not 0
187
+ @socket.write("\x05\x01")
188
+ @socket.close
189
+ return
190
+ end
191
+ @socket.write("\x05\x00\x00\x03#{req_addrlen.chr}#{req_addr}\x00\x00")
192
+ Jabber::debuglog("SOCKS5 BytestreamsServer: peer #{@socket.peeraddr[2]}:#{@socket.peeraddr[1]} connected for #{req_addr}")
193
+
194
+ @address = req_addr
195
+ end
196
+ end
197
+ end
198
+ end
@@ -0,0 +1,65 @@
1
+ # =XMPP4R - XMPP Library for Ruby
2
+ # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option.
3
+ # Website::http://home.gna.org/xmpp4r/
4
+
5
+ require 'socket'
6
+
7
+ module Jabber
8
+ module Bytestreams
9
+
10
+ ##
11
+ # A SOCKS5 client implementation
12
+ #
13
+ # ==Usage:
14
+ # * Initialize with proxy's address and port
15
+ # * Authenticate
16
+ # * Connect to target host
17
+ class SOCKS5Socket < TCPSocket
18
+ ##
19
+ # Connect to SOCKS5 proxy
20
+ def initialize(socks_host, socks_port)
21
+ super(socks_host, socks_port)
22
+ end
23
+
24
+ ##
25
+ # Authenticate for SOCKS5 proxy
26
+ #
27
+ # Currently supports only 'no authentication required'
28
+ def auth
29
+ write("\x05\x01\x00")
30
+ buf = read(2)
31
+ if buf.nil? or buf != "\x05\x00"
32
+ close
33
+ raise SOCKS5Error.new("Invalid SOCKS5 authentication: #{buf.inspect}")
34
+ end
35
+
36
+ self
37
+ end
38
+
39
+ ##
40
+ # Issue a CONNECT request to a host name
41
+ # which is to be resolved by the proxy.
42
+ # domain:: [String] Host name
43
+ # port:: [Fixnum] Port number
44
+ def connect_domain(domain, port)
45
+ write("\x05\x01\x00\x03#{domain.size.chr}#{domain}#{[port].pack("n")}")
46
+ buf = read(4)
47
+ if buf.nil? or buf[0..1] != "\005\000"
48
+ close
49
+ raise SOCKS5Error.new("Invalid SOCKS5 connect: #{buf.inspect}")
50
+ end
51
+
52
+ case buf.respond_to?(:bytes) ? buf.bytes.to_a[3] : buf[3]
53
+ when 1 then read(6) # IPv4 addr
54
+ when 3 then read(3 + domain.size) # Domain
55
+ when 4 then read(18) # IPv6 addr
56
+ else
57
+ close
58
+ raise SOCKS5Error.new("Invalid SOCKS5 address type #{buf[3].to_s}")
59
+ end
60
+
61
+ self
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,73 @@
1
+ # =XMPP4R - XMPP Library for Ruby
2
+ # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option.
3
+ # Website::http://home.gna.org/xmpp4r/
4
+
5
+ module Jabber
6
+ module Bytestreams
7
+ ##
8
+ # SOCKS5 Bytestreams implementation of the target site
9
+ class SOCKS5BytestreamsTarget < SOCKS5Bytestreams
10
+ ##
11
+ # See SOCKS5Bytestreams#initialize
12
+ def initialize(stream, session_id, initiator_jid, target_jid)
13
+ @connect_timeout = 60
14
+ super
15
+ end
16
+ ##
17
+ # Wait until the stream has been established
18
+ #
19
+ # May raise various exceptions
20
+ def accept
21
+ error = nil
22
+ connect_sem = Semaphore.new
23
+
24
+ @stream.add_iq_callback(200, self) { |iq|
25
+ if iq.type == :set and iq.from == @initiator_jid and iq.to == @target_jid and iq.query.kind_of?(IqQueryBytestreams)
26
+ begin
27
+ @stream.delete_iq_callback(self)
28
+
29
+ iq.query.each_element('streamhost') { |streamhost|
30
+ if streamhost.host and streamhost.port and not @socks
31
+ begin
32
+ @socks = connect_socks(streamhost)
33
+ @streamhost_used = streamhost
34
+ rescue Exception => e
35
+ Jabber::debuglog("SOCKS5 Bytestreams: #{e.class}: #{e}\n#{e.backtrace.join("\n")}")
36
+ @streamhost_cbs.process(streamhost, :failure, e)
37
+ end
38
+ end
39
+ }
40
+
41
+ reply = iq.answer(false)
42
+ if @streamhost_used
43
+ reply.type = :result
44
+ reply.add(IqQueryBytestreams.new)
45
+ reply.query.add(StreamHostUsed.new(@streamhost_used.jid))
46
+ else
47
+ reply.type = :error
48
+ reply.add(ErrorResponse.new('item-not-found'))
49
+ end
50
+ @stream.send(reply)
51
+ rescue Exception => e
52
+ error = e
53
+ end
54
+
55
+ connect_sem.run
56
+ true
57
+ else
58
+ false
59
+ end
60
+ }
61
+
62
+ begin
63
+ Timeout::timeout(@connect_timeout) { connect_sem.wait }
64
+ rescue Timeout::Error
65
+ @stream.delete_iq_callback(self)
66
+ end
67
+
68
+ raise error if error
69
+ (@socks != nil)
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,62 @@
1
+ # =XMPP4R - XMPP Library for Ruby
2
+ # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option.
3
+ # Website::http://home.gna.org/xmpp4r/
4
+
5
+ module Jabber
6
+ module Bytestreams
7
+ ##
8
+ # SOCKS5 Bytestreams implementation of the target site
9
+ class SOCKS5BytestreamsTarget < SOCKS5Bytestreams
10
+ ##
11
+ # Wait until the stream has been established
12
+ #
13
+ # May raise various exceptions
14
+ def accept
15
+ error = nil
16
+ connect_sem = Semaphore.new
17
+
18
+ @stream.add_iq_callback(200, self) { |iq|
19
+ if iq.type == :set and iq.from == @initiator_jid and iq.to == @target_jid and iq.query.kind_of?(IqQueryBytestreams)
20
+ begin
21
+ @stream.delete_iq_callback(self)
22
+
23
+ iq.query.each_element('streamhost') { |streamhost|
24
+ if streamhost.host and streamhost.port and not @socks
25
+ begin
26
+ @socks = connect_socks(streamhost)
27
+ @streamhost_used = streamhost
28
+ rescue Exception => e
29
+ Jabber::debuglog("SOCKS5 Bytestreams: #{e.class}: #{e}\n#{e.backtrace.join("\n")}")
30
+ @streamhost_cbs.process(streamhost, :failure, e)
31
+ end
32
+ end
33
+ }
34
+
35
+ reply = iq.answer(false)
36
+ if @streamhost_used
37
+ reply.type = :result
38
+ reply.add(IqQueryBytestreams.new)
39
+ reply.query.add(StreamHostUsed.new(@streamhost_used.jid))
40
+ else
41
+ reply.type = :error
42
+ reply.add(ErrorResponse.new('item-not-found'))
43
+ end
44
+ @stream.send(reply)
45
+ rescue Exception => e
46
+ error = e
47
+ end
48
+
49
+ connect_sem.run
50
+ true
51
+ else
52
+ false
53
+ end
54
+ }
55
+
56
+ connect_sem.wait
57
+ raise error if error
58
+ (@socks != nil)
59
+ end
60
+ end
61
+ end
62
+ end