File tree 2 files changed +19
-2
lines changed
2 files changed +19
-2
lines changed Original file line number Diff line number Diff line change 6
6
"net/http/httputil"
7
7
"net/url"
8
8
"os"
9
+ "strings"
9
10
10
11
"github.com/go-chi/chi/v5/middleware"
11
12
"github.com/go-redis/redis/v8"
@@ -53,7 +54,16 @@ func NewRouter() http.Handler {
53
54
plexTvUrl , _ := url .Parse ("https://www." + domainPlexTv )
54
55
plexTvProxy := httputil .NewSingleHostReverseProxy (plexTvUrl )
55
56
plexTvRouter := r .Host (domainPlexTv ).Subrouter ()
56
- sslRouter := plexTvRouter .Methods (http .MethodPost ).Path ("/servers.xml" ).Subrouter ()
57
+ sslRouter := plexTvRouter .MatcherFunc (func (r * http.Request , _ * mux.RouteMatch ) bool {
58
+ path := r .URL .EscapedPath ()
59
+ if r .Method == http .MethodPost && path == "/servers.xml" {
60
+ return true
61
+ }
62
+ if r .Method == http .MethodPut && strings .HasPrefix (path , "/devices/" ) {
63
+ return true
64
+ }
65
+ return false
66
+ }).Subrouter ()
57
67
sslRouter .Use (sslMiddleware )
58
68
sslRouter .PathPrefix ("/" ).Handler (plexTvProxy )
59
69
plexTvRouter .PathPrefix ("/" ).Handler (plexTvProxy )
Original file line number Diff line number Diff line change @@ -29,12 +29,19 @@ var (
29
29
func sslMiddleware (next http.Handler ) http.Handler {
30
30
return http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
31
31
if plexClient .sslHost != "" && r .Body != nil {
32
- nr := cloneRequest (r , r .Header , r .URL .Query ())
32
+ name := "Connection[][uri]"
33
+ query := r .URL .Query ()
34
+ if query .Has (name ) {
35
+ query .Set (name , "https://" + plexClient .sslHost )
36
+ }
37
+ nr := cloneRequest (r , r .Header , query )
38
+
33
39
bodyBytes , _ := io .ReadAll (r .Body )
34
40
sslHost := fmt .Sprintf ("address=\" %s\" scheme=\" https\" " , plexClient .sslHost )
35
41
modifiedBody := bytes .ReplaceAll (bodyBytes , []byte ("host=\" \" " ), []byte (sslHost ))
36
42
modifiedBody = reLocalAddresses .ReplaceAll (modifiedBody , []byte ("" ))
37
43
nr .Body = io .NopCloser (bytes .NewReader (modifiedBody ))
44
+
38
45
next .ServeHTTP (w , nr )
39
46
} else {
40
47
next .ServeHTTP (w , r )
You can’t perform that action at this time.
0 commit comments