require 'webrick/httpproxy'

handler = proc { |_, res| res['X-PROXIED'] = true }

ProxyServer = WEBrick::HTTPProxyServer.new(
  :Port => 8080,
  :AccessLog => [],
  :RequestCallback => handler
)

AuthenticatedProxyServer = WEBrick::HTTPProxyServer.new(
  :Port => 8081,
  :ProxyAuthProc => proc do | req, res |
    WEBrick::HTTPAuth.proxy_basic_auth(req, res, 'proxy') do | user, pass |
      user == 'username' && pass == 'password'
    end
  end,
  :RequestCallback => handler
)

Thread.new  { ProxyServer.start }
trap('INT') do
  ProxyServer.shutdown
  exit
end

Thread.new  { AuthenticatedProxyServer.start }
trap('INT') do
  AuthenticatedProxyServer.shutdown
  exit
end
