Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: urlgen page crash when no DRM config #243

Merged
merged 1 commit into from
Jan 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed

- endNumber in live MPD (Issue #235)
- urlgen page crashed when no DRM configuration

### Chore

Expand Down
16 changes: 10 additions & 6 deletions cmd/livesim2/app/handler_urlgen.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,13 @@ func (s *Server) urlGenHandlerFunc(w http.ResponseWriter, r *http.Request) {
asset := r.URL.Query().Get("asset")
for _, aI := range aInfo.Assets {
if aI.Path == asset {
data.DRMs = drmsFromAssetInfo(aI, s.Cfg.DrmCfg.Packages, "")
data.DRMs = drmsFromAssetInfo(aI, s.Cfg.DrmCfg, "")
data.DRMs[0].Selected = true
}
}
templateName = "drms"
case "/urlgen/create":
data = createURL(r, aInfo, s.Cfg.DrmCfg.Packages)
data = createURL(r, aInfo, s.Cfg.DrmCfg)
default:
data, err = s.createInitData(aInfo)
if err != nil {
Expand All @@ -102,7 +102,11 @@ func mpdsFromAssetInfo(a *assetInfo) []nameWithSelect {
return mpds
}

func drmsFromAssetInfo(a *assetInfo, drmPkgs []*drm.Package, selected string) []nameWithSelect {
func drmsFromAssetInfo(a *assetInfo, drmCfg *drm.DrmConfig, selected string) []nameWithSelect {
if drmCfg == nil {
return nil
}
drmPkgs := drmCfg.Packages
if a != nil && a.PreEncrypted {
return []nameWithSelect{{Name: "None", Selected: true,
Desc: fmt.Sprintf("No DRM choice available because asset %q is pre-encrypted", a.Path)}}
Expand Down Expand Up @@ -201,12 +205,12 @@ func (s *Server) createInitData(aInfo assetsInfo) (data urlGenData, err error) {
data.Assets = append(data.Assets, assetWithSelect{AssetPath: aInfo.Assets[i].Path})
}
data.Host = aInfo.Host
data.DRMs = drmsFromAssetInfo(nil, s.Cfg.DrmCfg.Packages, "")
data.DRMs = drmsFromAssetInfo(nil, s.Cfg.DrmCfg, "")
return data, nil
}

// createURL creates a URL from the request parameters. Errors are returned in ErrorMsg field.
func createURL(r *http.Request, aInfo assetsInfo, drmPkgs []*drm.Package) urlGenData {
func createURL(r *http.Request, aInfo assetsInfo, drmCfg *drm.DrmConfig) urlGenData {
q := r.URL.Query()
var sb strings.Builder // Used to build URL
asset := q.Get("asset")
Expand Down Expand Up @@ -363,7 +367,7 @@ func createURL(r *http.Request, aInfo assetsInfo, drmPkgs []*drm.Package) urlGen
default:
sb.WriteString(fmt.Sprintf("drm_%s/", drm))
}
data.DRMs = drmsFromAssetInfo(aI, drmPkgs, q.Get("drm"))
data.DRMs = drmsFromAssetInfo(aI, drmCfg, q.Get("drm"))
scte35 := q.Get("scte35")
if scte35 != "" {
data.Scte35Var = scte35
Expand Down
Loading