simplificator-tls-support 0.2.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.
- data/README +46 -0
- data/init.rb +1 -0
- data/lib/tls-support/tls-support.rb +65 -0
- data/lib/tls-support.rb +1 -0
- metadata +56 -0
data/README
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
== tls-support
|
2
|
+
= where does it come from ?
|
3
|
+
|
4
|
+
We did not write this code. We just gem-ified it!
|
5
|
+
|
6
|
+
We could not find out who's the original author of this piece of code.
|
7
|
+
Looks like everyone copied from everyone, pasted some code here and there and so on.
|
8
|
+
Here are some places where you can find this code (or similar)
|
9
|
+
* http://www.ruby-forum.com/topic/160724
|
10
|
+
* http://brunomiranda.com/past/2007/11/5/in_need_of_an_smtp/
|
11
|
+
* http://groups.google.co.jp/group/rubyonrails-talk/browse_thread/thread/ab5b79feea255f5b
|
12
|
+
* http://pastie.org/pastes/255293/edit
|
13
|
+
|
14
|
+
If you are the original author, please contact us so we can add proper credits (or remove the gem or ...)
|
15
|
+
|
16
|
+
= what is it
|
17
|
+
TLS Support for Ruby. We use it to connect to GMail from ActionMailer.
|
18
|
+
|
19
|
+
|
20
|
+
= Installation
|
21
|
+
sudo gem update --system (in case you are not yet on version 1.2.0 or higher)
|
22
|
+
sudo gem sources -a http://gems.github.com (only once)
|
23
|
+
sudo gem install simplificator-tls-support
|
24
|
+
|
25
|
+
|
26
|
+
= Usage
|
27
|
+
# require the libs
|
28
|
+
just require the gem
|
29
|
+
|
30
|
+
# Sample ActionMailer Config
|
31
|
+
|
32
|
+
DEFAULT_FROM_ADDRESS = 'Simplificator Notifier <notifier@simplificator.com>'
|
33
|
+
config.action_mailer.raise_delivery_errors = true
|
34
|
+
config.action_mailer.perform_deliveries = true
|
35
|
+
config.action_mailer.delivery_method = :smtp
|
36
|
+
ActionMailer::Base.smtp_settings = {
|
37
|
+
:address => 'smtp.gmail.com',
|
38
|
+
:port => 587,
|
39
|
+
:authentication => :plain,
|
40
|
+
:user_name => 'notifier@simplificator.com',
|
41
|
+
:password => 'XYZXYZXYZ'
|
42
|
+
}
|
43
|
+
# You can use these settings to create URLS with the rails helpers in your mails
|
44
|
+
ActionMailer::Base.default_url_options[:host] = 'localhost'
|
45
|
+
ActionMailer::Base.default_url_options[:port] = '3000'
|
46
|
+
|
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'tls-support'
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require "openssl"
|
2
|
+
require "net/smtp"
|
3
|
+
|
4
|
+
Net::SMTP.class_eval do
|
5
|
+
private
|
6
|
+
def do_start(helodomain, user, secret, authtype)
|
7
|
+
raise IOError, 'SMTP session already started' if @started
|
8
|
+
check_auth_args user, secret, authtype if user or secret
|
9
|
+
|
10
|
+
sock = timeout(@open_timeout) { TCPSocket.open(@address, @port) }
|
11
|
+
@socket = Net::InternetMessageIO.new(sock)
|
12
|
+
@socket.read_timeout = 60 #@read_timeout
|
13
|
+
|
14
|
+
check_response(critical { recv_response() })
|
15
|
+
do_helo(helodomain)
|
16
|
+
|
17
|
+
if starttls
|
18
|
+
raise 'openssl library not installed' unless defined?(OpenSSL)
|
19
|
+
ssl = OpenSSL::SSL::SSLSocket.new(sock)
|
20
|
+
ssl.sync_close = true
|
21
|
+
ssl.connect
|
22
|
+
@socket = Net::InternetMessageIO.new(ssl)
|
23
|
+
@socket.read_timeout = 60 #@read_timeout
|
24
|
+
do_helo(helodomain)
|
25
|
+
end
|
26
|
+
|
27
|
+
authenticate user, secret, authtype if user
|
28
|
+
@started = true
|
29
|
+
ensure
|
30
|
+
unless @started
|
31
|
+
# authentication failed, cancel connection.
|
32
|
+
@socket.close if not @started and @socket and not @socket.closed?
|
33
|
+
@socket = nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def do_helo(helodomain)
|
38
|
+
begin
|
39
|
+
if @esmtp
|
40
|
+
ehlo helodomain
|
41
|
+
else
|
42
|
+
helo helodomain
|
43
|
+
end
|
44
|
+
rescue Net::ProtocolError
|
45
|
+
if @esmtp
|
46
|
+
@esmtp = false
|
47
|
+
@error_occured = false
|
48
|
+
retry
|
49
|
+
end
|
50
|
+
raise
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def starttls
|
55
|
+
getok('STARTTLS') rescue return false
|
56
|
+
return true
|
57
|
+
end
|
58
|
+
|
59
|
+
def quit
|
60
|
+
begin
|
61
|
+
getok('QUIT')
|
62
|
+
rescue EOFError
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/lib/tls-support.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'tls-support/tls-support'
|
metadata
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: simplificator-tls-support
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Simplificator GmbH
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-08-22 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: adds tls support to ruby. this is a piece of code found on many different places on the web. we just gem-ified it for easier use.
|
17
|
+
email: info@simplificator.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- lib/tls-support.rb
|
26
|
+
- lib/tls-support/tls-support.rb
|
27
|
+
- README
|
28
|
+
- init.rb
|
29
|
+
has_rdoc: false
|
30
|
+
homepage: http://simplificator.com/
|
31
|
+
post_install_message:
|
32
|
+
rdoc_options: []
|
33
|
+
|
34
|
+
require_paths:
|
35
|
+
- lib
|
36
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: "0"
|
41
|
+
version:
|
42
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: "0"
|
47
|
+
version:
|
48
|
+
requirements: []
|
49
|
+
|
50
|
+
rubyforge_project:
|
51
|
+
rubygems_version: 1.2.0
|
52
|
+
signing_key:
|
53
|
+
specification_version: 2
|
54
|
+
summary: adds tls support
|
55
|
+
test_files: []
|
56
|
+
|