Re: Rule File (Using a Proxy server)
Roy Leonard writes:
> I am puzzled, I have read through the manual for the Library and the ComLine
> 'browser' and have seen many references to rule files. Does anybody have a
> sample rule file? Or know where I can find one?
> I hope to use the rule file to et ComLine to use a proxy server. If a rule
> file is not the appropriate way to do this, are there any suggestions about
> a better way to do this?
You can register proxies and gateways in two ways:
1) Use a rule file as you mention. You can find the syntax of rule files in
the library documentation at
2) You can set it up calling the proxy API described at
The rule file parser is part of the Rule file interface as described in the
libwww guide. It is a stream which can be registered as a converter - just
like any other stream converter. The library defines a default "mime" type
for www rule files called WWW_RULES (it'sdefined in HTFormat.html).
Note, that the rule file interface is _not_ part of the core libwww. Rule
file mapping can be registered as a BEFORE callback function in the HTNet
In summary - what you have to do is:
1) Register the rule file parser with the rule file MIME type as a stream
converter. You can do this by using the default stream converter
initialization function HTConverterInit() in the WWWInit interface.
2) Register a rule file matching algorithm as a BEFORE call-out function.
libwww provides a default BEFORE call-out function which checks for
rule files and some other stuff. This can be set up by calling the
default BEFORE and AFTER initialization function HTNetInit(). This is
also defined in the WWWInit interface.
This is a very typical way of handling registration in libwww. All actions
that you want to perform on a request can be registerd as BEFORE or AFTER
call-out function in the Net Manager. The list of BEFORE or AFTER call-out
functions can either be global to _all_ requests or _local_ to a single
request. In the latter case you assign a list of call-out functions directly
to the request object in HTReq.html
Registering streams (or converters) is also a very normal action. It
basically tells the library that when you see a certain media type you
should call this stream to do the data processing.
The initialization interface (WWWInit.html) contains a lot of default
initialization functions that sets of all the features of libwww. This is
not required to use by the application but it often makes life easier. It's
basically the principle that I have tried to get across - libwww core
doesn't do anything - it's a registry. By registering features the libwww
takes the profile that you want your application to have - it can be server
side features or client side featurs - you name it.
Henrik Frystyk Nielsen, <email@example.com>
World Wide Web Consortium, MIT/LCS NE43-356
545 Technology Square, Cambridge MA 02139, USA