]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
webui: m3u playlist - add auth tokens for logo, fixes #5291
authorJaroslav Kysela <perex@perex.cz>
Sat, 27 Oct 2018 09:00:01 +0000 (11:00 +0200)
committerJaroslav Kysela <perex@perex.cz>
Sat, 27 Oct 2018 09:00:01 +0000 (11:00 +0200)
src/access.c
src/webui/webui.c

index dc989d1cb28f0f0470724ffa7e199958f23ae9a5..d0ab44a7d592bc96673f54da44d24f288da5f420 100644 (file)
@@ -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));
index 2ab4e25bff0b023a767a6fbd95c59f4351e28b04..e59cb43764b4c1fb94f84f44dca2bd62cfee079a 100644 (file)
@@ -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))