Class DRb::DRbSSLSocket
In: lib/drb/ssl.rb
Parent: DRbTCPSocket

Methods

accept   close   new   open   open_server   parse_uri   stream   uri_option  

Classes and Modules

Class DRb::DRbSSLSocket::SSLConfig

Public Class methods

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

Public Instance methods

[Source]

     # 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

[Source]

     # File lib/drb/ssl.rb, line 165
165:     def close
166:       if @ssl
167:         @ssl.close
168:         @ssl = nil
169:       end
170:       super
171:     end

[Source]

     # File lib/drb/ssl.rb, line 163
163:     def stream; @ssl; end

[Validate]