Sha256: 9ded7990c734b398b32a5ed6fcd8214efc5c480fc237229eef42d666e64fb910

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

= EM-Proxy

EventMachine Proxy DSL for writing high-performance transparent / intercepting proxies in Ruby.

- Slides from RailsConf 2009: http://bit.ly/D7oWB
- GoGaRuCo notes & Slides: http://www.igvita.com/2009/04/20/ruby-proxies-for-scale-and-monitoring/

== Getting started

  # install & configure gemcutter repos
  gem update --system
  gem install gemcutter
  gem tumble

  gem install em-proxy

  irb:0> require 'em-proxy'

== Simple port forwarding proxy

    Proxy.start(:host => "0.0.0.0", :port => 80, :debug => true) do |conn|
      conn.server :srv, :host => "127.0.0.1", :port => 81

      # modify / process request stream
      conn.on_data do |data|
        p [:on_data, data]
        data
      end

      # modify / process response stream
      conn.on_response do |backend, resp|
        p [:on_response, backend, resp]
        resp
      end

      # termination logic
      conn.on_finish do |backend|
        p [:on_finish, name]

        # terminate connection (in duplex mode, you can terminate when prod is done)
        unbind if backend == :srv
      end
    end

For more examples see the /examples directory.
- SMTP Spam Filtering
- Duplicating traffic
- Selective forwarding
- Beanstalkd interceptor
- etc.

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
em-proxy-0.1.1 README.rdoc