<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Hello,</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<u>I was trying a couple of things and forgot to switch it back. I tried again and this is the current map and secure link config:</u></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span><i>map $uri $hls_uri {<br>
</i></span>
<div><i>        ~^(?<base_uri>.*).m3u8$ $base_uri;<br>
</i></div>
<div><i>        ~^(?<base_uri>.*).ts$   $base_uri;<br>
</i></div>
<div><i>        default                 $uri;<br>
</i></div>
<i><span>    }</span><br>
</i></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span><i><br>
</i></span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span><i><br>
</i></span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span><span><i>secure_link $arg_md5,$arg_expires;<br>
</i></span>
<div><i>secure_link_md5 "enigma$hls_uri$secure_link_expires";<br>
</i></div>
<div><i><br>
</i></div>
<div><i>if ($secure_link = "") { return 403; }<br>
</i></div>
<span><i>if ($secure_link = "0") { return 410; }</i></span><br>
</span></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<u>Then i used this command to generate the expire date/time:</u></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<i><span>date -d "2019-06-08 23:30" +%s<br>
</span><span>1560033000</span></i><br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<u>and this command to generate the md5:</u></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<i><br>
</i></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<i><span> echo -n 'enigma/hls/justin-timberlake/playlist<i style="font-family: Calibri, Helvetica, sans-serif; background-color: rgb(255, 255, 255)"><span style="margin: 0px">1560033000</span></i>' | openssl md5 -binary | openssl base64 | tr '+/' '-_' | tr
 -d '='<br>
</span><span>DWHdyTKR5vTqw10wNtnlIg</span></i><br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<i><span><br>
</span></i></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<i><span><br>
</span></i></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<u>The request for the main manifest was ok:</u></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<u><br>
</u></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<i>Request URL: <a href="http://86.180.184.242/hls/justin-timberlake/playlist.m3u8?md5=DWHdyTKR5vTqw10wNtnlIg&expires=1560033000" id="LPlnk895331" style="">
http://<domain>/hls/justin-timberlake/playlist.m3u8?md5=DWHdyTKR5vTqw10wNtnlIg&expires=1560033000</a><br>
</i></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<i><span>Request Method: GET<br>
</span><span>Status Code: 200 OK</span></i><br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<u>But the content of the manifest doesn't have the md5</u></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<u>:</u></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span><i>#EXTM3U<br>
</i></span>
<div><i>#EXT-X-VERSION:3<br>
</i></div>
<div><i>#EXT-X-STREAM-INF:BANDWIDTH=200000,RESOLUTION=416x234<br>
</i></div>
<div><i>Justin_Timberlake_416_234_200.m3u8<br>
</i></div>
<div><i>#EXT-X-STREAM-INF:BANDWIDTH=300000,RESOLUTION=480x270<br>
</i></div>
<div><i>Justin_Timberlake_480_270_300.m3u8<br>
</i></div>
<div><i>#EXT-X-STREAM-INF:BANDWIDTH=600000,RESOLUTION=640x360<br>
</i></div>
<div><i>Justin_Timberlake_640_360_600.m3u8<br>
</i></div>
<div><i>#EXT-X-STREAM-INF:BANDWIDTH=900000,RESOLUTION=960x540<br>
</i></div>
<div><i>Justin_Timberlake_960_540_900.m3u8<br>
</i></div>
<div><i>#EXT-X-STREAM-INF:BANDWIDTH=1300000,RESOLUTION=1280x720<br>
</i></div>
<span><i>Justin_Timberlake_1280_720_1300.m3u8</i></span><br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<u>As well as the other m3u8 manifest, so only the playlist have the md5 and expire:</u></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<u><br>
</u></div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span><i>Request URL: http://86.180.184.242/hls/justin-timberlake/Justin_Timberlake_640_360_600.m3u8<br>
</i></span>
<div><i>Request Method: GET<br>
</i></div>
<span><i>Status Code: 403 Forbidden</i></span><br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Thanks</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Andrew</div>
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div>
<div id="appendonsend"></div>
<div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> nginx <nginx-bounces@nginx.org> on behalf of Francis Daly <francis@daoine.org><br>
<b>Sent:</b> Friday, June 7, 2019 8:59 PM<br>
<b>To:</b> nginx@nginx.org<br>
<b>Subject:</b> Re: Securing URLs with the Secure Link Module in NGINX</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText">On Fri, Jun 07, 2019 at 06:47:54PM +0000, Andrew Andonopoulos wrote:<br>
<br>
Hi there,<br>
<br>
> This is the nginx config, do you think that i should use another method? like auth?<br>
<br>
It looks to me like you could try using exactly the method in the document<br>
you mentioned previously.<br>
<br>
<a href="https://www.nginx.com/blog/securing-urls-secure-link-module-nginx-plus/">https://www.nginx.com/blog/securing-urls-secure-link-module-nginx-plus/</a><br>
<br>
>     map $uri $hls_uri {<br>
>         ~^(?<base_uri>.*).m3u8$ $base_uri;<br>
>         ~^(?<base_uri>.*).ts$   $base_uri;<br>
>         default                 $uri;<br>
>     }<br>
<br>
You create a variable $hls_uri which is "the uri without the .ts or<br>
.m3u8", like that document does.<br>
<br>
>            secure_link $arg_md5,$arg_expires;<br>
>            secure_link_md5 "enigma$uri$secure_link_expires";<br>
<br>
But your secure_link_md5 directive does not use that variable. Unlike<br>
what that document does.<br>
<br>
If there is still a problem after you fix that, can you show one request<br>
that you make that does not give the response that you want?<br>
<br>
Perhaps there is something unexpected in the way that the md5sum in the<br>
link is generated or calculated.<br>
<br>
        f<br>
-- <br>
Francis Daly        francis@daoine.org<br>
_______________________________________________<br>
nginx mailing list<br>
nginx@nginx.org<br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx">http://mailman.nginx.org/mailman/listinfo/nginx</a><br>
</div>
</span></font></div>
</div>
</body>
</html>