32 lines
895 B
Markdown
32 lines
895 B
Markdown
# Design note: bridge query routing
|
|
|
|
## Failure mode
|
|
|
|
A public fallback handler that matches every `GET /` request also captures the
|
|
authenticated bridge request because the bridge capability is carried in the
|
|
query string. The service may appear healthy while Telegram clients cannot
|
|
connect.
|
|
|
|
## Required behavior
|
|
|
|
Serve the fallback page only when the request has no query string:
|
|
|
|
```go
|
|
if request.Method == http.MethodGet &&
|
|
request.URL.Path == "/" &&
|
|
request.URL.RawQuery == "" {
|
|
servePublicPage()
|
|
}
|
|
```
|
|
|
|
Requests with bridge parameters, carrier API requests and WebSocket upgrades
|
|
must be proxied to `tproxy-server`.
|
|
|
|
## Verification
|
|
|
|
- the public root returns the fallback page;
|
|
- an authenticated bridge request returns the bridge document and disables
|
|
caching;
|
|
- WebSocket traffic reaches the relay;
|
|
- a healthy admin endpoint is treated as necessary but not sufficient.
|