3396 Commits
Author SHA1 Message Date
QiuSW 9068712bb1 feat(admin): add complete device pagination (#6)
lint / go (push) Canceled after 0s
lint / go_mod (push) Canceled after 0s
lint / conf (push) Canceled after 0s
lint / docslinks (push) Canceled after 0s
lint / docsorder (push) Canceled after 0s
lint / apidocs (push) Canceled after 0s
lint / other (push) Canceled after 0s
test / test_64 (push) Canceled after 0s
test / test_32 (push) Canceled after 0s
test / test_e2e (push) Canceled after 0s
2026-08-28 16:48:17 +08:00
QiuSW c578e0c554 style(admin): refine compact device list (#5)
lint / go (push) Canceled after 0s
lint / go_mod (push) Canceled after 0s
lint / conf (push) Canceled after 0s
lint / docslinks (push) Canceled after 0s
lint / docsorder (push) Canceled after 0s
lint / apidocs (push) Canceled after 0s
lint / other (push) Canceled after 0s
test / test_64 (push) Canceled after 0s
test / test_32 (push) Canceled after 0s
test / test_e2e (push) Canceled after 0s
2026-08-28 15:22:09 +08:00
QiuSW 4326bc5a78 style(admin): compact dashboard header (#5)
lint / go (push) Canceled after 0s
lint / go_mod (push) Canceled after 0s
lint / conf (push) Canceled after 0s
lint / docslinks (push) Canceled after 0s
lint / docsorder (push) Canceled after 0s
lint / apidocs (push) Canceled after 0s
lint / other (push) Canceled after 0s
test / test_64 (push) Canceled after 0s
test / test_32 (push) Canceled after 0s
test / test_e2e (push) Canceled after 0s
2026-08-28 14:25:00 +08:00
QiuSW 18f5196c13 feat(api): add lightweight admin login (#4)
lint / go (push) Canceled after 0s
lint / go_mod (push) Canceled after 0s
lint / conf (push) Canceled after 0s
lint / docslinks (push) Canceled after 0s
lint / docsorder (push) Canceled after 0s
lint / apidocs (push) Canceled after 0s
lint / other (push) Canceled after 0s
test / test_64 (push) Canceled after 0s
test / test_32 (push) Canceled after 0s
test / test_e2e (push) Canceled after 0s
2026-08-28 12:14:41 +08:00
QiuSW 6465a11074 feat: add embedded RTSP admin console (#3)
lint / go (push) Canceled after 0s
lint / go_mod (push) Canceled after 0s
lint / conf (push) Canceled after 0s
lint / docslinks (push) Canceled after 0s
lint / docsorder (push) Canceled after 0s
lint / apidocs (push) Canceled after 0s
lint / other (push) Canceled after 0s
test / test_64 (push) Canceled after 0s
test / test_32 (push) Canceled after 0s
test / test_e2e (push) Canceled after 0s
2026-08-28 11:24:47 +08:00
QiuSW a3ca54cae4 docs: track RTSP admin implementation (#3)
lint / go (push) Canceled after 0s
lint / go_mod (push) Canceled after 0s
lint / conf (push) Canceled after 0s
lint / docslinks (push) Canceled after 0s
lint / docsorder (push) Canceled after 0s
lint / apidocs (push) Canceled after 0s
lint / other (push) Canceled after 0s
test / test_64 (push) Canceled after 0s
test / test_32 (push) Canceled after 0s
test / test_e2e (push) Canceled after 0s
2026-08-28 10:48:45 +08:00
QiuSW 1502281e52 docs: record RTSP UI prototype approval
lint / go (push) Canceled after 0s
lint / go_mod (push) Canceled after 0s
lint / conf (push) Canceled after 0s
lint / docslinks (push) Canceled after 0s
lint / docsorder (push) Canceled after 0s
lint / apidocs (push) Canceled after 0s
lint / other (push) Canceled after 0s
test / test_64 (push) Canceled after 0s
test / test_32 (push) Canceled after 0s
test / test_e2e (push) Canceled after 0s
2026-08-28 10:41:25 +08:00
QiuSW ca667251d2 chore: adopt DevHarness workflow (#1)
lint / go (push) Canceled after 0s
lint / go_mod (push) Canceled after 0s
lint / conf (push) Canceled after 0s
lint / docslinks (push) Canceled after 0s
lint / docsorder (push) Canceled after 0s
lint / apidocs (push) Canceled after 0s
lint / other (push) Canceled after 0s
test / test_64 (push) Canceled after 0s
test / test_32 (push) Canceled after 0s
test / test_e2e (push) Canceled after 0s
2026-08-28 10:11:59 +08:00
Alessandro RosandGitHub 2328e51a21 test: fix race condition (#6144) 2026-08-27 13:48:22 +00:00
Alessandro RosandGitHub 04a133290b test: convert more tests to black-box style (#6139) 2026-08-27 10:15:31 +00:00
Alessandro RosandGitHub f651e951fb bump Docker RPI images to Debian Trixie (#6143) 2026-08-27 10:15:21 +00:00
bluenviron-botandGitHub 17f4328eaf bump mediamtx-rpicamera to v2.9.0 (#6142) 2026-08-27 12:10:26 +02:00
Alessandro RosandGitHub 3fef488eea drop support for Debian Bullseye (#6137)
Bullseye reached EOL on 31st august 2026.
2026-08-27 09:50:42 +02:00
cf5cd38cf9 webrtc: fix deprecated webrtcICEServers parser for IPv6 hosts; (#5932)
strings.Split produces wrong part count when the host contains colons
(IPv6). SplitN(s, ";", 4) keeps the hostport token intact.

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-08-25 06:55:05 +00:00
Alessandro RosandGitHub 3f2b3cd3f5 support setting read buffer size on macOS (#6128) (#6131) 2026-08-25 06:19:31 +00:00
Hudson CavazinandGitHub ccf1b61e20 httpp: propagate Flush() through the response writer wrappers (#6126)
handlerLogger's responseRecorder and handlerWriteTimeout's writeTimeoutWriter
both wrap http.ResponseWriter but implement neither http.Flusher nor Unwrap().
Any handler that flushes mid-response has that flush silently dropped, and its
output only reaches the client when the handler returns.

That defeats the stated purpose of writeTimeoutWriter, whose own comment says it
exists so one can "write long responses, splitted in chunks, without causing
timeouts": the deadline is reset per Write(), but nothing ever leaves the buffer
until the end.

Found while adding a server-sent-events endpoint: events written and flushed at
t=0.4s only reached the client at t=2.2s, when the handler returned.

Adding Flush() plus Unwrap() (so http.ResponseController can reach through) fixes
both. The new test drives a real listener through both wrappers and reads while
the handler is still blocked, so it fails on the current code by hitting the read
deadline.
2026-08-24 14:40:43 +00:00
55d319abfc webrtc: Register RTX for incoming video tracks (#6125)
webrtc.ConfigureNack() only wires up the NACK RTCP interceptor. pion
still needs an explicit RTX codec registered per media codec before it
can answer a publisher's retransmission offer with one, so
incomingVideoCodecs having none means NACK-triggered retransmission
can never actually happen for incoming video, no matter what the
publisher offers.

Fixes #5678

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-08-24 14:40:20 +00:00
bluenviron-botandGitHub 7bf901ea9a bump hls.js to v1.7.1 (#6130) 2026-08-23 12:28:04 +02:00
Alessandro RosandGitHub 6c1463bbd8 docs: add YouTube and Twitch instructions (#6133) 2026-08-23 10:36:25 +02:00
3e09466c18 bump golangci-lint to 2.13.1 (#6129)
* bump golangci-lint to 2.13.1

* additional changes

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-08-22 16:57:28 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f6625b9e5f build(deps): bump code.cloudfoundry.org/bytefmt from 0.85.0 to 0.86.0 (#6127)
Bumps [code.cloudfoundry.org/bytefmt](https://github.com/cloudfoundry/bytefmt) from 0.85.0 to 0.86.0.
- [Release notes](https://github.com/cloudfoundry/bytefmt/releases)
- [Commits](https://github.com/cloudfoundry/bytefmt/compare/v0.85.0...v0.86.0)

---
updated-dependencies:
- dependency-name: code.cloudfoundry.org/bytefmt
  dependency-version: 0.86.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-22 07:02:07 +02:00
bluenviron-botandGitHub 4d842abb1e bump golangci-lint to 2.13.1 (#6120) 2026-08-21 16:59:00 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
713cd76074 build(deps): bump github.com/stretchr/testify from 1.12.0 to 1.12.1 (#6123)
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.12.0 to 1.12.1.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.12.0...v1.12.1)

---
updated-dependencies:
- dependency-name: github.com/stretchr/testify
  dependency-version: 1.12.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-21 07:02:34 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5c9014b022 build(deps): bump github.com/matthewhartstonge/argon2 (#6124)
Bumps [github.com/matthewhartstonge/argon2](https://github.com/matthewhartstonge/argon2) from 1.5.6 to 1.5.7.
- [Release notes](https://github.com/matthewhartstonge/argon2/releases)
- [Changelog](https://github.com/matthewhartstonge/argon2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/matthewhartstonge/argon2/compare/v1.5.6...v1.5.7)

---
updated-dependencies:
- dependency-name: github.com/matthewhartstonge/argon2
  dependency-version: 1.5.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-21 07:02:28 +02:00
Alessandro RosandGitHub 9934156a0f use internal/core/VERSION as single source of truth to get version (#6119) 2026-08-19 20:40:50 +02:00
Alessandro RosandGitHub 883194a19b bump dependencies (#6113) 2026-08-18 11:53:43 +00:00
Alessandro RosandGitHub 8ac6ba64c8 moq: support pulling streams from other servers (#6111) 2026-08-18 13:23:40 +02:00
Alessandro RosandGitHub 31a054b79d moq: impose maximum size on pending reordered bytes (#6112)
Decrease the maximum memory that clients can take by imposing a maximum
size of 100MB on the pending reordered bytes.
2026-08-18 12:49:38 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c59aac9c02 build(deps): bump github.com/stretchr/testify from 1.11.1 to 1.12.0 (#6104)
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.11.1 to 1.12.0.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.11.1...v1.12.0)

---
updated-dependencies:
- dependency-name: github.com/stretchr/testify
  dependency-version: 1.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 12:42:59 +02:00
Alessandro RosandGitHub 89e3060db0 api: redact password in responses (#6110)
passwords are not exposed anymore through the API. They can only be
set, not read.
2026-08-18 12:16:57 +02:00
Alessandro RosandGitHub f5bbf2bd8e docs: prevent gaps in numbering (#6109) 2026-08-18 09:33:32 +00:00
Alessandro RosandGitHub 5fb93cceaf prevent again security warning about 'Zip Slip' in RPI camera downloader (#6108) 2026-08-18 07:49:58 +00:00
Alessandro RosandGitHub 5d877b4512 moq: make /moq URL suffix optional (#6107)
In order to establish a MoQ session with WebTransport, a /moq suffix
was required until now. This is now optional in order to allow
connecting to the server with the standard MoQ URL format.
2026-08-18 07:43:51 +00:00
Alessandro RosandGitHub b80737c122 add destFingerprint parameter (#6106)
this allows to validate self-signed certificates of forward
destinations.
2026-08-18 09:35:37 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
b39d0af7f1 build(deps): bump github.com/asticode/go-astits from 1.15.0 to 1.16.0 (#6105)
Bumps [github.com/asticode/go-astits](https://github.com/asticode/go-astits) from 1.15.0 to 1.16.0.
- [Commits](https://github.com/asticode/go-astits/compare/v1.15.0...v1.16.0)

---
updated-dependencies:
- dependency-name: github.com/asticode/go-astits
  dependency-version: 1.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 07:02:52 +02:00
Alessandro RosandGitHub cca0f5a0cb change default value of authHTTPExclude (#6103)
by default, do not exclude any action from HTTP authentication. Old
value triggered several security warnings.
2026-08-17 18:30:48 +02:00
Alessandro RosandGitHub a56c635f8e fix deadlock when changing configuration through file and API (#6077) (#6101)
When changing configuration in parallel by editing the configuration
file and calling the API, the server could get into a deadlock that
prevented any further action. This is fixed.
2026-08-17 11:14:01 +00:00
Alessandro RosandGitHub 8657b48a03 srt: restore ability to run tests on most systems (#6102) 2026-08-17 12:26:44 +02:00
Alessandro RosandGitHub 831ed9564b webrtc: support forwarding streams (#6099) 2026-08-16 21:09:59 +02:00
Alessandro RosandGitHub c9f003f247 restore ability to run the server in a read-only file system (#6098)
This was temporarily lost after the introduction of the native MoQ QUIC
listener.
2026-08-16 16:03:37 +02:00
6a40b29538 srt: apply UDP read buffer size from configuration (#6069)
Use upstream datarhei/gosrt's ListenerControl config field
(datarhei/gosrt#144) to set SO_RCVBUF on the SRT listener's UDP socket.

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-08-16 13:27:57 +00:00
Alessandro RosandGitHub f89b0feb28 prevent security warning about "Zip Slip" in RPI camera downloader (#6097) 2026-08-16 11:51:15 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d5ef4b455b build(deps): bump golang.org/x/net from 0.57.0 to 0.58.0 (#6092)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.57.0 to 0.58.0.
- [Commits](https://github.com/golang/net/compare/v0.57.0...v0.58.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.58.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-16 13:29:57 +02:00
Alessandro RosandGitHub 8a327110ee prevent security warning about "Zip Slip" in RPI camera downloader (#6096) 2026-08-16 11:17:03 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2e12e9df11 build(deps): bump golang.org/x/crypto from 0.54.0 to 0.55.0 (#6093)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.54.0 to 0.55.0.
- [Commits](https://github.com/golang/crypto/compare/v0.54.0...v0.55.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-16 13:12:28 +02:00
Alessandro RosandGitHub 550bb297dc fix race condition during sub-stream creation (#6075) (#6095)
When a stream with always-available turned on switches from offline to
online, or from a publisher to another, the reader mutex was not
acquired during writing of codec parameters. This is now fixed.
2026-08-16 11:05:50 +00:00
Alessandro RosandGitHub 309257925e document payload requirements (#6094) 2026-08-16 10:22:31 +00:00
Alessandro RosandGitHub 53acffacb4 hls: stop using cookies with plain HTTP (#6089)
in case of plain HTTP, fall back to query parameters, which are safer than
HTTP cookies because they are not shared between different
pages/domains, although they are visible in the URL.
2026-08-16 10:20:51 +00:00
Alessandro RosandGitHub ee2ff01704 hls: unlock the session-in-query+iOS combination (#6088)
this was previously blocked because the session in query was meant to
be dynamic, therefore incompatible with static playlists required by
iOS. It is not anymore, so we can support that.
2026-08-16 10:11:33 +00:00
Alessandro RosandGitHub 4f78c3f2d6 docs: suggest using playsinline in video tags (#6091) 2026-08-16 10:03:16 +00:00