Defunct

This project is no longer maintained nor used by Arachni, it has been substituted by Arachni-RPC.

Arachni-RPC EM

Version 0.2
Github page http://github.com/Arachni/arachni-rpc-em
Code Documentation http://rubydoc.info/github/Arachni/arachni-rpc-em/
Author Tasos "Zapotek" Laskos (@Zap0tek)
Twitter @ArachniScanner
Copyright 2011-2013
License 3-clause BSD

Synopsis

Arachni-RPC EM is an implementation of the Arachni-RPC protocol using EventMachine and provides both a server and a client.

Features

It's capable of:

  • Performing and handling a few thousand requests per second (depending on call size, network conditions and the like).
  • Operating over TCP/IP and UNIX domain sockets.
  • Configurable retry-on-failure for requests.
  • Keep-alive and connection re-use.
  • TLS encryption (with peer verification).
  • Asynchronous and synchronous requests.
  • Handling server-side asynchronous calls that require a block (or any method that passes its result to a block instead of returning it).
  • Token-based authentication.
  • Primary and secondary/fallback serializers
    • Server will expect the Client to use the primary serializer, if the Request cannot be parsed using the primary one, it will revert to using the fallback to parse the Request and serialize the Response.

Usage

The files in the examples/ directory go through everything in great detail. Also, the tests under spec/arachni/rpc/ cover everything too so they can provide you with hints.

Installation

Gem

gem install arachni-rpc-em

Source

If you want to clone the repository and work with the source code:

git co git://github.com/arachni/arachni-rpc-em.git
cd arachni-rpc-em
bundle install

Running the Specs

bundle exec rake spec

Warning: Some of the test cases include stress-testing, don't be alarmed when RAM usage hits 5GB and CPU utilization hits 100%.

Bug reports/Feature requests

Please send your feedback using GitHub's issue system at http://github.com/arachni/arachni-rpc-em/issues.

License

Arachni-RPC EM is provided under the 3-clause BSD license.
See the LICENSE file for more information.