remailer 0.4.21 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. data/README.rdoc +25 -19
  2. data/VERSION +1 -1
  3. data/lib/remailer.rb +7 -1
  4. data/lib/remailer/{connection.rb → abstract_connection.rb} +63 -167
  5. data/lib/remailer/constants.rb +10 -0
  6. data/lib/remailer/email_address.rb +41 -0
  7. data/lib/remailer/imap.rb +6 -0
  8. data/lib/remailer/imap/client.rb +228 -0
  9. data/lib/remailer/imap/client/interpreter.rb +101 -0
  10. data/lib/remailer/imap/server.rb +15 -0
  11. data/lib/remailer/imap/server/interpreter.rb +2 -0
  12. data/lib/remailer/interpreter.rb +7 -6
  13. data/lib/remailer/interpreter/state_proxy.rb +20 -2
  14. data/lib/remailer/smtp.rb +6 -0
  15. data/lib/remailer/smtp/client.rb +329 -0
  16. data/lib/remailer/{connection/smtp_interpreter.rb → smtp/client/interpreter.rb} +4 -4
  17. data/lib/remailer/smtp/server.rb +130 -0
  18. data/lib/remailer/smtp/server/interpreter.rb +237 -0
  19. data/lib/remailer/smtp/server/transaction.rb +29 -0
  20. data/lib/remailer/socks5.rb +5 -0
  21. data/lib/remailer/socks5/client.rb +5 -0
  22. data/lib/remailer/{connection/socks5_interpreter.rb → socks5/client/interpreter.rb} +3 -2
  23. data/lib/remailer/support.rb +5 -0
  24. data/remailer.gemspec +27 -9
  25. data/test/unit/remailer_imap_client_interpreter_test.rb +14 -0
  26. data/test/unit/remailer_imap_client_test.rb +125 -0
  27. data/test/unit/{remailer_connection_smtp_interpreter_test.rb → remailer_smtp_client_interpreter_test.rb} +33 -33
  28. data/test/unit/{remailer_connection_test.rb → remailer_smtp_client_test.rb} +11 -11
  29. data/test/unit/remailer_smtp_server_test.rb +83 -0
  30. data/test/unit/{remailer_connection_socks5_interpreter_test.rb → remailer_socks5_client_interpreter_test.rb} +25 -17
  31. metadata +29 -11
@@ -1,6 +1,6 @@
1
1
  require File.expand_path(File.join(*%w[ .. helper ]), File.dirname(__FILE__))
2
2
 
3
- class SmtpDelegate
3
+ class SMTPDelegate
4
4
  attr_accessor :options, :protocol, :active_message
5
5
  attr_accessor :tls_support
6
6
 
@@ -62,7 +62,7 @@ class SmtpDelegate
62
62
  end
63
63
  end
64
64
 
65
- class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
65
+ class RemailerSMTPClientInterpreterTest < Test::Unit::TestCase
66
66
  def test_split_reply
67
67
  assert_mapping(
68
68
  '250 OK' => [ 250, 'OK' ],
@@ -70,12 +70,12 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
70
70
  'OK' => nil,
71
71
  '100-Example' => [ 100, 'Example', :continued ]
72
72
  ) do |reply|
73
- Remailer::Connection::SmtpInterpreter.split_reply(reply)
73
+ Remailer::SMTP::Client::Interpreter.split_reply(reply)
74
74
  end
75
75
  end
76
76
 
77
77
  def test_parser
78
- interpreter = Remailer::Connection::SmtpInterpreter.new
78
+ interpreter = Remailer::SMTP::Client::Interpreter.new
79
79
 
80
80
  assert_mapping(
81
81
  "250 OK\r\n" => [ 250, 'OK' ],
@@ -91,7 +91,7 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
91
91
  def test_encode_data
92
92
  sample_data = "Line 1\r\nLine 2\r\n.\r\nLine 3\r\n.Line 4\r\n"
93
93
 
94
- assert_equal "Line 1\r\nLine 2\r\n..\r\nLine 3\r\n..Line 4\r\n", Remailer::Connection::SmtpInterpreter.encode_data(sample_data)
94
+ assert_equal "Line 1\r\nLine 2\r\n..\r\nLine 3\r\n..Line 4\r\n", Remailer::SMTP::Client::Interpreter.encode_data(sample_data)
95
95
  end
96
96
 
97
97
  def test_base64
@@ -100,7 +100,7 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
100
100
  "\x7F" => "\x7F",
101
101
  nil => ''
102
102
  ) do |example|
103
- Remailer::Connection::SmtpInterpreter.base64(example).unpack('m')[0]
103
+ Remailer::SMTP::Client::Interpreter.base64(example).unpack('m')[0]
104
104
  end
105
105
  end
106
106
 
@@ -108,18 +108,18 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
108
108
  assert_mapping(
109
109
  %w[ tester tester ] => 'AHRlc3RlcgB0ZXN0ZXI='
110
110
  ) do |username, password|
111
- Remailer::Connection::SmtpInterpreter.encode_authentication(username, password)
111
+ Remailer::SMTP::Client::Interpreter.encode_authentication(username, password)
112
112
  end
113
113
  end
114
114
 
115
115
  def test_defaults
116
- interpreter = Remailer::Connection::SmtpInterpreter.new
116
+ interpreter = Remailer::SMTP::Client::Interpreter.new
117
117
 
118
118
  assert_equal :initialized, interpreter.state
119
119
  end
120
120
 
121
121
  def test_delegate_default_state
122
- delegate = SmtpDelegate.new
122
+ delegate = SMTPDelegate.new
123
123
 
124
124
  assert_equal false, delegate.closed?
125
125
  assert_equal nil, delegate.read
@@ -127,20 +127,20 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
127
127
  end
128
128
 
129
129
  def test_delegate_options
130
- delegate = SmtpDelegate.new(:use_tls => true)
130
+ delegate = SMTPDelegate.new(:use_tls => true)
131
131
 
132
132
  assert_equal true, delegate.use_tls?
133
133
  assert_equal false, delegate.requires_authentication?
134
134
 
135
- delegate = SmtpDelegate.new(:username => 'test@example.com', :password => 'tester')
135
+ delegate = SMTPDelegate.new(:username => 'test@example.com', :password => 'tester')
136
136
 
137
137
  assert_equal false, delegate.use_tls?
138
138
  assert_equal true, delegate.requires_authentication?
139
139
  end
140
140
 
141
141
  def test_standard_smtp_connection
142
- delegate = SmtpDelegate.new
143
- interpreter = Remailer::Connection::SmtpInterpreter.new(:delegate => delegate)
142
+ delegate = SMTPDelegate.new
143
+ interpreter = Remailer::SMTP::Client::Interpreter.new(:delegate => delegate)
144
144
 
145
145
  assert_equal :initialized, interpreter.state
146
146
 
@@ -162,8 +162,8 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
162
162
  end
163
163
 
164
164
  def test_standard_smtp_connection_send_email
165
- delegate = SmtpDelegate.new
166
- interpreter = Remailer::Connection::SmtpInterpreter.new(:delegate => delegate)
165
+ delegate = SMTPDelegate.new
166
+ interpreter = Remailer::SMTP::Client::Interpreter.new(:delegate => delegate)
167
167
 
168
168
  assert_equal :initialized, interpreter.state
169
169
 
@@ -217,8 +217,8 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
217
217
  end
218
218
 
219
219
  def test_standard_esmtp_connection
220
- delegate = SmtpDelegate.new
221
- interpreter = Remailer::Connection::SmtpInterpreter.new(:delegate => delegate)
220
+ delegate = SMTPDelegate.new
221
+ interpreter = Remailer::SMTP::Client::Interpreter.new(:delegate => delegate)
222
222
 
223
223
  assert_equal :initialized, interpreter.state
224
224
 
@@ -254,8 +254,8 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
254
254
  end
255
255
 
256
256
  def test_multi_line_hello_response
257
- delegate = SmtpDelegate.new(:use_tls => true)
258
- interpreter = Remailer::Connection::SmtpInterpreter.new(:delegate => delegate)
257
+ delegate = SMTPDelegate.new(:use_tls => true)
258
+ interpreter = Remailer::SMTP::Client::Interpreter.new(:delegate => delegate)
259
259
 
260
260
  assert_equal :initialized, interpreter.state
261
261
  assert_equal :smtp, delegate.protocol
@@ -276,8 +276,8 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
276
276
  end
277
277
 
278
278
  def test_tls_connection_with_support
279
- delegate = SmtpDelegate.new(:use_tls => true)
280
- interpreter = Remailer::Connection::SmtpInterpreter.new(:delegate => delegate)
279
+ delegate = SMTPDelegate.new(:use_tls => true)
280
+ interpreter = Remailer::SMTP::Client::Interpreter.new(:delegate => delegate)
281
281
 
282
282
  assert_equal true, delegate.use_tls?
283
283
  assert_equal :initialized, interpreter.state
@@ -303,12 +303,12 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
303
303
  interpreter.process("220 TLS go ahead\r\n")
304
304
  assert_equal true, delegate.started_tls?
305
305
 
306
- assert_equal :ready, interpreter.state
306
+ assert_equal :ehlo, interpreter.state
307
307
  end
308
308
 
309
309
  def test_tls_connection_without_support
310
- delegate = SmtpDelegate.new(:use_tls => true)
311
- interpreter = Remailer::Connection::SmtpInterpreter.new(:delegate => delegate)
310
+ delegate = SMTPDelegate.new(:use_tls => true)
311
+ interpreter = Remailer::SMTP::Client::Interpreter.new(:delegate => delegate)
312
312
 
313
313
  interpreter.process("220 mail.example.com ESMTP Exim 4.63\r\n")
314
314
  assert_equal 'EHLO localhost.local', delegate.read
@@ -322,8 +322,8 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
322
322
  end
323
323
 
324
324
  def test_basic_smtp_plaintext_auth_accepted
325
- delegate = SmtpDelegate.new(:username => 'tester@example.com', :password => 'tester')
326
- interpreter = Remailer::Connection::SmtpInterpreter.new(:delegate => delegate)
325
+ delegate = SMTPDelegate.new(:username => 'tester@example.com', :password => 'tester')
326
+ interpreter = Remailer::SMTP::Client::Interpreter.new(:delegate => delegate)
327
327
 
328
328
  assert delegate.requires_authentication?
329
329
 
@@ -348,8 +348,8 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
348
348
  end
349
349
 
350
350
  def test_basic_esmtp_plaintext_auth_accepted
351
- delegate = SmtpDelegate.new(:username => 'tester@example.com', :password => 'tester')
352
- interpreter = Remailer::Connection::SmtpInterpreter.new(:delegate => delegate)
351
+ delegate = SMTPDelegate.new(:username => 'tester@example.com', :password => 'tester')
352
+ interpreter = Remailer::SMTP::Client::Interpreter.new(:delegate => delegate)
353
353
 
354
354
  interpreter.process("220 mail.example.com ESMTP Exim 4.63\r\n")
355
355
  assert_equal 'EHLO localhost.local', delegate.read
@@ -368,8 +368,8 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
368
368
  end
369
369
 
370
370
  def test_basic_esmtp_plaintext_auth_rejected
371
- delegate = SmtpDelegate.new(:username => 'tester@example.com', :password => 'tester')
372
- interpreter = Remailer::Connection::SmtpInterpreter.new(:delegate => delegate)
371
+ delegate = SMTPDelegate.new(:username => 'tester@example.com', :password => 'tester')
372
+ interpreter = Remailer::SMTP::Client::Interpreter.new(:delegate => delegate)
373
373
 
374
374
  interpreter.process("220 mx.google.com ESMTP\r\n")
375
375
  assert_equal 'EHLO localhost.local', delegate.read
@@ -385,7 +385,7 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
385
385
  interpreter.process("535-5.7.1 Username and Password not accepted. Learn more at\r\n")
386
386
  interpreter.process("535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257\r\n")
387
387
 
388
- assert_equal '5.7.1 Username and Password not accepted. Learn more at http://mail.google.com/support/bin/answer.py?answer=14257', interpreter.error
388
+ assert_equal '5.7.1 Username and Password not accepted. Learn more at http://mail.google.com/support/bin/answer.py?answer=14257', interpreter.error
389
389
 
390
390
  assert_equal :quit, interpreter.state
391
391
 
@@ -396,8 +396,8 @@ class RemailerConnectionSmtpInterpreterTest < Test::Unit::TestCase
396
396
  end
397
397
 
398
398
  def test_unexpected_response
399
- delegate = SmtpDelegate.new(:username => 'tester@example.com', :password => 'tester')
400
- interpreter = Remailer::Connection::SmtpInterpreter.new(:delegate => delegate)
399
+ delegate = SMTPDelegate.new(:username => 'tester@example.com', :password => 'tester')
400
+ interpreter = Remailer::SMTP::Client::Interpreter.new(:delegate => delegate)
401
401
 
402
402
  interpreter.process("530 Go away\r\n")
403
403
 
@@ -1,12 +1,12 @@
1
1
  require File.expand_path(File.join(*%w[ .. helper ]), File.dirname(__FILE__))
2
2
 
3
- class RemailerConnectionTest < Test::Unit::TestCase
3
+ class RemailerSMTPClientTest < Test::Unit::TestCase
4
4
  def test_connect
5
5
  engine do
6
6
  debug = { }
7
7
  connected_host = nil
8
8
 
9
- connection = Remailer::Connection.open(
9
+ connection = Remailer::SMTP::Client.open(
10
10
  TestConfig.smtp_server[:host],
11
11
  :debug => STDERR,
12
12
  :connect => lambda { |success, host| connected_host = host }
@@ -43,7 +43,7 @@ class RemailerConnectionTest < Test::Unit::TestCase
43
43
  on_error = false
44
44
  on_connect = false
45
45
 
46
- connection = Remailer::Connection.open(
46
+ connection = Remailer::SMTP::Client.open(
47
47
  'example.com',
48
48
  :debug => STDERR,
49
49
  :error => lambda { |code, message|
@@ -70,7 +70,7 @@ class RemailerConnectionTest < Test::Unit::TestCase
70
70
  engine do
71
71
  error_received = nil
72
72
 
73
- connection = Remailer::Connection.open(
73
+ connection = Remailer::SMTP::Client.open(
74
74
  'invalid-example-domain--x.com',
75
75
  :debug => STDERR,
76
76
  :error => lambda { |code, message|
@@ -91,9 +91,9 @@ class RemailerConnectionTest < Test::Unit::TestCase
91
91
  engine do
92
92
  debug = { }
93
93
 
94
- connection = Remailer::Connection.open(
94
+ connection = Remailer::SMTP::Client.open(
95
95
  TestConfig.public_smtp_server[:host],
96
- :port => TestConfig.public_smtp_server[:port] || Remailer::Connection::SMTP_PORT,
96
+ :port => TestConfig.public_smtp_server[:port] || Remailer::SMTP::Client::SMTP_PORT,
97
97
  :debug => STDERR,
98
98
  :username => TestConfig.public_smtp_server[:username],
99
99
  :password => TestConfig.public_smtp_server[:password]
@@ -127,7 +127,7 @@ class RemailerConnectionTest < Test::Unit::TestCase
127
127
  engine do
128
128
  debug = { }
129
129
 
130
- connection = Remailer::Connection.open(
130
+ connection = Remailer::SMTP::Client.open(
131
131
  TestConfig.smtp_server[:host],
132
132
  :debug => STDERR,
133
133
  :proxy => {
@@ -162,7 +162,7 @@ class RemailerConnectionTest < Test::Unit::TestCase
162
162
 
163
163
  def test_connect_and_send_after_start
164
164
  engine do
165
- connection = Remailer::Connection.open(
165
+ connection = Remailer::SMTP::Client.open(
166
166
  TestConfig.smtp_server[:host],
167
167
  :debug => STDERR
168
168
  )
@@ -195,7 +195,7 @@ class RemailerConnectionTest < Test::Unit::TestCase
195
195
 
196
196
  def test_connect_and_send_dotted_message
197
197
  engine do
198
- connection = Remailer::Connection.open(
198
+ connection = Remailer::SMTP::Client.open(
199
199
  TestConfig.smtp_server[:host],
200
200
  :debug => STDERR
201
201
  )
@@ -220,7 +220,7 @@ class RemailerConnectionTest < Test::Unit::TestCase
220
220
 
221
221
  def test_connect_and_send_multiple
222
222
  engine do
223
- connection = Remailer::Connection.open(
223
+ connection = Remailer::SMTP::Client.open(
224
224
  TestConfig.smtp_server[:host],
225
225
  :debug => STDERR
226
226
  )
@@ -248,7 +248,7 @@ class RemailerConnectionTest < Test::Unit::TestCase
248
248
 
249
249
  def test_connect_and_long_send
250
250
  engine do
251
- connection = Remailer::Connection.open(
251
+ connection = Remailer::SMTP::Client.open(
252
252
  TestConfig.smtp_server[:host],
253
253
  :debug => STDERR
254
254
  )
@@ -0,0 +1,83 @@
1
+ require File.expand_path(File.join(*%w[ .. helper ]), File.dirname(__FILE__))
2
+
3
+ class RemailerSMTPServerTest < Test::Unit::TestCase
4
+ def test_bind
5
+ engine do
6
+ server_port = 8025
7
+
8
+ server = Remailer::SMTP::Server.bind(nil, server_port)
9
+
10
+ assert server
11
+ end
12
+ end
13
+
14
+ def test_connect
15
+ engine do
16
+ server_port = 8025
17
+
18
+ remote_ip = nil
19
+
20
+ server = Remailer::SMTP::Server.bind(
21
+ nil,
22
+ server_port,
23
+ :on_connect => lambda { |_remote_ip| remote_ip = _remote_ip }
24
+ )
25
+
26
+ assert server
27
+
28
+ connected_host = nil
29
+
30
+ client = Remailer::SMTP::Client.open(
31
+ 'localhost',
32
+ :port => server_port,
33
+ :debug => STDERR,
34
+ :connect => lambda { |success, host| connected_host = host }
35
+ )
36
+
37
+ assert_eventually(30) do
38
+ connected_host
39
+ end
40
+
41
+ assert_equal '127.0.0.1', connected_host
42
+ assert_equal '127.0.0.1', remote_ip
43
+ end
44
+ end
45
+
46
+ def test_transaction
47
+ engine do
48
+ server_port = 8025
49
+
50
+ transaction = nil
51
+
52
+ server = Remailer::SMTP::Server.bind(
53
+ nil,
54
+ server_port,
55
+ :on_transaction => lambda { |_transaction| transaction = _transaction }
56
+ )
57
+
58
+ assert server
59
+
60
+ connected_host = nil
61
+
62
+ client = Remailer::SMTP::Client.open(
63
+ 'localhost',
64
+ :port => server_port,
65
+ :debug => STDERR
66
+ )
67
+
68
+ sender = 'sender@example.com'.freeze
69
+ recipient = 'recipient@example.net'.freeze
70
+ data = "Subject: Re: Test Message\r\n\r\nTest message.\r\n\r\n.test\r\n.\r\n".freeze
71
+
72
+ client.send_email(sender, recipient, data)
73
+
74
+ assert_eventually(30) do
75
+ transaction
76
+ end
77
+
78
+ assert_equal sender, transaction.sender
79
+ assert_equal [ recipient ], transaction.recipients
80
+ assert_equal data, transaction.data
81
+ end
82
+ end
83
+ end
@@ -1,6 +1,6 @@
1
1
  require File.expand_path(File.join(*%w[ .. helper ]), File.dirname(__FILE__))
2
2
 
3
- class Socks5Delegate
3
+ class SOCKS5Delegate
4
4
  attr_reader :options
5
5
 
6
6
  def initialize(options = nil)
@@ -11,7 +11,13 @@ class Socks5Delegate
11
11
  def resolve_hostname(hostname)
12
12
  record = Socket.gethostbyname(hostname)
13
13
 
14
- record and record.last
14
+ resolved = (record and record.last)
15
+
16
+ if (block_given?)
17
+ yield(resolved)
18
+ end
19
+
20
+ resolved
15
21
  end
16
22
 
17
23
  def hostname
@@ -46,41 +52,42 @@ class Socks5Delegate
46
52
  end
47
53
  end
48
54
 
49
- class RemailerConnectionSocks5InterpreterTest < Test::Unit::TestCase
55
+ class RemailerSOCKS5ClientInterpreterTest < Test::Unit::TestCase
50
56
  def test_defaults
51
- delegate = Socks5Delegate.new(
57
+ delegate = SOCKS5Delegate.new(
52
58
  :proxy => {
53
59
  :host => 'example.net'
54
60
  }
55
61
  )
56
- interpreter = Remailer::Connection::Socks5Interpreter.new(:delegate => delegate)
62
+
63
+ interpreter = Remailer::SOCKS5::Client::Interpreter.new(:delegate => delegate)
57
64
 
58
- assert_equal :connect_to_proxy, interpreter.state
65
+ assert_equal :initialized, interpreter.state
59
66
  assert_equal false, delegate.closed?
60
67
  end
61
68
 
62
69
  def test_simple_connection
63
- delegate = Socks5Delegate.new(
70
+ delegate = SOCKS5Delegate.new(
64
71
  :host => '1.2.3.4',
65
72
  :port => 4321,
66
73
  :proxy => {
67
74
  :host => 'example.net'
68
75
  }
69
76
  )
70
- interpreter = Remailer::Connection::Socks5Interpreter.new(:delegate => delegate)
77
+ interpreter = Remailer::SOCKS5::Client::Interpreter.new(:delegate => delegate)
71
78
 
72
- assert_equal :connect_to_proxy, interpreter.state
79
+ assert_equal :initialized, interpreter.state
73
80
  assert_equal false, delegate.closed?
74
81
 
75
82
  sent = delegate.read
76
83
 
77
84
  assert_equal 2, sent.length
78
85
 
79
- assert_equal [ Remailer::Connection::Socks5Interpreter::SOCKS5_VERSION, 0 ], sent.unpack('CC')
86
+ assert_equal [ Remailer::SOCKS5::Client::Interpreter::SOCKS5_VERSION, 0 ], sent.unpack('CC')
80
87
 
81
88
  reply = [
82
- Remailer::Connection::Socks5Interpreter::SOCKS5_VERSION,
83
- Remailer::Connection::Socks5Interpreter::SOCKS5_METHOD[:no_auth]
89
+ Remailer::SOCKS5::Client::Interpreter::SOCKS5_VERSION,
90
+ Remailer::SOCKS5::Client::Interpreter::SOCKS5_METHOD[:no_auth]
84
91
  ].pack('CC')
85
92
 
86
93
  interpreter.process(reply)
@@ -91,22 +98,23 @@ class RemailerConnectionSocks5InterpreterTest < Test::Unit::TestCase
91
98
 
92
99
  sent = delegate.read
93
100
 
101
+ assert sent, "No data received"
94
102
  assert_equal 10, sent.length
95
103
 
96
104
  assert_equal [
97
- Remailer::Connection::Socks5Interpreter::SOCKS5_VERSION,
98
- Remailer::Connection::Socks5Interpreter::SOCKS5_COMMAND[:connect],
105
+ Remailer::SOCKS5::Client::Interpreter::SOCKS5_VERSION,
106
+ Remailer::SOCKS5::Client::Interpreter::SOCKS5_COMMAND[:connect],
99
107
  0,
100
- Remailer::Connection::Socks5Interpreter::SOCKS5_ADDRESS_TYPE[:ipv4],
108
+ Remailer::SOCKS5::Client::Interpreter::SOCKS5_ADDRESS_TYPE[:ipv4],
101
109
  [ 1, 2, 3, 4 ].pack('CCCC'),
102
110
  4321
103
111
  ], sent.unpack('CCCCA4n')
104
112
 
105
113
  interpreter.process([
106
- Remailer::Connection::Socks5Interpreter::SOCKS5_VERSION,
114
+ Remailer::SOCKS5::Client::Interpreter::SOCKS5_VERSION,
107
115
  0, # No error
108
116
  0,
109
- Remailer::Connection::Socks5Interpreter::SOCKS5_ADDRESS_TYPE[:ipv4],
117
+ Remailer::SOCKS5::Client::Interpreter::SOCKS5_ADDRESS_TYPE[:ipv4],
110
118
  [ 1, 2, 3, 4 ].pack('CCCC'),
111
119
  4321
112
120
  ].pack('CCCCA4n'))