mini-smtp-server 0.0.1 → 0.0.2
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.
- data/VERSION +1 -0
- data/lib/mini-smtp-server/mini-smtp-server.rb +15 -15
- data/mini-smtp-server.gemspec +55 -0
- data/test/unit/mini_smtp_server_test.rb +2 -2
- metadata +4 -2
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.2
|
@@ -7,9 +7,9 @@ class MiniSmtpServer < GServer
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def serve(io)
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
Thread.current[:data_mode] = false
|
11
|
+
Thread.current[:message] = {:data => ""}
|
12
|
+
Thread.current[:connection_active] = true
|
13
13
|
io.print "220 hello\r\n"
|
14
14
|
loop do
|
15
15
|
if IO.select([io], nil, nil, 0.1)
|
@@ -19,12 +19,12 @@ class MiniSmtpServer < GServer
|
|
19
19
|
log(">>> " + output) if(@audit && !output.empty?)
|
20
20
|
io.print(output) unless output.empty?
|
21
21
|
end
|
22
|
-
break if(
|
22
|
+
break if(!Thread.current[:connection_active] || io.closed?)
|
23
23
|
end
|
24
24
|
io.print "221 bye\r\n"
|
25
25
|
io.close
|
26
|
-
|
27
|
-
new_message_event(
|
26
|
+
Thread.current[:message][:data].gsub!(/\r\n\Z/, '').gsub!(/\.\Z/, '')
|
27
|
+
new_message_event(Thread.current[:message])
|
28
28
|
end
|
29
29
|
|
30
30
|
def process_line(line)
|
@@ -33,32 +33,32 @@ class MiniSmtpServer < GServer
|
|
33
33
|
when (/^(HELO|EHLO)/)
|
34
34
|
return "220 go on...\r\n"
|
35
35
|
when (/^QUIT/)
|
36
|
-
|
36
|
+
Thread.current[:connection_active] = false
|
37
37
|
return ""
|
38
38
|
when (/^MAIL FROM\:/)
|
39
|
-
|
39
|
+
Thread.current[:message][:from] = line.gsub(/^MAIL FROM\:/, '').strip
|
40
40
|
return "220 OK\r\n"
|
41
41
|
when (/^RCPT TO\:/)
|
42
|
-
|
42
|
+
Thread.current[:message][:to] = line.gsub(/^RCPT TO\:/, '').strip
|
43
43
|
return "220 OK\r\n"
|
44
44
|
when (/^DATA/)
|
45
|
-
|
45
|
+
Thread.current[:data_mode] = true
|
46
46
|
return "354 Enter message, ending with \".\" on a line by itself\r\n"
|
47
47
|
end
|
48
48
|
|
49
49
|
# If we are in data mode and the entire message consists
|
50
50
|
# solely of a period on a line by itself then we
|
51
51
|
# are being told to exit data mode
|
52
|
-
if((
|
53
|
-
|
54
|
-
|
52
|
+
if((Thread.current[:data_mode]) && (line.chomp =~ /^\.$/))
|
53
|
+
Thread.current[:message][:data] += line
|
54
|
+
Thread.current[:data_mode] = false
|
55
55
|
return "220 OK\r\n"
|
56
56
|
end
|
57
57
|
|
58
58
|
# If we are in date mode then we need to add
|
59
59
|
# the new data to the message
|
60
|
-
if(
|
61
|
-
|
60
|
+
if(Thread.current[:data_mode])
|
61
|
+
Thread.current[:message][:data] += line
|
62
62
|
return ""
|
63
63
|
else
|
64
64
|
# If we somehow get to this point then
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{mini-smtp-server}
|
8
|
+
s.version = "0.0.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Aaron Gough"]
|
12
|
+
s.date = %q{2010-11-05}
|
13
|
+
s.description = %q{A small and simple SMTP server}
|
14
|
+
s.email = %q{aaron@aarongough.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"MIT-LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
"MIT-LICENSE",
|
21
|
+
"README.rdoc",
|
22
|
+
"Rakefile",
|
23
|
+
"VERSION",
|
24
|
+
"lib/mini-smtp-server.rb",
|
25
|
+
"lib/mini-smtp-server/mini-smtp-server.rb",
|
26
|
+
"mini-smtp-server.gemspec",
|
27
|
+
"test/setup/.gitignore",
|
28
|
+
"test/setup/custom_assertions.rb",
|
29
|
+
"test/setup/test_unit_extensions.rb",
|
30
|
+
"test/test_helper.rb",
|
31
|
+
"test/unit/mini_smtp_server_test.rb"
|
32
|
+
]
|
33
|
+
s.homepage = %q{https://github.com/aarongough/mini-smtp-server}
|
34
|
+
s.rdoc_options = ["--charset=UTF-8", "--line-numbers", "--inline-source"]
|
35
|
+
s.require_paths = ["lib"]
|
36
|
+
s.rubygems_version = %q{1.3.7}
|
37
|
+
s.summary = %q{A small and simple SMTP server}
|
38
|
+
s.test_files = [
|
39
|
+
"test/setup/custom_assertions.rb",
|
40
|
+
"test/setup/test_unit_extensions.rb",
|
41
|
+
"test/test_helper.rb",
|
42
|
+
"test/unit/mini_smtp_server_test.rb"
|
43
|
+
]
|
44
|
+
|
45
|
+
if s.respond_to? :specification_version then
|
46
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
47
|
+
s.specification_version = 3
|
48
|
+
|
49
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
50
|
+
else
|
51
|
+
end
|
52
|
+
else
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
@@ -20,7 +20,7 @@ class MiniSmtpServerTest < Test::Unit::TestCase
|
|
20
20
|
|
21
21
|
def setup
|
22
22
|
$messages = []
|
23
|
-
@server = TestSmtpServer.new
|
23
|
+
@server = TestSmtpServer.new
|
24
24
|
@server.start
|
25
25
|
end
|
26
26
|
|
@@ -70,7 +70,7 @@ class MiniSmtpServerTest < Test::Unit::TestCase
|
|
70
70
|
private
|
71
71
|
|
72
72
|
def send_mail(message = $example_mail, from_address = "smtp@test.com", to_address = "some1@test.com")
|
73
|
-
Net::SMTP.start('127.0.0.1',
|
73
|
+
Net::SMTP.start('127.0.0.1', 2525) do |smtp|
|
74
74
|
smtp.send_message(message, from_address, to_address)
|
75
75
|
smtp.finish
|
76
76
|
sleep 0.01
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 2
|
9
|
+
version: 0.0.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Aaron Gough
|
@@ -31,8 +31,10 @@ files:
|
|
31
31
|
- MIT-LICENSE
|
32
32
|
- README.rdoc
|
33
33
|
- Rakefile
|
34
|
+
- VERSION
|
34
35
|
- lib/mini-smtp-server.rb
|
35
36
|
- lib/mini-smtp-server/mini-smtp-server.rb
|
37
|
+
- mini-smtp-server.gemspec
|
36
38
|
- test/setup/.gitignore
|
37
39
|
- test/setup/custom_assertions.rb
|
38
40
|
- test/setup/test_unit_extensions.rb
|