The FreeRADIUS server  $Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
Data Structures | Functions | Variables
rlm_imap.c File Reference

imap server authentication. More...

#include <freeradius-devel/curl/base.h>
#include <freeradius-devel/server/base.h>
#include <freeradius-devel/server/global_lib.h>
#include <freeradius-devel/server/module_rlm.h>
#include <freeradius-devel/util/slab.h>
+ Include dependency graph for rlm_imap.c:

Go to the source code of this file.

Data Structures

struct  rlm_imap_t
 
struct  rlm_imap_thread_t
 

Functions

static int _mod_conn_free (fr_curl_io_request_t *randle)
 Clean up CURL handle on freeing. More...
 
static int imap_conn_alloc (fr_curl_io_request_t *randle, void *uctx)
 Callback to configure a CURL handle when it is allocated. More...
 
static void imap_io_module_signal (module_ctx_t const *mctx, request_t *request, UNUSED fr_signal_t action)
 
static unlang_action_t mod_authenticate (rlm_rcode_t *p_result, module_ctx_t const *mctx, request_t *request)
 
static unlang_action_t mod_authenticate_resume (rlm_rcode_t *p_result, module_ctx_t const *mctx, request_t *request)
 
static int mod_thread_detach (module_thread_inst_ctx_t const *mctx)
 
static int mod_thread_instantiate (module_thread_inst_ctx_t const *mctx)
 

Variables

static fr_dict_attr_t const * attr_user_name
 
static fr_dict_attr_t const * attr_user_password
 
static fr_dict_t const * dict_radius
 
static const conf_parser_t module_config []
 
module_rlm_t rlm_imap
 
fr_dict_autoload_t rlm_imap_dict []
 
fr_dict_attr_autoload_t rlm_imap_dict_attr []
 
global_lib_autoinst_t const *const rlm_imap_lib []
 

Detailed Description

imap server authentication.

Id
159b5137747816d1bc8f4cc2273517921fd06ffa

Definition in file rlm_imap.c.


Data Structure Documentation

◆ rlm_imap_t

struct rlm_imap_t

Definition at line 57 of file rlm_imap.c.

+ Collaboration diagram for rlm_imap_t:
Data Fields
fr_curl_conn_config_t conn_config Reusable CURL handle config.
fr_time_delta_t timeout Timeout for connection and server response.
fr_curl_tls_t tls
char const * uri URI of imap server.

◆ rlm_imap_thread_t

struct rlm_imap_thread_t

Definition at line 67 of file rlm_imap.c.

+ Collaboration diagram for rlm_imap_thread_t:
Data Fields
fr_curl_handle_t * mhandle Thread specific multi handle. Serves as the dispatch and coralling structure for imap requests.
imap_slab_list_t * slab Slab list for connection handles.

Function Documentation

◆ _mod_conn_free()

static int _mod_conn_free ( fr_curl_io_request_t randle)
static

Clean up CURL handle on freeing.

Definition at line 198 of file rlm_imap.c.

+ Here is the caller graph for this function:

◆ imap_conn_alloc()

static int imap_conn_alloc ( fr_curl_io_request_t randle,
void *  uctx 
)
static

Callback to configure a CURL handle when it is allocated.

Definition at line 208 of file rlm_imap.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ imap_io_module_signal()

static void imap_io_module_signal ( module_ctx_t const *  mctx,
request_t request,
UNUSED fr_signal_t  action 
)
static

Definition at line 83 of file rlm_imap.c.

+ Here is the caller graph for this function:

◆ mod_authenticate()

static unlang_action_t mod_authenticate ( rlm_rcode_t p_result,
module_ctx_t const *  mctx,
request_t request 
)
static

Definition at line 152 of file rlm_imap.c.

+ Here is the call graph for this function:

◆ mod_authenticate_resume()

static unlang_action_t mod_authenticate_resume ( rlm_rcode_t p_result,
module_ctx_t const *  mctx,
request_t request 
)
static

Definition at line 105 of file rlm_imap.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mod_thread_detach()

static int mod_thread_detach ( module_thread_inst_ctx_t const *  mctx)
static

Definition at line 266 of file rlm_imap.c.

+ Here is the call graph for this function:

◆ mod_thread_instantiate()

static int mod_thread_instantiate ( module_thread_inst_ctx_t const *  mctx)
static

Definition at line 243 of file rlm_imap.c.

+ Here is the call graph for this function:

Variable Documentation

◆ attr_user_name

fr_dict_attr_t const* attr_user_name
static

Definition at line 36 of file rlm_imap.c.

◆ attr_user_password

fr_dict_attr_t const* attr_user_password
static

Definition at line 35 of file rlm_imap.c.

◆ dict_radius

fr_dict_t const* dict_radius
static

Definition at line 33 of file rlm_imap.c.

◆ module_config

const conf_parser_t module_config[]
static
Initial value:
= {
{ FR_CONF_OFFSET("uri", rlm_imap_t, uri) },
{ FR_CONF_OFFSET("timeout", rlm_imap_t, timeout), .dflt = "5.0" },
{ FR_CONF_OFFSET_SUBSECTION("connection", 0, rlm_imap_t, conn_config, fr_curl_conn_config ) },
}
#define CONF_PARSER_TERMINATOR
Definition: cf_parse.h:626
#define FR_CONF_OFFSET(_name, _struct, _field)
conf_parser_t which parses a single CONF_PAIR, writing the result to a field in a struct
Definition: cf_parse.h:268
#define FR_CONF_OFFSET_SUBSECTION(_name, _flags, _struct, _field, _subcs)
conf_parser_t which populates a sub-struct using a CONF_SECTION
Definition: cf_parse.h:297
static fr_time_delta_t timeout
Definition: dhcpclient.c:54
conf_parser_t fr_curl_conn_config[]
Definition: base.c:84
conf_parser_t fr_curl_tls_config[]
Definition: base.c:56

Definition at line 75 of file rlm_imap.c.

◆ rlm_imap

module_rlm_t rlm_imap
Initial value:
= {
.common = {
.name = "imap",
.inst_size = sizeof(rlm_imap_t),
.thread_inst_size = sizeof(rlm_imap_thread_t),
.config = module_config,
.thread_instantiate = mod_thread_instantiate,
.thread_detach = mod_thread_detach,
},
.method_names = (module_method_name_t[]){
{ .name1 = "authenticate", .name2 = CF_IDENT_ANY, .method = mod_authenticate },
}
}
#define CF_IDENT_ANY
Definition: cf_util.h:78
#define MODULE_MAGIC_INIT
Stop people using different module/library/server versions together.
Definition: dl_module.h:65
Specifies a module method identifier.
Definition: module_method.c:36
static unlang_action_t mod_authenticate(rlm_rcode_t *p_result, module_ctx_t const *mctx, request_t *request)
Definition: rlm_imap.c:152
static int mod_thread_instantiate(module_thread_inst_ctx_t const *mctx)
Definition: rlm_imap.c:243
static const conf_parser_t module_config[]
Definition: rlm_imap.c:75
static int mod_thread_detach(module_thread_inst_ctx_t const *mctx)
Definition: rlm_imap.c:266
@ MODULE_TYPE_THREAD_SAFE
Module is threadsafe.
Definition: module.h:49
#define MODULE_NAME_TERMINATOR
Definition: module.h:135

Definition at line 285 of file rlm_imap.c.

◆ rlm_imap_dict

fr_dict_autoload_t rlm_imap_dict
Initial value:
= {
{ .out = &dict_radius, .proto = "radius" },
{ NULL }
}
static fr_dict_t const * dict_radius
Definition: rlm_imap.c:33

Definition at line 39 of file rlm_imap.c.

◆ rlm_imap_dict_attr

fr_dict_attr_autoload_t rlm_imap_dict_attr
Initial value:
= {
{ .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius },
{ .out = &attr_user_password, .name = "User-Password", .type = FR_TYPE_STRING, .dict = &dict_radius },
{ NULL },
}
@ FR_TYPE_STRING
String of printable characters.
Definition: merged_model.c:83
static fr_dict_attr_t const * attr_user_password
Definition: rlm_imap.c:35
static fr_dict_attr_t const * attr_user_name
Definition: rlm_imap.c:36

Definition at line 45 of file rlm_imap.c.

◆ rlm_imap_lib

global_lib_autoinst_t const *const rlm_imap_lib
Initial value:
= {
}
#define GLOBAL_LIB_TERMINATOR
Definition: global_lib.h:51
global_lib_autoinst_t fr_curl_autoinst
Definition: base.c:342

Definition at line 52 of file rlm_imap.c.