mirror of
https://github.com/truewhile/MeBox.git
synced 2026-10-04 04:26:38 +08:00
fix emby clients and cloud playback controls
This commit is contained in:
@@ -18,8 +18,8 @@ const EmbyCtxUserID = "emby_user_id"
|
||||
// 按优先级尝试以下认证方式:
|
||||
// 1. X-Emby-Token / X-MediaBrowser-Token 请求头
|
||||
// 2. Authorization: Bearer <token> / MediaBrowser Token="<token>" 请求头
|
||||
// 3. X-Emby-Authorization: MediaBrowser Token="<token>"
|
||||
// 4. ?token= / ?api_key= / ?apiKey= URL 参数
|
||||
// 3. X-Emby-Authorization / X-MediaBrowser-Authorization: MediaBrowser Token="<token>"
|
||||
// 4. ?token= / ?api_key= / ?apiKey= / ?X-Emby-Token= URL 参数
|
||||
func EmbyAuthRequired(secret string) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
token := extractEmbyToken(c)
|
||||
@@ -66,7 +66,7 @@ func extractEmbyToken(c *gin.Context) string {
|
||||
}
|
||||
}
|
||||
|
||||
for _, header := range []string{"Authorization", "X-Emby-Authorization"} {
|
||||
for _, header := range []string{"Authorization", "X-Emby-Authorization", "X-MediaBrowser-Authorization"} {
|
||||
if value := strings.TrimSpace(c.GetHeader(header)); value != "" {
|
||||
if token := tokenFromAuthHeader(value); token != "" {
|
||||
return token
|
||||
@@ -74,7 +74,7 @@ func extractEmbyToken(c *gin.Context) string {
|
||||
}
|
||||
}
|
||||
|
||||
for _, key := range []string{"token", "api_key", "apiKey", "ApiKey"} {
|
||||
for _, key := range []string{"token", "api_key", "apiKey", "ApiKey", "X-Emby-Token", "X-MediaBrowser-Token"} {
|
||||
if value := strings.TrimSpace(c.Query(key)); value != "" {
|
||||
return value
|
||||
}
|
||||
|
||||
@@ -25,7 +25,10 @@ func TestEmbyAuthRequiredAcceptsEmbyClientTokenFormats(t *testing.T) {
|
||||
{name: "x mediabrowser token", headerKey: "X-MediaBrowser-Token", headerVal: token},
|
||||
{name: "authorization mediabrowser token", headerKey: "Authorization", headerVal: `MediaBrowser Client="Infuse", Token="` + token + `"`},
|
||||
{name: "x emby authorization", headerKey: "X-Emby-Authorization", headerVal: `MediaBrowser Client="VidHub", Token="` + token + `"`},
|
||||
{name: "x mediabrowser authorization", headerKey: "X-MediaBrowser-Authorization", headerVal: `MediaBrowser Client="Emby Theater", Token="` + token + `"`},
|
||||
{name: "query api key", query: "?api_key=" + token},
|
||||
{name: "query x emby token", query: "?X-Emby-Token=" + token},
|
||||
{name: "query x mediabrowser token", query: "?X-MediaBrowser-Token=" + token},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
||||
Reference in New Issue
Block a user