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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cde718ab160b32665cc369a9802ede8b4001443dd53ca1c41cce55b09895a048
4
- data.tar.gz: 11f103a7d7260481c059098c2859e267c8b870aed23e599ad1a5045a5a038530
3
+ metadata.gz: 0b5efba40ee7b569c9ed5f5e85f523b6bff9c2fe575d90d975925bcc91db5099
4
+ data.tar.gz: 612736390678ea1722e1626d20ad745221a3adfaa3a6461d69da701537ebcc65
5
5
  SHA512:
6
- metadata.gz: c36db5ee689500348d5e53815917e9ee841b80abe4d50432699446ea21c7b928bbb3cf8a6e74705dc299cd0424c63dfd5c574b41053d1b8cc140fcd83b9ffea2
7
- data.tar.gz: 4e46ece94c0dc1c8fe64ba0538803f8a504fd6d69348e68f2324dedc743c30e4842420596fb7fcdb711e0ec343efbda99766b8805039432628f931e41a8bfe23
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::RSA.new(File.read(pkey_path))
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
@@ -70,6 +70,7 @@ Riser::Daemon.start_daemon(daemonize: options[:daemonize],
70
70
  server_privileged_group: config['server_privileged_group']
71
71
  ) {|server|
72
72
 
73
+ Riser.preload
73
74
  c = YAML.load_file(config_path)['server']
74
75
 
75
76
  logger = Logger.new(server_log)
@@ -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::RSA.new(File.read(pkey_path))
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
- server_address = SocketAddress.parse(address_config)
57
- unless (server_address) then
58
- @logger.error("failed to parse server address: #{address_config.inspect}")
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 get_socket_address(server_socket)
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.get_socket_address(server_socket) || server_address
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.get_socket_address(server_socket) || server_address}")
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.get_socket_address(next_server_socket) || next_server_address}")
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.get_socket_address(server_socket) || server_address}")
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.get_socket_address(server_socket) || server_address}")
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
 
@@ -46,14 +46,14 @@ module Riser
46
46
  case (config)
47
47
  when /\A tcp:/x
48
48
  uri = URI(config)
49
- if (uri.host && uri.port) then
50
- return TCPSocketAddress.new(unsquare.call(uri.host), uri.port)
51
- end
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
- if (uri.path && ! uri.path.empty?) then
55
- return UNIXSocketAddress.new(uri.path)
56
- end
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 = config[:host] || config['host']
69
- port = config[:port] || config['port']
70
- backlog = config[:backlog] || config['backlog']
71
- if ((host && (host.is_a? String) && ! host.empty?) &&
72
- (port && (port.is_a? Integer)) &&
73
- (backlog.nil? || (backlog.is_a? Integer)))
74
- then
75
- return TCPSocketAddress.new(unsquare.call(host), port, backlog)
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 = config[:path] || config['path']
79
- backlog = config[:backlog] || config['backlog']
80
- mode = config[:mode] || config['mode']
81
- owner = config[:owner] || config['owner']
82
- group = config[:group] || config['group']
83
- if ((path && (path.is_a? String) && ! path.empty?) &&
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
- return
128
+ raise ArgumentError, 'invalid socket address.'
96
129
  end
97
130
  end
98
131
 
data/lib/riser/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  module Riser
4
- VERSION = '0.1.5'.freeze
4
+ VERSION = '0.1.6'.freeze
5
5
  end
6
6
 
7
7
  # Local Variables:
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.5
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-01 00:00:00.000000000 Z
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.1
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