github
Advanced Search
  • Home
  • Pricing and Signup
  • Explore GitHub
  • Blog
  • Login

igrigorik / em-proxy

  • Admin
  • Watch Unwatch
  • Fork
  • Your Fork
  • Pull Request
  • Download Source
    • 138
    • 14
  • Source
  • Commits
  • Network (14)
  • Issues (0)
  • Downloads (0)
  • Wiki (1)
  • Graphs
  • Branch: master

click here to add a description

click here to add a homepage

  • Branches (1)
    • master ✓
  • Tags (0)
Sending Request…
Enable Donations

Pledgie Donations

Once activated, we'll place the following badge in your repository's detail box:
Pledgie_example
This service is courtesy of Pledgie.

EventMachine Proxy DSL for writing high-performance transparent / intercepting proxies in Ruby — Read more

  cancel

http://www.igvita.com/2009/04/20/ruby-proxies-for-scale-and-monitoring/

  cancel
  • Private
  • Read-Only
  • HTTP Read-Only

This URL has Read+Write access

Merge branch 'master' of git://github.com/Syd/em-proxy 
Ilya Grigorik (author)
Tue Dec 22 06:47:36 -0800 2009
commit  ff1b681e28b6164f073ac5d5783fc3b33fa3be73
tree    f451a869beadef4f23e69a4fd838516e04c53e5d
parent  b9082575061f309f3370889f97134ff55132f8da parent  85a81862ef1e2c4337d9b44ab0154712b2c96480
em-proxy /
name age
history
message
file README.rdoc Sun Dec 13 00:16:28 -0800 2009 fixed error in readme. [Syd]
file Rakefile Sun Dec 20 14:11:11 -0800 2009 add rakefile [Ilya Grigorik]
file VERSION Sun Oct 25 13:05:17 -0700 2009 Version bump to 0.1.1 [Ilya Grigorik]
directory examples/ Mon Dec 21 10:24:39 -0800 2009 on_connect callback, peer helper method [dsander]
directory lib/ Mon Dec 21 10:24:39 -0800 2009 on_connect callback, peer helper method [dsander]
directory spec/ Tue Dec 22 06:46:13 -0800 2009 speed up the tests, a bit :-) [Ilya Grigorik]
README.rdoc

EM-Proxy

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

  • Slides from RailsConf 2009: bit.ly/D7oWB
  • GoGaRuCo notes & Slides: 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, name|
        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.
Blog | Support | Training | Contact | API | Status | Twitter | Help | Security
© 2010 GitHub Inc. All rights reserved. | Terms of Service | Privacy Policy
Powered by the Dedicated Servers and
Cloud Computing of Rackspace Hosting®
Dedicated Server