net-smtp-proxy 1.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1b21b652bd81a297ede1bf7d17f5d0cf905defc5c371ede6c9f43e0480e8118f
4
+ data.tar.gz: 861663272537d7d5ef072dec5d593235424d7ebbe6d96e042a4d435797a7acfe
5
+ SHA512:
6
+ metadata.gz: b53016b660aa90d84f020b2c44920124a467e84016f4cc5eb82d223c4c638724573e3420b61a8125241b74cd4fac6a20d01a0fd80cb6c1336a05e9c5abfad06a
7
+ data.tar.gz: 1fe4d577140248f324305d3e21665059c54a8b50722b8275c2a4a3e49c320f178aa15daf96dcf8bdcb81e01aa6554c496f1197b67a1857ba6950950d4f50ddd9
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.push('./lib')
2
+
3
+ require 'rake'
4
+ require 'rspec/core/rake_task'
5
+ require 'rubygems/package_task'
6
+
7
+ Bundler::GemHelper.install_tasks
8
+
9
+ task default: %i[spec]
10
+
11
+ desc 'Run all rspec files'
12
+ RSpec::Core::RakeTask.new('spec')
@@ -0,0 +1,9 @@
1
+ require 'net/smtp'
2
+ require 'proxifier'
3
+
4
+ module Net
5
+ module SMTPProxy
6
+ autoload :DeliveryMethod, 'net/smtp-proxy/delivery_method'
7
+ autoload :Proxy, 'net/smtp-proxy/proxy'
8
+ end
9
+ end
@@ -0,0 +1,42 @@
1
+ begin
2
+ require 'mail'
3
+ rescue LoadError
4
+ puts 'The mail gem is required to use the DeliveryMethod class.'
5
+ end
6
+
7
+ module Net
8
+ module SMTPProxy
9
+ # for use with the mail gem
10
+ class DeliveryMethod < ::Mail::SMTP
11
+ private
12
+
13
+ # adapted from
14
+ # https://github.com/mikel/mail/blob/6bc16b4bce4fe280b19523c939b14a30e32a8ba4/lib/mail/network/delivery_methods/smtp.rb#L112
15
+ def build_smtp_session
16
+ init_params = [
17
+ settings[:address], settings[:port],
18
+ settings[:proxy_address], settings[:proxy_port]
19
+ ]
20
+
21
+ Net::SMTPProxy::Proxy.new(*init_params).tap do |smtp|
22
+ if settings[:tls] || settings[:ssl]
23
+ if smtp.respond_to?(:enable_tls)
24
+ smtp.enable_tls(ssl_context)
25
+ end
26
+ elsif settings[:enable_starttls]
27
+ if smtp.respond_to?(:enable_starttls)
28
+ smtp.enable_starttls(ssl_context)
29
+ end
30
+ elsif settings[:enable_starttls_auto]
31
+ if smtp.respond_to?(:enable_starttls_auto)
32
+ smtp.enable_starttls_auto(ssl_context)
33
+ end
34
+ end
35
+
36
+ smtp.open_timeout = settings[:open_timeout] if settings[:open_timeout]
37
+ smtp.read_timeout = settings[:read_timeout] if settings[:read_timeout]
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,22 @@
1
+ require 'net/smtp'
2
+ require 'proxifier'
3
+
4
+ module Net
5
+ module SMTPProxy
6
+ class Proxy < SMTP
7
+ attr_reader :proxy_address, :proxy_port
8
+
9
+ def initialize(address, port, proxy_address, proxy_port)
10
+ super(address, port)
11
+ @proxy_address = proxy_address
12
+ @proxy_port = proxy_port
13
+ end
14
+
15
+ private
16
+
17
+ def tcp_socket(address, port)
18
+ Proxifier::Proxy("#{proxy_address}:#{proxy_port}").open(address, port)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,5 @@
1
+ module Net
2
+ module SMTPProxy
3
+ VERSION = '1.0.0'
4
+ end
5
+ end
@@ -0,0 +1,26 @@
1
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), 'lib')
2
+ require 'net/smtp-proxy/version'
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'net-smtp-proxy'
6
+ s.version = ::Net::SMTPProxy::VERSION
7
+ s.authors = ['Cameron Dutro']
8
+ s.email = ['camertron@gmail.com']
9
+ s.homepage = 'http://github.com/camertron'
10
+
11
+ s.description = s.summary = "Proxy support for Ruby's Net::SMTP."
12
+
13
+ s.platform = Gem::Platform::RUBY
14
+ s.has_rdoc = true
15
+
16
+ s.add_dependency 'proxifier', '~> 1.0'
17
+
18
+ s.add_development_dependency 'rake', '~> 12'
19
+ s.add_development_dependency 'rspec', '~> 3.5'
20
+
21
+ s.require_path = 'lib'
22
+ s.files = Dir[
23
+ '{lib,spec}/**/*', 'Gemfile', 'README.md',
24
+ 'Rakefile', 'net-smtp-proxy.gemspec'
25
+ ]
26
+ end
metadata ADDED
@@ -0,0 +1,92 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: net-smtp-proxy
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Cameron Dutro
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-10-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: proxifier
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '12'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '12'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.5'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.5'
55
+ description: Proxy support for Ruby's Net::SMTP.
56
+ email:
57
+ - camertron@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - Gemfile
63
+ - Rakefile
64
+ - lib/net/smtp-proxy.rb
65
+ - lib/net/smtp-proxy/delivery_method.rb
66
+ - lib/net/smtp-proxy/proxy.rb
67
+ - lib/net/smtp-proxy/version.rb
68
+ - net-smtp-proxy.gemspec
69
+ homepage: http://github.com/camertron
70
+ licenses: []
71
+ metadata: {}
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements: []
87
+ rubyforge_project:
88
+ rubygems_version: 2.7.6
89
+ signing_key:
90
+ specification_version: 4
91
+ summary: Proxy support for Ruby's Net::SMTP.
92
+ test_files: []