malm 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 -1
- data/lib/malm_smtp_server.rb +17 -13
- data/lib/malm_web.rb +8 -2
- data/lib/message_db.rb +7 -0
- data/malm.gemspec +2 -1
- data/spec/bin/malm_test_message +17 -0
- metadata +19 -18
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/lib/malm_smtp_server.rb
CHANGED
@@ -22,19 +22,21 @@ class MalmSMTPServer < GServer
|
|
22
22
|
puts "Connected"
|
23
23
|
io.print "220 hello\r\n"
|
24
24
|
loop do
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
io.print op
|
32
|
-
end
|
25
|
+
data = io.gets
|
26
|
+
puts ">>" + data
|
27
|
+
ok, op = process_line(data, session)
|
28
|
+
puts "<<" + op
|
29
|
+
io.print op
|
30
|
+
break unless ok
|
33
31
|
break if io.closed?
|
34
32
|
end
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
begin
|
34
|
+
io.close
|
35
|
+
db_insert(session)
|
36
|
+
rescue => e
|
37
|
+
log "something screwed up..."
|
38
|
+
log e.backtrace
|
39
|
+
end
|
38
40
|
end
|
39
41
|
|
40
42
|
def process_line(line, session)
|
@@ -47,7 +49,7 @@ class MalmSMTPServer < GServer
|
|
47
49
|
elsif (line =~ /^(HELO|EHLO)/)
|
48
50
|
return true, "250 and..?\r\n"
|
49
51
|
elsif (line =~ /^QUIT/)
|
50
|
-
return false, "bye\r\n"
|
52
|
+
return false, "221 bye\r\n"
|
51
53
|
elsif (line =~ /^MAIL FROM\:/)
|
52
54
|
session.mail_from = (/^MAIL FROM\:<(.+)>.*$/).match(line)[1]
|
53
55
|
return true, "250 OK\r\n"
|
@@ -65,7 +67,8 @@ class MalmSMTPServer < GServer
|
|
65
67
|
def db_insert(session)
|
66
68
|
subject_regex = /^Subject\: (.+)$/
|
67
69
|
|
68
|
-
|
70
|
+
subject_match = subject_regex.match(session.email_body)
|
71
|
+
subject = subject_match ? subject_match[1] : ""
|
69
72
|
subject.strip!
|
70
73
|
|
71
74
|
message = {:subject => subject, :from => session.mail_from, :to => session.rcpt_to, :body => session.email_body}
|
@@ -86,4 +89,5 @@ class MalmSMTPServer < GServer
|
|
86
89
|
@mail_log_fd.close if @mail_log_fd
|
87
90
|
super
|
88
91
|
end
|
92
|
+
|
89
93
|
end
|
data/lib/malm_web.rb
CHANGED
@@ -3,12 +3,18 @@ require 'sinatra/base'
|
|
3
3
|
require 'json'
|
4
4
|
|
5
5
|
class MalmWeb < Sinatra::Base
|
6
|
-
get
|
6
|
+
get "/" do
|
7
7
|
"Hello World\n"
|
8
8
|
end
|
9
9
|
|
10
|
-
get
|
10
|
+
get "/messages" do
|
11
11
|
content_type :json
|
12
12
|
settings.message_db.find_all.to_json
|
13
13
|
end
|
14
|
+
|
15
|
+
get "/messages/:id" do
|
16
|
+
content_type :json
|
17
|
+
id = Integer(params[:id])
|
18
|
+
settings.message_db.find(id).to_json
|
19
|
+
end
|
14
20
|
end
|
data/lib/message_db.rb
CHANGED
@@ -10,6 +10,7 @@ class MessageDb
|
|
10
10
|
|
11
11
|
def create(message)
|
12
12
|
@sempahore.synchronize do
|
13
|
+
message[:id] = @message_db.size
|
13
14
|
@message_db << message
|
14
15
|
@message_db.size
|
15
16
|
end
|
@@ -20,5 +21,11 @@ class MessageDb
|
|
20
21
|
@message_db.dup
|
21
22
|
end
|
22
23
|
end
|
24
|
+
|
25
|
+
def find(id)
|
26
|
+
@sempahore.synchronize do
|
27
|
+
@message_db[id]
|
28
|
+
end
|
29
|
+
end
|
23
30
|
|
24
31
|
end
|
data/malm.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{malm}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{madlep}]
|
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
|
|
29
29
|
"lib/malm_web.rb",
|
30
30
|
"lib/message_db.rb",
|
31
31
|
"malm.gemspec",
|
32
|
+
"spec/bin/malm_test_message",
|
32
33
|
"spec/help_spec.rb",
|
33
34
|
"spec/spec_helper.rb"
|
34
35
|
]
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'net/smtp'
|
4
|
+
|
5
|
+
message = <<-END_OF_MESSAGE
|
6
|
+
From: francis <francis@example.com>
|
7
|
+
To: bill <bill@example.com>
|
8
|
+
Subject: zombies
|
9
|
+
Date: Thu, 14 Jul 2011 15:16:43 +1000
|
10
|
+
Message-Id: <unique.message.id.string@example.com>
|
11
|
+
|
12
|
+
You know what I don't hate? I don't hate vests.
|
13
|
+
END_OF_MESSAGE
|
14
|
+
|
15
|
+
Net::SMTP.start('localhost', 2525) do |smtp|
|
16
|
+
smtp.send_message(message,'francis@example.com','bill@example.com')
|
17
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: malm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-07-14 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &2156099220 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - =
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.5.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2156099220
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: clamp
|
27
|
-
requirement: &
|
27
|
+
requirement: &2156093140 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - =
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.2.1
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2156093140
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: sinatra
|
38
|
-
requirement: &
|
38
|
+
requirement: &2156089540 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - =
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.2.6
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2156089540
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: thin
|
49
|
-
requirement: &
|
49
|
+
requirement: &2156079880 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - =
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.2.11
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2156079880
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &2156074560 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 2.3.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2156074560
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
|
-
requirement: &
|
71
|
+
requirement: &2156068940 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 1.0.0
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2156068940
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: jeweler
|
82
|
-
requirement: &
|
82
|
+
requirement: &2156057980 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 1.6.2
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *2156057980
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rcov
|
93
|
-
requirement: &
|
93
|
+
requirement: &2156054800 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *2156054800
|
102
102
|
description: SMTP server with web interface for easy local development. Sets up a
|
103
103
|
little mail server that you can send messages to, and provides a web front end to
|
104
104
|
let you see what your app did.
|
@@ -121,6 +121,7 @@ files:
|
|
121
121
|
- lib/malm_web.rb
|
122
122
|
- lib/message_db.rb
|
123
123
|
- malm.gemspec
|
124
|
+
- spec/bin/malm_test_message
|
124
125
|
- spec/help_spec.rb
|
125
126
|
- spec/spec_helper.rb
|
126
127
|
homepage: http://github.com/madlep/malm
|
@@ -138,7 +139,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
138
139
|
version: '0'
|
139
140
|
segments:
|
140
141
|
- 0
|
141
|
-
hash: -
|
142
|
+
hash: -3447905791693919556
|
142
143
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
144
|
none: false
|
144
145
|
requirements:
|