    All Packages  Class Hierarchy  This Package  Previous  Next  Index

# Class org.w3c.jigsaw.frames.CgiFrame

    java.lang.Object
       |
       +----org.w3c.tools.resources.AttributeHolder
               |
               +----org.w3c.tools.resources.Resource
                       |
                       +----org.w3c.tools.resources.FramedResource
                               |
                               +----org.w3c.tools.resources.ResourceFrame
                                       |
                                       +----org.w3c.tools.resources.ProtocolFrame
                                               |
                                               +----org.w3c.jigsaw.frames.HTTPFrame
                                                       |
                                                       +----org.w3c.jigsaw.frames.CgiFrame

public class CgiFrame
extends HTTPFrame

Handle CGI scripts.

##

ATTR_CGI_DEBUG
  Attribute index - Turn the script in debug mode.
ATTR_COMMAND
  Attribute index - The array of string that makes the command to run.
ATTR_GENERATES_FORM
  Attribute index - Does the script generates the form on GET ?
ATTR_INTERPRETER
  Attribute index - The interpreter to use, if any.
ATTR_NOHEADER
  Attribute index - Does the script takes care of its headers ?
ATTR_REMOTE_HOST
  Attribute index - Do DNS, to fill in REMOTE_HOST env var.

##

CgiFrame()

##

checkCgiDebug()
  Get the CGI debug flag.
checkGeneratesFormFlag()
  Get the generates form flag.
checkNoheaderFlag()
  Get the noheader flag.
checkRemoteHost()
  Get the remote host attribute value.
get(Request)
  GET method implementation.
getCommand()
  Get the command string array.
getEnvName(String)
  Turn the given header name into it's env var canonical name.
getInterpreter()
  Get the interpreter to use to execute the script.
handleCGIOutput(Process, Request)
  Handle the CGI script output.
lookup(LookupState, LookupResult)
  Lookup sub-resources.
makeCgiCommand(Request)
  Prepare the command to run for this CGI script, and run it.
post(Request)
  Handle the POST method according to CGI/1.1 specification.
registerResource(FramedResource)
  At register time, if no command, use a suitable default.

##

ATTR_INTERPRETER

     protected static int ATTR_INTERPRETER

  Attribute index - The interpreter to use, if any.

ATTR_COMMAND

     protected static int ATTR_COMMAND

  Attribute index - The array of string that makes the command to run.

ATTR_NOHEADER

     protected static int ATTR_NOHEADER

  Attribute index - Does the script takes care of its headers ?

ATTR_GENERATES_FORM

     protected static int ATTR_GENERATES_FORM

  Attribute index - Does the script generates the form on GET ?

ATTR_REMOTE_HOST

     protected static int ATTR_REMOTE_HOST

  Attribute index - Do DNS, to fill in REMOTE_HOST env var.

ATTR_CGI_DEBUG

     protected static int ATTR_CGI_DEBUG

  Attribute index - Turn the script in debug mode.

##

CgiFrame

     public CgiFrame()

##

getInterpreter

     public String getInterpreter()

  Get the interpreter to use to execute the script. This is most usefull for operating systems that don't have a `!#` convention ala UNIX.

  Returns:
    The interpreter to run the script.

getCommand

     public String[] getCommand()

  Get the command string array.

checkNoheaderFlag

     public boolean checkNoheaderFlag()

  Get the noheader flag.

  Returns:
    The boolean value of the noheader flag.

checkGeneratesFormFlag

     public boolean checkGeneratesFormFlag()

  Get the generates form flag.

  Returns:
    The boolean value of the generates form flag.

checkRemoteHost

     public boolean checkRemoteHost()

  Get the remote host attribute value. If turned on, this flag will enable the REMOTE_HOST env var computation.

  Returns:
    A boolean.

checkCgiDebug

     public boolean checkCgiDebug()

  Get the CGI debug flag.

  Returns:
    The boolean value of the CGI debug flag.

getEnvName

     public String getEnvName(String name)

  Turn the given header name into it's env var canonical name. This guy is crazy enough to run CGI scripts, he can pay for that overhead.

  Parameters:
    name - The header name.
  Returns:
    A String giving the official env variable name for that header.

handleCGIOutput

     protected Reply handleCGIOutput(Process process,
                                     Request request) throws ProtocolException

  Handle the CGI script output. This methods handles the CGI script output. Depending on the value of the noheader attribute it either:
  - Sends back the script output directly,
  - Parses the script output, looking for a status header or a location header, or a content-length header, or any combination of those three.

  Parameters:
    process - The underlying CGI process.
    request - The processed request.
  Throws: ProtocolException
    If an HTTP error should be sent back to the client.

makeCgiCommand

     protected Process makeCgiCommand(Request request) throws ProtocolException, IOException

  Prepare the command to run for this CGI script, and run it.

  Parameters:
    request - The request to handle.
  Returns:
    The running CGI process object.
  Throws: HTTPException
    If we weren't able to build the command or the environment.

lookup

     public boolean lookup(LookupState ls,
                           LookupResult lr) throws ProtocolException

  Lookup sub-resources. Accumulate the remaning path in some special state of the request.

  This allows us to implement the `PATH_INFO` CGI variable properly.

  Parameters:
    ls - Current lookup state.
    lr - Lookup result under construction.
  Returns:
    A boolean true if lookup should continue, false otherwise.
  Overrides:
    lookup in class HTTPFrame

get

     public Reply get(Request request) throws ProtocolException, NotAProtocolException

  GET method implementation. this method is splitted into two cases:

  If the resource is able to generates its form, than run the script to emit the form. Otherwsie, use our super class (FileResource) ability to send the file that contains the form.

  Note that there is no need to feed the underlying process with data in the GET case.

  Parameters:
    request - The request to handle.
  Throws: ProtocolException
    If processing the request failed.
  Overrides:
    get in class HTTPFrame

post

     public Reply post(Request request) throws ProtocolException, NotAProtocolException

  Handle the POST method according to CGI/1.1 specification. The request body is sent back to the launched CGI script, as is, and the script output is handled by the handleCGIOutput method.

  Parameters:
    request - The request to process.
  Throws: ProtocolException
    If the processing failed.
  Overrides:
    post in class HTTPFrame

registerResource

     public void registerResource(FramedResource resource)

  At register time, if no command, use a suitable default. THis method will set the command to the identifier, if it is not provided.

  Parameters:
    values - Default attribute values.
  Overrides:
    registerResource in class HTTPFrame

    All Packages  Class Hierarchy  This Package  Previous  Next  Index