diff options
Diffstat (limited to 'include/libaccess/aclparse.h')
-rw-r--r-- | include/libaccess/aclparse.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/include/libaccess/aclparse.h b/include/libaccess/aclparse.h new file mode 100644 index 00000000..503657e1 --- /dev/null +++ b/include/libaccess/aclparse.h @@ -0,0 +1,112 @@ +/** BEGIN COPYRIGHT BLOCK + * Copyright 2001 Sun Microsystems, Inc. + * Portions copyright 1999, 2001-2003 Netscape Communications Corporation. + * All rights reserved. + * END COPYRIGHT BLOCK **/ +#ifndef __aclparse_h +#define __aclparse_h + +/* + * Description (aclparse.h) + * + * This file describes the interface to a parser for files + * containing Access Control List (ACL) definitions. The parser + * uses the services of the aclbuild module to construct an + * in-memory representation of the ACLs it parses. + */ + +#include "nserror.h" +#include "aclbuild.h" + +/* Define keywords */ +#define KEYWORD_ACL "acl" +#define KEYWORD_ALL "all" +#define KEYWORD_ALLOW "allow" +#define KEYWORD_ANY "anyone" +#define KEYWORD_AT "at" +#define KEYWORD_AUTH "authenticate" +#define KEYWORD_BASIC "basic" +#define KEYWORD_DATABASE "database" +#define KEYWORD_DEFAULT "default" +#define KEYWORD_DENY "deny" +#define KEYWORD_EXECUTE "execute" +#define KEYWORD_HOSTS "hosts" +#define KEYWORD_IF "if" +#define KEYWORD_IN "in" +#define KEYWORD_INCLUDE "include" +#define KEYWORD_METHOD "method" +#define KEYWORD_PROMPT "prompt" +#define KEYWORD_REALM "realm" +#define KEYWORD_RIGHTS "rights" +#define KEYWORD_SSL "ssl" + +/* Define character classes */ +#define CCM_WS 0x1 /* whitespace */ +#define CCM_NL 0x2 /* newline */ +#define CCM_SPECIAL 0x4 /* special characters */ +#define CCM_DIGIT 0x8 /* digits */ +#define CCM_LETTER 0x10 /* letters */ +#define CCM_HYPHEN 0x20 /* hyphen */ +#define CCM_USCORE 0x40 /* underscore */ +#define CCM_FILESPEC 0x80 /* filename special characters */ + +#define CCM_HYPUND (CCM_HYPHEN|CCM_USCORE) +#define CCM_IDENT (CCM_LETTER|CCM_DIGIT|CCM_HYPUND) +#define CCM_FILENAME (CCM_LETTER|CCM_DIGIT|CCM_FILESPEC) + +/* Define token numbers */ +#define TOKEN_ERROR -1 /* error in reading data stream */ +#define TOKEN_EOF 0 /* end-of-file */ +#define TOKEN_EOS 1 /* end-of-statement */ +#define TOKEN_IDENT 2 /* identifier */ +#define TOKEN_NUMBER 3 /* number */ +#define TOKEN_COMMA 4 /* comma */ +#define TOKEN_SEMI 5 /* semicolon */ +#define TOKEN_PERIOD 6 /* period */ +#define TOKEN_LPAREN 7 /* left parenthesis */ +#define TOKEN_RPAREN 8 /* right parenthesis */ +#define TOKEN_LBRACE 9 /* left brace */ +#define TOKEN_RBRACE 10 /* right brace */ +#define TOKEN_AT 11 /* at sign */ +#define TOKEN_PLUS 12 /* plus sign */ +#define TOKEN_STAR 13 /* asterisk */ +#define TOKEN_STRING 14 /* quoted string */ +#define TOKEN_HUH 15 /* unrecognized input */ + +/* Define flags bits for aclGetToken() */ +#define AGT_NOSKIP 0x1 /* don't skip leading whitespace */ +#define AGT_APPEND 0x2 /* append next to token buffer */ + +NSPR_BEGIN_EXTERN_C + +extern void * aclChTab; /* character table for ACL parsing */ + +/* Functions in aclparse.c */ +extern int aclAuthListParse(NSErr_t * errp, ACLFile_t * acf, + ACContext_t * acc, Realm_t * rlm, + ACClients_t **clsp); +extern int aclAuthHostsParse(NSErr_t * errp, ACLFile_t * acf, + ACContext_t * acc, HostSpec_t **hspp); +extern int aclAuthUsersParse(NSErr_t * errp, ACLFile_t * acf, + Realm_t * rlm, UserSpec_t **uspp, char ***elist); +extern int aclDirectivesParse(NSErr_t * errp, ACLFile_t * acf, ACL_t * acl); +extern int aclACLParse(NSErr_t * errp, + ACLFile_t * acf, ACContext_t * acc, int flags); +extern void aclFileClose(ACLFile_t * acf, int flags); +extern int aclFileOpen(NSErr_t * errp, + char * filename, int flags, ACLFile_t **pacf); +extern int aclGetDNSString(NSErr_t * errp, ACLFile_t * acf); +extern int aclGetFileSpec(NSErr_t * errp, ACLFile_t * acf, int flags); +extern int aclGetIPAddr(NSErr_t * errp, + ACLFile_t * acf, IPAddr_t * pip, IPAddr_t * pmask); +extern int aclGetToken(NSErr_t * errp, ACLFile_t * acf, int flags); +extern int aclParseInit(); +extern int aclRealmSpecParse(NSErr_t * errp, ACLFile_t * acf, + ACContext_t * acc, RealmSpec_t **rspp); +extern int aclRightsParse(NSErr_t * errp, ACLFile_t * acf, ACContext_t * acc, + RightSpec_t **rights); +extern int aclStreamGet(LEXStream_t * lst); + +NSPR_END_EXTERN_C + +#endif /* __aclparse_h */ |