blob: 22e3d928d370058e5f0f4e961d0a7759bd9cff84 (
plain) (
tree)
|
|
/* PROTECTION SETUP FILE
*/
#ifndef HTAAPROT_H
#define HTAAPROT_H
#include <HTGroup.h>
#include <HTAssoc.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
Server's Representation of Document (Tree) Protections
*/ typedef struct {
char *ctemplate; /* 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.
*/
extern void HTAA_setDefaultProtection(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.
*/
extern void HTAA_setCurrentProtection(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.
*/
extern void HTAA_clearProtections(void);
/*
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.
*/
extern HTAAProt *HTAA_getCurrentProtection(void);
/* 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.
*/
extern HTAAProt *HTAA_getDefaultProtection(void);
/*
Get User and Group IDs to Which Set to
*/
#ifndef NOUSERS
/* 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).
*/
extern int HTAA_getUid(void);
/* 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).
*/
extern int HTAA_getGid(void);
#endif /* !NOUSERS */
/* PUBLIC HTAA_UidToName
* GET THE USER NAME
* ON ENTRY:
* The user-id
*
* ON EXIT:
* returns the user name
*/
extern const char *HTAA_UidToName(int uid);
/* PUBLIC HTAA_NameToUid
* GET THE USER ID
* ON ENTRY:
* The user-name
*
* ON EXIT:
* returns the user id
*/
extern int HTAA_NameToUid(const char *name);
/* PUBLIC HTAA_GidToName
* GET THE GROUP NAME
* ON ENTRY:
* The group-id
*
* ON EXIT:
* returns the group name
*/
extern const char *HTAA_GidToName(int gid);
/* PUBLIC HTAA_NameToGid
* GET THE GROUP ID
* ON ENTRY:
* The group-name
*
* ON EXIT:
* returns the group id
*/
extern int HTAA_NameToGid(const char *name);
#ifdef __cplusplus
}
#endif
#endif /* not HTAAPROT_H */
|