Class: ProxyReverse::Client
- Inherits:
-
EventMachine::ProxyServer::Connection
- Object
- EventMachine::ProxyServer::Connection
- ProxyReverse::Client
- Defined in:
- lib/proxyreverse/client.rb
Instance Attribute Summary collapse
-
#options ⇒ Object
Returns the value of attribute options.
Class Method Summary collapse
Instance Method Summary collapse
- #connected(name) ⇒ Object
-
#initialize(options) ⇒ Client
constructor
A new instance of Client.
- #receive_data(data) ⇒ Object
- #relay_from_backend(name, data) ⇒ Object
Constructor Details
#initialize(options) ⇒ Client
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/proxyreverse/client.rb', line 30 def initialize() super(:debug => false) @options = @responses = {} transferEncoding = 'identity' if @options[:rewrite_domain] == :subdomains @options[:rewrite_domain] = "." + @options[:backend_host].sub(/^www./, '') end if @options[:rewrite_domain][0] == '.' @options['regex'] = "(https?:\\/\\/)([a-z\.]+\\.)?#{Regexp.escape(@options[:rewrite_domain][1..-1])}" else @options['regex'] = "(https?:\\/\\/)#{Regexp.escape(@options[:rewrite_domain])}" end server :srv, :host => @options[:backend_host], :port => @options[:backend_port] end |
Instance Attribute Details
#options ⇒ Object
Returns the value of attribute options.
8 9 10 |
# File 'lib/proxyreverse/client.rb', line 8 def @options end |
Class Method Details
.connect(options) ⇒ Object
49 50 51 |
# File 'lib/proxyreverse/client.rb', line 49 def self.connect() EventMachine::start_server([:host], [:port], self, ) end |
.run(options = {}) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/proxyreverse/client.rb', line 10 def self.run( = {}) @@logger = Logger.new(STDOUT) @@logger.level = [:verbose] ? Logger::INFO : Logger::WARN @@logger.info("Run with options #{.inspect}") begin trap 'SIGCLD', 'IGNORE' trap 'INT' do puts EventMachine.stop exit end rescue ArgumentError end EventMachine.epoll EventMachine.run { connect() } end |
Instance Method Details
#connected(name) ⇒ Object
53 54 |
# File 'lib/proxyreverse/client.rb', line 53 def connected(name) end |
#receive_data(data) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/proxyreverse/client.rb', line 70 def receive_data(data) begin while data.length > 0 if @request.nil? || @request.complete? @request = ProxyReverse::FrontendRequest.new(self) end offset = @request.receive_data(data) data = data[offset..-1] end rescue HTTP::Parser::Error => e raise e if e. != 'Could not parse data entirely' end end |
#relay_from_backend(name, data) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/proxyreverse/client.rb', line 56 def relay_from_backend(name, data) begin while data.length > 0 if @responses[name].nil? || @responses[name].complete? @responses[name] = ProxyReverse::BackendResponse.new(self, @request) end offset = @responses[name].receive_data(data) data = data[offset..-1] end rescue HTTP::Parser::Error => e raise e if e. != 'Could not parse data entirely' end end |