In Files

  • webrick/cgi.rb

Class/Module Index [+]

Quicksearch

WEBrick::CGI::Socket

Public Class Methods

new(config, env, stdin, stdout) click to toggle source
 
               # File webrick/cgi.rb, line 126
def initialize(config, env, stdin, stdout)
  @config = config
  @env = env
  @header_part = StringIO.new
  @body_part = stdin
  @out_port = stdout
  @out_port.binmode

  @server_addr = @env["SERVER_ADDR"] || "0.0.0.0"
  @server_name = @env["SERVER_NAME"]
  @server_port = @env["SERVER_PORT"]
  @remote_addr = @env["REMOTE_ADDR"]
  @remote_host = @env["REMOTE_HOST"] || @remote_addr
  @remote_port = @env["REMOTE_PORT"] || 0

  begin
    @header_part << request_line << CRLF
    setup_header
    @header_part << CRLF
    @header_part.rewind
  rescue Exception
    raise CGIError, "invalid CGI environment"
  end
end
            

Public Instance Methods

<<(data) click to toggle source
 
               # File webrick/cgi.rb, line 215
def <<(data)
  @out_port << data
end
            
addr() click to toggle source
 
               # File webrick/cgi.rb, line 195
def addr
  [nil, @server_port, @server_name, @server_addr]
end
            
cert() click to toggle source
 
               # File webrick/cgi.rb, line 219
def cert
  return nil unless defined?(OpenSSL)
  if pem = @env["SSL_SERVER_CERT"]
    OpenSSL::X509::Certificate.new(pem) unless pem.empty?
  end
end
            
cipher() click to toggle source
 
               # File webrick/cgi.rb, line 248
def cipher
  return nil unless defined?(OpenSSL)
  if cipher = @env["SSL_CIPHER"]
    ret = [ cipher ]
    ret << @env["SSL_PROTOCOL"]
    ret << @env["SSL_CIPHER_USEKEYSIZE"]
    ret << @env["SSL_CIPHER_ALGKEYSIZE"]
    ret
  end
end
            
each() click to toggle source
 
               # File webrick/cgi.rb, line 207
def each
  input.each{|line| yield(line) }
end
            
eof?() click to toggle source
 
               # File webrick/cgi.rb, line 211
def eof?
  input.eof?
end
            
gets(eol=LF, size=nil) click to toggle source
 
               # File webrick/cgi.rb, line 199
def gets(eol=LF, size=nil)
  input.gets(eol, size)
end
            
peer_cert() click to toggle source
 
               # File webrick/cgi.rb, line 226
def peer_cert
  return nil unless defined?(OpenSSL)
  if pem = @env["SSL_CLIENT_CERT"]
    OpenSSL::X509::Certificate.new(pem) unless pem.empty?
  end
end
            
peer_cert_chain() click to toggle source
 
               # File webrick/cgi.rb, line 233
def peer_cert_chain
  return nil unless defined?(OpenSSL)
  if @env["SSL_CLIENT_CERT_CHAIN_0"]
    keys = @env.keys
    certs = keys.sort.collect{|k|
      if /^SSL_CLIENT_CERT_CHAIN_\d+$/ =~ k
        if pem = @env[k]
          OpenSSL::X509::Certificate.new(pem) unless pem.empty?
        end
      end
    }
    certs.compact
  end
end
            
peeraddr() click to toggle source
 
               # File webrick/cgi.rb, line 191
def peeraddr
  [nil, @remote_port, @remote_host, @remote_addr]
end
            
read(size=nil) click to toggle source
 
               # File webrick/cgi.rb, line 203
def read(size=nil)
  input.read(size)
end