From: Anthony Minessale Date: Sun, 14 Mar 2021 19:21:01 +0000 (+0000) Subject: [mod_verto] more perms checks X-Git-Tag: v1.10.7^2~23 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d5f9155f902d3ad5261bea7339075a129414dcd7;p=thirdparty%2Ffreeswitch.git [mod_verto] more perms checks --- diff --git a/src/mod/endpoints/mod_verto/mod_verto.c b/src/mod/endpoints/mod_verto/mod_verto.c index 2faf77455e..610ec131c9 100644 --- a/src/mod/endpoints/mod_verto/mod_verto.c +++ b/src/mod/endpoints/mod_verto/mod_verto.c @@ -663,6 +663,7 @@ static switch_status_t jsock_queue_event(jsock_t *jsock, cJSON **json, switch_bo return status; } +static switch_bool_t event_channel_check_auth(jsock_t *jsock, const char *event_channel); static void write_event(const char *event_channel, const char *super_channel, jsock_t *use_jsock, cJSON *event) { jsock_sub_node_head_t *head; @@ -680,13 +681,21 @@ static void write_event(const char *event_channel, const char *super_channel, js if ((visibility = cJSON_GetObjectCstr(event, "contentVisibility"))) { if (strcasecmp(visibility, "public") && (np->jsock->id && !strncasecmp(np->jsock->id, "guest", 5))) { int perm = 0; + + perm = event_channel_check_auth(np->jsock, event_channel); + + if (!perm && super_channel) { + perm = event_channel_check_auth(np->jsock, super_channel); + } - perm = switch_event_channel_permission_verify(np->jsock->uuid_str, event_channel); + if (!perm) { + perm = switch_event_channel_permission_verify(np->jsock->uuid_str, event_channel); + } if (!perm && super_channel) { perm = switch_event_channel_permission_verify(np->jsock->uuid_str, super_channel); } - + if (!perm) { continue; }