make a media section in the config file

This commit is contained in:
Charles Hall 2025-02-28 10:40:26 -08:00
parent f6b0a10e6e
commit 0a6d2b2731
No known key found for this signature in database
GPG key ID: 7B8E0645816E07CF
4 changed files with 15 additions and 7 deletions

View file

@ -138,9 +138,10 @@ This will be the first release of Grapevine since it was forked from Conduit
10. Try to generate thumbnails for remote media ourselves if the federation 10. Try to generate thumbnails for remote media ourselves if the federation
thumbnail request fails. thumbnail request fails.
([!58](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/58)) ([!58](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/58))
11. **BREAKING:** Disable unauthenticated access to media by default, set the 11. **BREAKING:** Disable unauthenticated access to media by default. Use
`serve_media_unauthenticated` config option to `true` to enable it. `media.serve_media_unauthenticated` to configure this behavior.
([!103](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/103)) ([!103](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/103),
[!140](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/140))
12. **BREAKING:** Split CLI into multiple subcommands. The CLI invocation to run 12. **BREAKING:** Split CLI into multiple subcommands. The CLI invocation to run
the server is now behind the `serve` command, so `grapevine --config ...` the server is now behind the `serve` command, so `grapevine --config ...`
becomes `grapevine serve --config ...`. becomes `grapevine serve --config ...`.

View file

@ -443,7 +443,7 @@ fn legacy_media_routes(config: &Config) -> Router {
// deprecated, but unproblematic // deprecated, but unproblematic
let router = router.ruma_route(c2s::get_media_config_legacy_route); let router = router.ruma_route(c2s::get_media_config_legacy_route);
if config.serve_media_unauthenticated { if config.media.serve_media_unauthenticated {
router router
.ruma_route(c2s::get_content_legacy_route) .ruma_route(c2s::get_content_legacy_route)
.ruma_route(c2s::get_content_as_filename_legacy_route) .ruma_route(c2s::get_content_as_filename_legacy_route)

View file

@ -45,6 +45,8 @@ pub(crate) struct Config {
pub(crate) server_discovery: ServerDiscovery, pub(crate) server_discovery: ServerDiscovery,
pub(crate) database: DatabaseConfig, pub(crate) database: DatabaseConfig,
#[serde(default)] #[serde(default)]
pub(crate) media: MediaConfig,
#[serde(default)]
pub(crate) federation: FederationConfig, pub(crate) federation: FederationConfig,
#[serde(default)] #[serde(default)]
pub(crate) cache: CacheConfig, pub(crate) cache: CacheConfig,
@ -59,8 +61,6 @@ pub(crate) struct Config {
pub(crate) allow_encryption: bool, pub(crate) allow_encryption: bool,
#[serde(default = "true_fn")] #[serde(default = "true_fn")]
pub(crate) allow_room_creation: bool, pub(crate) allow_room_creation: bool,
#[serde(default = "false_fn")]
pub(crate) serve_media_unauthenticated: bool,
#[serde(default = "default_default_room_version")] #[serde(default = "default_default_room_version")]
pub(crate) default_room_version: RoomVersionId, pub(crate) default_room_version: RoomVersionId,
#[serde(default)] #[serde(default)]
@ -74,6 +74,13 @@ pub(crate) struct Config {
pub(crate) emergency_password: Option<String>, pub(crate) emergency_password: Option<String>,
} }
#[derive(Debug, Deserialize, Default)]
#[serde(deny_unknown_fields)]
pub(crate) struct MediaConfig {
#[serde(default)]
pub(crate) serve_media_unauthenticated: bool,
}
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields, default)] #[serde(deny_unknown_fields, default)]
pub(crate) struct CacheConfig { pub(crate) struct CacheConfig {

View file

@ -8,4 +8,4 @@ Error: failed to validate configuration
| |
1 | some_name = "example.com" 1 | some_name = "example.com"
| ^^^^^^^^^ | ^^^^^^^^^
unknown field `some_name`, expected one of `conduit_compat`, `listen`, `tls`, `server_name`, `server_discovery`, `database`, `federation`, `cache`, `cleanup_second_interval`, `max_request_size`, `allow_registration`, `registration_token`, `allow_encryption`, `allow_room_creation`, `serve_media_unauthenticated`, `default_room_version`, `proxy`, `jwt_secret`, `observability`, `turn`, `emergency_password` unknown field `some_name`, expected one of `conduit_compat`, `listen`, `tls`, `server_name`, `server_discovery`, `database`, `media`, `federation`, `cache`, `cleanup_second_interval`, `max_request_size`, `allow_registration`, `registration_token`, `allow_encryption`, `allow_room_creation`, `default_room_version`, `proxy`, `jwt_secret`, `observability`, `turn`, `emergency_password`