summaryrefslogtreecommitdiffstats
path: root/include/libaccess/aclparse.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/libaccess/aclparse.h')
-rw-r--r--include/libaccess/aclparse.h112
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 */