| Class | WEBrick::CGI::Socket |
| In: |
webrick/cgi.rb
|
| Parent: | Object |
Included Modules
Public Class methods
# File webrick/cgi.rb, line 126
126: def initialize(config, env, stdin, stdout)
127: @config = config
128: @env = env
129: @header_part = StringIO.new
130: @body_part = stdin
131: @out_port = stdout
132: @out_port.binmode
133:
134: @server_addr = @env["SERVER_ADDR"] || "0.0.0.0"
135: @server_name = @env["SERVER_NAME"]
136: @server_port = @env["SERVER_PORT"]
137: @remote_addr = @env["REMOTE_ADDR"]
138: @remote_host = @env["REMOTE_HOST"] || @remote_addr
139: @remote_port = @env["REMOTE_PORT"] || 0
140:
141: begin
142: @header_part << request_line << CRLF
143: setup_header
144: @header_part << CRLF
145: @header_part.rewind
146: rescue Exception => ex
147: raise CGIError, "invalid CGI environment"
148: end
149: end
Public Instance methods
# File webrick/cgi.rb, line 196
196: def addr
197: [nil, @server_port, @server_name, @server_addr]
198: end
# File webrick/cgi.rb, line 216
216: def cert
217: return nil unless defined?(OpenSSL)
218: if pem = @env["SSL_SERVER_CERT"]
219: OpenSSL::X509::Certificate.new(pem) unless pem.empty?
220: end
221: end
# File webrick/cgi.rb, line 245
245: def cipher
246: return nil unless defined?(OpenSSL)
247: if cipher = @env["SSL_CIPHER"]
248: ret = [ cipher ]
249: ret << @env["SSL_PROTOCOL"]
250: ret << @env["SSL_CIPHER_USEKEYSIZE"]
251: ret << @env["SSL_CIPHER_ALGKEYSIZE"]
252: ret
253: end
254: end
# File webrick/cgi.rb, line 223
223: def peer_cert
224: return nil unless defined?(OpenSSL)
225: if pem = @env["SSL_CLIENT_CERT"]
226: OpenSSL::X509::Certificate.new(pem) unless pem.empty?
227: end
228: end
# File webrick/cgi.rb, line 230
230: def peer_cert_chain
231: return nil unless defined?(OpenSSL)
232: if @env["SSL_CLIENT_CERT_CHAIN_0"]
233: keys = @env.keys
234: certs = keys.sort.collect{|k|
235: if /^SSL_CLIENT_CERT_CHAIN_\d+$/ =~ k
236: if pem = @env[k]
237: OpenSSL::X509::Certificate.new(pem) unless pem.empty?
238: end
239: end
240: }
241: certs.compact
242: end
243: end
# File webrick/cgi.rb, line 192
192: def peeraddr
193: [nil, @remote_port, @remote_host, @remote_addr]
194: end