The server can't access the user name but it can and does know the
host internet address. This is available in a global string
extern char * HTClientHost;
if I remember rightly. Any routine in the server can access this.
It's used for logging by the basic daemon with the -l option for example.
The string is a number like "184.108.40.206". If Cornell has a limited
number of domains then the program could check this string against
a number of templates. Otherwise, you could check the hostname
by doing a gethostbyaddr or whatever call to the nameserver.
There is a trap here in that, although the routine will return fast
for local addresses, it can take a long time for remote addresses.
As you are forced to do the lookup before delivering the data, this
will delay every request. You could of course keep your own cache
of machine names. But sticking at the number level might be the most
The new protocol will have hooks to determine allow the client to specify
a user name, mail address, etc, but of course the internet address
is more reliable than anything inserted by the client.
We have a philosophy that the same doc id should always return the same
document, or an error, no matter who asks. This preserves the usefulness
of quoting the document id. This means that you shouldn't just miss out
links from a document when the person is not allowed to follow them.
It is better to have a note, heading, etc to distinguish private from
public things, and then let an attempt to retrieve private things return