feat: validate proxy targets during signing and proxy fetch
This commit is contained in:
@@ -8,8 +8,8 @@ import (
|
||||
"time"
|
||||
|
||||
"mal/internal/domain"
|
||||
"mal/internal/playback/proxytarget"
|
||||
"mal/internal/server"
|
||||
netutil "mal/pkg/net"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
@@ -27,8 +27,8 @@ func NewPlaybackHandler(svc domain.PlaybackService, animeSvc domain.AnimePlaybac
|
||||
return &PlaybackHandler{
|
||||
svc: svc,
|
||||
animeSvc: animeSvc,
|
||||
proxyClient: netutil.NewClient(),
|
||||
streamingClient: netutil.NewStreamingClient(),
|
||||
proxyClient: proxytarget.NewClient(60 * time.Second),
|
||||
streamingClient: proxytarget.NewStreamingClient(),
|
||||
subtitleCache: newSubtitleCache(10*time.Minute, 256),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"mal/internal/observability"
|
||||
"mal/internal/playback/proxytarget"
|
||||
netutil "mal/pkg/net"
|
||||
"net/http"
|
||||
|
||||
@@ -11,6 +12,10 @@ import (
|
||||
)
|
||||
|
||||
func newProxyRequest(ctx context.Context, targetURL string, referer string) (*http.Request, error) {
|
||||
if err := proxytarget.Validate(targetURL); err != nil {
|
||||
return nil, fmt.Errorf("validate proxy target %q: %w", targetURL, err)
|
||||
}
|
||||
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, targetURL, nil)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("build proxy request for %q: %w", targetURL, err)
|
||||
|
||||
Reference in New Issue
Block a user