Class | DRb::DRbSSLSocket |
In: |
lib/drb/ssl.rb
|
Parent: | DRbTCPSocket |
# File lib/drb/ssl.rb, line 158 158: def initialize(uri, soc, config, is_established) 159: @ssl = is_established ? soc : nil 160: super(uri, soc.to_io, config) 161: end
# File lib/drb/ssl.rb, line 124 124: def self.open(uri, config) 125: host, port, option = parse_uri(uri) 126: host.untaint 127: port.untaint 128: soc = TCPSocket.open(host, port) 129: ssl_conf = SSLConfig::new(config) 130: ssl_conf.setup_ssl_context 131: ssl = ssl_conf.connect(soc) 132: self.new(uri, ssl, ssl_conf, true) 133: end
# File lib/drb/ssl.rb, line 135 135: def self.open_server(uri, config) 136: uri = 'drbssl://:0' unless uri 137: host, port, opt = parse_uri(uri) 138: if host.size == 0 139: host = getservername 140: soc = open_server_inaddr_any(host, port) 141: else 142: soc = TCPServer.open(host, port) 143: end 144: port = soc.addr[1] if port == 0 145: @uri = "drbssl://#{host}:#{port}" 146: 147: ssl_conf = SSLConfig.new(config) 148: ssl_conf.setup_certificate 149: ssl_conf.setup_ssl_context 150: self.new(@uri, soc, ssl_conf, false) 151: end
# File lib/drb/ssl.rb, line 112 112: def self.parse_uri(uri) 113: if uri =~ /^drbssl:\/\/(.*?):(\d+)(\?(.*))?$/ 114: host = $1 115: port = $2.to_i 116: option = $4 117: [host, port, option] 118: else 119: raise(DRbBadScheme, uri) unless uri =~ /^drbssl:/ 120: raise(DRbBadURI, 'can\'t parse uri:' + uri) 121: end 122: end
# File lib/drb/ssl.rb, line 153 153: def self.uri_option(uri, config) 154: host, port, option = parse_uri(uri) 155: return "drbssl://#{host}:#{port}", option 156: end
# File lib/drb/ssl.rb, line 173 173: def accept 174: begin 175: while true 176: soc = @socket.accept 177: break if (@acl ? @acl.allow_socket?(soc) : true) 178: soc.close 179: end 180: ssl = @config.accept(soc) 181: self.class.new(uri, ssl, @config, true) 182: rescue OpenSSL::SSL::SSLError 183: warn("#{__FILE__}:#{__LINE__}: warning: #{$!.message} (#{$!.class})") if @config[:verbose] 184: retry 185: end 186: end