fix authentication with vlc

This commit is contained in:
aler9
2020-07-09 22:44:08 +02:00
parent c135ce3c61
commit 04b0a6eabe
2 changed files with 19 additions and 11 deletions

14
auth.go
View File

@@ -144,22 +144,16 @@ func (as *AuthServer) ValidateHeader(header []string, method Method, ur *url.URL
uri := ur.String()
if inUri != uri {
// VLC strips any subpath
// VLC strips the subpath
newUrl := *ur
newUrl.Path = func() string {
ret := newUrl.Path
// remove leading slash
if len(ret) > 1 {
ret = ret[1:]
if n := strings.Index(ret[1:], "/"); n >= 0 {
ret = ret[:n+2]
}
// strip any subpath
if n := strings.Index(ret, "/"); n >= 0 {
ret = ret[:n]
}
return "/" + ret
return ret
}()
uri = newUrl.String()

View File

@@ -25,7 +25,7 @@ var casesAuth = []struct {
},
}
func TestAuth(t *testing.T) {
func TestAuthMethods(t *testing.T) {
for _, c := range casesAuth {
t.Run(c.name, func(t *testing.T) {
authServer := NewAuthServer("testuser", "testpass", c.methods)
@@ -42,3 +42,17 @@ func TestAuth(t *testing.T) {
})
}
}
func TestAuthBasePath(t *testing.T) {
authServer := NewAuthServer("testuser", "testpass", []AuthMethod{Basic, Digest})
wwwAuthenticate := authServer.GenerateHeader()
ac, err := NewAuthClient(wwwAuthenticate, "testuser", "testpass")
require.NoError(t, err)
authorization := ac.GenerateHeader(ANNOUNCE,
&url.URL{Scheme: "rtsp", Host: "myhost", Path: "mypath/"})
err = authServer.ValidateHeader(authorization, ANNOUNCE,
&url.URL{Scheme: "rtsp", Host: "myhost", Path: "mypath/trackId=0"})
require.NoError(t, err)
}