=head1 DESCRIPTION

B<WebJob's> B<--execute> mode downloads and executes a B<program> in
one unified operation.  B<WebJob's> runtime behavior is controlled
through a config file identified by the B<--file> argument.  Among
other things, this file identifies a server willing to satisfy
B<WebJob> GET requests.  Once initialized, B<WebJob> downloads the
target B<program>, stores it on the local file system, and executes
it in a sub-process.  The B<options>, if any, are bound to the target
B<program> at invocation.  By default, any output generated by the
target B<program> is directed to stdout/stderr.  However, output may
also be directed to a B<WebJob> server through a B<WebJob> PUT
request.

B<WebJob's> B<--get-url> mode downloads a target B<url> and writes the
output to stdout.  This is useful in situations where a file
(accessible through the Web) is needed, but the target platform lacks
the necessary tools (e.g., curl, wget, etc.) to fetch it.

B<WebJob's> B<--hashsum> mode provides the ability to compute a
message digest of the specified B<file>.  This is useful in situations
where the downloaded executable needs to compute a hash, but the
target platform lacks the necessary tools (e.g., md5, md5sum, etc.) to
perform that task.

B<WebJob's> B<--run-embedded> mode provides the ability to execute Lua
or Perl scripts depending on how B<WebJob> was compiled.  This is
useful in situations where the target platform lacks the necessary
scripting tools (or the native tools are unable) to perform the task
at hand.  It is also useful in that it provides a cross-platform
scripting environment, which allows you to standardize various jobs
across multiple platforms.

B<WebJob's> GET/PUT requests may be bound to any available outbound
port.  This increases the likelihood that distant B<WebJob> servers
can be reached in spite of firewalls and filtering routers.  B<WebJob>
also provides limited proxy support.

When compiled with OpenSSL, B<WebJob> supports HTTPS requests and
mutual certificate authentication.

B<WebJob> also has many controls which dictate how it will execute.
The following table summarizes what controls apply to each mode of
operation.  An 'X' indicates that the given control applies to the
selected mode.

                          ===== MODES =====
                                      r
                                      u
                                      n
                                      -
                                      e
                          e   g   h   m   v
                          x   e   a   b   e
                          e   t   s   e   r
                          c   -   h   d   s
                          u   u   s   d   i
                          t   r   u   e   o
                          e   l   m   d   n
   ======   CONTROL  ======================
   ClientId               X   .   .   .   .
   DsvCertificateTree     X   .   .   .   .
   DsvVerifySignature     X   .   .   .   .
   GetHookCommandLine     X   .   .   .   .
   GetHookEnable          X   .   .   .   .
   GetHookStatus          X   .   .   .   .
   GetHookSuffix          X   .   .   .   .
   GetTimeLimit           X   .   .   .   .
   HashType               X   .   .   .   .
   Import                 X   .   .   .   .
   OverwriteExecutable    X   .   .   .   .
   Priority               X   .   .   .   .
   PutTimeLimit           X   .   .   .   .
   RunTimeLimit           X   .   .   .   .
   RunType                X   .   .   .   .
   SslBundledCAsFile      X   X   .   .   .
   SslExpectedPeerCN      X   X   .   .   .
   SslMaxChainLength      X   X   .   .   .
   SslPassPhrase          X   X   .   .   .
   SslPrivateKeyFile      X   X   .   .   .
   SslPublicCertFile      X   X   .   .   .
   SslUseCertificate      X   X   .   .   .
   SslVerifyPeerCert      X   X   .   .   .
   StrictControls         X   X   .   .   .
   TempDirectory          X   .   .   .   .
   TimeoutSignal          X   .   .   .   .
   UnlinkExecutable       X   .   .   .   .
   UnlinkOutput           X   .   .   .   .
   UploadOnGetFailure     X   .   .   .   .
   UrlAuthType            X   X   .   .   .
   UrlDownloadLimit       X   X   .   .   .
   UrlGetProxyAuthType    X   X   .   .   .
   UrlGetProxyEnable      X   X   .   .   .
   UrlGetProxyHost        X   X   .   .   .
   UrlGetProxyPassword    X   X   .   .   .
   UrlGetProxyPort        X   X   .   .   .
   UrlGetProxyUsername    X   X   .   .   .
   UrlGetUrl              X   .   .   .   .
   UrlPassword            X   X   .   .   .
   UrlPutProxyAuthType    X   .   .   .   .
   UrlPutProxyEnable      X   .   .   .   .
   UrlPutProxyHost        X   .   .   .   .
   UrlPutProxyPassword    X   .   .   .   .
   UrlPutProxyPort        X   .   .   .   .
   UrlPutProxyUsername    X   .   .   .   .
   UrlPutUrl              X   .   .   .   .
   UrlUsername            X   X   .   .   .

