Class: Shadowsocks::Parser::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/shadowsocks/parser/base.rb

Direct Known Subclasses

Local, Server

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ Base

Returns a new instance of Base.



6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/shadowsocks/parser/base.rb', line 6

def initialize(data)
  @data = data

  @mode = \
    case addr_type
    when "\x01"
      :ip
    when "\x03"
      :domain
    else
      :unsupported
    end
end

Instance Attribute Details

#dataObject

Returns the value of attribute data.



4
5
6
# File 'lib/shadowsocks/parser/base.rb', line 4

def data
  @data
end

#modeObject

Returns the value of attribute mode.



4
5
6
# File 'lib/shadowsocks/parser/base.rb', line 4

def mode
  @mode
end

Instance Method Details

#addr_lenObject



24
25
26
# File 'lib/shadowsocks/parser/base.rb', line 24

def addr_len
  raise 'Called abstract method: addr_len'
end

#addr_to_sendObject



28
29
30
31
32
33
34
35
# File 'lib/shadowsocks/parser/base.rb', line 28

def addr_to_send
  case mode
  when :domain
    data[3..5 + addr_len + 2]
  when :ip
    data[3..9]
  end
end

#addr_typeObject



20
21
22
# File 'lib/shadowsocks/parser/base.rb', line 20

def addr_type
  raise 'Called abstract method: addr_type'
end

#header_lengthObject



45
46
47
48
49
50
51
52
# File 'lib/shadowsocks/parser/base.rb', line 45

def header_length
  case mode
  when :domain
    4 + addr_len
  when :ip
    7
  end
end

#remote_addrObject



37
38
39
# File 'lib/shadowsocks/parser/base.rb', line 37

def remote_addr
  raise 'Called abstract method: remote_addr'
end

#remote_portObject



41
42
43
# File 'lib/shadowsocks/parser/base.rb', line 41

def remote_port
  raise 'Called abstract method: remote_port'
end