A token passed as `?token=` was accepted on every route, so it ended
up in the request log (and journald), browser history and Referer.
- drop `?token=` from _check_auth; API and download routes now take
only the cookie or an Authorization: Bearer header
- keep pre-authenticated links working: on the index route a valid
`?token=` is swapped for the cookie and redirected to a clean URL,
so the secret does not linger in the address bar
- redact `token=` from log output
- send Referrer-Policy: no-referrer, and mark the cookie Secure
Cyrillic names arrived as question marks and were stored that way.
Upload: BytesParser defaults to the compat32 policy, which wraps a
non-ASCII Content-Disposition in a Header with the unknown-8bit
charset, so get_filename() returned one replacement character per
UTF-8 byte and the mangled name was written to disk. Parse with
policy=HTTP, which decodes headers as UTF-8.
Download: send_header() encodes latin-1 strict, so a Cyrillic name
raised UnicodeEncodeError. Emit both Content-Disposition forms per
RFC 5987 — an ASCII fallback plus percent-encoded filename*.