diff options
Diffstat (limited to 'src/acl.h')
-rw-r--r-- | src/acl.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/acl.h b/src/acl.h new file mode 100644 index 0000000..8d7725e --- /dev/null +++ b/src/acl.h @@ -0,0 +1,43 @@ +/* This file is part of Pies + Copyright (C) 2009 Sergey Poznyakoff + + Pies is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + Pies is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pies. If not, see <http://www.gnu.org/licenses/>. */ + +/* acl.c */ +typedef struct pies_acl *pies_acl_t; + +struct acl_input +{ + struct sockaddr *addr; + socklen_t addrlen; + const char *user; + const char **groups; +}; + +pies_acl_t pies_acl_create (const char *name, grecs_locus_t *locus); +int pies_acl_check (pies_acl_t acl, struct acl_input *input, int result); +int parse_acl_line (grecs_locus_t *locus, int allow, pies_acl_t acl, + grecs_value_t *value); +pies_acl_t pies_acl_lookup (const char *name); +int pies_acl_install (pies_acl_t acl, grecs_locus_t * locus); + +int assert_grecs_value_type (grecs_locus_t *locus, + const grecs_value_t *value, int type); + +extern struct grecs_keyword acl_keywords[]; +extern int acl_section_parser (enum grecs_callback_command cmd, + grecs_locus_t *locus, + void *varptr, + grecs_value_t *value, + void *cb_data); |