summaryrefslogtreecommitdiffstats
path: root/WWW/Library/Implementation/HTAAProt.h
diff options
context:
space:
mode:
Diffstat (limited to 'WWW/Library/Implementation/HTAAProt.h')
-rw-r--r--WWW/Library/Implementation/HTAAProt.h226
1 files changed, 226 insertions, 0 deletions
diff --git a/WWW/Library/Implementation/HTAAProt.h b/WWW/Library/Implementation/HTAAProt.h
new file mode 100644
index 0000000..22e3d92
--- /dev/null
+++ b/WWW/Library/Implementation/HTAAProt.h
@@ -0,0 +1,226 @@
+/* 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 */