remote_syslog_sender 1.2.2 → 1.2.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5f790e1aed9473d0578f52ec35947fd78d1ab614670513efe787ec79ac4cf42b
4
- data.tar.gz: f65e0ced0294ecbe1533fe04a4b2054e9f976230e74fd813ca30733dd2fbea9e
3
+ metadata.gz: 67116c7c062c29695d8dbb49e4e64e18d11e09cc2264f98df7068a5bd58526c4
4
+ data.tar.gz: fbc035c2bbec6efa7a996f1a7346a8ecb85681633cebdadae024dd0d91e54e97
5
5
  SHA512:
6
- metadata.gz: ef23aa24b79470f4c0e5fb51be9b90e1801c1513b85494d7d63facd4abc47fc109f4e5a34366b96eaf45c729895a904f8767da718e53676a734e723c1ebd8720
7
- data.tar.gz: 4128b921473bf397d423a08f99895a3e2d77a7c1dc158b9e9c8b3b2f85fe85b34bc983a18fbaaf1b492d0ecb8946d24853974659b90cc8af7569f114bbba69c1
6
+ metadata.gz: 8f421c3fe765bd079eb597c62917364405b3903db9a9b644bdcdcd2e7a862ef83e87ad38c9a4a1aa9a67a03a140dbf2807f3110d72dbfaf505c01fe205b13ce6
7
+ data.tar.gz: 85affc08e19f6126954f5b5bc2fc694360bb069019c3db77b0e6807d013351bedb0f5ecf901fd5450d84763b3a138308350a5da91b3dad1a340818b485e8d62f
@@ -1,3 +1,4 @@
1
+ require 'ipaddr'
1
2
  require 'socket'
2
3
  require 'syslog_protocol'
3
4
  require 'remote_syslog_sender/sender'
@@ -20,6 +21,8 @@ module RemoteSyslogSender
20
21
  @timeout_exception = !!options[:timeout_exception]
21
22
  @exponential_backoff = !!options[:exponential_backoff]
22
23
 
24
+ @remote_hostname_is_ipaddr = IPAddr.new(remote_hostname) rescue false
25
+
23
26
  @mutex = Mutex.new
24
27
  @tcp_socket = nil
25
28
 
@@ -68,6 +71,7 @@ module RemoteSyslogSender
68
71
  context.verify_mode = @verify_mode if @verify_mode
69
72
 
70
73
  @socket = OpenSSL::SSL::SSLSocket.new(@tcp_socket, context)
74
+ @socket.hostname = @remote_hostname unless @remote_hostname_is_ipaddr
71
75
  @socket.connect
72
76
  if @verify_mode != OpenSSL::SSL::VERIFY_NONE
73
77
  @socket.post_connection_check(@remote_hostname)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'remote_syslog_sender'
3
- s.version = '1.2.2'
3
+ s.version = '1.2.3'
4
4
  s.summary = "Message sender that sends directly to a remote syslog endpoint"
5
5
  s.description = "Message sender that sends directly to a remote syslog endpoint (Support UDP, TCP, TCP+TLS)"
6
6
 
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
15
15
 
16
16
  s.add_runtime_dependency 'syslog_protocol'
17
17
 
18
- s.add_development_dependency "bundler", ">= 1.6", "< 3.0"
18
+ s.add_development_dependency "bundler", ">= 1.6"
19
19
  s.add_development_dependency "rake"
20
20
  s.add_development_dependency "test-unit"
21
21
  end
data/test/helper.rb CHANGED
@@ -10,3 +10,4 @@ end
10
10
  require 'remote_syslog_sender'
11
11
 
12
12
  require 'test/unit'
13
+ require 'openssl'
@@ -64,3 +64,73 @@ class TestRemoteSyslogSender < Test::Unit::TestCase
64
64
  assert_match(/This is the second line/, message)
65
65
  end
66
66
  end
67
+
68
+ class TestRemoteSyslogTLSSender < Test::Unit::TestCase
69
+ def setup
70
+ @key = OpenSSL::PKey::RSA.new(2048)
71
+ @cert = OpenSSL::X509::Certificate.new
72
+ @cert.version = 2
73
+ @cert.serial = 1
74
+ @cert.subject = OpenSSL::X509::Name.parse("/CN=localhost")
75
+ @cert.issuer = @cert.subject
76
+ @cert.public_key = @key.public_key
77
+ @cert.not_before = Time.now
78
+ @cert.not_after = Time.now + 3600
79
+ @cert.sign(@key, OpenSSL::Digest::SHA256.new)
80
+
81
+ tcp_server = TCPServer.open('127.0.0.1', 0)
82
+ @tcp_server_port = tcp_server.addr[1]
83
+
84
+ ctx = OpenSSL::SSL::SSLContext.new
85
+ ctx.cert = @cert
86
+ ctx.key = @key
87
+
88
+ @ssl_server = OpenSSL::SSL::SSLServer.new(tcp_server, ctx)
89
+
90
+ @tcp_server_wait_thread = Thread.start do
91
+ @ssl_server.accept
92
+ end
93
+ end
94
+
95
+ def teardown
96
+ @ssl_server.close
97
+ end
98
+
99
+ def test_sender_tls_no_sni
100
+ @sender = RemoteSyslogSender::TcpSender.new(
101
+ '127.0.0.1',
102
+ @tcp_server_port,
103
+ tls: true,
104
+ verify_mode: OpenSSL::SSL::VERIFY_NONE
105
+ )
106
+
107
+ @sender.write "This is a test"
108
+ sock = @tcp_server_wait_thread.value
109
+
110
+ message, _ = *sock.read_nonblock(256)
111
+ assert_match(/This is a test/, message)
112
+
113
+ # When remote hostname is an IP address, SNI hostname is not set.
114
+ socket = @sender.instance_variable_get(:@socket)
115
+ assert_nil(socket.hostname)
116
+ end
117
+
118
+ def test_sender_tls_sni
119
+ @sender = RemoteSyslogSender::TcpSender.new(
120
+ 'localhost',
121
+ @tcp_server_port,
122
+ tls: true,
123
+ verify_mode: OpenSSL::SSL::VERIFY_NONE
124
+ )
125
+
126
+ @sender.write "This is a test"
127
+ sock = @tcp_server_wait_thread.value
128
+
129
+ message, _ = *sock.read_nonblock(256)
130
+ assert_match(/This is a test/, message)
131
+
132
+ # When remote hostname is a hostname, SNI hostname is not set.
133
+ socket = @sender.instance_variable_get(:@socket)
134
+ assert_equal('localhost', socket.hostname)
135
+ end
136
+ end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remote_syslog_sender
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomohiro Hashidate
8
8
  - Eric Lindvall
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2021-07-07 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: syslog_protocol
@@ -32,9 +31,6 @@ dependencies:
32
31
  - - ">="
33
32
  - !ruby/object:Gem::Version
34
33
  version: '1.6'
35
- - - "<"
36
- - !ruby/object:Gem::Version
37
- version: '3.0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,9 +38,6 @@ dependencies:
42
38
  - - ">="
43
39
  - !ruby/object:Gem::Version
44
40
  version: '1.6'
45
- - - "<"
46
- - !ruby/object:Gem::Version
47
- version: '3.0'
48
41
  - !ruby/object:Gem::Dependency
49
42
  name: rake
50
43
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +88,6 @@ files:
95
88
  homepage: https://github.com/reproio/remote_syslog_logger
96
89
  licenses: []
97
90
  metadata: {}
98
- post_install_message:
99
91
  rdoc_options: []
100
92
  require_paths:
101
93
  - lib
@@ -110,8 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
102
  - !ruby/object:Gem::Version
111
103
  version: '0'
112
104
  requirements: []
113
- rubygems_version: 3.2.3
114
- signing_key:
105
+ rubygems_version: 4.0.3
115
106
  specification_version: 4
116
107
  summary: Message sender that sends directly to a remote syslog endpoint
117
108
  test_files: