riser 0.1.5 → 0.1.6
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 +4 -4
- data/README.md +2 -2
- data/example/halo.rb +1 -0
- data/example/simple_tls.rb +1 -1
- data/lib/riser/daemon.rb +13 -9
- data/lib/riser/sockaddr.rb +60 -27
- data/lib/riser/version.rb +1 -1
- data/lib/riser.rb +11 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b5efba40ee7b569c9ed5f5e85f523b6bff9c2fe575d90d975925bcc91db5099
|
4
|
+
data.tar.gz: 612736390678ea1722e1626d20ad745221a3adfaa3a6461d69da701537ebcc65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 690c6451ebbe725aecfdb21af32da37928ba56c238c72a4c7829624b0a606b7c4600a9a3184e4a6e79eaca6351b945af1f24336a7b504a2b12576dbbb1a8e377
|
7
|
+
data.tar.gz: 3587661269e1a3eb634c2f5f53d0fb360d7688370165aa3df05d836343d12ee7cd07ce76d05730bca615f40f62fd9c04fa30547c206612b5476de55d294f56f5
|
data/README.md
CHANGED
@@ -291,7 +291,7 @@ and
|
|
291
291
|
### TLS Server
|
292
292
|
|
293
293
|
With OpenSSL, the riser is able to provide a TLS server. To provide a
|
294
|
-
TLS server you need a certificate and private key. An example of a
|
294
|
+
TLS server you need a certificate and a private key. An example of a
|
295
295
|
simple TLS server is as follows.
|
296
296
|
|
297
297
|
```ruby
|
@@ -308,7 +308,7 @@ Riser::Daemon.start_daemon(daemonize: false,
|
|
308
308
|
|
309
309
|
ssl_context = OpenSSL::SSL::SSLContext.new
|
310
310
|
ssl_context.cert = OpenSSL::X509::Certificate.new(File.read(cert_path))
|
311
|
-
ssl_context.key = OpenSSL::PKey
|
311
|
+
ssl_context.key = OpenSSL::PKey.read(File.read(pkey_path))
|
312
312
|
|
313
313
|
server.dispatch{|socket|
|
314
314
|
ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, ssl_context)
|
data/example/halo.rb
CHANGED
data/example/simple_tls.rb
CHANGED
@@ -14,7 +14,7 @@ Riser::Daemon.start_daemon(daemonize: false,
|
|
14
14
|
|
15
15
|
ssl_context = OpenSSL::SSL::SSLContext.new
|
16
16
|
ssl_context.cert = OpenSSL::X509::Certificate.new(File.read(cert_path))
|
17
|
-
ssl_context.key = OpenSSL::PKey
|
17
|
+
ssl_context.key = OpenSSL::PKey.read(File.read(pkey_path))
|
18
18
|
|
19
19
|
server.dispatch{|socket|
|
20
20
|
ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, ssl_context)
|
data/lib/riser/daemon.rb
CHANGED
@@ -53,10 +53,14 @@ module Riser
|
|
53
53
|
return
|
54
54
|
end
|
55
55
|
|
56
|
-
|
57
|
-
|
58
|
-
|
56
|
+
begin
|
57
|
+
server_address = SocketAddress.parse(address_config)
|
58
|
+
rescue
|
59
|
+
@logger.error("failed to parse server address: #{address_config.inspect} [#{$!} (#{$!.class})]")
|
60
|
+
@logger.debug($!) if @logger.debug?
|
61
|
+
return
|
59
62
|
end
|
63
|
+
|
60
64
|
server_address
|
61
65
|
end
|
62
66
|
|
@@ -70,7 +74,7 @@ module Riser
|
|
70
74
|
end
|
71
75
|
end
|
72
76
|
|
73
|
-
def
|
77
|
+
def get_sockaddr(server_socket)
|
74
78
|
begin
|
75
79
|
server_socket.local_address.inspect_sockaddr
|
76
80
|
rescue
|
@@ -319,7 +323,7 @@ module Riser
|
|
319
323
|
|
320
324
|
def server_socket_close(server_socket, server_address)
|
321
325
|
# get local_address before close(2)
|
322
|
-
server_socket_address = @sysop.
|
326
|
+
server_socket_address = @sysop.get_sockaddr(server_socket) || server_address
|
323
327
|
|
324
328
|
if (@sysop.close(server_socket)) then
|
325
329
|
@logger.info("close server socket: #{server_socket_address}")
|
@@ -425,7 +429,7 @@ module Riser
|
|
425
429
|
@logger.fatal('failed to start daemon.')
|
426
430
|
return 1
|
427
431
|
end
|
428
|
-
@logger.info("open server socket: #{@sysop.
|
432
|
+
@logger.info("open server socket: #{@sysop.get_sockaddr(server_socket) || server_address}")
|
429
433
|
|
430
434
|
begin
|
431
435
|
server_socket_option(server_socket, server_address)
|
@@ -466,16 +470,16 @@ module Riser
|
|
466
470
|
end
|
467
471
|
else
|
468
472
|
if (next_server_socket = @sysop.get_server_socket(next_server_address)) then
|
469
|
-
@logger.info("open server socket: #{@sysop.
|
473
|
+
@logger.info("open server socket: #{@sysop.get_sockaddr(next_server_socket) || next_server_address}")
|
470
474
|
server_socket_close(server_socket, server_address)
|
471
475
|
server_socket = next_server_socket
|
472
476
|
server_address = next_server_address
|
473
477
|
else
|
474
|
-
@logger.warn("server socket continue: #{@sysop.
|
478
|
+
@logger.warn("server socket continue: #{@sysop.get_sockaddr(server_socket) || server_address}")
|
475
479
|
end
|
476
480
|
end
|
477
481
|
else
|
478
|
-
@logger.warn("server socket continue: #{@sysop.
|
482
|
+
@logger.warn("server socket continue: #{@sysop.get_sockaddr(server_socket) || server_address}")
|
479
483
|
end
|
480
484
|
server_socket_option(server_socket, server_address)
|
481
485
|
|
data/lib/riser/sockaddr.rb
CHANGED
@@ -46,14 +46,14 @@ module Riser
|
|
46
46
|
case (config)
|
47
47
|
when /\A tcp:/x
|
48
48
|
uri = URI(config)
|
49
|
-
|
50
|
-
|
51
|
-
|
49
|
+
uri.host or raise ArgumentError, 'need for a tcp socket uri host.'
|
50
|
+
uri.port or raise ArgumentError, 'need for a tcp socket uri port.'
|
51
|
+
return TCPSocketAddress.new(unsquare.call(uri.host), uri.port)
|
52
52
|
when /\A unix:/x
|
53
53
|
uri = URI(config)
|
54
|
-
|
55
|
-
|
56
|
-
|
54
|
+
uri.path or raise ArgumentError, 'need for a unix socket uri path.'
|
55
|
+
uri.path.empty? and raise ArgumentError, 'empty unix socket uri path.'
|
56
|
+
return UNIXSocketAddress.new(uri.path)
|
57
57
|
when %r"\A [A-Za-z]+:/"x
|
58
58
|
# unknown URI scheme
|
59
59
|
when /\A (\S+):(\d+) \z/x
|
@@ -65,34 +65,67 @@ module Riser
|
|
65
65
|
if (type = config[:type] || config['type']) then
|
66
66
|
case (type.to_s)
|
67
67
|
when 'tcp'
|
68
|
-
host
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
68
|
+
host = config[:host] || config['host'] or raise ArgumentError, 'need for a tcp socket host.'
|
69
|
+
(host.is_a? String) or raise TypeError, 'not a string tcp scoket host.'
|
70
|
+
host.empty? and raise ArgumentError, 'empty tcp socket host.'
|
71
|
+
|
72
|
+
port = config[:port] || config['port'] or raise ArgumentError, 'need for a tcp socket port.'
|
73
|
+
case (port)
|
74
|
+
when Integer
|
75
|
+
# OK
|
76
|
+
when String
|
77
|
+
service_name = port
|
78
|
+
port = Socket.getservbyname(service_name, 'tcp')
|
79
|
+
else
|
80
|
+
raise TypeError, 'port number is neither an integer nor a service name.'
|
81
|
+
end
|
82
|
+
|
83
|
+
if (backlog = config[:backlog] || config['backlog']) then
|
84
|
+
(backlog.is_a? Integer) or raise TypeError, 'not a integer tcp socket backlog.'
|
76
85
|
end
|
86
|
+
|
87
|
+
return TCPSocketAddress.new(unsquare.call(host), port, backlog)
|
77
88
|
when 'unix'
|
78
|
-
path
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
(backlog.nil? || (backlog.is_a? Integer)) &&
|
85
|
-
(mode.nil? || (mode.is_a? Integer)) &&
|
86
|
-
(owner.nil? || (owner.is_a? Integer) || ((owner.is_a? String) && ! owner.empty?)) &&
|
87
|
-
(group.nil? || (group.is_a? Integer) || ((group.is_a? String) && ! group.empty?)))
|
88
|
-
then
|
89
|
-
return UNIXSocketAddress.new(path, backlog, mode, owner, group)
|
89
|
+
path = config[:path] || config['path'] or raise ArgumentError, 'need for a unix socket path.'
|
90
|
+
(path.is_a? String) or raise TypeError, 'not a string unix socket path.'
|
91
|
+
path.empty? and raise ArgumentError, 'empty unix socket path.'
|
92
|
+
|
93
|
+
if (backlog = config[:backlog] || config['backlog']) then
|
94
|
+
(backlog.is_a? Integer) or raise TypeError, 'not a integer unix socket backlog.'
|
90
95
|
end
|
96
|
+
|
97
|
+
if (mode = config[:mode] || config['mode']) then
|
98
|
+
(mode.is_a? Integer) or raise TypeError, 'not a integer socket mode.'
|
99
|
+
end
|
100
|
+
|
101
|
+
if (owner = config[:owner] || config['owner']) then
|
102
|
+
case (owner)
|
103
|
+
when Integer
|
104
|
+
# OK
|
105
|
+
when String
|
106
|
+
owner.empty? and raise ArgumentError, 'empty unix socket owner.'
|
107
|
+
else
|
108
|
+
raise TypeError, 'unix socket owner is neither an integer nor a string.'
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
if (group = config[:group] || config['group']) then
|
113
|
+
case (group)
|
114
|
+
when Integer
|
115
|
+
# OK
|
116
|
+
when String
|
117
|
+
group.empty? and raise ArgumentError, 'empty unix socket group.'
|
118
|
+
else
|
119
|
+
raise TypeError, 'unix socket group is neither an integer nor a string.'
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
return UNIXSocketAddress.new(path, backlog, mode, owner, group)
|
91
124
|
end
|
92
125
|
end
|
93
126
|
end
|
94
127
|
|
95
|
-
|
128
|
+
raise ArgumentError, 'invalid socket address.'
|
96
129
|
end
|
97
130
|
end
|
98
131
|
|
data/lib/riser/version.rb
CHANGED
data/lib/riser.rb
CHANGED
@@ -21,6 +21,17 @@ module Riser
|
|
21
21
|
autoload :TemporaryPath, 'riser/temppath'
|
22
22
|
autoload :TimeoutSizedQueue, 'riser/server'
|
23
23
|
autoload :WriteBufferStream, 'riser/stream'
|
24
|
+
|
25
|
+
def preload(namespace=Riser)
|
26
|
+
for name in namespace.constants
|
27
|
+
if (namespace.autoload? name) then
|
28
|
+
namespace.const_get(name)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
nil
|
33
|
+
end
|
34
|
+
module_function :preload
|
24
35
|
end
|
25
36
|
|
26
37
|
# Local Variables:
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TOKI Yoshinori
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-03-
|
11
|
+
date: 2019-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '0'
|
127
127
|
requirements: []
|
128
|
-
rubygems_version: 3.0.
|
128
|
+
rubygems_version: 3.0.3
|
129
129
|
signing_key:
|
130
130
|
specification_version: 4
|
131
131
|
summary: Riser is a library of Ruby Infrastructure for cooperative multi-thread/multi-process
|