mirror of
https://gitlab.xiph.org/xiph/icecast-server.git
synced 2025-06-30 22:18:19 -04:00
Feature: Added source media type to events if known
This commit is contained in:
parent
0df67e7971
commit
6f29ca2996
@ -484,6 +484,12 @@ void event_emit_va(const char *trigger, ...) {
|
|||||||
}
|
}
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
|
if (source) {
|
||||||
|
if (source->format && source->format->contenttype) {
|
||||||
|
extra_add(event, EVENT_EXTRA_KEY_SOURCE_MEDIA_TYPE, source->format->contenttype);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (client) {
|
if (client) {
|
||||||
event->connection_id = client->con->id;
|
event->connection_id = client->con->id;
|
||||||
event->connection_time = client->con->con_time;
|
event->connection_time = client->con->con_time;
|
||||||
|
@ -35,7 +35,8 @@ typedef enum {
|
|||||||
EVENT_EXTRA_KEY_CONNECTION_IP,
|
EVENT_EXTRA_KEY_CONNECTION_IP,
|
||||||
EVENT_EXTRA_KEY_CLIENT_ROLE,
|
EVENT_EXTRA_KEY_CLIENT_ROLE,
|
||||||
EVENT_EXTRA_KEY_CLIENT_USERNAME,
|
EVENT_EXTRA_KEY_CLIENT_USERNAME,
|
||||||
EVENT_EXTRA_KEY_CLIENT_USERAGENT
|
EVENT_EXTRA_KEY_CLIENT_USERAGENT,
|
||||||
|
EVENT_EXTRA_KEY_SOURCE_MEDIA_TYPE,
|
||||||
} event_extra_key_t;
|
} event_extra_key_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -152,6 +152,7 @@ static inline void __setup_environ(ice_config_t *config, event_exec_t *self, eve
|
|||||||
__update_environ("EVENT_TRIGGER", event->trigger); /* new name */
|
__update_environ("EVENT_TRIGGER", event->trigger); /* new name */
|
||||||
__update_environ("SOURCE_ACTION", event->trigger); /* old name (deprecated) */
|
__update_environ("SOURCE_ACTION", event->trigger); /* old name (deprecated) */
|
||||||
__update_environ_with_key(event, "EVENT_URI", EVENT_EXTRA_KEY_URI);
|
__update_environ_with_key(event, "EVENT_URI", EVENT_EXTRA_KEY_URI);
|
||||||
|
__update_environ_with_key(event, "SOURCE_MEDIA_TYPE", EVENT_EXTRA_KEY_SOURCE_MEDIA_TYPE);
|
||||||
__update_environ_with_key(event, "CLIENT_IP", EVENT_EXTRA_KEY_CONNECTION_IP);
|
__update_environ_with_key(event, "CLIENT_IP", EVENT_EXTRA_KEY_CONNECTION_IP);
|
||||||
__update_environ_with_key(event, "CLIENT_ROLE", EVENT_EXTRA_KEY_CLIENT_ROLE);
|
__update_environ_with_key(event, "CLIENT_ROLE", EVENT_EXTRA_KEY_CLIENT_ROLE);
|
||||||
__update_environ_with_key(event, "CLIENT_USERNAME", EVENT_EXTRA_KEY_CLIENT_USERNAME);
|
__update_environ_with_key(event, "CLIENT_USERNAME", EVENT_EXTRA_KEY_CLIENT_USERNAME);
|
||||||
|
@ -30,7 +30,7 @@ static int event_log_emit(void *state, event_t *event) {
|
|||||||
ICECAST_LOG(self->level, ICECAST_LOGFLAG_NONE,
|
ICECAST_LOG(self->level, ICECAST_LOGFLAG_NONE,
|
||||||
"%s%strigger=%# H uri=%#H "
|
"%s%strigger=%# H uri=%#H "
|
||||||
"connection_id=%lu connection_ip=%#H connection_time=%lli "
|
"connection_id=%lu connection_ip=%#H connection_time=%lli "
|
||||||
"client_role=%# H client_username=%#H client_useragent=%# H client_admin_command=%i",
|
"client_role=%# H client_username=%#H client_useragent=%# H client_admin_command=%i source_media_type=%#H",
|
||||||
self->prefix ? self->prefix : "", self->prefix ? ": " : "",
|
self->prefix ? self->prefix : "", self->prefix ? ": " : "",
|
||||||
event->trigger,
|
event->trigger,
|
||||||
event_extra_get(event, EVENT_EXTRA_KEY_URI),
|
event_extra_get(event, EVENT_EXTRA_KEY_URI),
|
||||||
@ -38,7 +38,9 @@ static int event_log_emit(void *state, event_t *event) {
|
|||||||
event_extra_get(event, EVENT_EXTRA_KEY_CLIENT_ROLE),
|
event_extra_get(event, EVENT_EXTRA_KEY_CLIENT_ROLE),
|
||||||
event_extra_get(event, EVENT_EXTRA_KEY_CLIENT_USERNAME),
|
event_extra_get(event, EVENT_EXTRA_KEY_CLIENT_USERNAME),
|
||||||
event_extra_get(event, EVENT_EXTRA_KEY_CLIENT_USERAGENT),
|
event_extra_get(event, EVENT_EXTRA_KEY_CLIENT_USERAGENT),
|
||||||
event->client_admin_command);
|
event->client_admin_command,
|
||||||
|
event_extra_get(event, EVENT_EXTRA_KEY_SOURCE_MEDIA_TYPE)
|
||||||
|
);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ static inline char *__escape(const char *src, const char *default_value) {
|
|||||||
static int event_url_emit(void *state, event_t *event) {
|
static int event_url_emit(void *state, event_t *event) {
|
||||||
event_url_t *self = state;
|
event_url_t *self = state;
|
||||||
ice_config_t *config;
|
ice_config_t *config;
|
||||||
char *action, *mount, *server, *role, *username, *ip, *agent;
|
char *action, *mount, *server, *role, *username, *ip, *agent, *media_type;
|
||||||
time_t duration;
|
time_t duration;
|
||||||
char post[4096];
|
char post[4096];
|
||||||
|
|
||||||
@ -53,6 +53,7 @@ static int event_url_emit(void *state, event_t *event) {
|
|||||||
username = __escape(event_extra_get(event, EVENT_EXTRA_KEY_CLIENT_USERNAME), "");
|
username = __escape(event_extra_get(event, EVENT_EXTRA_KEY_CLIENT_USERNAME), "");
|
||||||
ip = __escape(event_extra_get(event, EVENT_EXTRA_KEY_CONNECTION_IP), "");
|
ip = __escape(event_extra_get(event, EVENT_EXTRA_KEY_CONNECTION_IP), "");
|
||||||
agent = __escape(event_extra_get(event, EVENT_EXTRA_KEY_CLIENT_USERAGENT), "-");
|
agent = __escape(event_extra_get(event, EVENT_EXTRA_KEY_CLIENT_USERAGENT), "-");
|
||||||
|
media_type = __escape(event_extra_get(event, EVENT_EXTRA_KEY_CLIENT_USERAGENT), "-");
|
||||||
|
|
||||||
if (event->connection_time) {
|
if (event->connection_time) {
|
||||||
duration = time(NULL) - event->connection_time;
|
duration = time(NULL) - event->connection_time;
|
||||||
@ -64,9 +65,11 @@ static int event_url_emit(void *state, event_t *event) {
|
|||||||
server = __escape(config->hostname, "");
|
server = __escape(config->hostname, "");
|
||||||
|
|
||||||
snprintf (post, sizeof (post),
|
snprintf (post, sizeof (post),
|
||||||
"action=%s&mount=%s&server=%s&port=%d&client=%lu&role=%s&username=%s&ip=%s&agent=%s&duration=%lli&admin=%i",
|
"action=%s&mount=%s&server=%s&port=%d&client=%lu&role=%s&username=%s&ip=%s&agent=%s&duration=%lli&admin=%i&source-media-type=%s",
|
||||||
action, mount, server, config->port,
|
action, mount, server, config->port,
|
||||||
event->connection_id, role, username, ip, agent, (long long int)duration, event->client_admin_command);
|
event->connection_id, role, username, ip, agent, (long long int)duration, event->client_admin_command,
|
||||||
|
media_type
|
||||||
|
);
|
||||||
config_release_config();
|
config_release_config();
|
||||||
|
|
||||||
free(action);
|
free(action);
|
||||||
@ -76,6 +79,7 @@ static int event_url_emit(void *state, event_t *event) {
|
|||||||
free(username);
|
free(username);
|
||||||
free(ip);
|
free(ip);
|
||||||
free(agent);
|
free(agent);
|
||||||
|
free(media_type);
|
||||||
|
|
||||||
if (strchr(self->url, '@') == NULL && self->userpwd) {
|
if (strchr(self->url, '@') == NULL && self->userpwd) {
|
||||||
curl_easy_setopt(self->handle, CURLOPT_USERPWD, self->userpwd);
|
curl_easy_setopt(self->handle, CURLOPT_USERPWD, self->userpwd);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user