about summary refs log tree commit diff stats
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 00000000..22e3d928
--- /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 */