Repository navigation
The event listener authenticates with the message bus - #2
Merged
Merged
Conversation
inkly
commented
Sep 22, 2026
Collaborator
- The websocket listener sends the boot's secret in its handshake (to a loopback bus only) and reads it again at each reconnection; it also dials again when the subscription drops.
- The access log writes the path, not the URI: websocket routes take tokens from the query.
- CasaOS-Common v0.4.27.
Picks up InternalAuthorization, which the message bus subscription now needs, and the start-script runner that keeps going after a failure. Nothing else in this service uses the changed APIs.
… bus The message bus now refuses a subscription without the box's internal secret. The websocket handshake is built with websocket.NewConfig and carries Authorization: Internal <secret> when the gateway has written one. The secret is read at each dial, since a restarted gateway rewrites it; with no secret file (an older gateway) the handshake goes without it, as before.
When the bus closed the websocket, the read loop kept going with an empty message and dereferenced a nil event UUID, which took the whole service down; the listener only came back through the process restart. A read error now closes the connection and goes back to the dial loop, which reads the internal secret again, so a gateway restart that rewrote it is picked up. A successful subscription resets the retry budget, as the restart used to. Events are read as whole websocket messages instead of 1024-byte chunks, so a larger event is no longer split into two invalid halves, and an event that does not parse or has no UUID is logged and skipped.
The test's handshake waits for the go-ahead; closing that channel first on the way out lets a failed run shut the server down instead of blocking until the test timeout.
Websocket routes take the user's token from the query string, since a browser cannot set a header on a websocket, and echo's default access log writes the request URI, query included: users' tokens went to the journal. The access log now writes the path, as the message bus does.
The listener sent the boot's secret to whatever host message-bus.url names. Common's clients only ever send it to loopback addresses; so does this one.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.