Skip to content

Commit 459baaf

Browse files
committed
Use "application/octet-stream" as mime type for m3u files.
This force download and prevents direct playback in browser.
1 parent 9be0f7f commit 459baaf

File tree

3 files changed

+10
-9
lines changed

3 files changed

+10
-9
lines changed

plugin/controllers/file.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def new_getRequestHostname(self):
4040
return self.getHost().host.encode('ascii')
4141

4242
# Do wee need this?
43-
#http.Request.getRequestHostname = new_getRequestHostname
43+
# http.Request.getRequestHostname = new_getRequestHostname
4444

4545

4646
class FileController(resource.Resource):
@@ -69,7 +69,7 @@ def render(self, request):
6969

7070
response = f"#EXTM3U\n#EXTVLCOPT:http-reconnect=true\n#EXTINF:-1,{name}\n{proto}://{request.getRequestHostname()}:{port}/file?action=download&file={quote(filename)}"
7171
request.setHeader("Content-Disposition", f'attachment;filename="{name}.m3u"')
72-
request.setHeader("Content-Type", "application/x-mpegurl")
72+
request.setHeader("Content-Type", "application/octet-stream")
7373
return response
7474
elif action == "delete":
7575
request.setResponseCode(http.OK)

plugin/controllers/models/stream.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,11 +145,12 @@ def getStream(session, request, m3ufile):
145145
if "http://" in sref or "https://" in sref:
146146
link = sref.split(":http")[1]
147147
response = f"#EXTM3U \n#EXTVLCOPT:http-reconnect=true\n{progopt}http{link}\n"
148-
request.setHeader("Content-Type", "application/x-mpegurl")
148+
149+
request.setHeader("Content-Type", "application/octet-stream")
149150
# Note: do not rename the m3u file all the time
150151
fname = getUrlArg(request, "fname")
151152
if fname is not None:
152-
request.setHeader("Content-Disposition", f"inline; filename={fname}.m3u8;")
153+
request.setHeader("Content-Disposition", f"attachment; filename={fname}.m3u8;")
153154
return response
154155

155156

@@ -258,7 +259,7 @@ def getTS(self, request):
258259
auth = ""
259260

260261
response = f"#EXTM3U \n#EXTVLCOPT:http-reconnect=true \n{progopt}{proto}://{auth}{request.getRequestHostname()}:{portnumber}/file?file={quote(filename)}{args}\n"
261-
request.setHeader("Content-Type", "application/x-mpegurl")
262+
request.setHeader("Content-Type", "application/octet-stream")
262263
return response
263264
else:
264265
return "Missing file parameter"

plugin/controllers/web.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,7 @@ def P_servicesxspf(self, request):
555555
bouquetname = getUrlArg(request, "bName")
556556
if bouquetname:
557557
bouquetname = bouquetname.replace(",", "_").replace(";", "_")
558-
request.setHeader('Content-Disposition', f'inline; filename={bouquetname}.xspf;')
558+
request.setHeader('Content-Disposition', f'attachment; filename={bouquetname}.xspf;')
559559
services = getServices(bref, False)
560560
if comp_config.OpenWebif.auth_for_streaming.value:
561561
session = GetSession()
@@ -590,11 +590,11 @@ def P_servicesm3u(self, request):
590590
:query string bRef: bouquet reference
591591
"""
592592
bref = getUrlArg(request, "bRef", "")
593-
request.setHeader('Content-Type', 'application/x-mpegurl')
593+
request.setHeader('Content-Type', 'application/octet-stream')
594594
bouquetname = getUrlArg(request, "bName")
595595
if bouquetname:
596596
bouquetname = bouquetname.replace(",", "_").replace(";", "_")
597-
request.setHeader('Content-Disposition', f'inline; filename={bouquetname}.m3u8;')
597+
request.setHeader('Content-Disposition', f'attachment; filename={bouquetname}.m3u8;')
598598
services = getServices(bref, False)
599599
if comp_config.OpenWebif.auth_for_streaming.value:
600600
session = GetSession()
@@ -820,7 +820,7 @@ def P_movielistm3u(self, request):
820820
Returns:
821821
HTTP response with headers
822822
"""
823-
request.setHeader('Content-Type', 'application/x-mpegurl')
823+
request.setHeader('Content-Type', 'application/octet-stream')
824824
movielist = getMovieList(request.args)
825825
movielist["host"] = f"{whoami(request)['proto']}://{request.getRequestHostname()}:{whoami(request)['port']}"
826826
return movielist

0 commit comments

Comments
 (0)