Merge branch 'dev' into cluster

This commit is contained in:
Ingo Oppermann
2023-05-05 15:56:26 +02:00
7 changed files with 64 additions and 44 deletions

View File

@@ -13,6 +13,10 @@
- Fix purging default file from HTTP cache - Fix purging default file from HTTP cache
- Fix parsing S3 storage definition from environment variable - Fix parsing S3 storage definition from environment variable
- Fix checking length of CPU time array ([#10](https://github.com/datarhei/core/issues/10)) - Fix checking length of CPU time array ([#10](https://github.com/datarhei/core/issues/10))
- Fix possible infinite loop with HLS session rewriter
- Fix not propagating process limits
- Fix URL validation if the path contains FFmpeg specific placeholders
- Fix RTMP DoS attack (thx Johannes Frank)
- Deprecate ENV names that do not correspond to JSON name - Deprecate ENV names that do not correspond to JSON name
### Core v16.11.0 > v16.12.0 ### Core v16.11.0 > v16.12.0

View File

@@ -2172,6 +2172,10 @@ const docTemplate = `{
"looping": { "looping": {
"type": "boolean" "type": "boolean"
}, },
"looping_runtime": {
"type": "integer",
"format": "uint64"
},
"output": { "output": {
"$ref": "#/definitions/api.AVstreamIO" "$ref": "#/definitions/api.AVstreamIO"
}, },

View File

@@ -2165,6 +2165,10 @@
"looping": { "looping": {
"type": "boolean" "type": "boolean"
}, },
"looping_runtime": {
"type": "integer",
"format": "uint64"
},
"output": { "output": {
"$ref": "#/definitions/api.AVstreamIO" "$ref": "#/definitions/api.AVstreamIO"
}, },

View File

@@ -22,6 +22,9 @@ definitions:
$ref: '#/definitions/api.AVstreamIO' $ref: '#/definitions/api.AVstreamIO'
looping: looping:
type: boolean type: boolean
looping_runtime:
format: uint64
type: integer
output: output:
$ref: '#/definitions/api.AVstreamIO' $ref: '#/definitions/api.AVstreamIO'
queue: queue:

View File

@@ -59,33 +59,35 @@ func (avio *ffmpegAVstreamIO) export() app.AVstreamIO {
} }
type ffmpegAVstream struct { type ffmpegAVstream struct {
Input ffmpegAVstreamIO `json:"input"` Input ffmpegAVstreamIO `json:"input"`
Output ffmpegAVstreamIO `json:"output"` Output ffmpegAVstreamIO `json:"output"`
Address string `json:"id"` Address string `json:"id"`
URL string `json:"url"` URL string `json:"url"`
Stream uint64 `json:"stream"` Stream uint64 `json:"stream"`
Aqueue uint64 `json:"aqueue"` Aqueue uint64 `json:"aqueue"`
Queue uint64 `json:"queue"` Queue uint64 `json:"queue"`
Dup uint64 `json:"dup"` Dup uint64 `json:"dup"`
Drop uint64 `json:"drop"` Drop uint64 `json:"drop"`
Enc uint64 `json:"enc"` Enc uint64 `json:"enc"`
Looping bool `json:"looping"` Looping bool `json:"looping"`
Duplicating bool `json:"duplicating"` LoopingRuntime uint64 `json:"looping_runtime"`
GOP string `json:"gop"` Duplicating bool `json:"duplicating"`
GOP string `json:"gop"`
} }
func (av *ffmpegAVstream) export() *app.AVstream { func (av *ffmpegAVstream) export() *app.AVstream {
return &app.AVstream{ return &app.AVstream{
Aqueue: av.Aqueue, Aqueue: av.Aqueue,
Queue: av.Queue, Queue: av.Queue,
Drop: av.Drop, Drop: av.Drop,
Dup: av.Dup, Dup: av.Dup,
Enc: av.Enc, Enc: av.Enc,
Looping: av.Looping, Looping: av.Looping,
Duplicating: av.Duplicating, LoopingRuntime: av.LoopingRuntime,
GOP: av.GOP, Duplicating: av.Duplicating,
Input: av.Input.export(), GOP: av.GOP,
Output: av.Output.export(), Input: av.Input.export(),
Output: av.Output.export(),
} }
} }

View File

@@ -23,16 +23,17 @@ func (i *AVstreamIO) Unmarshal(io *app.AVstreamIO) {
} }
type AVstream struct { type AVstream struct {
Input AVstreamIO `json:"input"` Input AVstreamIO `json:"input"`
Output AVstreamIO `json:"output"` Output AVstreamIO `json:"output"`
Aqueue uint64 `json:"aqueue" format:"uint64"` Aqueue uint64 `json:"aqueue" format:"uint64"`
Queue uint64 `json:"queue" format:"uint64"` Queue uint64 `json:"queue" format:"uint64"`
Dup uint64 `json:"dup" format:"uint64"` Dup uint64 `json:"dup" format:"uint64"`
Drop uint64 `json:"drop" format:"uint64"` Drop uint64 `json:"drop" format:"uint64"`
Enc uint64 `json:"enc" format:"uint64"` Enc uint64 `json:"enc" format:"uint64"`
Looping bool `json:"looping"` Looping bool `json:"looping"`
Duplicating bool `json:"duplicating"` LoopingRuntime uint64 `json:"looping_runtime" format:"uint64"`
GOP string `json:"gop"` Duplicating bool `json:"duplicating"`
GOP string `json:"gop"`
} }
func (a *AVstream) Unmarshal(av *app.AVstream) { func (a *AVstream) Unmarshal(av *app.AVstream) {
@@ -46,6 +47,7 @@ func (a *AVstream) Unmarshal(av *app.AVstream) {
a.Drop = av.Drop a.Drop = av.Drop
a.Enc = av.Enc a.Enc = av.Enc
a.Looping = av.Looping a.Looping = av.Looping
a.LoopingRuntime = av.LoopingRuntime
a.Duplicating = av.Duplicating a.Duplicating = av.Duplicating
a.GOP = av.GOP a.GOP = av.GOP

View File

@@ -3,19 +3,20 @@ package app
type AVstreamIO struct { type AVstreamIO struct {
State string State string
Packet uint64 // counter Packet uint64 // counter
Time uint64 Time uint64 // sec
Size uint64 // bytes Size uint64 // bytes
} }
type AVstream struct { type AVstream struct {
Input AVstreamIO Input AVstreamIO
Output AVstreamIO Output AVstreamIO
Aqueue uint64 // gauge Aqueue uint64 // gauge
Queue uint64 // gauge Queue uint64 // gauge
Dup uint64 // counter Dup uint64 // counter
Drop uint64 // counter Drop uint64 // counter
Enc uint64 // counter Enc uint64 // counter
Looping bool Looping bool
Duplicating bool LoopingRuntime uint64 // sec
GOP string Duplicating bool
GOP string
} }