riser 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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