Asterisk - The Open Source Telephony Project
18.5.0
|
Security Event Reporting Helpers. More...
#include "asterisk.h"
#include "asterisk/utils.h"
#include "asterisk/strings.h"
#include "asterisk/network.h"
#include "asterisk/event.h"
#include "asterisk/security_events.h"
#include "asterisk/netsock2.h"
#include "asterisk/stasis.h"
#include "asterisk/json.h"
#include "asterisk/astobj2.h"
Go to the source code of this file.
Macros | |
#define | MAX_SECURITY_IES 12 |
#define | SEC_EVT_FIELD(e, field) (offsetof(struct ast_security_event_##e, field)) |
Enumerations | |
enum | ie_required { NOT_REQUIRED, REQUIRED, NOT_REQUIRED, REQUIRED } |
Variables | |
struct { | |
const char * name | |
struct ast_security_event_ie_type optional_ies [MAX_SECURITY_IES] | |
struct ast_security_event_ie_type required_ies [MAX_SECURITY_IES] | |
enum ast_security_event_severity severity | |
uint32_t version | |
} | sec_events [AST_SECURITY_EVENT_NUM_TYPES] |
static const size_t | SECURITY_EVENT_BUF_INIT_LEN = 256 |
static struct stasis_topic * | security_topic |
Security Topic. More... | |
struct { | |
enum ast_security_event_severity severity | |
const char * str | |
} | severities [] |
Security Event Reporting Helpers.
Definition in file main/security_events.c.
#define MAX_SECURITY_IES 12 |
Definition at line 504 of file main/security_events.c.
#define SEC_EVT_FIELD | ( | e, | |
field | |||
) | (offsetof(struct ast_security_event_##e, field)) |
enum ie_required |
Enumerator | |
---|---|
NOT_REQUIRED | |
REQUIRED | |
NOT_REQUIRED | |
REQUIRED |
Definition at line 937 of file main/security_events.c.
|
static |
Definition at line 924 of file main/security_events.c.
References ast_security_event_ip_addr::addr, ast_event_get_ie_type_name(), ast_json_ipaddr(), ast_json_object_set(), and ast_security_event_ip_addr::transport.
Referenced by add_json_object().
|
static |
Definition at line 942 of file main/security_events.c.
References add_ip_json_object(), ast_security_event_ip_addr::addr, ast_event_get_ie_type_name(), AST_EVENT_IE_ACCOUNT_ID, AST_EVENT_IE_ACL_NAME, AST_EVENT_IE_ATTEMPTED_TRANSPORT, AST_EVENT_IE_AUTH_METHOD, AST_EVENT_IE_CHALLENGE, AST_EVENT_IE_EVENT_TV, AST_EVENT_IE_EVENT_VERSION, AST_EVENT_IE_EXPECTED_ADDR, AST_EVENT_IE_EXPECTED_RESPONSE, AST_EVENT_IE_LOCAL_ADDR, AST_EVENT_IE_MODULE, AST_EVENT_IE_RECEIVED_CHALLENGE, AST_EVENT_IE_RECEIVED_HASH, AST_EVENT_IE_REMOTE_ADDR, AST_EVENT_IE_REQUEST_PARAMS, AST_EVENT_IE_REQUEST_TYPE, AST_EVENT_IE_RESPONSE, AST_EVENT_IE_SERVICE, AST_EVENT_IE_SESSION_ID, AST_EVENT_IE_SESSION_TV, AST_EVENT_IE_SEVERITY, AST_EVENT_IE_USING_PASSWORD, ast_json_object_set(), ast_json_string_create(), ast_json_stringf(), ast_json_timeval(), ast_log, ast_security_event_get_name(), ast_security_event_ie_type::ie_type, LOG_WARNING, NULL, ast_security_event_ie_type::offset, and str.
Referenced by handle_security_event().
|
static |
Definition at line 1067 of file main/security_events.c.
References ast_event_get_ie_type_name(), AST_EVENT_IE_EVENT_TV, AST_EVENT_IE_EVENT_VERSION, AST_EVENT_IE_SERVICE, AST_EVENT_IE_SEVERITY, ast_json_integer_create(), ast_json_object_create(), ast_json_object_set(), ast_json_ref(), ast_json_string_create(), ast_json_stringf(), ast_json_timeval(), ast_json_unref(), ast_security_event_severity_get_name(), ast_tvnow(), ast_security_event_common::event_type, NULL, RAII_VAR, S_OR, sec_events, ast_security_event_common::service, and ast_security_event_common::version.
Referenced by handle_security_event().
|
static |
Definition at line 402 of file main/security_events.c.
References append_event_str_single(), AST_EVENT_IE_END, and ast_security_event_ie_type::ie_type.
Referenced by security_event_to_ami_blob().
|
static |
Definition at line 385 of file main/security_events.c.
References ast_event_get_ie_type_name(), ast_json_object_get(), ast_json_string_get(), ast_str_append(), and S_OR.
Referenced by append_event_str_from_json().
const char* ast_security_event_get_name | ( | const enum ast_security_event_type | event_type | ) |
Get the name of a security event sub-type.
[in] | event_type | security event sub-type |
NULL | if event_type is invalid |
non-NULL | the name of the security event type |
Definition at line 895 of file main/security_events.c.
References check_event_type(), NULL, and sec_events.
Referenced by add_json_object(), ast_security_event_report(), gen_events(), security_event_stasis_cb(), and security_event_to_ami_blob().
const struct ast_security_event_ie_type* ast_security_event_get_optional_ies | ( | const enum ast_security_event_type | event_type | ) |
Get the list of optional IEs for a given security event sub-type.
[in] | event_type | security event sub-type |
NULL | invalid event_type |
non-NULL | An array terminated with the value AST_EVENT_IE_END |
Definition at line 914 of file main/security_events.c.
References check_event_type(), NULL, and sec_events.
Referenced by handle_security_event(), security_event_stasis_cb(), and security_event_to_ami_blob().
const struct ast_security_event_ie_type* ast_security_event_get_required_ies | ( | const enum ast_security_event_type | event_type | ) |
Get the list of required IEs for a given security event sub-type.
[in] | event_type | security event sub-type |
NULL | invalid event_type |
non-NULL | An array terminated with the value AST_EVENT_IE_END |
Definition at line 904 of file main/security_events.c.
References check_event_type(), NULL, and sec_events.
Referenced by handle_security_event(), security_event_stasis_cb(), and security_event_to_ami_blob().
int ast_security_event_report | ( | const struct ast_security_event_common * | sec | ) |
Report a security event.
[in] | sec | security event data. Callers of this function should never declare an instance of ast_security_event_common directly. The argument should be an instance of a specific security event descriptor which has ast_security_event_common at the very beginning. |
0 | success |
non-zero | failure |
Definition at line 1171 of file main/security_events.c.
References ast_log, ast_security_event_get_name(), AST_SECURITY_EVENT_NUM_TYPES, ast_security_event_common::event_type, handle_security_event(), LOG_ERROR, LOG_WARNING, sec_events, and ast_security_event_common::version.
Referenced by ast_sip_report_auth_challenge_sent(), ast_sip_report_auth_failed_challenge_response(), ast_sip_report_auth_success(), ast_sip_report_failed_acl(), ast_sip_report_invalid_endpoint(), ast_sip_report_mem_limit(), ast_sip_report_req_no_support(), evt_gen_auth_method_not_allowed(), evt_gen_chal_resp_failed(), evt_gen_chal_sent(), evt_gen_failed_acl(), evt_gen_inval_acct_id(), evt_gen_inval_password(), evt_gen_inval_transport(), evt_gen_load_avg(), evt_gen_mem_limit(), evt_gen_req_bad_format(), evt_gen_req_no_support(), evt_gen_req_not_allowed(), evt_gen_session_limit(), evt_gen_successful_auth(), evt_gen_unexpected_addr(), report_auth_success(), report_failed_acl(), report_failed_challenge_response(), report_inval_password(), report_invalid_user(), report_req_bad_format(), report_req_not_allowed(), report_session_limit(), sip_report_auth_success(), sip_report_chal_sent(), sip_report_failed_acl(), sip_report_failed_challenge_response(), sip_report_inval_password(), sip_report_inval_transport(), sip_report_invalid_peer(), and sip_report_session_limit().
const char* ast_security_event_severity_get_name | ( | const enum ast_security_event_severity | severity | ) |
Get the name of a security event severity.
[in] | severity | security event severity |
NULL | if severity is invalid |
non-NULL | the name of the security event severity |
Definition at line 871 of file main/security_events.c.
References ARRAY_LEN, NULL, and severities.
Referenced by alloc_security_event_json_object().
int ast_security_stasis_init | ( | void | ) |
initializes stasis topic/event types for ast_security_topic and ast_security_event_type
0 | on success |
-1 | on failure |
Definition at line 483 of file main/security_events.c.
References ast_register_cleanup(), security_stasis_cleanup(), STASIS_MESSAGE_TYPE_INIT, and stasis_topic_create().
Referenced by asterisk_daemon().
struct stasis_topic* ast_security_topic | ( | void | ) |
A stasis_topic which publishes messages for security related issues.
Definition at line 380 of file main/security_events.c.
References security_topic.
Referenced by acl_change_stasis_subscribe(), ast_res_pjsip_initialize_configuration(), handle_security_event(), load_module(), manager_subscriptions_init(), publish_acl_change(), and rtp_reload().
|
static |
Definition at line 885 of file main/security_events.c.
References ast_log, AST_SECURITY_EVENT_NUM_TYPES, and LOG_ERROR.
Referenced by ast_security_event_get_name(), ast_security_event_get_optional_ies(), and ast_security_event_get_required_ies().
|
static |
Definition at line 1118 of file main/security_events.c.
References add_json_object(), alloc_security_event_json_object(), ao2_cleanup, AST_EVENT_IE_END, ast_json_payload_create(), ast_json_unref(), ast_security_event_get_optional_ies(), ast_security_event_get_required_ies(), ast_security_topic(), ast_security_event_common::event_type, ast_security_event_ie_type::ie_type, NOT_REQUIRED, NULL, RAII_VAR, REQUIRED, stasis_message_create(), and stasis_publish().
Referenced by ast_security_event_report().
|
static |
Definition at line 455 of file main/security_events.c.
References ast_json_payload::json, NULL, security_event_to_ami_blob(), stasis_message_data(), stasis_message_type(), STASIS_MESSAGE_TYPE_DEFN(), and to_ami().
|
static |
Definition at line 420 of file main/security_events.c.
References append_event_str_from_json(), ast_assert, ast_free, ast_json_integer_get(), ast_json_object_get(), ast_log, AST_LOG_ERROR, ast_manager_event_blob_create(), ast_security_event_get_name(), ast_security_event_get_optional_ies(), ast_security_event_get_required_ies(), AST_SECURITY_EVENT_NUM_TYPES, ast_str_buffer(), ast_str_create, EVENT_FLAG_SECURITY, NULL, RAII_VAR, SECURITY_EVENT_BUF_INIT_LEN, and str.
Referenced by security_event_to_ami().
|
static |
Definition at line 475 of file main/security_events.c.
References ao2_cleanup, NULL, and STASIS_MESSAGE_TYPE_CLEANUP.
Referenced by ast_security_stasis_init().
STASIS_MESSAGE_TYPE_DEFN | ( | ast_security_event_type | , |
. | to_ami = security_event_to_ami |
||
) |
Message type for security events.
Referenced by security_event_to_ami().
const char* name |
Definition at line 501 of file main/security_events.c.
struct ast_security_event_ie_type optional_ies[MAX_SECURITY_IES] |
Definition at line 506 of file main/security_events.c.
struct ast_security_event_ie_type required_ies[MAX_SECURITY_IES] |
Definition at line 505 of file main/security_events.c.
const { ... } sec_events[AST_SECURITY_EVENT_NUM_TYPES] |
|
static |
Definition at line 375 of file main/security_events.c.
Referenced by security_event_to_ami_blob().
|
static |
Security Topic.
Definition at line 378 of file main/security_events.c.
Referenced by ast_security_topic().
const { ... } severities[] |
Referenced by ast_security_event_severity_get_name().
enum ast_security_event_severity severity |
Definition at line 503 of file main/security_events.c.
const char* str |
Definition at line 865 of file main/security_events.c.
Referenced by add_json_object(), and security_event_to_ami_blob().
uint32_t version |
Definition at line 502 of file main/security_events.c.