This repository has been archived on 2024-01-04. You can view files and clone it, but cannot push or open issues or pull requests.
ncsa-mosaic/libwww2/HTAAProt.h

200 lines
6.9 KiB
C

/* PROTECTION SETUP FILE
*/
#ifndef HTAAPROT_H
#define HTAAPROT_H
#include "HTUtils.h"
#include "HTGroup.h"
#include "HTAssoc.h"
#ifdef SHORT_NAMES
#define HTAAgUid HTAA_getUid
#define HTAAgGid HTAA_getGid
#define HTAAgDPr HTAA_setDefaultProtection
#define HTAAsCPr HTAA_setCurrentProtection
#define HTAAgCPr HTAA_getCurrentProtection
#define HTAAgDPr HTAA_getDefaultProtection
#define HTAAclPr HTAA_clearProtections
#endif /*SHORT_NAMES*/
/*
Server's Representation of Document (Tree) Protections
*/
typedef struct {
char * template; /* Template for this protection */
char * filename; /* Current document file */
char * uid_name; /* Effective uid (name of it) */
char * gid_name; /* Effective gid (name of it) */
GroupDef * mask_group; /* Allowed users and IP addresses */
HTList * valid_schemes;/* Valid authentication schemes */
HTAssocList * values; /* Association list for scheme specific */
/* parameters. */
} HTAAProt;
/*
Callbacks for rule system
The following three functioncs are called by the rule system:
HTAA_clearProtections() when starting to translate a filename
HTAA_setDefaultProtection() when "defprot" rule is matched
HTAA_setCurrentProtection() when "protect" rule is matched
Protection setup files are cached by these functions.
*/
/* PUBLIC HTAA_setDefaultProtection()
** SET THE DEFAULT PROTECTION MODE
** (called by rule system when a
** "defprot" rule is matched)
** ON ENTRY:
** cur_docname is the current result of rule translations.
** prot_filename is the protection setup file (second argument
** for "defprot" rule, optional)
** eff_ids contains user and group names separated by
** a dot, corresponding to the effective uid
** gid under which the server should run,
** default is "nobody.nogroup" (third argument
** for "defprot" rule, optional; can be given
** only if protection setup file is also given).
**
** ON EXIT:
** returns nothing.
** Sets the module-wide variable default_prot.
*/
PUBLIC void HTAA_setDefaultProtection PARAMS((WWW_CONST char * cur_docname,
WWW_CONST char * prot_filename,
WWW_CONST char * eff_ids));
/* PUBLIC HTAA_setCurrentProtection()
** SET THE CURRENT PROTECTION MODE
** (called by rule system when a
** "protect" rule is matched)
** ON ENTRY:
** cur_docname is the current result of rule translations.
** prot_filename is the protection setup file (second argument
** for "protect" rule, optional)
** eff_ids contains user and group names separated by
** a dot, corresponding to the effective uid
** gid under which the server should run,
** default is "nobody.nogroup" (third argument
** for "protect" rule, optional; can be given
** only if protection setup file is also given).
**
** ON EXIT:
** returns nothing.
** Sets the module-wide variable current_prot.
*/
PUBLIC void HTAA_setCurrentProtection PARAMS((WWW_CONST char * cur_docname,
WWW_CONST char * prot_filename,
WWW_CONST char * eff_ids));
/* SERVER INTERNAL HTAA_clearProtections()
** CLEAR DOCUMENT PROTECTION MODE
** (ALSO DEFAULT PROTECTION)
** (called by the rule system)
** ON ENTRY:
** No arguments.
**
** ON EXIT:
** returns nothing.
** Frees the memory used by protection information.
*/
PUBLIC void HTAA_clearProtections NOPARAMS;
/*
Getting Protection Settings
HTAA_getCurrentProtection() returns the current protection mode (if there was a
"protect" rule). NULL, if no "protect" rule has been matched.
HTAA_getDefaultProtection() sets the current protection mode to what it was set to
by "defprot" rule and also returns it (therefore after this call also
HTAA_getCurrentProtection() returns the same structure.
*/
/* PUBLIC HTAA_getCurrentProtection()
** GET CURRENT PROTECTION SETUP STRUCTURE
** (this is set up by callbacks made from
** the rule system when matching "protect"
** (and "defprot") rules)
** ON ENTRY:
** HTTranslate() must have been called before calling
** this function.
**
** ON EXIT:
** returns a HTAAProt structure representing the
** protection setup of the HTTranslate()'d file.
** This must not be free()'d.
*/
PUBLIC HTAAProt *HTAA_getCurrentProtection NOPARAMS;
/* PUBLIC HTAA_getDefaultProtection()
** GET DEFAULT PROTECTION SETUP STRUCTURE
** (this is set up by callbacks made from
** the rule system when matching "defprot"
** rules)
** ON ENTRY:
** HTTranslate() must have been called before calling
** this function.
**
** ON EXIT:
** returns a HTAAProt structure representing the
** default protection setup of the HTTranslate()'d
** file (if HTAA_getCurrentProtection() returned
** NULL, i.e. if there is no "protect" rule
** but ACL exists, and we need to know default
** protection settings).
** This must not be free()'d.
*/
PUBLIC HTAAProt *HTAA_getDefaultProtection NOPARAMS;
/*
Get User and Group IDs to Which Set to
*/
/* PUBLIC HTAA_getUid()
** GET THE USER ID TO CHANGE THE PROCESS UID TO
** ON ENTRY:
** No arguments.
**
** ON EXIT:
** returns the uid number to give to setuid() system call.
** Default is 65534 (nobody).
*/
PUBLIC int HTAA_getUid NOPARAMS;
/* PUBLIC HTAA_getGid()
** GET THE GROUP ID TO CHANGE THE PROCESS GID TO
** ON ENTRY:
** No arguments.
**
** ON EXIT:
** returns the uid number to give to setgid() system call.
** Default is 65534 (nogroup).
*/
PUBLIC int HTAA_getGid NOPARAMS;
/*
*/
#endif /* not HTAAPROT_H */
/*
End of file HTAAProt.h. */