remote_syslog_sender 1.2.1 → 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
- SHA1:
3
- metadata.gz: cc17b2dbd91abbead6c61c461c5ba7b7556d1303
4
- data.tar.gz: 535a792d4ac47f8695aabe9c6bd72f08d169572e
2
+ SHA256:
3
+ metadata.gz: 67116c7c062c29695d8dbb49e4e64e18d11e09cc2264f98df7068a5bd58526c4
4
+ data.tar.gz: fbc035c2bbec6efa7a996f1a7346a8ecb85681633cebdadae024dd0d91e54e97
5
5
  SHA512:
6
- metadata.gz: 77f3853d6c9ce1903e8c6bc4bc7bfd2775bb66a98a1841ec1832982b0631dd2e9cc959a76640afb1f8b61e9024b8aa76f373247381407c445f2fac6083aa26c0
7
- data.tar.gz: 35bd18ceafbbc39945b3718a2bc3ac66abf8b4f018abdb03b7d8eeb8da8c452f34d90ed3c697949df12d14e6e9d317befcee1f964e95ac59c724202985699ce5
6
+ metadata.gz: 8f421c3fe765bd079eb597c62917364405b3903db9a9b644bdcdcd2e7a862ef83e87ad38c9a4a1aa9a67a03a140dbf2807f3110d72dbfaf505c01fe205b13ce6
7
+ data.tar.gz: 85affc08e19f6126954f5b5bc2fc694360bb069019c3db77b0e6807d013351bedb0f5ecf901fd5450d84763b3a138308350a5da91b3dad1a340818b485e8d62f
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Remote Syslog Sender
2
2
 
3
- This gem is syslog sender that is extracted from (papertrail/remote_syslog_logger)[https://github.com/papertrail/remote_syslog_logger]
3
+ This gem is syslog sender that is extracted from [papertrail/remote_syslog_logger](https://github.com/papertrail/remote_syslog_logger)
4
4
 
5
5
  This can send message to remote syslog server via UDP, TCP, TCP+TLS.
6
6
  (Original does not support TCP, TCP+TLS protocol).
@@ -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,9 +71,12 @@ 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
- @socket.post_connection_check(@remote_hostname)
73
- raise "verification error" if @socket.verify_result != OpenSSL::X509::V_OK
76
+ if @verify_mode != OpenSSL::SSL::VERIFY_NONE
77
+ @socket.post_connection_check(@remote_hostname)
78
+ raise "verification error" if @socket.verify_result != OpenSSL::X509::V_OK
79
+ end
74
80
  else
75
81
  @socket = @tcp_socket
76
82
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'remote_syslog_sender'
3
- s.version = '1.2.1'
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"
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.1
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: 2017-10-15 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
@@ -29,14 +28,14 @@ dependencies:
29
28
  name: bundler
30
29
  requirement: !ruby/object:Gem::Requirement
31
30
  requirements:
32
- - - "~>"
31
+ - - ">="
33
32
  - !ruby/object:Gem::Version
34
33
  version: '1.6'
35
34
  type: :development
36
35
  prerelease: false
37
36
  version_requirements: !ruby/object:Gem::Requirement
38
37
  requirements:
39
- - - "~>"
38
+ - - ">="
40
39
  - !ruby/object:Gem::Version
41
40
  version: '1.6'
42
41
  - !ruby/object:Gem::Dependency
@@ -89,7 +88,6 @@ files:
89
88
  homepage: https://github.com/reproio/remote_syslog_logger
90
89
  licenses: []
91
90
  metadata: {}
92
- post_install_message:
93
91
  rdoc_options: []
94
92
  require_paths:
95
93
  - lib
@@ -104,9 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
102
  - !ruby/object:Gem::Version
105
103
  version: '0'
106
104
  requirements: []
107
- rubyforge_project:
108
- rubygems_version: 2.6.13
109
- signing_key:
105
+ rubygems_version: 4.0.3
110
106
  specification_version: 4
111
107
  summary: Message sender that sends directly to a remote syslog endpoint
112
108
  test_files: