This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
em-proxy /
| name | age | message | |
|---|---|---|---|
| |
README.rdoc | Sun Oct 25 13:06:32 -0700 2009 | |
| |
VERSION | Sun Oct 25 13:05:17 -0700 2009 | |
| |
examples/ | Sat Oct 03 11:38:00 -0700 2009 | |
| |
lib/ | Sat Oct 03 11:38:00 -0700 2009 | |
| |
spec/ | Sat Sep 26 10:45:21 -0700 2009 |
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|
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.







