Sha256: 30fd25cab08b8aa535a6d8dd66227515e76282c324264ce01ffaab876cf202a5

Contents?: true

Size: 1.15 KB

Versions: 9

Compression:

Stored size: 1.15 KB

Contents

module RProxy
  class TargetConnection < EM::Connection

    def initialize(client, disable_cb, buffer_size, usage_manager)
      @disable_unbind_callback = disable_cb
      @client_connection = client
      @buffer_size = buffer_size
      @usage_manager = usage_manager
    end

    def assign_logger(logger)
      @logger = logger
    end

    def assign_user_and_password(username, password)
      @username = username
      @password = password
    end

    def connection_completed
      response_proxy_connect_ready
    end

    def proxy_target_unbound
      close_connection
    end

    def unbind
      return if @disable_unbind_callback
      @usage_manager.report_usage(@username, @password, get_proxied_bytes)
    end

    private

    def response_proxy_connect_ready
      begin
        @client_connection.send_data(RProxy::Constants::HTTP_SUCCESS)
        @client_connection.proxy_incoming_to(self, @buffer_size)
        proxy_incoming_to(@client_connection, @buffer_size)
      rescue => e
        port, ip = Socket.unpack_sockaddr_in(get_peername)
        @logger.error("target ip: #{ip}, port: #{port}, #{e.message}") if @logger
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
r_proxy-0.2.8 lib/r_proxy/target_connection.rb
r_proxy-0.2.7 lib/r_proxy/target_connection.rb
r_proxy-0.2.6 lib/r_proxy/target_connection.rb
r_proxy-0.2.5 lib/r_proxy/target_connection.rb
r_proxy-0.2.4 lib/r_proxy/target_connection.rb
r_proxy-0.2.3 lib/r_proxy/target_connection.rb
r_proxy-0.2.2 lib/r_proxy/target_connection.rb
r_proxy-0.2.1 lib/r_proxy/target_connection.rb
r_proxy-0.2.0 lib/r_proxy/target_connection.rb