Tue Aug 20 16:35:14 2013

Asterisk developer's documentation


res_security_log.c File Reference

Security Event Logging. More...

#include "asterisk.h"
#include "asterisk/module.h"
#include "asterisk/logger.h"
#include "asterisk/event.h"
#include "asterisk/threadstorage.h"
#include "asterisk/strings.h"
#include "asterisk/security_events.h"

Go to the source code of this file.

Enumerations

enum  ie_required { NOT_REQUIRED, REQUIRED, NOT_REQUIRED, REQUIRED }

Functions

static void __init_security_event_buf (void)
static void __reg_module (void)
static void __unreg_module (void)
static void append_ie (struct ast_str **str, const struct ast_event *event, const enum ast_event_ie_type ie_type, enum ie_required required)
static void append_ies (struct ast_str **str, const struct ast_event *event, const struct ast_security_event_ie_type *ies, enum ie_required required)
 ASTERISK_FILE_VERSION (__FILE__,"$Revision: 328209 $")
static int ie_is_present (const struct ast_event *event, const enum ast_event_ie_type ie_type)
static int load_module (void)
static void security_event_cb (const struct ast_event *event, void *data)
static int unload_module (void)

Variables

static struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Security Event Logging" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "ac1f6a56484a8820659555499174e588" , .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, }
static struct ast_module_infoast_module_info = &__mod_info
static int LOG_SECURITY
static const char LOG_SECURITY_NAME [] = "SECURITY"
static struct ast_threadstorage security_event_buf = { .once = PTHREAD_ONCE_INIT , .key_init = __init_security_event_buf , .custom_init = NULL , }
static const size_t SECURITY_EVENT_BUF_INIT_LEN = 256
static struct ast_event_subsecurity_event_sub

Detailed Description

Security Event Logging.

Author:
Russell Bryant <russell@digium.com>
Todo:

Make informational security events optional

Escape quotes in string payload IE contents

Definition in file res_security_log.c.


Enumeration Type Documentation

Enumerator:
NOT_REQUIRED 
REQUIRED 
NOT_REQUIRED 
REQUIRED 

Definition at line 54 of file res_security_log.c.

00054                  {
00055    NOT_REQUIRED,
00056    REQUIRED
00057 };


Function Documentation

static void __init_security_event_buf ( void   )  [static]

Definition at line 51 of file res_security_log.c.

00054 {

static void __reg_module ( void   )  [static]

Definition at line 167 of file res_security_log.c.

static void __unreg_module ( void   )  [static]

Definition at line 167 of file res_security_log.c.

static void append_ie ( struct ast_str **  str,
const struct ast_event event,
const enum ast_event_ie_type  ie_type,
enum ie_required  required 
) [static]

Definition at line 65 of file res_security_log.c.

References ast_assert, ast_event_get_ie_bitflags(), ast_event_get_ie_pltype(), ast_event_get_ie_str(), ast_event_get_ie_type_name(), ast_event_get_ie_uint(), AST_EVENT_IE_PLTYPE_BITFLAGS, AST_EVENT_IE_PLTYPE_EXISTS, AST_EVENT_IE_PLTYPE_RAW, AST_EVENT_IE_PLTYPE_STR, AST_EVENT_IE_PLTYPE_UINT, AST_EVENT_IE_PLTYPE_UNKNOWN, ast_log(), ast_str_append(), ie_is_present(), and LOG_WARNING.

Referenced by append_ies().

00067 {
00068    if (!required && !ie_is_present(event, ie_type)) {
00069       /* Optional IE isn't present.  Ignore. */
00070       return;
00071    }
00072 
00073    /* At this point, it _better_ be there! */
00074    ast_assert(ie_is_present(event, ie_type));
00075 
00076    switch (ast_event_get_ie_pltype(ie_type)) {
00077    case AST_EVENT_IE_PLTYPE_UINT:
00078       ast_str_append(str, 0, ",%s=\"%u\"",
00079             ast_event_get_ie_type_name(ie_type),
00080             ast_event_get_ie_uint(event, ie_type));
00081       break;
00082    case AST_EVENT_IE_PLTYPE_STR:
00083       ast_str_append(str, 0, ",%s=\"%s\"",
00084             ast_event_get_ie_type_name(ie_type),
00085             ast_event_get_ie_str(event, ie_type));
00086       break;
00087    case AST_EVENT_IE_PLTYPE_BITFLAGS:
00088       ast_str_append(str, 0, ",%s=\"%u\"",
00089             ast_event_get_ie_type_name(ie_type),
00090             ast_event_get_ie_bitflags(event, ie_type));
00091       break;
00092    case AST_EVENT_IE_PLTYPE_UNKNOWN:
00093    case AST_EVENT_IE_PLTYPE_EXISTS:
00094    case AST_EVENT_IE_PLTYPE_RAW:
00095       ast_log(LOG_WARNING, "Unexpected payload type for IE '%s'\n",
00096             ast_event_get_ie_type_name(ie_type));
00097       break;
00098    }
00099 }

static void append_ies ( struct ast_str **  str,
const struct ast_event event,
const struct ast_security_event_ie_type ies,
enum ie_required  required 
) [static]

Definition at line 101 of file res_security_log.c.

References append_ie(), AST_EVENT_IE_END, and ast_security_event_ie_type::ie_type.

Referenced by security_event_cb().

00103 {
00104    unsigned int i;
00105 
00106    for (i = 0; ies[i].ie_type != AST_EVENT_IE_END; i++) {
00107       append_ie(str, event, ies[i].ie_type, required);
00108    }
00109 }

ASTERISK_FILE_VERSION ( __FILE__  ,
"$Revision: 328209 $"   
)
static int ie_is_present ( const struct ast_event event,
const enum ast_event_ie_type  ie_type 
) [static]

Definition at line 59 of file res_security_log.c.

References ast_event_get_ie_raw().

Referenced by append_ie().

00061 {
00062    return (ast_event_get_ie_raw(event, ie_type) != NULL);
00063 }

static int load_module ( void   )  [static]
static void security_event_cb ( const struct ast_event event,
void *  data 
) [static]
static int unload_module ( void   )  [static]

Definition at line 156 of file res_security_log.c.

References ast_event_unsubscribe(), and ast_verb.

00157 {
00158    if (security_event_sub) {
00159       security_event_sub = ast_event_unsubscribe(security_event_sub);
00160    }
00161 
00162    ast_verb(3, "Security Logging Disabled\n");
00163 
00164    return 0;
00165 }


Variable Documentation

struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Security Event Logging" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "ac1f6a56484a8820659555499174e588" , .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, } [static]

Definition at line 167 of file res_security_log.c.

Definition at line 167 of file res_security_log.c.

int LOG_SECURITY [static]

Definition at line 47 of file res_security_log.c.

Referenced by load_module(), and security_event_cb().

const char LOG_SECURITY_NAME[] = "SECURITY" [static]

Definition at line 45 of file res_security_log.c.

Referenced by load_module().

struct ast_threadstorage security_event_buf = { .once = PTHREAD_ONCE_INIT , .key_init = __init_security_event_buf , .custom_init = NULL , } [static]

Definition at line 51 of file res_security_log.c.

Referenced by security_event_cb().

const size_t SECURITY_EVENT_BUF_INIT_LEN = 256 [static]

Definition at line 52 of file res_security_log.c.

Referenced by security_event_cb().

Definition at line 49 of file res_security_log.c.


Generated on 20 Aug 2013 for Asterisk - The Open Source Telephony Project by  doxygen 1.6.1