Wed Oct 28 13:33:33 2009

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"

Include dependency graph for res_security_log.c:

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: 206021 $")
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_DEFAULT , .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 = AST_BUILDOPT_SUM, .load = load_module, .unload = unload_module, }
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
Todo:
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 50 of file res_security_log.c.

00050                  {
00051    NOT_REQUIRED,
00052    REQUIRED
00053 };


Function Documentation

static void __init_security_event_buf ( void   )  [static]

Definition at line 47 of file res_security_log.c.

00050 {

static void __reg_module ( void   )  [static]

Definition at line 163 of file res_security_log.c.

static void __unreg_module ( void   )  [static]

Definition at line 163 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 61 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().

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

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 97 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().

00099 {
00100    unsigned int i;
00101 
00102    for (i = 0; ies[i].ie_type != AST_EVENT_IE_END; i++) {
00103       append_ie(str, event, ies[i].ie_type, required);
00104    }
00105 }

ASTERISK_FILE_VERSION ( __FILE__  ,
"$Revision: 206021 $"   
)

static int ie_is_present ( const struct ast_event event,
const enum ast_event_ie_type  ie_type 
) [static]

Definition at line 55 of file res_security_log.c.

References ast_event_get_ie_raw().

Referenced by append_ie().

00057 {
00058    return (ast_event_get_ie_raw(event, ie_type) != NULL);
00059 }

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 152 of file res_security_log.c.

References ast_event_unsubscribe(), and ast_verb.

00153 {
00154    if (security_event_sub) {
00155       security_event_sub = ast_event_unsubscribe(security_event_sub);
00156    }
00157 
00158    ast_verb(3, "Security Logging Disabled\n");
00159 
00160    return 0;
00161 }


Variable Documentation

struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_DEFAULT , .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 = AST_BUILDOPT_SUM, .load = load_module, .unload = unload_module, } [static]

Definition at line 163 of file res_security_log.c.

Definition at line 163 of file res_security_log.c.

int LOG_SECURITY [static]

Definition at line 43 of file res_security_log.c.

Referenced by load_module(), and security_event_cb().

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

Definition at line 41 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 47 of file res_security_log.c.

Referenced by security_event_cb().

const size_t SECURITY_EVENT_BUF_INIT_LEN = 256 [static]

Definition at line 48 of file res_security_log.c.

Referenced by security_event_cb().

Definition at line 45 of file res_security_log.c.


Generated on Wed Oct 28 13:33:34 2009 for Asterisk - the Open Source PBX by  doxygen 1.5.6