From: Jaroslav Kysela Date: Sat, 27 Oct 2018 09:00:01 +0000 (+0200) Subject: webui: m3u playlist - add auth tokens for logo, fixes #5291 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1fc3b3c4ccefe124845b6fd4a03d42da5706267b;p=thirdparty%2Ftvheadend.git webui: m3u playlist - add auth tokens for logo, fixes #5291 --- diff --git a/src/access.c b/src/access.c index dc989d1cb..d0ab44a7d 100644 --- a/src/access.c +++ b/src/access.c @@ -140,7 +140,6 @@ access_ticket_create(const char *resource, access_t *a) return at->at_id; } - at = calloc(1, sizeof(access_ticket_t)); uuid_random(buf, sizeof(buf)); diff --git a/src/webui/webui.c b/src/webui/webui.c index 2ab4e25bf..e59cb4376 100644 --- a/src/webui/webui.c +++ b/src/webui/webui.c @@ -513,13 +513,28 @@ http_m3u_playlist_add(htsbuf_queue_t *hq, const char *hostpath, const char *logo, const char *epgid, int urlauth, access_t *access) { - const char *delim = "?"; + const char *delim = "?", *ticket = NULL; + if (urlauth == URLAUTH_TICKET) + ticket = access_ticket_create(url_remain, access); htsbuf_append_str(hq, "#EXTINF:-1"); if (logo) { - if (strncmp(logo, "imagecache/", 11) == 0) - htsbuf_qprintf(hq, " logo=\"%s/%s\"", hostpath, logo); - else + if (strncmp(logo, "imagecache/", 11) == 0) { + htsbuf_qprintf(hq, " logo=\"%s/%s", hostpath, logo); + switch (urlauth) { + case URLAUTH_NONE: + break; + case URLAUTH_TICKET: + htsbuf_qprintf(hq, "?ticket=%s", ticket); + break; + case URLAUTH_CODE: + if (!strempty(access->aa_auth)) + htsbuf_qprintf(hq, "?auth=%s", access->aa_auth); + break; + } + htsbuf_append_str(hq, "\""); + } else { htsbuf_qprintf(hq, " logo=\"%s\"", logo); + } } if (epgid) htsbuf_qprintf(hq, " tvg-id=\"%s\"", epgid); @@ -530,7 +545,7 @@ http_m3u_playlist_add(htsbuf_queue_t *hq, const char *hostpath, case URLAUTH_NONE: break; case URLAUTH_TICKET: - htsbuf_qprintf(hq, "%sticket=%s", delim, access_ticket_create(url_remain, access)); + htsbuf_qprintf(hq, "%sticket=%s", delim, ticket); delim = "&"; break; case URLAUTH_CODE: @@ -588,10 +603,13 @@ http_satip_m3u_playlist_add(htsbuf_queue_t *hq, const char *hostpath, snprintf(buf, sizeof(buf), "/stream/channelid/%d", channel_get_id(ch)); htsbuf_append_str(hq, "#EXTINF:-1"); if (logo) { - if (strncmp(logo, "imagecache/", 11) == 0) + if (strncmp(logo, "imagecache/", 11) == 0) { htsbuf_qprintf(hq, " logo=%s/%s", hostpath, logo); - else + if (urlauth == URLAUTH_CODE && !strempty(access->aa_auth)) + htsbuf_qprintf(hq, "?auth=%s", access->aa_auth); + } else { htsbuf_qprintf(hq, " logo=%s", logo); + } } htsbuf_qprintf(hq, ",%s\n%s%s?profile=pass", name, hostpath, buf); if (urlauth == URLAUTH_CODE && !strempty(access->aa_auth))