Expose unix timestamp on /listeners
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
78377bc860
commit
eec79cb3ab
|
@ -113,10 +113,12 @@ Drops the listener connection with `listener_id` specified as a parameter.
|
||||||
```
|
```
|
||||||
|
|
||||||
### `CHANGED` GET /listeners
|
### `CHANGED` GET /listeners
|
||||||
Same as kawa's, but `identifier` is added to each listener entry.
|
Same as kawa's, but `identifier` and `start` is added to each listener entry.
|
||||||
|
|
||||||
The listener `identifier` is generated based on user connection address, port, user-agent and mount.
|
The listener `identifier` is generated based on user connection address, port, user-agent and mount.
|
||||||
|
|
||||||
|
The `start` field denotes the unix time this listener connected.
|
||||||
|
|
||||||
Additionally, a `x-listener-identifier` header is exposed to mount response.
|
Additionally, a `x-listener-identifier` header is exposed to mount response.
|
||||||
|
|
||||||
#### Response
|
#### Response
|
||||||
|
@ -126,6 +128,7 @@ Additionally, a `x-listener-identifier` header is exposed to mount response.
|
||||||
"identifier": "641df131cb52f8f6381d9946cccb822e",
|
"identifier": "641df131cb52f8f6381d9946cccb822e",
|
||||||
"mount": "stream.flac",
|
"mount": "stream.flac",
|
||||||
"path": "/stream.flac",
|
"path": "/stream.flac",
|
||||||
|
"start": 1661283903,
|
||||||
"headers": [
|
"headers": [
|
||||||
{
|
{
|
||||||
"name": "User-Agent",
|
"name": "User-Agent",
|
||||||
|
|
1
mount.go
1
mount.go
|
@ -25,6 +25,7 @@ type ListenerInformation struct {
|
||||||
Identifier string `json:"identifier"`
|
Identifier string `json:"identifier"`
|
||||||
Mount string `json:"mount"`
|
Mount string `json:"mount"`
|
||||||
Path string `json:"path"`
|
Path string `json:"path"`
|
||||||
|
Start int64 `json:"start"`
|
||||||
Headers []HeaderEntry `json:"headers"`
|
Headers []HeaderEntry `json:"headers"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
4
queue.go
4
queue.go
|
@ -949,7 +949,8 @@ func (q *Queue) HandleRadioRequest(writer http.ResponseWriter, request *http.Req
|
||||||
|
|
||||||
wgClient.Add(1)
|
wgClient.Add(1)
|
||||||
|
|
||||||
hashSum := sha256.Sum256([]byte(fmt.Sprintf("%s-%s-%s-%s", request.RequestURI, request.RemoteAddr, request.Proto, request.Header.Get("user-agent"))))
|
startStamp := time.Now().Unix()
|
||||||
|
hashSum := sha256.Sum256([]byte(fmt.Sprintf("%s-%s-%s-%s-%d", request.RequestURI, request.RemoteAddr, request.Proto, request.Header.Get("user-agent"), startStamp)))
|
||||||
listenerIdentifier := hex.EncodeToString(hashSum[16:])
|
listenerIdentifier := hex.EncodeToString(hashSum[16:])
|
||||||
|
|
||||||
writer.Header().Set("x-listener-identifier", listenerIdentifier)
|
writer.Header().Set("x-listener-identifier", listenerIdentifier)
|
||||||
|
@ -960,6 +961,7 @@ func (q *Queue) HandleRadioRequest(writer http.ResponseWriter, request *http.Req
|
||||||
Mount: mount.Mount,
|
Mount: mount.Mount,
|
||||||
Path: uriPath,
|
Path: uriPath,
|
||||||
Headers: headers,
|
Headers: headers,
|
||||||
|
Start: startStamp,
|
||||||
},
|
},
|
||||||
Start: func(packets []packetizer.Packet) error {
|
Start: func(packets []packetizer.Packet) error {
|
||||||
log.Printf("adding %s client to stream %s (%s, %s, agent \"%s\", buffer %.2f seconds)\n", listenerIdentifier, mount.Mount, request.RemoteAddr, request.Proto, request.Header.Get("user-agent"), float64(sampleBufferLimit)/float64(mount.SampleRate))
|
log.Printf("adding %s client to stream %s (%s, %s, agent \"%s\", buffer %.2f seconds)\n", listenerIdentifier, mount.Mount, request.RemoteAddr, request.Proto, request.Header.Get("user-agent"), float64(sampleBufferLimit)/float64(mount.SampleRate))
|
||||||
|
|
Loading…
Reference in a new issue