From 4e84b34d30c64fc8458e0a3e99983a7eb0fe023e Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 25 Aug 2020 23:51:38 +0000 Subject: [PATCH] [core, mod_verto] add visibility filter to verto --- src/mod/endpoints/mod_verto/mod_verto.c | 18 +++++++++++++++++- src/switch_event.c | 7 +++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_verto/mod_verto.c b/src/mod/endpoints/mod_verto/mod_verto.c index 505b9892ee..e5b46da344 100644 --- a/src/mod/endpoints/mod_verto/mod_verto.c +++ b/src/mod/endpoints/mod_verto/mod_verto.c @@ -672,8 +672,24 @@ static void write_event(const char *event_channel, jsock_t *use_jsock, cJSON *ev for(np = head->node; np; np = np->next) { cJSON *msg = NULL, *params; - + if (!use_jsock || use_jsock == np->jsock) { + const char *visibility; + //char *tmp; + + if ((visibility = cJSON_GetObjectCstr(event, "contentVisibility"))) { + if (strcasecmp(visibility, "public") && + ((use_jsock && use_jsock->id && !strncasecmp(use_jsock->id, "guest", 5)) || + (np->jsock->id && !strncasecmp(np->jsock->id, "guest", 5)))) { + + continue; + } + } + //tmp = cJSON_Print(event); + //printf("%s\n", tmp); + //free(tmp); + + params = cJSON_Duplicate(event, 1); cJSON_AddItemToObject(params, "eventSerno", cJSON_CreateNumber(np->serno++)); cJSON_AddItemToObject(params, "subscribedChannel", cJSON_CreateString(head->event_channel)); diff --git a/src/switch_event.c b/src/switch_event.c index 0a0e4b3c6c..3e5b05ae32 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -3608,7 +3608,8 @@ SWITCH_DECLARE(switch_status_t) switch_live_array_add(switch_live_array_t *la, c switch_status_t status = SWITCH_STATUS_SUCCESS; const char *action = "add"; cJSON *msg = NULL, *data = NULL; - + const char *visibility = NULL; + switch_mutex_lock(la->mutex); if ((node = switch_core_hash_find(la->hash, name))) { @@ -3675,7 +3676,9 @@ SWITCH_DECLARE(switch_status_t) switch_live_array_add(switch_live_array_t *la, c msg = cJSON_CreateObject(); data = json_add_child_obj(msg, "data", NULL); - + if ((visibility = cJSON_GetObjectCstr(node->obj, "contentVisibility"))) { + cJSON_AddItemToObject(msg, "contentVisibility", cJSON_CreateString(visibility)); + } cJSON_AddItemToObject(msg, "eventChannel", cJSON_CreateString(la->event_channel)); cJSON_AddItemToObject(data, "action", cJSON_CreateString(action));