From 1718204a361da7c98cd9cd4847daefde78856588 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Jacquier Date: Sun, 19 May 2019 10:18:49 +0000 Subject: [PATCH] support hls stream proxy Signed-off-by: Pierre-Emmanuel Jacquier --- pkg/routes/routes.go | 3 +-- pkg/routes/xtream.go | 10 ++++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/pkg/routes/routes.go b/pkg/routes/routes.go index d2d9d8b..35cd4c3 100644 --- a/pkg/routes/routes.go +++ b/pkg/routes/routes.go @@ -52,8 +52,6 @@ func Routes(proxyConfig *config.ProxyConfig, r *gin.RouterGroup, newM3U []byte) // XXX Private need for external Android app r.POST("/iptv.m3u", p.authenticate, p.getM3U) - r.GET("/hlsr/*", p.authenticate, p.xtreamStream) - //Xtream, iptv Smarter android app compatibility r.GET("/player_api.php", p.authenticate, p.xtreamPlayerAPIGET) r.POST("/player_api.php", p.appAuthenticate, p.xtreamPlayerAPIPOST) @@ -62,6 +60,7 @@ func Routes(proxyConfig *config.ProxyConfig, r *gin.RouterGroup, newM3U []byte) r.GET(fmt.Sprintf("/live/%s/%s/:id", proxyConfig.User, proxyConfig.Password), p.xtreamStreamLive) r.GET(fmt.Sprintf("/movie/%s/%s/:id", proxyConfig.User, proxyConfig.Password), p.xtreamStreamMovie) r.GET(fmt.Sprintf("/series/%s/%s/:id", proxyConfig.User, proxyConfig.Password), p.xtreamStreamSeries) + r.GET("/hlsr/:token/:username/:password/:channel/:tmp/:extension", p.hlsrStream) for i, track := range proxyConfig.Playlist.Tracks { oriURL, err := url.Parse(track.URI) diff --git a/pkg/routes/xtream.go b/pkg/routes/xtream.go index d31fdb0..2362442 100644 --- a/pkg/routes/xtream.go +++ b/pkg/routes/xtream.go @@ -144,3 +144,13 @@ func (p *proxy) xtreamStreamSeries(c *gin.Context) { stream(c, rpURL) } + +func (p *proxy) hlsrStream(c *gin.Context) { + req, err := url.Parse(fmt.Sprintf("%s%s", p.XtreamBaseURL, c.Request.URL.String())) + if err != nil { + c.AbortWithError(http.StatusInternalServerError, err) + return + } + + stream(c, req) +}