((((((( ``DeleGate Home Page'' is at http://wall.etl.go.jp/delegate/ )))))))
(((((((      Read http://wall.etl.go.jp/delegate/tutorial/ first.    )))))))

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> HALF DONE (^_^; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<

DELEGATED(8)              MAINTENANCE COMMANDS                 DELEGATED(8)

NAME

    delegated - DeleGate server

SYNOPSIS

    delegated -P<port-number> [-v[v|t|s|d]] [-F<function>] [name=value]*

DESCRIPTION
    Delegated is the DeleGate server process which relays TCP/IP protocols
    like HTTP, Gopher, Whois, FTP, Telnet, NNTP, SMTP, POP, and so on.
    The DeleGate mediates communications between a server and a client
    those are isolated from each other by FIREWALL for security.  If
    necessary, DeleGate also achieves caching, domain name resolution,
    and JIS character code conversion by proxy for clients.  The DeleGate
    supports a kind of MOUNTing that gives a integrated view for distributed
    services on remote hosts, which may be hidden in a firewall.  A pair of
    DeleGate servers can be chained to form a TUNNEL that convey TCP/IP
    communication via non TCP/IP protocols like tty I/O on a phone line,
    because the inter DeleGate communication does not depend on TCP/IP.

    Unlike other proxy servers like SOCKS or PROXY_HTTP, NO modification for
    HTTP and Gopher clients is necessary to cope with DeleGate.  Thus any
    existing client programs on various platforms are able to enjoy the
    benefits of DeleGate right away (see DEFECT).

    To redirect the request from client for the DeleGate, it rewrites URLs
    in HTTP and Gopher Directory Entity(DirEnt) in response message, so that
    the requests referring the URL or DirEnt are directed to the DeleGate's
    port again.  A pair of original host and port is encoded in special
    format into the URL or DirEnt selector part.
    This bidirectional rewriting mechanism realizes `MOUNTing'.  MOUNTING
    means, for example, showing a resource http://hosti/ as if it is
    http://hostx/iii for users.  To realize this, link information in a
    response message, like <A HREF="/aaa/bbb"> is rewritten to
    <A HREF="http://hostx/iii/aaa/bbb">.

    There are two types of delegated, `SPECIALIST' and `GENERALIST'.  From
    a client view, SPECIALIST delegated looks like a server of specified
    protocol at the specified host; it behaves like a httpd or gopherd on
    a remote host.  It is SPECIALIST that makes rewriting URL and DirEnt
    when relaying response from the server to the client.  When a SPECIALIST
    cannot reach the destination server directly, or it wants to connect to
    the caching server, it forwards a request to and receives the response
    from GENERALIST delegated.  A GENERALIST accepts a request in the
    `DeleGate protocol', relays it to the server and keeps the response
    data in the cache.  The following shows a typical configuration of
    DeleGate server chain.

                                <internal>   #  <firewall>   #  <external>
                                             #               #
    P client -> SPECIALIST -+      [A]       #      [B]      # +-> P server
               *protocol P  +-> GENERALIST --+-> GENERALIST -+-+
                            |  *without DNS  #  *with DNS    # |
    Q client -> SPECIALIST -+  *with cache   #  *accept [A]  # +-> Q server
               *protocol Q                   #   only        #
               *JIS code conv.               #               #

    The GENERALIST[A] on the internal host accepts requests from any hosts,
    whereas the GENERALIST[B] on the firewall accepts request from
    GENERALIST[A] only.  In this configuration, GENERALIST[B] may be
    substituted with a Proxy_httpd.  In another configuration, SPECIALISTs
    may be connected to GENERALIST[B] directly.  GENERALISTs can be chained
    in any number of hops, thus you can overcome multiple firewalls, place
    multiple caches at multiple hosts with different expiration, and so on.


OPTIONS

    The -P option specifies the server's port number as <port-number>.
    This option is ignored when the delegated is invoked from inetd(8).
    Both `nowait' and `wait' status may be specified in inetd.conf.
    In `nowait' status, the delegated will processes just one service and
    exits.  In `wait' status, the delegated will process multiple services,
    which count may be limited to N by "MAXIMA=service:N".

    When the host machine has multiple network interfaces or multiple IP
    addresses bound on a physical network interface, you can select one of
    them to which the delegated is bound, with the specification format
    -P<interface-host>:<port-number>.

    A delegated can accept from multiple ports or (limited) multple
    network interfaces by -P<port>,<port>,<port>,... where <port> is
    either of <interface-host>:<port-number> or <port-number>.

    A port in -P option is made as a TCP port by default. It can be made as
    a UDP port with postfix "/udp" to port number like -Pxxxx/udp, regardless
    of the application protocol which will be specified in a SERVER parameter.

    If -v option is specified, the delegated will run foreground and
    log will be put on the control tty.  More detailed log than that
    of -v can be get using -vv option.  Similarly you can control the
    detailness of log to be written into logifle by -vt or -vd options;
    -vt make log terse whereas -vd make it detailed with debug information.
    With -vs option makes logging stop and be silent; this option has
    similar effect with LOGFILE="".

    If -F<function> option is specified, the delegated will work as a
    program of <function> rathar than DeleGate server.  Available functions
    are ``kill'', ``cgi'', and so on.  -Fhelp will show the list of
    available functions.  "delegated -Fkill -P<port>" means to kill the
    delegated running on the <port>.  With -Fcgi, DeleGate act as a cgi
    program which is invoked form a HTTP server.

    Other options specified in name=value pair are optional and can be set
    as environment variables.

    Options can be loaded from external resources. See SUBSTITUTION.

      name      value format
     --------  -----------------
     SERVER    proto://host:port -- of what SPECIALIST it should be
    *ROUTE     gateway-_-dst:src -- route toward gateway if from src to dst
    *MASTER    host:port         -- where MASTER GENERALIST DeleGate is
     MASTERP   host:port         -- MASTER private to the delegated
     PROXY     host:port         -- where a Proxy server is on
    *CONNECT   {ca,ma,di}*       -- the order connections shold be tried
     RIDENT    {client,server}   -- forwarding remote socket id.
     TUNNEL    type:script-name  -- SHIO-script file for DeleGate Tunneling
     DELEGATE  host:port         -- where URL and DirEnt should be redirected
    *HOSTS     host/addr,...     -- private host/address resolution list
     RESOLV    {file,nis,dns}*   -- control usage of hosts file and DNS
     RES_CONF  URL               -- where resolv.conf is
     RES_NS    dnsHost           -- specify DNS server to be used
     RES_RR    HostsList         -- round robin IP-address-list for the hosts
     RES_VRFY  "*.INVALID"       -- hostname returned on verififcation failure
     SOCKS     socks-host        -- control usage of socks
     SSLTUNNEL Host:Port         -- connect via SSL tunneling (on HTTP)
    *MOUNT     "path URL opt"    -- mount the URL at //${DELEGATE}/path
    *RELIABLE  HostList          -- accept only from the specified hosts
    *REACHABLE HostList          -- only specified hosts are reachable
     REMITTABLE protocolList     -- protocols remittable to the server
    *PERMIT    Proto:Dst:Src     -- protocols/server/client to be permitted
    *RELAY     {proxy,delegate}  -- restrict proxy functionality
    *CHARCODE  {JIS,EUC,SJIS,II} -- conversion of Japanese code in response
     DGROOT    dir-name          -- root directory of all of DeleGate files
     VARDIR    dir-name          -- default base of LOGDIR, WORKDIR, CACHEDIR
     CACHEDIR  dir-name          -- where HTTP/Gopher cache are placed
     CACHEFILE file-name-spec    -- in which file cache data are stored
     CACHE     cache-condition   -- condition to determine do cache or not
    *EXPIRE    {days,hours,secs} -- expiration of the cached data
     EXPIRELOG file-name         -- file which records expire log
     ETCDIR    dir-name          -- where persistent management files are
     LOGDIR    dir-name          -- where DeleGate logs are
     LOGFILE   file-name         -- where DeleGate make logging
     ERRORLOG  file-name         -- where DeleGate make error logging
     PROTOLOG  file-name         -- httpd or wu-ftp compatible log file
     COUNTER   field:dir-name    -- where counter files for the field are
     WORKDIR   dir-name          -- where DeleGate should dump core (-_-;
     ACTDIR    dir-name          -- where temporary files are placed
     TMPDIR    dir-name          -- where invisible temporary files are placed
     PIDFILE   file-name         -- where the delegated's PID is recorded
     OWNER     user-name         -- who's process the delegated should be
     ADMIN     user-address      -- E-mail address of the manager of DeleGate
     PUBLIC    proto://host:port -- let this delegated public from that one
     HTMLCONV  deent,enent,pre   -- decode / encode between HTML & plain text
    *URICONV   convList:attrList -- control URI rewriting
     MIMECONV  thru,charcode     -- control MIME encoder/decoder
    *DELAY     what:seconds      -- sleep
    *TIMEOUT   what:seconds      -- timeout of connection
    *MAXIMA    what:number       -- maxima of servers and etc.
     OVERRIDE  master:paramlist  -- override limits in the MASTER
    *AUTH      what:aproto:users -- authorized users for remote management
    *AUTHORIZER serv:prt:dst:src  -- authentication server
     DGPATH    dir1:dir2:...     -- search path of substitution resources
     FFROMCL   filter-command    -- filter of data from client to delegated
     FTOCL     filter-command    -- filter of data from delegated to client
     FCL       filter-command    -- filter of data between client and delegated
     FFROMMD   filter-command    -- filter of data from server to delegated
     RPORT     {tcp,udp}:host    -- connection for the server to the delegated
     HTTPMAIL  server:relay      -- access HTTP via mail
     SMTPSERVER mailserver       -- SMTP server for mail posting from delegated
     FILETYPE  suffix:type-spec  -- filename to type conversion
    *CMAP      mapspec           -- mapping table about the cuurent connection
    *NNTPCONF  spec-list         -- NNTP specific configuration
    *CRON      cron-spec         -- sceduled actions
    *INETD     server-conf       -- inetd like server configuration notation
    *ICP       icp-client-config -- ICP client configuration
    *ICPCONF   icp-server-config -- ICP server configuration
    *DNSCONF   dns-server-config -- configuration as a DNS server
     VSAP      VSAP-server       -- accept/connect via the remote socket mapper
     PORT      port-list         -- reserve ports
    *HTTPCONF  config-script     -- http configuration
     SMTPGATE  config-dir        -- SMTP to SMTP/NNTP gateway config. dir
     CGIENV    list-of-env-vars  -- environment variables to be passed to CGI
     ---------- -----------------
     HostList   host,net/mask,...  -- a list of hosts/nets with optional mask
     ProtoList  [-]protocol,...    -- a list of protocols

    In above list, names  prefixed with `*' may be repeated in command line
    argument as nameX=value1 nameX=value2 ... nameX=valueN.  If other names
    are repeated, the lastly given value is taken.  The prefiex `#' means
    that the function is obsolete and will be removed in the near future.

    SERVER  proto://host:port   (default: none)
    SERVER  proto               (means proto://-/)
   *SERVER  proto://host:port:-:MountOptions

       If specified, the delegated will become SPECIALIST DeleGate, which
       behaves like a server of `proto' protocol at `host:port'.  If not
       specified, the delegated will become GENERALIST DeleGate, which
       gets request from SPECIALISTs, other GENERALISTs, or clients who
       speak the DeleGate protocol.

       The third parameter format with mountOptionList specifies that
       the SERVER will be dynamically selected if the condition specified
       in the conditions in MountOptions is true.
         Example:
            SERVER="nntp://newsserver1:-:from={*.dom1}"
            SERVER="nntp://newsserver2:-:from={*.dom2}"

       A special protocol name "exec" means executing some local command
       rather than connecting to a server. With "exec", DeleGate will work
       like simple "inetd" or "wrapper". What will be executed is specified
       with either XCOM or XFIL parameter. Commands executed as XCOM will
       be given standard I/O which are bound for a socket connected to the
       client.  Commands executed as XFIL will be given standard I/O which
       are redirected to a pair of pipes bound for DeleGate, which relays
       it to and from the client.
         Example:
            -P8023 SERVER=exec XFIL=command.com WORKDIR="/"
            (Use command.com of Windows95 as a simple telnet server)
       On WindowsNT and OS/2, commands executed as XCOM will be given a
       environment variable SOCKHANDLE_CLIENT which have the handle value
       of the inherited socket connected to the client.

   *ROUTE   proto://host:port/-_-{dstHostList}:{srcHostList}  (default: none)

       Forwards requests from hosts in srcHostList to the resources listed
       in dstHostList toward the server at `host:port' in `proto' protocol.
       ROUTE is a generalized notation for MASTER, PROXY.

       A host specification in a HostList may be prefixed with "proto://"
       to restrict the protocol to be forwarded.  For example,
       ROUTE="http://h:p/-_-{ftp://*}:*" means that only access to FTP
       servers are forwarded to the proxy at "http://h:p/".

       A host specification in a HostList can be restrected more with port
       number.  For example, ROUTE="http://h:p/-_-{*:21}:*" means that
       only accesses to the port number 21 (FTP service) is routed to the
       proxy.

       NOTE: The notation can be extended as `gateway-_-/Modifier/dst:src'
             where Modifier controls caching or code conversion according
             to the route.

   *MASTER  host:port           (default: none)
   *MASTER  host:port:HostList
   *MASTER  host:port/master_control:HostList

       MASTER is the abbreviation of

           ROUTE="delegate://host:port/-_-HostList:*".

       The port of a GENERALIST delegated should be specified here.
       If specified, the delegated will forward a request from the client
       to the specified MASTER delegated, if the destination host is not
       reachable, or the name is not resolvable, or the "master" is specified
       in CONNECT parameter for the current protocol and the host.
       Forwarding for the MASTER can be filtered by postfixing HostList,
       a list of host and net addresses.  In this case, only listed
       destination hosts/nets are forwarded to the MASTER.  See the HostList
       below about how to write it.
       When multiple MASTERs are given, they are tried from the first one
       to the last one until connection to the MASTER success.

       In the third form of MASTER has ``/master_control'' after the port
       number.

         cache    -- read only cache in the MASTER
         teleport -- make persistent ``Teleport'' connection to the MASTER

    MASTERP  host:port          (default: "" for HTTP Specialists)

       This parameter may be given for the HTTP Specialist delegated.
       HTTP Specialists need MASTER delegated for data cache for non HTTP
       protocols and connection cache for FTP and NNTP.  When neither MASTER
       nor MASTERP is given, MASTERP="" is used as a default value, which
       means making private MASTER automatically at a dynamically assigned
       port number.
       Both of MASTER and MASTERP="" may be specified together to force
       caching at the local host when the MASTER is running at a remote host.

    PROXY   host:port           (default: none)
   *PROXY   host:port:HostList

       Only HTTP SPECIALIST and FTP SPECIALIST can specify this variable.
       For HTTP SPECIALIST, PROXY is the abbreviation of

           ROUTE="http://host:port/-_-HostList:*".

       The port of another HTTP SPECLIALIST or Proxy_httpd could be
       specified here.  (Proxy_httpd is a HTTP server which accepts fully
       specified URL in method argument of request messages).  If this
       parameter is specified, the delegated will forward request to the
       PROXY server.

       Proxy FTP can be chained with PROXY parameter like follows;
       SERVER=ftp PROXY=proxyhost:proxyport.

   *CONNECT {cache,icp,master,vsap,direct,socks,udp}*:ProtoList:dstHostList
                                (default: c,i,m,h,d,v,s:*:*)

       This parameter controls the order of trials for connection to the
       target server using several connection method as followings:

          cache  -- cache search (without connection)
          icp    -- via a PROXY hinted by ICP server
          master -- via a MASTER DeleGate server
          https  -- SSL tunnel on HTTP
          vsap   -- via a VSAP server
          direct -- direct connection to the target server
          socks  -- via Socks servers
          udp    -- by UDP

       Each connection type can be abbreviated by the first character as
       {c,i,m,d,v,s,u} respectively.
       If protoList and dstHostList are given, this control is applyed only
       to the protocols and hosts included in the list.  For example, to use
       cached data in a host which is not connected to external networks,
       specify as CONNECT="cache:*:!./@".

       NOTE: In current implementation, `cache' will be tried first anyway
             if it is included in the list, ProtoList should be "*", PROXY
             cannot be controlled.
             In the future, the cache type could be followed by timeout
             period, like `direct/10s' or `cache/5d'.

       A combination of -Pxxxx CONNECT=udp relays from TCP client to UDP
       server, and -Pxxxx/udp and non-udp CONNECT relays from UDP client
       to TCP server.

    RIDENT   {client,server}*   (default: none)

       If RIDENT="server" is specified, identification information about the
       client socket got by getsockname(2) and getpeername(2) will be
       forwarded to the PROXY or MASTER DeleGate which will receive the
       information by RIDENT="client", and will use it for access control.
       A DeleGate server with RIDENT="client" can accept both from DeleGate
       with RIDENT="server" and other proxy servers with no RIDENT support.
       An intermediate DeleGate in a chain of cascaded DeleGate servers
       should be given RIDENT="client,server".


    TUNNEL  type:script         (default: none)

       If specified, communication with the MASTER will be `tunneled'
       via the standard input/output of the command.  The tunnel may be
       made of serial line without TCP/IP handling.  Otherwise it may be
       the channel to the delegated which is invoked from the inetd.
       The type part specifies TUNNEL type, currently only `tty7' and
       `proc' is available.  When the type is tty7, How the TUNNEL is
       established is described in the specified `SHIO script' file.
       See the src/sample.shio in the distribution file.  When the
       type is proc, then the script part should be specified as a
       shell command.

   *HOSTS    name/addr          (default: localhost/127.0.0.1)

       List of domain-names/IP-addresses pairs which will override DNS (or
       NIS or /etc/hosts table) data.  This could be used for speed-up of
       resolution for frequently referred hosts, aliasing, or relief of
       unknown hosts in public delegate.  Multiple names or addresses could
       be specified in the form {name1,name2,...}/{addr1,addr2,...}

    RESOLV  {cache,file,nis,dns,sys}*  (default: cache,file,nis,dns,sys)

       Specify which name resolver should be used in what order.
       `file' means local host file like /etc/hosts, `nis' means hosts map
       on NIS service, `dns' means DNS service, and `sys' means using
       gethostbyname() and gethostbyaddr() function which usually call
       system's standard resolver of the host.  If empty
       value is specified as "RESOLV=" then only hosts listed in HOSTS
       parameter can be resolved (this could be useful when you must hide
       hosts table for security consideration).

       Each resolver can be specified with optional argment like follows:
         cache:/path         -- path name of cache directory [/tmp/resolvy]
         file:/path          -- path name of password file [/etc/hosts]
         nis:nis-domain      -- NIS domain name
         dns:dns-host        -- DNS server and default domain

       By default, a connection to a host which has multiple IP addresses
       is tried for each address in the order they are defined in each
       resolver.   A special parameter HOSTS="*/*/RR" can be added to
       specify ``Round Robin'' where those IP addresses are tried in
       round robin order.

    RES_CONF URL                (default: /etc/resolv.conf)

       Specify where the ``resolv.conf'' file is.  The file is interpreted
       by the DeleGate original resolver named ``Resolvy''.
       Resolvy recognizes "nameserver", "domain", "ndots", "search", and
       "sortlist" in it.

    RES_NS  dnsServer           (default: none)
    RES_NS  dnsServer //socksHost

       Specify a DNS server to be used: dnsServer is a host name or an
       IP-address of the host name DNS server, which may optionally be
       followed by port number, like "host:8053" when the port number
       is not standard port(53).
       In the second form, a DNS server on the dnsHost beyond a firewall
       can be referred through a Socks V5 server.

    RES_RR  HostsList           (default: "*")

        Round robin IP-address-list for the hosts included in the HostList.
        Currently, only RES_RR="*" and RES_RR="" are supported.

    RES_VRFY                    (default: none)

       With "RES_VRFY=", results of reverse look-up of DNS server is verified.
       When an <IPaddress1> is resolved to <Hostname>, and when the
       <Hostname> is resolved to <IPaddress-list> which does not include
       the <IPaddress1>, the varification fail and the result is ignored.

## With RES_VRFY="*.INCONSISTENT", the inconsistent host name "host.domain"
## will be marked as "host.domain.INCONSISTENT".

    SOCKS    sockd-host/dns-host/dflt-domain    (default: none)
    SOCKS    sockd-host/-5

       Specify to use SOCKS server on `sockd-host'.  If you use the
       SOCKS_DEFAULT_SERVER specified at compile time, empty specification
       "SOCKS=" is sufficient.  Multiple SOCKS parameters can be specified.
       The order of trial of connection directly and via Socks can be
       controlled with the CONNECT parameter.
       In the second form, host name resolution will be achieved at the
       Socks server of the Socks version 5 protocol.

   *MOUNT   "path-pattern URL"  (default: "/ ${SERVER}")
   *MOUNT   "path-pattern URL MountOptions"

       Redirect the path to/from the URL.  If a path-pattern is terminated
       with `*' then partially matched path is also rewrote.  If a URL is
       terminated with `*' then remaining part in the partially matched
       path will be copied after the URL.  For example, the specification
       MOUNT="/abc/* http://H:P/*" in a HTTP/DeleGate specifies to rewrite
       a URL "/abc/def" to "http://H:P/def".  This pattern matching can be
       restricted with a notation "[a-set-of-characters]" prefixed before `*',
       like MOUNT="/abc/[a-z]* http://H:P/*", which matches with arbitrary
       strings starting with a character listed in "[set-of-characters]".

       If `=' is specified as path-pattern or URL, it means mount `as is',
       that is, rewriting for the path-pattern in a request, or rewriting
       for URL in a response will be suppressed.

       MOUNT can be used in NNTP/DeleGate, for filtering and aliasing of
       newsgroups, and for merging multiple NNTP severs.  For example,
       MOUNT="alias-group. nntp://server/group." specifies to passing
       newsgroups `group.*' and aliases them into `aias-group.*'.
       A simple filtering specification is SERVER="nntp://server/group."
       which is equivalent to MOUNT="= nntp://server/group.".
       If multiple MOUNT for multiple NNTP servers, then the delegated
       merges the newsgroups on the servers, and serves the newsgroups
       to a client as if they are on a single server.

    MountOptions

       MountOptions is a list of options listed bellow separated by `,'
       character.

          ro -- Read only for NNTP protocol to inhibit POST command

          moved -- Don't relay but return `302 Moved' response in HTTP

          indirect --
            Example: where MOUNT="URL1/* URL2/* indirect" is given,
                when "URL1/name1/path" is requested,
                if   "URL2/name1/indirect.cfi" contains "Base: URL3",
                then "URL3/path" will be accessed.
                This is done by generating MOUNT="URL1/name/* URL3/*".

          robots={no,ok} -- disable or enable access from robots.
               The default value for NNTP and FTP is "no", while it is
               "ok" for other protocols.

          from={HostList} -- from the client.
              the mount specification will be applied only when the
              client is included in the HostList.

          via={HostList} -- via the host.
              the mount specification will be applied only when at least
              one host passed through is included in the HostList.

          path={HostList} -- through the hosts
              the mount specification will be applied only when all of
              hosts passed through is included in the HostList.

          host={HostList} -- interface host with the client.
              the mount specification will be applied only when the client
              has connected to the delegated via the specified network
              interface included in the HostList.
              When the delegated is acting as an origin server and a virtual
              host name is shown in "Host: host" field in the request message,
              the virtual name is examined prior to the real host name. If
              multiple virtual names are bound to the same IP-adrress,
              prefix "-" to the virtual hostname like "host=-hostname" to
              distinguish among virtual names.

          genvhost=host --
              Set "Host: host" field in the request message to be forwarded
              to the server.

          hide={GroupList} -- List of patterns of news group names to be
              hidden to NNTP clients. (ex. "hide={alt.*,!alt.comp*}")

          upact:Invoke/Reload/Posted -- control updating of active list cache.
              The same meaning with the NNTPCONF=upact:... except this
              controls only the destination server of this MOUNT parameter.

          cache=no -- disable any usage of cache for the server

          cache=no-article -- disable NNTP ARTICLE caching.
          cache=no-list -- disable NNTP LIST caching.
          cache=no-overview -- disable NNTP XOVER caching and generating it
              from ARTICLE by DeleGate.

          useproxy[=proxyURI] -- generate "305 Use Proxy" response message.
              If proxyURI is omitted or given as "direct", the response
              message is sent with Set-Proxy field as "Set-Proxy: DIRECT".
              Otherwise the URI is set in the filed as
              "Set-Proxy: SET; proxyURI=proxyURI".

          method={methodList} -- true if the access method of the current
              request is included in the methodList.

          dst={hostList} -- true if the destination host is included in the
              hostList.  This option will be useful when "=" is used as the
              ringht hand of MOUNT option.

          asproxy -- true if the delegated is called as a proxy server that
              is the requeted URL is in full URL format.

          withquery -- true if the requested URL has "?query" componet

          charcode=code -- code conversion specific to the mount point,
              in the same meaning with global CHARCODE parameter

       These HostList should be a list of "host:port", where ":port" part
       can be omitted when it is not to be cared.  The "host" part can be
       represented as "*" when the difference of network interface is not
       to be cared.
         Example:
           1) MOUNT="* URL1 host=this-host" MOUNT="* URL2 host=localhost"
           2) -P70,80 MOUNT="* URL1 host=*:70" MOUNT="* URL2 host=*:80"

       "useproxy", "method", "dst" and "withsearch" options are introduced
       originally to refuse potentially troublesome acesses which may invoke
       CGI programs in target servers.  For example, to refuse any request
       with POST method, or with URL including "?":
           MOUNT="http:* = method=POST,asproxy,useproxy"
           MOUNT="http:* = withsearch,asproxy,useproxy"

   ?AUTOMOUNT where:URLList ((Not yet done))
       Mount URLs listed in the URLList at `where/${URL}'.  If `where'
       is omitted, they are mounted at `http://${DELEGATE}/' for HTTP
       and FTP, and `http://${DELEGATE}/${GTYPE}/' for Gopher.

    DELEGATE host:port          (default: current-host:current-port:all)
    DELEGATE host:port:ProtoList

       This parameter controls relaying function for non-Proxy HTTP/Gopher
       access by URL/DirEnt rewriting with `Gateway-_-URL' or
       `proto://host:port/-_-URL' notation.  The host and port of delegated
       which will be encoded into the URL/DirEnt should be defined here.
       By default, current-host is encoded in raw IP address number so that
       clients can reach the delegated even if they don't know how to resolve
       the host name of the delegated.
       In the second specification form, DELEGATE is followed by ProtoList,
       a list of protocols.  This list specifies which protocols should be
       called back to, or detained to the DELEGATE.  The URLs and DirEnts
       in a response message are redirected to the DELEGATE if the protocol
       is listed in this variable.  To suppress the relaying function,
       specify this parameter as "DELEGATE=-:0:-all".

   *PERMIT   ProtoList:dstHostList:srcHostList

       Each PERMIT parameter specifies what kind of accesses should be
       permitted by the DeleGate.  An access will be permitted if the
       access is from a client host included in srcHostList, to a server
       host included in dstHostList, with a protocol included in ProtoList.
       If no PERMIT parameters is given, access permission is controlled
       by REMITTABLE, REACHABLE and RELIABLE parameters which can be
       defined explicitly or implicitly based on SERVER parameter.

       The special pattern `*' in ProtoList (dstHostList) means
       all of permitted protocols (servers), which may be explicitly
       defined with REMITTABLE (REACHABLE) parameters.   These parameters
       limits the widest permission.  A protocol (server) is not permitted
       if it is not permitted in REMITTABLE (REACHABLE) parameters defined
       implicitly or explicitly.
       Similarly, if more than one RELIABLE parameters are given explicitly,
       they limit the acceptable clients in srcHostList.

       The host specifications in the dstHostList can be restricted with
       port number.  For example, PERMIT="telnet:{*:23}:*" means permitting
       telnet only for the standard port number (23).

       A protocol name in the ProtoList can be modified like
       "protocolname/{PortList}/{MethodList}" to restrict accessible ports
       and methods of the protocol.  For example, a series of PERMIT
       parameters, PERMIT="ftp//readonly:Servers:Clients" PERMIT="ftp:*:*"
       means inhibiting uploading to Servers from Clients while allowing
       uploading among other combinations of servers and clients.

       When multiple DeleGate servers are chained using MASTER or PROXY
       parameter, the original client identification information got at
       the first DeleGate server (at the entrance of the chain) can be
       forwarded to next DeleGate server using RIDENT parameter and will be
       examined using PERMIT paramter.

    REMITTABLE ProtoList        (default: "*" -- for GENERALIST,
                                          "." -- for SPECIALIST)

       Only protocols (to the server) listed in ProtoList will be accepted
       by the delegated.
       For GENERALIST (a delegated without a SERVER specification) any
       protocols is permitted by default.  For SPECIALIST, only the protocol
       specified in the SERVER parameter (which can be represended by ".")
       is permitted by default.
       If a protocol name is followd by `/{PortList}', only ports listed in
       the PortList is permitted.
       As a special case, delegated as a proxy Telnet (with SERVER="telnet")
       is restricted to be accessible only toward standard Telnet port (23),
       with REMITTABLE="telnet/23" by default.  This restriction can be
       disarmed by specifying like REMITTABLE="telent".
       For HTTP-SPECIALIST, "REMITTABLE=http,https/{443,563},gopher,ftp,wais"
       is the default.
       A PortList can be followed by "/{MethodList}" which restricts available
       methods in the protocol.  Currently, only "readonly" is supported.
       For example, REMITTABLE="ftp//readonly" make the FTP-DeleGate be
       "read only" which inhibits uploading to FTP servers.

       Exceptionally, when the current destination server is determined by
       a MOUNT parameter like MOUNT="Path1 Proto://Server/Path2", the
       protocol "Proto" is automatically allowed as a destination protocol.

       If the first element of the list is "+", it means the default list of
       permitted protocols.  For example, REMITTABLE="+,-https/563,-wais,file"
       with SERVER=http means REMITTABLE="http,https/443,gopher,ftp,file".

   *RELAY   {proxy,delegate,no}
   *RELAY   {proxy,delegate,no}:protoList:dstHostList:srcHostList
                      (default: proxy,delegate:*:*:.localnet ; proxy:*:*:*)

       This parameter controls in which way the delegated works as a
       HTTP proxy server.  HTTP DeleGate works in two ways: as a standard
       (CERN compatible) HTTP proxy which accepts full URL in a request, and
       as a DeleGate original proxy which accepts /-_-URL in a request and
       rewrites URLs in the response.
       With the second (full) specification format, available relaying mode
       can be classified by combination of server protocol, server host and
       client host.

       EXAMPLE:
         RELAY=no             ... does not work as a proxy
         RELAY=proxy          ... CERN compatible mode only
         RELAY=delegate       ... DeleGate mode only (/-_-URL)
         RELAY=proxy,delegate ... both CERN and DeleGate mode

       DEFAULT:
         Both "proxy" and "delegate" are allowed to users on ".localnet",
         but only "proxy" is allowed to other users.

   *RELIABLE HostList           (default: .localnet)

       Only request sent from hosts (or networks) listed in HostList
       will be accepted by the delegated.
       By default, only accesses from host and network local to the
       delegated's host is permitted (RELIABLE=".localnet").
       See HostList below about how to write it.

   *REACHABLE HostList          (default: none = any host is reachable)

       If specified, only request directed to the hosts (or networks)
       listed in HostList will be accepted by the delegated.

    CHARCODE {JIS,EUC,SJIS,II}  (default: none)
   *CHARCODE input-code/output-code

       If specified, HTTP and Gopher SPECIALIST will convert the JIS code
       in text type response into the specified character code.
       A client can override this specification by sending its choice in
       `Accept-Language' field in a request.  For example, if
       `Accept-Language: (charcode=JIS)' is sent in a request from client,
       the response text will be converted into JIS regardless of CHARCODE
       specification of the delegated.

       The full specification of the parameter value is
       input-code/output-code.  CHARCODE=JIS is the abbreviation of
       CHARCODE=JP/JIS where JP means Japanese text encoding {JIS,EUC,SJIS}.
       You can specify CHARCODE=CN/JIS that means translation from Chinese
       text encoding {Big5,GB,HZ} to JIS.

       `II' means 'inline image'.  Each Japanese character code in a
       response message will be converted to a '<IMG SRC=...>', which is
       a inline image of HTML.  This will be useful for HTTP clients without
       Japanese fonts.  II can be used other than Japanese.  A notation
       `charset/II' specify encoding codes of `charset' into II.
       CHARCODE="II" is the abbreviation of CHARCODE="JISX0208/II"

       If `(charcode=THRU)' is specified in Accept-Language, any conversion
       is disabled.  A set of Accept-Languages may be specified by a client
       in its menu or configuration file.

    DGROOT    dir-name          (default: undefined on Unix,
                                         "/Program Files/DeleGate" on Windows)

       If defined, all of sub-directories (LOGDIR, ETCDIR, ADMDIR, CACHEDIR,
       ACTDIR, WORKDIR and TMPDIR) will be located under the DGROOT.

    VARDIR    dir-name          (default: ${DGROOT:-/var/spool/delegate})
    CACHEDIR  dir-name          (default: ${VARDIR}/cache)
    CACHEFILE file-name-spec    (default: $[server:%P/%L/%p])

       Caching will be enabled if the directory CACHEDIR exists, and it is
       both readable and writable for delegated, and CACHE="no" is not given.
       Currently, caching of HTTP, Gopher NNTP and FTP is supported.

       CACHEFILE specifies how the file name of a cache file is formed.
       The name is derived mainly from informations about server host and
       requested URL.  Those informations are specified in the format
       "$[server:format]" where the format is a sequence of followings.

                     URL of the resource: scheme://host.d2.d1:port/path

           %P -- Protocol name part       scheme
           %L -- Login part               host.d2.d1:port
           %H -- Host name                host.d2.d1
           %T -- Port number              port
           %h -- host name directory      d1/d2/host
           %d -- domain name directory    d1/d2
           %1 -- top level domain         d1
           %2 -- second level domain      d2
           %p -- URL-path part            path
           %Q -- use FQDN of a host name  host.d2.d1.d0 (like %Q%L or %Q%H)

   *CACHE    cache-condition    (default: none)

       Specify a restriction of cache usage.

          no -- cache is disabled [undef]
          ro -- cache is read only [undef]
##         bintext -- binary text will be cached also [undef]
##         mtime/Days -- original data is modified within Days [unlimited]
##         dsize/Num -- data size is smaller than Num bytes [unlimited]
##         xrate/Num -- transmission is slower than Num bytes/sec [unlimited]

    EXPIRE   N{d,h,s}           (default: 1d)
   *EXPIRE   validity/custody   (default: 1d/forever)
   *EXPIRE   N{d,h,s}:protoList:dstHostList:srcHostList  (default: none)

       EXPIRE specifies the term of validity of cached data, in one of
       days, hours, or minutes.  Validity does not mean active removement of
       cached data by delegated; delegate merely ignores cached data if it
       is older than the specified term.

    ETCDIR    dir-name         (default: ${VARDIR}/etc)
    LOGDIR    dir-name         (default: ${VARDIR}/log)
    LOGFILE   file-name        (default: ${LOGDIR}/${PORT})
    ERRORLOG  file-name        (default: ${LOGDIR}/errors.log)
    PROTOLOG  file-name        (default: ${LOGDIR}/${PORT}.${PROTO})
    WORKDIR   dir-name         (default: ${VARDIR}/work/${PORT})
    COUNTER   field:dir-name   (default: none) ((Not yet done))
    EXPIRELOG file-name        (default: ${LOGDIR}/expire.log)

       The patterns ${PROTO} and ${PORT} will be substituted with the
       protocol name and the port number of the delegated respectively.
       These files and directories will be created automatically by
       delegated if possible.  You can stop logging by specifying null
       file name like LOGFILE="" or PROTOLOG="".

       The format of PROTOLOG for HTTP protocol can be modified with a
       optional format specification postfixed after the file-name as
       PROTOLOG="file-name:format".  In this case, default file name can be
       suppressed.  For example, PROTOLOG=":%X" specifies making a NCSA like
       extended common logfile format.  The default format is
       PROTOLOG=":%C %D".
         %C -- common logfile format of CERN-HTTPD
         %c -- same as %C except the date is recorded in mili-second precision
         %D -- extention by DeleGate (conn-time + relay-time : status)
         %X -- '%C "%r" "%u"' common logfile format with Referer and User-Agent
         %r -- Referer field in the request message
         %u -- User-Agent filed in the request message
         %S -- status of CONNECTion to the server (c,m,p,d,s,v)
       The client information part in %C, which records hostname, Ident,
       and username by default, can be modified by AUTH="log:" parameter.

       If WORKDIR is not accessible, or if WORKDIR is not explicitly
       specified when -vv option is given, then current directory (of
       invoker of the delegated) will be used as WORKDIR.

       If `file-name's are specified in a relative path then they are placed
       under ${LOGDIR}.  If those names start with "./" then they are placed
       under ${WORKDIR}.

       AGING: If the pattern `[date+format]' is included in the file name,
       it is evaluated by strftime(3) compatible function and will be
       substituted with the evaluated strings.  For example, a format `%d'
       means day of month [01-31], thus when LOFILE is specified like
       LOGFILE='${PORT}[date+.%d]', the file will be aged day by day and will
       be rotated by a month.  A format `%W' which means week
       number of year [01-52], is useful for week by week aging.  Another
       example; LOGDIR='/var/log/delegate/[date+aged/%y/%m/%d]' will make
       hierarchical logs.
       The latest LOGFILE will be pointed with another file name (hard link
       to it) which name is made by omitting `[date+format]' parts from
       LOGFILE specification.  You can use another pattern `[start+format]'
       for aging.  `start+' pattern will be evaluated in the same way with
       `date+' except that it will be substituted by time when the delegated
       started (or restarted by SIGHUP or specified TIMEOUT=restart).

    ACTDIR   dir-name       (default: /tmp/delegate }
    TMPDIR   dir-name       (default: none)
    PIDFILE  file-name      (default: ${ACTDIR}/pid/${PORT})
    FTPGETS  file-name      (default: ${ACTDIR}/ftpget/${SERVERNAME})

       Information about currently active servers are placed at ${ACTDIR}
       Those are temporary files which are made on invocation of a server
       and are removed at exit.

    OWNER    user       (default: `nobody' for root, otherwise invoker)
    OWNER    user/group (default: `nobody/nogroup' for root, otherwise invoker)
   *OWNER    user:srcHostList

       If specified, the delegated will run with the right of specified
       user, calling setuid() and setgid() system calls. User and group
       can be specified either in symbolic name or in id-number prefixed
       with `#'.
       If srcHostList is specifed, owner of the delegated will be set to
       the user when the client host is included in the list.  The user
       name `*' will be substituted by the user name of the client when
       it can be got from Ident server (identd).  A simple example is
       OWNER="*:*@*".
       This variable is effective only when the invoker is a super-user.

    ADMIN    user-address   (default: none)

       You must specify this parameter when you invoke a delegated on
       the firewall or the hosts directly reachable to internet.
       This E-mail address will be used as follows:

         - Shown in (error) messages as the name of administrator of
           the delegated (HTTP).
         - Shown in opening messages or in help message as the name of
           administrator of the delegated (FTP, NNTP, Telnet).
         - Sent as user name (in PASS command) on anonymous FTP access
           to remote FTP servers.
         - Sent as sender name (in FROM command) in access to remote SMTP
           server on verification by AUTH=anonftp:smtp-vrfy.

    MANAGER  user-address

       Equal to ADMIN.  This is the former name of ADMIN parameter.

   *PUBLIC   proto://host:port  (default: none)

       If specified, the delegated will be registered as a public DeleGate.
       The registration is done by sending a message to the delegated at the
       specified `proto://host:port' when it is invoked.  The registration
       will be removed when the delegated finishes.
       Specify PUBLIC="" for PUBLIC="http://wall.etl.go.jp/" to declare
       that your delegate is public to anyone in internet.

    HTMLCONV conv-list      (default: deent)

       Specify a list of switch to control convertion for HTML text in
       a HTTP response message.

         deent   -- decode entity symbol
         enent   -- encode entity symbol
         fullurl -- convert all of URLs to full URLs
                    (equals to URICONV="full:+,-HREF/BASE")

       Deent and enent control encoding and decoding of special characters
       between HTML and plain text.  If `deent' is specified, encoded
       entity symbol like `&lt' in ISO-2022-JP text will be decoded into `<'.
       This will be useful with PROXY in Gopher gatewaying.  If `enent' is
       specified then entity symbols out of ISO-2022-JP text will be encoded.
       This will be useful in case of NNTP/DeleGate for WWW client.  If empty
       list is specified, no conversion is performed.

    URICONV  convList:attrList (default: it will be shown by URICONV=dump)
    URICONV  defelem:+,elemnameList
    URICONV  defattr:+,attrnameList

       Specify which kind of URI rewriting should be applied to which kind
       of attributes of tags in HTML document.  The convList is a list of
       following items.

         mount   -- rewriting by MOUNT
         normal  -- normalize MOUNTed URL if it includes abnormal "../"
         partial -- represent (MOUNTed) URLs as partial URLs if possible
         full    -- convert all of URLs to full URLs

       The special convList URICONV="+" means loading the default URICONV
       configuration (no attrList in this case in the current implementation).
       The attrList is a list of attributes names each may be postfixed
       with an element name.  A special attributes name ``+'' means the
       default set of attributes.  An attribute prefixed with ``-''
       character is excluded from the calculated set of attributes.

       EXAMPLE:
         URICONV=mount,normal,partial:+  -- might be the default after Ver.6
         URICONV=full:+,-HREF/BASE       -- rewrite everything exept HREF/BASE
         URICONV=dump                    -- show the current URICONV config.
         URICONV=+ URICONV=mount:-SRC/IMG URICONV=full:SRC/IMG
                                         -- don't apply MOUNT to <IMG SRC=...>

    MIMECONV thru,charcode   (default: all)

       Control MIME encoding/decording in NNTP/POP/SMTP DeleGate.
       MIMECONV=thru disables any MIME encoding/decording, and
       MIMECONV=charcode enables only character code conversion.

   *DELAY    what:seconds

       Delay for specified seconds before doing `what'.

         reject -- continuous Reject resp. from self or MOUNTed servers [60]
         unknown -- continuous Unknown resp. from self or MOUNTed servers [60]
         reject_p -- continuous Reject resp. from origin server [0]
         unknown_p -- continuous Unknown resp. from origin server [0]

       Each value specifies the muximum delay time and delay time increases
       according as the error count increases.

   *TIMEOUT  what:seconds,...   (default: dns:60,acc:30,con:30,lin:30)

       Specify timeout period (in seconds by default) of `what' which
       includes:

         shutout  -- disarming emergent shutout set on fatail error [900]
         dns      -- for DNS lookup [60]
         acc      -- for accept from client (include FTP data connection) [30]
         con      -- for connection to the server [30]
         lin      -- LINGER for output [30]
         ident    -- for connection to Ident server [10]
         io       -- general I/O [600]
         hello    -- for HELLO negotiation with the MASTER [30]
         login    -- for login to proxy telnet/ftp [60]
         ftpcc    -- for keeping alive FTP Connection Cache [900]
         nntpcc   -- for keeping alive FTP Connection Cache [300]
         daemon   -- delegated [unlimited]
         restart  -- cause restart at every specified period [unlimited]
                     (the unit of period can be changed like 1d, 1h, 1m)
         standby  -- keep the delegated alive on standby for next client [30]
         http-cka -- keep the connection with the client alive [5]
                     (the timeout is ten times longer for the first
                     connection from each client host)
         takeover -- taking over a downloading to cache after the client
                     which initiated the downloading disconnected [0]

       The timeout value `0' means `never timeout' (unlimited).

   *MAXIMA   what:number,...    (default: listen:20,ftpcc:2)

       Specify the maximum number of specified servers.

         listen    -- server's queue size [20]
         delegated -- the number of delegateds runnable at a time [64]
         ftpcc     -- the number of ftp connection cache servers to a host [16]
         nntpcc    -- the num. of NNTP connection cache processes to a host[16]
         service   -- the number of services per delegated process [unlimited]
         mailsplit -- maximum size of of each partial mail [50000]
         standby   -- the maximum number of standby process [16]
         http-cka  -- connection Keep-Alive [10]
                      (the maximum is ten times larger for the first
                      connection from each client host)
         http-ckapch -- the number of connection in Keep-Alive at a time
                      for each client host [4]
         conpch    -- the maximum number of connections at at time
                      per client host [unlimited]

    OVERRIDE master:port:ParamList   (default: none)

       Override limits in the MASTER.  Currently only
       OVERRIDE="*:*:TIMEOUT=timeoutList" and OVERRIDE="*:*:CONNECT=cache"
       are supported.

   *AUTHORIZER authServ:protoList:dstHostList:srcHostList (default: none)

       Specify the server for authentication (with authorization possibly)
       for a combination of destination protocol, server host and client host.
       The authServList is a host name of authentication server, or a
       list of host names of authentication servers.

       IF only authentication of user is necessary without authorization,
       the following special name will be useful as a authServ.

         "&" -- the client host (user name on the client host is required)
         "*" -- any authHost specified by the client by "user@authHost"

     EXAMPLE:
       SERVER=telnet AUTHORIZER="&:::!*.local.domain"
         (clients from outside of local.domain is requred authentication)
       SERVER=telnet AUTHORIZER="localhost" RELAIBLE="*"
         (any clients is allowed if the user is authenticated with localhost)

   *AUTH     what:authProto:who (default: none)

       Authorize `who' to do `what'.  Authentication of user will be done
       using protocol specified in authProto.  Identification about ``who is
       the client's user'' is done based on Identification protocol to the
       client host if it supports the protocol.  Otherwise FTP-server may
       be used as an authorization server.  Given Authorization information
       consists of Username:Password, where Username can be User@Host,
       if a trial login to Host with User and Password succeed, then the
       client is authenticated to be User@Host.
       Currently following three categories of authorization are supported:

         manager:*:user@host
             Permit `user@host' to perform remote management of the delegated
             including server restarting and logging control.
             The second field should be `*' in current implementation.
             See <URL:http://-/-/manage/>

         anonftp:*:password
             This parameter is referred from FTP/HTTP gateway.  If specified,
             the delegated asks anonymous-ftp users to inform of his/her
             E-mail address as Login-name in the HTTP authorization scheme.
             If `password' field is specified as `*', then any Password in
             the authorization will be acceptable.
             The second field should be `*' in current implementation.

         anonftp:smtp-vrfy:*
             This parameter is referred by FTP proxy to check an E-mail
             address given as the password for the anonymous user. (The
             E-mail address must be sent as user-name in FTP/HTTP gateway).
             With this specifcation, invalid E-mail addresses will be rejected.
             When the address is valid but is in a format like "user@host",
             it will be expanded automatically to a FQDN format like
             "[email protected]".
             If the third field is "-" (i.e. "AUTH=anonftp:smtp-vrfy:-@*")
             only the connectivity to mail server at "host.domain" is checked.

# The third field can be the matching level of domains of verified
# address and the address of the client host like follows:
# E-mail:"[email protected]" and client-host:"[email protected]"

         proxy:{ident,auth,pauth}   (default: proxy:ident)
             Specify identification/authorization protocols for the
             delegated as a HTTP proxy server.
             This parameter is checked only when access control for user
             is specified in PERMIT or RELIABLE.

               ident -- Identification protocol
               pauth -- Use Proxy-Authorization field `user@host:password'
               auth  -- Use Authorization field `user@host:password'

             Example: AUTH=proxy:auth PERMIT="*:*:{*,!?}@*"
                 Any user at any host is allowed as long as he/she is
                 identified.

             NOTE: When the client does not support Proxy-Authentication,
                   you are obliged to use `auth' for Authentication.
                   In such case, note that the client cannot access
                   resources which requires Authentication.

         forward:{by,for,ver,*}
             Put identification information of the source host in the
             ``Forwarded: by Me (Ver) for Client'' field in a HTTP request
             header field, if the destination host is included in the
             dstHostList and the source host is included in the srcHostList.
             Currently, if this is specified, it is regarded as
             AUTH="forward:*:" regardless of the second field.
             This is usefull for a delegated on a firewall which relays
             internal HTTP servers towoard outside .

         authgen:basic:authString
             Generate ``Authorization: Basic authString'' in a HTTP request
             header if it does not have an original Authorization field.
             The authString should be "userName:passWord".
             The following special string stand for attributes of clients.

               %u -- user name got using Ident
               %h -- host name of the client got from the socket
               %i -- host name of the network interface to the client
               %a -- host address of the client
               %n -- network address of the client
               %H -- hostname of the delegated
               %M -- the ADMIN of the delegated
               %A -- generated string by "CMAP=string:authgen:mapSpec"

             Example:
               When the firewall have two network interfaces and internal
               and external hosts access from different interface, then
               they can be distinguished by the name of interface.

                     AUTH="authgen:basic:%i:%h"

               Otherwise, internal networkd should be explicitly defined
               using CMAP as follows.

                     AUTH="authgen:basic:%A"
                     CMAP="{internal:passWord}:authgen:*:*:{IntenalNetList}"
                     CMAP="{external:passWord}:authgen:*:*:*"

               A genereted password is formatted as "passWord/%i" and
               a delegated rejects incoming requests with an Authorization
               field of such pattern. Thus forged password cannot pass the
               delegateds on the host.

         fromgen:fromString
               If specified, "From: fromString" will be put in the HTTP
               request if the original header does not have an original
               From field.  If fromString is omitted, the default value
               is "%u@%h".

         log:remoteHost:Ident:authUser
               Specify contents of the client information part in common
               logfile format of HTTTP servers. The default value is
               AUTH="log:%h:%u:%U".

               %F -- E-mail address in From field
               %L -- local part of From: local@domain field
               %D -- domain part of From: local@domain field
               %U -- username part of Authorization: userame:password
               %P -- password part of Authorization: userame:password
               %Q -- `for FQDN' part of Forwarded: field

       Example:
          To record information about an original client in an internal
          delegated which is forwarded from a firewall delegated,
          generate From field at the firewall delegated and record it
          at the internal delegated.

               firewall% delegated AUTH="fromgen:%u@%h" ...
               internal% delegated AUTH="log:%D/%h:%L/%u:%U" ...

       In the case where the FTP-server based authentication is used,
       a recommended user name of the authorization information is
       e-mail address like `[email protected]' so that it can be commonly
       used for both `anonftp' and `proxy'.


    DGPATH   dir1:dir2:...    (default: +:.:${HOME}/delegate)

    FCL filter-command
    FFROMCL filter-command
    FTOCL filter-command
    FSV filter-command
    FTOSV filter-command
    FFROMSV filter-command
    FMD filter-command
    FFROMMD filter-command

       Specify a filter command for data transmitted between the delegated
       and the client.  Filters except for FCL,FSV and FMD get input from
       standard input and put output to standard output.
       Filter commands for FCL,FSV and FMD are given file descriptor 0 bound
       for the client, and file descriptor 1 bound for the delegated.

       You can apply filters conditionally using CMAP in the format like
       follows:
         CMAP=filter-command:filter-name:protoList:dstHostList:srcHostList
       For example, CMAP="sslway -co:FSV:telnet:hostA:*" means apply
       SSLway filter only when connecting to the Telnet server at hostA.

    RPORT {tcp,udp}
    RPORT {tcp,udp}:host

       This parameter should be used together with MASTER parameter.
       If specified, a connection (for response data transfer) from the
       MASTER delegate to this deleate is established separately from the
       connection (for request data transfer) from the delegated to its
       MASTER delegated.  A specified type of response connection will be
       made from the MASTER towards the delegate at the specified host.

   ?RPASV ((Not yet available))

       ... similar to RPORT, but the connection is established from the
       delegated to the MASTER delegated ...

    HTTPMAIL   server:relay
    HTTPMAIL   server:relay:mailsplit

       If specified, the delegated will access remote HTTP service via E-mail.
       The `server' is the E-mail address of HTTPMAIL server, and the
       `relay' is the E-mail address of HTTPMAIL client (may be delegated)
       which receives response from the server and relays it to the delegated.
       `mailsplit' indicate the desirable maximum size of each separated
       message of response message from the server.

    FILETYPE   suffix:gopher-type:alt:icon:content-type

       Define file name to content-type mapping.

         gopher-type: 0 - text, 1 - directry, 4 - BinHex, 6 - uuencode,
                      9 - binary, g - gif, I - image, ...

         alt: alternative text which should be displayed for the icon image
              in text only displays

         icon: binary,binhex,compressed,directory,document,ftp,gzip,
               image,index,index2,movie,sound,tar,telnet,text,unknown,uu
               (see http://-.-/-/builtin/icons/ of HTTP/DeleGate)

         content-type: text/plain, image/gif, ... (see RFC1521)

       EXAMPLE:
           FILETYPE=".txt:0:TXT:text:text/plain"
           FILETYPE=".gif:g:GIF:image:image/gif"

   *CMAP       result:mapname:protoList:dstHostList:srcHostList


   *NNTPCONF   spec-list     (default: upact:600/300/120)

       server:host [ :port ] [ /grouplist ]
          set NNTP server(s) for requests by URLs nntp://*/... or news:...

       pathhost:Server/PathHost  -- define PathHost name of the Server-host.
          EXAMPLE: NNTPCONF="etlinn.etl.go.jp/etl.go.jp"

       upact:Invoke/Reload/Posted -- control updating of active list cache.
          Invoke and Reload specifies expire time of the cache in seconds.
          After an article is posted via the delegated, the cache will be
          updated whenever the client checked it (by LIST command),
          within the period specified by Posted.

       overview.fmt:{FieldList}
              (default: {Subject,From,Data,Message-ID,References,Bytes,Lines})
          The format of the response message to XOVER command.

       xover:Number          (default: xover:2000)
          Limit the maximum number of articles in "XOVER range"

       nice:Number           (default: none)
          Set the nice value if defined.

       auth:{srcHostList}
          Force authentication (using AUTHINFO) at the beginning of the NNTP
          session if the client hosts is included in the srcHostList.
          This parameter should be set if the NNTP server does any
          authentication for any subset of users, and this delegated does
          caching for NNTP.

       nntpcc:number         (default: 1)
          Specify "nntpcc:0" to disable "connection cache" for NNTP.

   *CRON       cron-spec     (default: none)

       Cause an action at a time specified in the cron-spec.  Cron-spec is
       written in the following syntax which is compatible with that of
       "cron" server of Unix systmes.

          minute hour day month dayofweek action

       If the action is prefixed with '/' then it is an external action
       which will be executed by the system() function.  If the action is
       prefixed with '-' then it is a built-in internal action of DeleGate.

          -suspend N      -- suspend for N seconds
          -restart        -- restart the delegated
          -exit           -- finish the delegated
          -expire N       -- execute expiration for $CACHEDIR by "-atime +Nd"
          -system command -- execute `command' as a shell command
       #  -fetch URL
       #  -refresh URL

          /path/of/com args -- equiv. to "-system /path/of/com args"
          - args            -- equiv. to "/path/of/delegated args"
          -Ffunc args       -- equiv. to "/path/of/delegated -Ffunc args"

       EXAMPLE:
        CRON="0 0 * * * -restart"
        CRON="0 3 * * * -expire 3"  (this is equivalent to followings)
        CRON="0 3 * * * -Fexpire /path/of/cache -rm -atime +3 -sum"
        CRON="0 3 * * * /path/of/delegated -Fexpire /path/of/cache -rm -atime +3 -sum"

   *INETD      server-conf   (default: none)

       Invoke a new DeleGate process with the specified configuration when
       a request is arrived at the specified port.  The format of the
       specification is like that of inetd.conf(5) in Unix systems:

        [host:]port stream/dgram tcp/udp nowait/wait user exec-path arg-list

       A special exec-path "-" means to start child delegated with the given
       arg-list.  The configuration of the parent delegated is inherited to
       child delegateds.  For example, when a parent delegated is invoked
       like: delegated ADMIN=foo EXPIRE=1 INETD="conf1" INETD="conf2"
       these ADMIN and EXPIRE parameters are inherited to delegateds
       specified in "conf1" and "conf2".

       NOTE: "wait" state is not yet supported in the current version.

       EXAMPLE:
        INETD="8080 stream tcp nowait nobody - SERVER=http"
        INETD="8080 - - - nobody - SERVER=http" (equivalent to the above)
        INETD="8119 - - - - - SERVER=nntp://nntpserver/"
        INETD="8888 - - - - /bin/date date" (equivalent to the following)
        INETD='8888 - - - - - SERVER=exec XCMD="/bin/date date"'
        INETD="8888 dgram  udp - - /bin/date date"
        INETD="localhost:8888 - - - - - /bin/sh sh"
        INETD=+=/path/of/inetd.conf  (load configuration from a file)

   *ICP icpServers
   *ICP icpServers:icpOptions:proxyPort:icpPort
   *ICP icpServers:icpOptions:proxyPort:icpPort:dstProtos:dstHosts:srcHosts

       ICP client configuration which is referred when "icp" is included
       in the CONNECT sequence.  icpServers is a comma separated list of
       icp servers where each server is represented in the following format:

         icpHost/icpType/proxyPort/icpPort

         icpHost
           The host name or IP address of the ICP server [localhost]
         icpType
           "s" -- the ICP server is a "sibling" [default]
           "p" -- the ICP server is a "parent"
           "l" -- the ICP server is a "listener" which never respond
           "n" -- the ICP server is a navigation proxy
           "o" -- require HIT_OBJ response
           "H" -- the object server is a HTTP proxy [default]
           "D" -- the object server is a MASTER DeleGate.
           "O" -- the object server is an origin server.
####        "P" -- the object server is an proxy of origin protocol.
         proxyPort
           The port number of the corresponding object server [8080].
         icpPort
           The port number of ICP protocol [3130].

       icpOptions:
         timeout/N -- period to wait response as an ICP client [2.0](seconds)
         parent -- mark the default type of icpServers as "parent"
         listener -- mark the default type of icpServers as "listener"
         hitobj -- enable HIT_OBJ for all icpServers by default
         Origin -- object servers are origin server
         DeleGate -- object servers are DeleGate

       EXAMPLE:
         ICP=icphost
         (This is the simplest usage which is the abbreviation of
          ICP="icphost/sH/8080/3130:timeout/2.0:8080:3130:*:*:*" )

         ICP="host0"
         ICP="host0//8080/3130"
         ICP="host0::8080:3130"
         ICP="host1:timeout/1.0:::http,ftp:!*.my.domain:*.my.domain"
         ICP="host1,host2/O/80/13130:timeout/2.0:8080:3130"

   *ICPCONF {para:N,hitage:N,hitobjage:N,hitobjsize:N,timeout:N}
##  *ICPCONF icpOptions:dstProtos:dstHosts:srcHosts

       ICP configuration when the DeleGate server is running as an
       ICP server with SERVER="icp".

         para:N -- the number of parallel ICP-DeleGate servers [2]
         hitage:N -- valid age of cached data to be notified as HIT [1d]
         hitobjage:N -- valid age of cached data to be sent by HIT_OBJ [1h]
         hitobjsize:N -- max. size of cached data by HIT_OBJ [1024](bytes)
         timeout:N -- default timeout of waiting response [2.0](seconds)
##        nofetch -- returns NOFETCH for MISS (off)
         debug:N -- the level of log for debug [0]

   *DNSCONF

      Specify the configuration of the DNS-DeleGate server with (SERVER=dns).

         para:N -- the number of paralles server process [2]
         domain:FQDN -- [domain of the host of DeleGate]
         origin:FQDH -- [host of the host of DeleGate]
         admin:Email -- the mail address of the administrator [ADMIN]
         serial:N -- serial number [%Y%m%d%h of configuration change]
         refresh:N -- refresh interval [3600]
         retry:N -- retry interval [600]
         expire:N -- expire period [3600*24]
         minttl:N -- minimum ttl [3600]

      EXAMPLE: SERVER=dns RESOLV=cache,file,nis DNSCONF=domain:my.domain

    VSAP      vsap-host:port (default:none)

       Specify a VSAP server to be used for acception from clients or for
       connection to clients.  VSAP is a remote socket mapping server
       which enables servers to accept a TCP connection via a remote host
       as well as to connect via a remote host.

       EXAMPLE:
       firewall% delegated -P8000 SERVER=vsap PORT=8080-8090
                 -- VSAP server
       internal% delegated -P8080@firewall:8000 ...
                 -- accept via VSAP, internal server for external clients
       internal% delegated -P8080 CONNECT="{vsap/firewall:8000}" ...
                 -- connect via VSAP, proxy server for internal clients
       internal% delegated -P8080 VSAP=firewall:8000 ...
                 -- accpet and connect via VSAP server

   *HTTPCONF  conf-script    (default: welcome:welcome.html,welcome.cgi,
                                              index.html,index.cgi,-dir.html)
       welcome:listOfWelcomeFiles
         A list of index files or CGI scripts which should be used for URLs
         of directories ending with "/" like "/path/".  This is a list of
         cancidate file names.  The list may be ended with "-dir.html" which
         means a built-in index generator.  If the list is empty, empty data
         is substituted for index data.

       search:pathOfSearchScript (default: none)
         The path of a CGI script to be applied for URLs with search part like
         "/path?search".  This is a global specification applied for all URLs.
         Also you can specify a local search script for each MOUNT point like
           MOUNT="/path2/* /root/of/path2/* search:srcipt2".
         This local specification is prior to the global one.  A special local
         specification "search:-" can be used just to ignore the global
         specification for the MOUNT point.

         EXAMPLE:
           HTTPCONF=search:/path/of/searchScript
           MOUNT="/*    file:/path/of/data/*"
           MOONT="/bin/* cgi:/path/of/cgi-bin/* search:-"


    SMTPGATE  config-dir     (default: ${ETCDIR}/smtpgate)

      Specify the configuration directory for SMTP to {SMTP,NNTP,FTP} gatway.


 ProtoList     [!]protocol,...

    A ProtoList is a list of protocol names separated with `,'.
    Reserved name `*' means all of protocols.  If `!' or '-' is prefixed,
    the protocol is excluded from the protocol list.
    Special protocol names `tcprelay' and `udprelay' provide generic full
    duplex channel for application protocols on TCP and UDP protocols
    respectively.

 HostList      [!]host,host/mask,...

    A HostList is a list of hostname and IP-address optionally followed by a
    mask value, or IP-address range specification.  This list is used in
    matching to examine whether a certain host name or IP-address is
    included the list or not.  You can prefix or postfix wild card character
    `*' to the hostname, like `*.ac.jp' or `*.etl.go.jp'.  IP-address range
    can be specified like 192.168.[0-255], 192.168.1.[32-63].
    These range can be written as 192.168.0.0/16 and 192.168.1.32/27.

    There are special host names which are substituted with real host
    names at runtime.

      "."  -- the host where the delegated is running.
      "-"  -- identical to "." if the host has unique IP address (network
              interface), but if it have multiple IP addresses, it will
              be the IP address from which the client connected to the
              delegated.
      ".o" -- identical to "." if the host has unique IP address, but if
              it have multiple network interface, outgoing
              network interface
      ".localnet" -- represents "localhost,./@,-/@,.o/@"
      "-C" -- the client host which may be useful to restrict access
              from a client only to the client (network).
      "?"  -- matches any `unknown hosts' which name or address is not
              known by resolvers (listed in RESOLV).

    If a hostname (or a IP-address) is prefixed with "-" like "-hostname"
    ("-192.168.1.1"), then no name resolution (reverse resolution) will be
    tried for the hostname (IP-address).  This will avoid wasting time in
    resolution trial for a never resolvable hostname (IP-address).

    Specifying a mask value, you can check only a part of address, typically
    network address.  The mask value can be specified in one of four forms;
    hexa-decimal value, internet address in dot notation, `@', or one of `@A',
    `@B' and `@C'.  `@' means the default network mask for the IP-address of
    the host to be masked.  @A, @B, @C represent 255.0.0.0, 255.255.0.0 and
    255.255.255.0 respectively.  The `@X' notation can be followed by the
    number of bits for subnets; for example `@B4' means class B network
    divided into sixteen subnets.

    If `!' is prefixed to a host, it means that the host is excluded from
    the list.  All of elements in the list are scanned from the first one to
    the last one.  Thus once included (excluded) name may be excluded
    (included) in succeeding list.

    For HostList concerning source hosts, list of user names (UserList) can
    be prefixed to a host name like {user1,user2,...}@host.  The negate symbol
    `!' have the same meaning with that in HostList.  Note that !user@host
    is different from {!user}@host; the former excludes user@host, but the
    latter means {*,!user}@host thus includes *@host exept user@host.
    The special user name `?' matches with users whos names are not
    IDENTified with identd.  You can inhibit access from unknown hosts or
    from unknown users with "RELIABLE={!?,!?@*}".


SUBSTITUTION

    Options and values can be loaded from external `substitution resources'.
    An option like `+=file' is substitued by a list of options enumerated
    in the resource named `file', an option like `name=+=file' is substitued
    by a list of `name=value' where the `value' is enumerated in the `file'.

    Substitution can be done recursively.  In this case, a relative resource
    name is searched in DGPATH.  By default, DGPATH="+:.:${HOME}/delegate"
    where `+' stands for the place where the `caller' resource is.
    For example, if `+=file2' is referred from file `/usr/etc/file1', the
    `file2' will be searched first as `/usr/etc/file2'.  A resource name can
    be specified in URL like `+={http://host/file}'.

    Substitution resources are the list of options (or values) where each
    line stands for an option (or a value).  In each line, strings after
    sharp character(#) will be ignored as a comment.  White space characters
    (SPACE, TAB, LF and CR) at the beggining or the ending of each line are
    ignored.  Single quote(') and double quote(") are stripped.  Back
    slash character(\) let the succeeding character be as is.

    Substitution resources will be reloaded when the delegated received a
    SIGHUP signal.

    Another subustitution is in the form "name=-=URL" which loads the
    content of URL into a temporary file on local file system (under ACTDIR),
    then the parameter is rewriten to "name=/path/of/temporary-file".
    This will be useful when you wish to pass remote resources to CGI or
    CFI programs, like "-eCONFIGDATA=-=http://server/configdata", then those
    programs will given an environment variable named CONFIGDATA of which
    value is a temporary file name containing the content of
    "http://server/configdata".


URL REWRITING RULE

    The general rewriting rule for URLs of protocols to be gatewayed by
    HTTP proxy is as follows:

        ORIGINAL             REDIRECTED URL
        ---------------      ----------------------------------
        P://OH:OP/F      ->  http://DH:DP/-_-P://OH:OP/F

    where DH and DP means the host and port of delegated respectively.
    The redirected URL is composed of three parts:

          proxy part:    http://DH:DP/
          delimiter:     -_-
          original URL:  P://OH:OP/F

    If P is HTTP, then it may be omitted.  This rewiting rule could be
    applyed for proxies of other protocols, exept for Gopher.  In Gopher
    proxy, rewriting should be as follows:

        ORIGINAL             REDIRECTED URL
        ---------------      ----------------------------------
        gopher://H:P/GS  ->  gopher://DH:DP/G-_-gopher://H:P/GS

    where `G' and `S' means `gtype' and `selector' respectively.  The
    rewriting rule of Directory Entity is compatible with that of URL:

        G User_Name Tab S Tab Host Tab Port
     -> G User_Name Tab -_-gopher://Host/Port/GS Tab DH Tab DP

-- DELEGATE SWITCHING TABLE --

    Delegated does not apply rewriting rule to already REDIRECTED request.
    Thus you can write delegate switch tables in HTML.  Suppose that you
    have two firewall hosts connected to different networks each other:

       <A HREF="http://host:10080/-_-//www.ntt.jp/"> firewall1 -> NTT </A>
       <A HREF="http://host:20080/-_-//www.ntt.jp/"> firewall2 -> NTT </A>

    where the HTTP SPECIALIST delegated on 10080 and 20080 are, for example,
    connected to the Proxy_httpd on firewall1 and firewall2 respectively.

-- MODIFIER --

    Right after the -_- mark, optional `/Modifier/' form can be inserted
    as follows:

       http://delegate/-_-/Modifier/URL

    Modifier can be a list of multiple Modifiers sepalarted each other by
    by comma (,) character.

       cc   -- Client's character code specified as ``cc.OutCode.InCode''

       F<f> -- <f> is a list of flag characters compatible with (obsoleted)
               ``=flags='' extension.

#
# OBSOLETED BY MODIFIER
#
#--  ENCODING STATE IN URL --
#
#     Right after the -_- mark, optional `=flags=' form can be inserted as
#     follows.
#
#         -_-=JN=gopher:H:P=G
#
#     Flags in a request to the delegated will be copyed in the URL or DirEnt
#     in its response.  Thus flags can be used to represent some `state' in
#     stateless protocols like HTTP and Gopher.  Currently supported flag are:
#
#         N   use internet address number overriding DELEGATE specification
#         E   force EUC output overriding CHARCODE variable
#         S   force SJIS output overriding CHARCODE variable
#         J   force JIS (ISO-2022-JP) output overriding CHARCODE variable
#         I   force II output
#         c   force CN (Chinese BIG5,GB,HZ) input to Japanese JIS conversion
#         C   DISABLE cache
#
#     These rewriting can be achieved by some script commands for user
#     when they invokes the real client.  You will find `dmosaic' and
#     `go-far' script in the bin/ directory of DeleGate distribution file.

--  DEFECT --

    In this rewriting mechanism, Users of clients are forced to mind that
    they are using DeleGate.  To open something directly by specifying its
    locater like a URL, they must know the special encoding format of URL
    to use DeleGate.  When they save HTML text got via DeleGate, they should
    rewrite URLs included in it into original format.  But for the clients
    with PROXY_HTTP facility, DeleGate becomes unvisible for users and
    these defects are cancelled.  Those clients can use DeleGate for
    Proxy_httpd, or they can use DeleGate only for JIS code conversion.

DeleGate-TUNNEL

    If -P option is not specified then the standard input/output is used as
    a fixed communication channel to a client.  In this case the channel is
    called as a `DeleGate-TUNNEL' and a connection oriented DeleGate protocol
    is performed on the channel.  A TUNNEL will be used when the delegated
    is invoked from inetd, when it is connected to a non-IP communication
    channel such as a serial line, or when you need to pass through a
    protocol-filtered router using permitted protocol.


EXAMPLE

-- HTTP/DeleGate --

    A simple usage of the delgated just for HTTP clients is running it on
    your `firewall' host as Proxy-HTTP server like follows:

       firewall% delegated -P8080 SERVER=http://-/-/ RELIABLE=internal

    Then use it from your client on the `internal' host:

       internal% setenv http_proxy   http://firewall:8080/
       internal% setenv ftp_proxy    http://firewall:8080/
       internal% setenv gopher_proxy http://firewall:8080/
       internal% setenv wais_proxy   http://firewall:8080/
       internal% mosaic http://info.cern.ch/

    If a Proxy_httpd on a host `firewall' at the port 8080 is available,
    you can utilize it at `internal' host like follows:

       internal% delegated -P10080 PROXY=firewall:8080 \
                               SERVER=http://www.ntt.jp:80

    Otherwise you must run GENERALIST DeleGate on the firewall, then run
    a SPECIALIST on `internal' host which use the GENERALIST on firewall:

       firewall% delegated -P19999 RELIABLE=internal
       internal% delegated -P10080 MASTER=firewall:19999 \
                                   SERVER=http://www.ntt.jp:80

    After you invoked delegated, try to use it as follows. If your WWW
    client supports Proxy:

       localhost% setenv http_proxy http://internal:10080/
       localhost% mosaic
       localhost% mosaic http://info.cern.ch/

    Otherwise:

       localhost% w3client http://internal:10080/
       localhost% w3client http://internal:10080/-_-://info.cern.ch/

    In the first example in each case, mosaic(w3client) will be connected
    to the default server specified at delegated's command line
    (in this case, www.ntt.jp).  In the second example, the server
    specified in command line (info.cern.ch) will be connected.

-- DeleGate as a HTTP origin server --

       host# delegated -P80 SERVER=http REMITTABLE=file,cgi \
                                        MOUNT="/* /path/of/root/*"

    A file with a name extensioned with ".cgi" is treated as a CGI script.
    Also you can use arbitraly name of CGI scripts under a specified
    directory like follows:

       MOUNT="/xxx/* cgi:/path/of/cgi-bin/*"

-- DeleGate as a CGI program --

    You can use DeleGate as a CGI program from a HTTP server. For example,
    specify in the ``httpd.conf'' file of your HTTP server(A) as follows.

       Exec /other/*  /path/of/cgi-delegate

    Then write the content of the file /path/of/cgi-delegate as follows:

       #!/bin/sh
       delegated -Fcgi MOUNT="/-* =" \
                       MOUNT="/www2/* http://www-server2/*" \
                       MOUNT="/news/* nntp://nntp-server/*"

    This will add a pseudo sub tree ``/other/'' on server(A) including
    /other/www2/ which is a content of a HTTP server ``www-server2'', and
    /other/news/ which is a content of a NNTP server ``news-server''.


-- Gopher/DeleGate --

       firewall% delegated -P19999 RELIABLE=internal
       internal% delegated -P10070 MASTER=firewall:19999 CHARCODE=JIS\
                                   SERVER=gopher://gopher.ncc.go.jp:70
       localhost% gopher internal 10070
       localhost% gopher -p -_-gopher://gopher.tc.umn.edu internal 10070
       localhost% gopher -p -_-=E=gopher://gopher.tc.umn.edu internal 10070

    The third example of client invocation includes `=E=' just after the
    `-_-' mark, which specifies code conversion to EUC should be done in
    the server regardless the CHARCODE value of the server.

    Note that a GENERALIST delegated can be shared among SPECIALIST
    delegateds for HTTP, Gopher and others.

-- FTP/DeleGate --

    You can pass through the firewall with your `normal' FTP client
    without SOCKSification.  Run a delegated as a `FTP-Proxy' as follows:

       filewall% delegated -P8021 SERVER=ftp RELIABLE=internal

    Then you can connect to outside FTP servers via the FTP-Proxy.
    Move to the pseudo directory `//server' then you will be connected to
    the FTP server.

       internal% ftp
       ftp> open firewall 8021
       220-- firewall PROXY-FTP server (DeleGate2.3.0) ready.
       220--  @ @
       220-- ( - ) { DeleGate2.3.0 by [email protected] }
       220- You can connect to a SERVER by `cd' command as:
       220- ftp> cd //SERVER
       220
       Name (ysato:ysato): ftp
       331 Guest login ok, enter your E-mail address as password.
       Password: [email protected]
       230- Guest login ok, your E-mail address is <[email protected]>
       230- Now you can select a FTP SERVER by cd //SERVER
       230
       ftp> cd //host1.domain1/
       220 host1.domain2 FTP server ready.
       ftp> cd //host2.domain2/
       220 host2.domain2 FTP server ready.
       ftp>

    NOTE: The majoriy of ftp clients on UNIX can allow to specify port
    number of FTP at command line like follows:
       internal% ftp firewall 8021

  - Cascaded FTP-Proxy -

       firewall# delegated -P21 SERVER=ftp PERMIT="ftp:*:internal"
       internal# delegated -P21 SERVER=ftp PROXY=firewall:21

    Also Wu-ftpd can be specified as a PROXY.

  - FTP MOUNT - Filtering, Merging and Aliasing

       filewall# delegated -P21 SERVER=ftp://serv1/ \
                                MOUNT="/pub2/* ftp://serv2/pub/*" \
                                MOUNT="/pub3/* ftp://serv3/pub/*"

    This delegated mainly relays for serv1 but replaces its /pub2/* by
    that of serv2.

  - FTP to LPR (Line Printer Daemon Protocol) gateway

       MOUNT="/*     lpr://printer0/qname0/*"
       MOUNT="/pr1/* lpr://printer1/qname1/*"
       MOUNT="/pr2/* lpr://printer2/qname2/*"

-- DeleGate as a FTP origin server --

       host# delegated -P21 SERVER=ftp MOUNT="/* /path/of/root/*"

    STOR (writing to the file) is disabled by default in this case.
    You must specify "rw" as a mount option to the MOUNT point
    which should be writable, like MOUNT="/xxx/* /yyy/* rw".

-- Telnet/DeleGate --

       firewall% delegated -P8023 SERVER=telnet RELIABLE=internal
       internal% telnet firewall 8023

       --  @ @  PROXY-TELNET server on DeleGate2.3.0 by [email protected]
       -- ( - ) { Enter empty host name if you won't continue. }
       Host name: ysato

       SunOS UNIX (ysato)
       login:

-- POP/DeleGate --

       firewall# delegated -P110 SERVER=pop
       external% telnet firewall pop
       +OK Proxy-POP server (DeleGate2.4.4) at firewall starting.
       USER username@servername
       ...

    USER name `username%servername' is also available.

  - POP MOUNT

    ``user@server' is represented as ``//server/user'' internally and
    it can be controlled by MOUNT as follows:

      MOUNT="//* ="  ... don't rewrite if a server is specified by the user
      MOUNT="*        pop://defaulthost/*"  ... specify default POP server
      MOUNT="user1    pop://host/*"  ... let pophost be server of user1
      MOUNT="//pop1/* pop://host1/*" ... hide hostname host1

  - POP NNTP GATEWAY

      SERVER=pop
      MOUNT="* nntp://nntpserver/*"
      MOUNT="ns2-* nntp://nntpserver1/* apop=password"
      MOUNT="ns3-* nntp://nntpserver2/* pass=password"

    Clients are expected to send a newsgroup name as a user name.

-- POP/HTTP gateway DeleGate --

       firewall# delegated -P80 MOUNT="/mail/* pop://mailHost/*"

    This delegated provides mailboxes in POP server (at mailHost by
    default) to HTTP clients.  Clietns accessing to "http://firewall/mail/"
    are required to enter Username and Password for POP server at mailHost
    as authorization information on HTTP.  If Username is in the form
    "user@mailHost2", not mailHost but mailHost2 is accessed as POP server.
    Each mailbox of User at Host server is named as
    "http://firewall/mail/+pop.User.Host", thus you can directly specify
    User and Host in URL.

-- NNTP/DeleGate --

  Filterling

       firewall# delegated -P119 SERVER=nntp://news-server/group.

    relays only newsgroups which have name pattern `group.*'.
    A list of groups can be specified for a news-server like
    `nntp://news-server/group1.,group2.,...'

  Merging

       firewall# delegated -P119 SERVER=nntp \
                                 MOUNT="= nntp://server1/" \
                                 MOUNT="= nntp://server2/"

    merges newsgroups on two NNTP servers.

  Aliasing

       MOUNT="= nntp://server1/group."

    mounts groups of group.* with it original names.

       MOUNT="alias-group. nntp://server1/group."

    mounts groups of group.* with aliased names `alias-group.*'

  POP to NNTP relay

       MOUNT="= pop://user:pass@host/"

    mounts a mail spool as if it is a newsgroup named `+pop.user.host.'

-- NNTP/HTTP gateway DeleGate --

       firewall# delegated -P80 MOUNT="/net/news/* nntp://nntp-server/*"

-- DeleGate as a NNTP origin server --

  % delegated -P119 SERVER=nntp://-.-/

  Make a new newsgroup named ``NewsGroup''
    -> Make an empty file ${ETCDIR}/news/groups/NewsGroup

  Relay an existing ``/MH/folder'' as a ``NewsGroup''
    -> Make a file ${ETCDIR}/news/groups/NewsGroup with content like
       0 0 0 0 /MH/folder
      (four zeros followd by a path name of MH-folder)

-- SMTP/DeleGate --

  Aliasing and Filtering

      firewall# delegated -P25 SERVER=smtp://mail-server/ \
                                 MOUNT="foo@bar smtp://foo2@bar2" \
                                 MOUNT="* smtp://-"

      (BUG: target should be mailto:user2@bar2 ...)

-- HTTP via mail

  HTTPMAIL server

      Setup forwarding that forwards the mail to <[email protected]>
      to "|delegated FUNC=hmserver".

  HTTPMAIL client

      Setup forwarding that forwards the mail to <[email protected]>
      to "|delegated FUNC=hmrelay", and

      HostA% delegated -P8080 \
                [email protected]:[email protected]

      HostA should be IP-reachable from the mail server of yourhost.domain.
      Typically HostA is the same host with yourhost.domain.
      For testing, you may use `[email protected]' as a server.

-- LDAP/DeleGate --

       firewall# delegated -P389 SERVER=ldap

   Specify this DeleGate server as your client's LDAP server and
   append "@host.of.ldap-server" after root directory name (i.e.
   name of baseObject for search).

-- Whois/DeleGate --

       firewall% delegated -P19999 RELIABLE=INTERNAL
       INTERNAL# delegated -P43 SERVER=whois MASTER=firewall:19999
       internal% whois -h INTERNAL whois://whois.nic.ad.jp/help

-- CU-SeeMe/DeleGate --

       firewall% delegated -P7648 SERVER=cuseeme://Reflector/ RELIABLE=INTERNAL
       INTERNAL# delegated -P7648 SERVER=cuseeme://firewall/
       internal% {use firewall or INTERNAL as a proxy-reflecter for Reflector}

RESERVED-NAMES

    Special names `-'and `-.-', when it is used in the `host:port' part
    of URL,  means the host and port of the delegate itself.  And URL
   `http://-.-/-/' is reserved for a entry point of a control page of
    delegated.

FILES

    /var/spool/delegate/etc  -- persistent files mainly for configuration
    /var/spool/delegate/log  -- log files which will grow up
    /var/spool/delegate/work  -- for core dump
    /var/spool/delegate/cache  -- for cached data
    /tmp/delegate  -- volatile files which should be erased on shutdown
    $HOME/.rhosts.delegate  -- hosts permitted to invoke delegated via rsh

    See the description of DGROOT parameter for more information.

AUTHOR

    Yutaka Sato <[email protected]>
    Electrotechnical Laboratory (AIST,MITI), Tsukuba, Ibaraki 305, JAPAN

    COMMENT: I have clients of ftp, telnet, and whois, which support
             DeleGate and directly communicates GENERALIST.  But I think
             they are not so useful for you because you can use more neat
             proxy server for them, SOCKS.

DISTRIBUTION

    The latest version of DeleGate is available at the following location.
    <URL:ftp://ftp.etl.go.jp/pub/DeleGate/> in a tar+gzip format file
    named ``delegate*.tar.gz''.


Release 5.9            Last change: June 2, 1999