Sha256: 816003879530afb884c57dcb56c7ebf2dd4c30ddfe5a41e0c9aa32deaf7b9ada

Contents?: true

Size: 1.08 KB

Versions: 6

Compression:

Stored size: 1.08 KB

Contents

module Shadowsocks
  class Listener < ::Shadowsocks::Connection
    attr_accessor :stage, :remote_addr, :remote_port, :addr_to_send, :cached_pieces,
                  :header_length, :connector, :config, :ip_detector

    def receive_data data
      data_handler data
      outbound_scheduler if connector
    end

    def post_init
      @stage = 0
      @cached_pieces = []
      puts "A client has connected..."
    end

    def unbind
      puts "A client has left..."
      connection_cleanup
    end

    def remote
      connector
    end

    private

    def parse_data parser
      @addrtype = parser.addr_type

      if parser.mode == :unsupported
        warn "unsupported addrtype: " + @addrtype.unpack('c')[0].to_s
        connection_cleanup
      end

      @addr_len      = parser.addr_len
      @addr_to_send  = parser.addr_to_send
      @remote_addr   = parser.remote_addr
      @remote_port   = parser.remote_port
      @header_length = parser.header_length
    end

    def connection_cleanup
      connector.close_connection if connector
      self.close_connection
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
shadowsocks-0.12 lib/shadowsocks/listener.rb
shadowsocks-0.11 lib/shadowsocks/listener.rb
shadowsocks-0.10 lib/shadowsocks/listener.rb
shadowsocks-0.9 lib/shadowsocks/listener.rb
shadowsocks-0.8 lib/shadowsocks/listener.rb
shadowsocks-0.7 lib/shadowsocks/listener.rb