#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*/ typedef struct _HTUidGid { char * uname; char * gname; int uid; int gid; } HTUidGid; /* * Allocate and free a new uid and gid structure; * set the current ids to eventually run as (done by calls * from the rule module). */ PUBLIC HTUidGid * HTUidGid_new PARAMS((char * u, char * g)); PUBLIC void HTUidGid_free PARAMS((HTUidGid * ug)); PUBLIC void HTSetCurrentIds PARAMS((HTUidGid * ids));
typedef struct { char * template; /* Template for this protection */ #ifdef NOT_NEEDED_NOR_SHOULD_BE char * filename; /* Current document file */ #endif HTUidGid * ids; /* User and group ids to run as */ BOOL acl_override; /* Do ACL's override Masks */ GroupDef * get_mask; /* Allowed users and IP addresses (GET) */ GroupDef * put_mask; /* - " - (PUT) */ GroupDef * post_mask; /* - " - (POST) */ GroupDef * delete_mask; /* - " - (DELETE) */ GroupDef * gen_mask; /* General mask (used when needed but */ /* other masks not set). */ HTList * valid_schemes;/* Valid authentication schemes */ HTAssocList * values; /* Association list for scheme specific */ /* parameters. */ } HTAAProt; extern HTAAProt * HTProt; /* Current protection setup */ extern HTAAProt * HTDefProt; /* Default protection setup */
#include "HTAccess.h" /* HTRequest structure */
HTAA_clearProtections()
when starting to translate a
filename
HTAA_setDefaultProtection()
when "defprot" rule is matched
HTAA_setCurrentProtection()
when "protect" rule is matched
/* PUBLIC HTAA_setDefaultProtection() ** SET THE DEFAULT PROTECTION MODE ** (called by rule system when a ** "defprot" rule is matched) ** ON ENTRY: ** req request. ** prot_filename is the protection setup file (second argument ** for "defprot" rule, optional) ** eff_ids contains user and group id information. ** ** ON EXIT: ** returns nothing. ** Sets the module-wide variable default_prot. */ PUBLIC void HTAA_setDefaultProtection PARAMS((HTRequest * req, CONST char * prot_filename, HTUidGid * eff_ids)); /* PUBLIC HTAA_setCurrentProtection() ** SET THE CURRENT PROTECTION MODE ** (called by rule system when a ** "protect" rule is matched) ** ON ENTRY: ** req request. ** prot_filename is the protection setup file (second argument ** for "protect" rule, optional) ** eff_ids contains user and group id information. ** ** ON EXIT: ** returns nothing. ** Sets the module-wide variable current_prot. */ PUBLIC void HTAA_setCurrentProtection PARAMS((HTRequest * req, CONST char * prot_filename, HTUidGid * 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;
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;
#ifndef VMS /* PUBLIC HTAA_getUid() ** GET THE USER ID TO CHANGE THE PROCESS UID TO ** ON ENTRY: ** req request. ** ** 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: ** req request. ** ** 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 */
PUBLIC HTAAProt * HTAAProt_parseInlined PARAMS((FILE * fp)); #endif /* not HTAAPROT_H */End of file HTAAProt.h.