Main Page | Data Structures | Directories | File List | Data Fields | Globals

mapper.h File Reference

#include <sys/types.h>
#include <stdlib.h>
#include <string.h>
#include <pwd.h>
#include <openssl/x509.h>
#include "../scconf/scconf.h"

Go to the source code of this file.

Defines

#define MAPPER_EXTERN   extern
#define _DEFAULT_MAPPER_FIND_ENTRIES
 Default macro for locate certificate entry.
#define _DEFAULT_MAPPER_FIND_USER
 Default macro for locating user.
#define _DEFAULT_MAPPER_MATCH_USER
 Macro for match mapper function.
#define _DEFAULT_MAPPER_END
 Macro for de-initialization routine.
#define _DEFAULT_MAPPER_INIT
 Macro for default init function.

Typedefs

typedef mapper_module_st mapper_module
 Structure to be filled on mapper module initialization.

Functions

mapper_modulemapper_module_init (scconf_block *ctx, const char *mapper_name)
 Initialize module and mapper_module_st structure.
MAPPER_EXTERN struct mapfileset_mapent (const char *uri)
 Initialize a mapper entry table.
MAPPER_EXTERN int get_mapent (struct mapfile *mfile)
 Retrieve next entry of given map file.
MAPPER_EXTERN void end_mapent (struct mapfile *mfile)
 Release a mapentry structure.
MAPPER_EXTERN char * mapfile_find (const char *file, char *key, int ignorecase)
 Try to map "key" to provided mapfile.
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.
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 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.


Define Documentation

#define _DEFAULT_MAPPER_END
 

Value:

static void mapper_module_end(void *context) {                          \
        free(context);                                                  \
        return;                                                         \
}                                                                       \
Macro for de-initialization routine.

Parameters:
context Mapper context

Definition at line 216 of file mapper.h.

#define _DEFAULT_MAPPER_FIND_ENTRIES
 

Value:

static char ** mapper_find_entries(X509 *x509, void *context) {         \
        return NULL;                                                    \
}
Default macro for locate certificate entry.

Provided as sample for debugging, not for real user

Parameters:
x509 X509 Certificate
context Mapper context
Returns:
String array with up to 15 results or NULL if fail

Definition at line 173 of file mapper.h.

#define _DEFAULT_MAPPER_FIND_USER
 

Value:

static char * mapper_find_user(X509 *x509,void *context) {              \
        if ( !x509 ) return NULL;                                       \
        return "nobody";                                                \
}
Default macro for locating user.

Should not be used except for debugging, as allways returns "nobody"

Parameters:
x509 X509 Certificate
context Mapper context
Returns:
Found user, or NULL

Definition at line 186 of file mapper.h.

#define _DEFAULT_MAPPER_INIT
 

Value:

mapper_module* mapper_module_init(scconf_block *blk,const char *name) { \
        mapper_module *pt= malloc(sizeof (mapper_module));              \
        if (!pt) return NULL;                                           \
        pt->name    = name;                                             \
        pt->context = NULL;                                             \
        pt->block   = blk;                                              \
        pt->dbg_level  = get_debug_level();                             \
        pt->entries = mapper_find_entries;                              \
        pt->finder  = mapper_find_user;                                 \
        pt->matcher = mapper_match_user;                                \
        pt->deinit  = mapper_module_end;                        \
        return pt;                                                      \
}                                                                       \
Macro for default init function.

Parameters:
blk Mapper Configuration file block
name Name of this mapper
Returns:
pointer to mapper_module data, else NULL NOTE: mapper module data MUST BE defined in module

Definition at line 229 of file mapper.h.

#define _DEFAULT_MAPPER_MATCH_USER
 

Value:

static int mapper_match_user(X509 *x509, const char *login, void *context) { \
        char *username= mapper_find_user(x509,context);                         \
        if (!x509) return -1;                                           \
        if (!login) return -1;                                          \
        if (!username) return 0; /*user not found*/                     \
        if ( ! strcmp(login,username) ) return 1; /* match user */      \
        return 0; /* no match */                                        \
}
Macro for match mapper function.

Parameters:
x509 X509 Certificate
login user to match, or null to find user that matches certificate
context Mapper context
Returns:
1 on success; login points to matched user 0 on no match -1 on error

Definition at line 202 of file mapper.h.

#define MAPPER_EXTERN   extern
 

Definition at line 96 of file mapper.h.


Typedef Documentation

typedef struct mapper_module_st mapper_module
 

Structure to be filled on mapper module initialization.


Function Documentation

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.

Parameters:
item String to be compared
pw password entry to search into
ignorecase Flag to check upper/lowercase in string comparisions
Returns:
1 on match, 0 on no match, -1 on error

MAPPER_EXTERN void end_mapent struct mapfile mfile  ) 
 

Release a mapentry structure.

Parameters:
mfile Map file structure to be released

MAPPER_EXTERN int get_mapent struct mapfile mfile  ) 
 

Retrieve next entry of given map file.

Parameters:
mfile Map file entry pointer
Returns:
1 on sucess, 0 on no more entries, -1 on error

MAPPER_EXTERN char* mapfile_find const char *  file,
char *  key,
int  ignorecase
 

Try to map "key" to provided mapfile.

Parameters:
file URL of map file
key String to be mapped
ignorecase Flag to indicate upper/lowercase ignore in string compare
Returns:
key on no match, else a clone_str()'d of found mapping

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.

Parameters:
file URL of map file
key String to be mapped
value String to be matched against mapped result
ignorecase Flag to indicate upper/lowercase ignore in string compare
Returns:
1 on match, 0 on no match, -1 on process error

mapper_module* mapper_module_init scconf_block ctx,
const char *  mapper_name
 

Initialize module and mapper_module_st structure.

EVERY mapper module MUST provide and export this function if dinamycally linked

Parameters:
ctx Pointer to related configuration file context
mapper_name Name of this mapper. Used for multi-mapper modules
Returns:
Pointer to a mapper_module structure, or NULL if failed

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

Parameters:
item Data to be searched from password database
ignorecase Flag to check upper/lowercase in string comparisions
Returns:
userlogin if match found, else NULL

MAPPER_EXTERN struct mapfile* set_mapent const char *  uri  ) 
 

Initialize a mapper entry table.

Parameters:
uri Universal Resource Locator of the file to be mapped
Returns:
A mapfile structure pointer or NULL


Generated on Thu Mar 16 22:52:55 2006 for pam_pkcs11 by  doxygen 1.4.2