diff options
Diffstat (limited to 'WWW/Library/Implementation/HTAAProt.h')
-rw-r--r-- | WWW/Library/Implementation/HTAAProt.h | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/WWW/Library/Implementation/HTAAProt.h b/WWW/Library/Implementation/HTAAProt.h new file mode 100644 index 00000000..73bb7c45 --- /dev/null +++ b/WWW/Library/Implementation/HTAAProt.h @@ -0,0 +1,231 @@ +/* PROTECTION SETUP FILE + + */ + +#ifndef HTAAPROT_H +#define HTAAPROT_H + +#ifndef HTUTILS_H +#include "HTUtils.h" +#endif /* 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((CONST char * cur_docname, + CONST char * prot_filename, + 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((CONST char * cur_docname, + CONST char * prot_filename, + 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 + + */ + +#ifndef VMS +/* 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 VMS */ +/* + + For VMS: + + */ + +#ifdef VMS +/* PUBLIC HTAA_getUidName() +** GET THE USER ID NAME (VMS ONLY) +** ON ENTRY: +** No arguments. +** +** ON EXIT: +** returns the user name +** Default is "" (nobody). +*/ +PUBLIC char * HTAA_getUidName NOPARAMS; + +/* PUBLIC HTAA_getFileName +** GET THE FILENAME (VMS ONLY) +** ON ENTRY: +** No arguments. +** +** ON EXIT: +** returns the filename +*/ +PUBLIC char * HTAA_getFileName NOPARAMS; +#endif /* VMS */ +/* + + */ + +#endif /* not HTAAPROT_H */ +/* + + End of file HTAAProt.h. */ |