30 #include <sys/types.h>
34 #include <../common/cert_st.h>
35 #include "../scconf/scconf.h"
50 char **(*entries)(X509 *x509,
void *
context);
52 char *(*finder)(X509 *x509,
void *
context,
int *match);
96 #define MAPPER_EXTERN extern
174 #define _DEFAULT_MAPPER_FIND_ENTRIES \
175 static char ** mapper_find_entries(X509 *x509, void *context) { \
187 #define _DEFAULT_MAPPER_FIND_USER \
188 static char * mapper_find_user(X509 *x509,void *context,int *match) { \
189 if ( !x509 ) return NULL; \
204 #define _DEFAULT_MAPPER_MATCH_USER \
205 static int mapper_match_user(X509 *x509, const char *login, void *context) { \
207 char *username= mapper_find_user(x509,context,&match); \
208 if (!x509) return -1; \
209 if (!login) return -1; \
210 if (!username) return 0; \
211 if ( ! strcmp(login,username) ) return 1; \
219 #define _DEFAULT_MAPPER_END \
220 static void mapper_module_end(void *context) { \
232 #define _DEFAULT_MAPPER_INIT \
233 mapper_module* mapper_module_init(scconf_block *blk,const char *name) { \
234 mapper_module *pt= malloc(sizeof (mapper_module)); \
235 if (!pt) return NULL; \
237 pt->context = NULL; \
239 pt->dbg_level = get_debug_level(); \
240 pt->entries = mapper_find_entries; \
241 pt->finder = mapper_find_user; \
242 pt->matcher = mapper_match_user; \
243 pt->deinit = mapper_module_end; \
size_t length
lenght of buffer
int dbg_level
debug level to set before call entry points
char * key
key entry in current buffer
mapper_module * mapper_module_init(scconf_block *ctx, const char *mapper_name)
Initialize module and mapper_module_st structure.
char * pt
pointer to last readed entry in buffer
char * value
value assigned to key
MAPPER_EXTERN int mapfile_match(const char *file, char *key, const char *value, int ignorecase)
Try to match provided key to provided name by mean of a mapfile.
void * context
pointer to mapper local data
int(* matcher)(X509 *x509, const char *login, void *context)
cert-to-login matcher
This struct is used in processing map files a map file is a list of "key" " -> " "value" text lines...
scconf_block * block
mapper configuration block
const char * uri
URL of mapfile.
MAPPER_EXTERN int compare_pw_entry(const char *item, struct passwd *pw, int ignorecase)
Test if provided item matches pw_name or pw_gecos of provided password structure. ...
MAPPER_EXTERN char * search_pw_entry(const char *item, int ignorecase)
find the user login that matches pw_name or pw_gecos with provided item
MAPPER_EXTERN char * mapfile_find(const char *file, char *key, int ignorecase, int *match)
Try to map "key" to provided mapfile.
MAPPER_EXTERN void end_mapent(struct mapfile *mfile)
Release a mapentry structure.
Structure to be filled on mapper module initialization.
struct mapper_module_st mapper_module
Structure to be filled on mapper module initialization.
MAPPER_EXTERN int get_mapent(struct mapfile *mfile)
Retrieve next entry of given map file.
MAPPER_EXTERN struct mapfile * set_mapent(const char *uri)
Initialize a mapper entry table.
char * buffer
buffer to content of mapfile
const char * name
mapper name
void(* deinit)(void *context)
module de-initialization