diff options
Diffstat (limited to 'cpukit/httpd/um.h')
-rw-r--r-- | cpukit/httpd/um.h | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/cpukit/httpd/um.h b/cpukit/httpd/um.h new file mode 100644 index 0000000000..d44fa28e91 --- /dev/null +++ b/cpukit/httpd/um.h @@ -0,0 +1,184 @@ +/* + * um.h -- GoAhead User Management public header + * + * Copyright (c) GoAhead Software Inc., 1992-2000. All Rights Reserved. + * + * See the file "license.txt" for information on usage and redistribution + * + * $Id$ + */ + +#ifndef _h_UM +#define _h_UM 1 + +/******************************** Description *********************************/ + +/* + * GoAhead User Management header. This defines the User Management + * public APIs. Include this header for files that contain access to + * user inquiry or management. + */ + +/********************************* Includes ***********************************/ + +#if ! UEMF + #include "basic/basic.h" + #include "emf/emf.h" +#else + #include "uemf.h" +#endif + +/********************************** Defines ***********************************/ + +/* + * Error Return Flags + */ +#define UM_OK 0 +#define UM_ERR_GENERAL -1 +#define UM_ERR_NOT_FOUND -2 +#define UM_ERR_PROTECTED -3 +#define UM_ERR_DUPLICATE -4 +#define UM_ERR_IN_USE -5 +#define UM_ERR_BAD_NAME -6 +#define UM_ERR_BAD_PASSWORD -7 + +/* + * Privilege Masks + */ +#define PRIV_NONE 0x00 +#define PRIV_READ 0x01 +#define PRIV_WRITE 0x02 +#define PRIV_ADMIN 0x04 + +/* + * User classes + */ +typedef short bool_t; + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +typedef enum { + AM_NONE = 0, + AM_FULL, + AM_BASIC, + AM_DIGEST, + AM_INVALID +} accessMeth_t; + +/********************************** Prototypes ********************************/ + +/* + * umOpen() must be called before accessing User Management functions + */ +extern int umOpen(); + +/* + * umClose() should be called before shutdown to free memory + */ +extern void umClose(); + +/* + * umCommit() persists the user management database + */ +extern int umCommit(char_t *filename); + +/* + * umRestore() loads the user management database + */ +extern int umRestore(char_t *filename); + +/* + * umUser functions use a user ID for a key + */ +extern int umAddUser(char_t *user, char_t *password, + char_t *group, bool_t protect, bool_t disabled); + +extern int umDeleteUser(char_t *user); + +extern char_t *umGetFirstUser(); +extern char_t *umGetNextUser(char_t *lastUser); + +extern bool_t umUserExists(char_t *user); + +extern char_t *umGetUserPassword(char_t *user); +extern int umSetUserPassword(char_t *user, char_t *password); + +extern char_t *umGetUserGroup(char_t *user); +extern int umSetUserGroup(char_t *user, char_t *password); + +extern bool_t umGetUserEnabled(char_t *user); +extern int umSetUserEnabled(char_t *user, bool_t enabled); + +extern bool_t umGetUserProtected(char_t *user); +extern int umSetUserProtected(char_t *user, bool_t protect); + +/* + * umGroup functions use a group name for a key + */ +extern int umAddGroup(char_t *group, short privilege, + accessMeth_t am, bool_t protect, bool_t disabled); + +extern int umDeleteGroup(char_t *group); + +extern char_t *umGetFirstGroup(); +extern char_t *umGetNextGroup(char_t *lastUser); + +extern bool_t umGroupExists(char_t *group); +extern bool_t umGetGroupInUse(char_t *group); + +extern accessMeth_t umGetGroupAccessMethod(char_t *group); +extern int umSetGroupAccessMethod(char_t *group, accessMeth_t am); + +extern bool_t umGetGroupEnabled(char_t *group); +extern int umSetGroupEnabled(char_t *group, bool_t enabled); + +extern short umGetGroupPrivilege(char_t *group); +extern int umSetGroupPrivilege(char_t *group, short privileges); + +extern bool_t umGetGroupProtected(char_t *group); +extern int umSetGroupProtected(char_t *group, bool_t protect); + +/* + * umAccessLimit functions use a URL as a key + */ +extern int umAddAccessLimit(char_t *url, accessMeth_t am, + short secure, char_t *group); + +extern int umDeleteAccessLimit(char_t *url); + +extern char_t *umGetFirstAccessLimit(); +extern char_t *umGetNextAccessLimit(char_t *lastUser); + +/* + * Returns the name of an ancestor access limit if + */ +extern char_t *umGetAccessLimit(char_t *url); + +extern bool_t umAccessLimitExists(char_t *url); + +extern accessMeth_t umGetAccessLimitMethod(char_t *url); +extern int umSetAccessLimitMethod(char_t *url, accessMeth_t am); + +extern short umGetAccessLimitSecure(char_t *url); +extern int umSetAccessLimitSecure(char_t *url, short secure); + +extern char_t *umGetAccessLimitGroup(char_t *url); +extern int umSetAccessLimitGroup(char_t *url, char_t *group); + +/* + * Convenience Functions + */ + +extern accessMeth_t umGetAccessMethodForURL(char_t *url); +extern bool_t umUserCanAccessURL(char_t *user, char_t *url); + +#endif /* _h_UM */ + +/******************************************************************************/ + |