$NetBSD: patch-ae,v 1.2 2000/01/15 22:55:48 hubertf Exp $ diff -x *.orig -urN ./WWW/Library/Implementation/HTAAServ.h /usr/pkgsrc/www/lynx/work.unpatched/lynx2-8-2/WWW/Library/Implementation/HTAAServ.h --- ./WWW/Library/Implementation/HTAAServ.h Thu Jan 1 01:00:00 1970 +++ /usr/pkgsrc/www/lynx/work.unpatched/lynx2-8-2/WWW/Library/Implementation/HTAAServ.h Sat Jan 15 07:57:17 2000 @@ -0,0 +1,144 @@ +/* SERVER SIDE ACCESS AUTHORIZATION MODULE + + This module is the server side interface to Access Authorization (AA) package. It + contains code only for server. + + Important to know about memory allocation: + + Routines in this module use dynamic allocation, but free automatically all the memory + reserved by them. + + Therefore the caller never has to (and never should) free() any object returned by + these functions. + + Therefore also all the strings returned by this package are only valid until the next + call to the same function is made. This approach is selected, because of the nature of + access authorization: no string returned by the package needs to be valid longer than + until the next call. + + This also makes it easy to plug the AA package in: you don't have to ponder whether to + free()something here or is it done somewhere else (because it is always done somewhere + else). + + The strings that the package needs to store are copied so the original strings given as + parameters to AA functions may be freed or modified with no side effects. + + Also note:The AA package does not free() anything else than what it has itself + allocated. + + */ + +#ifndef HTAASERV_H +#define HTAASERV_H + +#include /* This module interacts with rule system */ +#include /* Common parts of AA */ +#include /* Authentication */ + + +#ifdef SHORT_NAMES +#define HTAAstMs HTAA_statusMessage +#define HTAAchAu HTAA_checkAuthorization +#define HTAAcoAH HTAA_composeAuthHeaders +#define HTAAsLog HTAA_startLogging +#endif /*SHORT_NAMES*/ + +extern time_t theTime; + +/* + +Check Access Authorization + + HTAA_checkAuthorization() is the main access authorization function. + + */ + +/* PUBLIC HTAA_checkAuthorization() +** CHECK IF USER IS AUTHORIZED TO ACCESS A FILE +** ON ENTRY: +** url is the document to be accessed. +** method_name name of the method, e.g. "GET" +** scheme_name authentication scheme name. +** scheme_specifics authentication string (or other +** scheme specific parameters, like +** Kerberos-ticket). +** +** ON EXIT: +** returns status codes uniform with those of HTTP: +** 200 OK if file access is ok. +** 401 Unauthorized if user is not authorized to +** access the file. +** 403 Forbidden if there is no entry for the +** requested file in the ACL. +** +** NOTE: +** This function does not check whether the file +** exists or not -- so the status 404 Not found +** must be returned from somewhere else (this is +** to avoid unnecessary overhead of opening the +** file twice). +** +*/ +PUBLIC int HTAA_checkAuthorization PARAMS((CONST char * url, + CONST char * method_name, + CONST char * scheme_name, + char * scheme_specifics)); +/* + +Compose Status Line Message + + */ + +/* SERVER PUBLIC HTAA_statusMessage() +** RETURN A STRING EXPLAINING ACCESS +** AUTHORIZATION FAILURE +** (Can be used in server reply status line +** with 401/403 replies.) +** ON EXIT: +** returns a string containing the error message +** corresponding to internal HTAAFailReason. +*/ +PUBLIC char *HTAA_statusMessage NOPARAMS; +/* + +Compose "Authenticate:" Header Lines for Server Reply + + */ + +/* SERVER PUBLIC HTAA_composeAuthHeaders() +** COMPOSE WWW-Authenticate: HEADER LINES +** INDICATING VALID AUTHENTICATION SCHEMES +** FOR THE REQUESTED DOCUMENT +** ON ENTRY: +** No parameters, but HTAA_checkAuthorization() must +** just before have failed because a wrong (or none) +** authentication scheme was used. +** +** ON EXIT: +** returns a buffer containing all the WWW-Authenticate: +** fields including CRLFs (this buffer is auto-freed). +** NULL, if authentication won't help in accessing +** the requested document. +*/ +PUBLIC char *HTAA_composeAuthHeaders NOPARAMS; +/* + +Start Access Authorization Logging + + */ + +/* PUBLIC HTAA_startLogging() +** START UP ACCESS AUTHORIZATION LOGGING +** ON ENTRY: +** fp is the open log file. +** +*/ +PUBLIC void HTAA_startLogging PARAMS((FILE * fp)); +/* + + */ + +#endif /* NOT HTAASERV_H */ +/* + + End of file HTAAServ.h. */