Merge remote-tracking branch 'upstream/main' into conduwuit-changes
This commit is contained in:
		
						commit
						88e857db7d
					
				@ -26,6 +26,8 @@ Improvements:
 | 
			
		||||
- Add optional cookie field to `session::sso_login*::v3` responses.
 | 
			
		||||
- Add support for local user erasure to `account::deactivate::v3::Request`,
 | 
			
		||||
  according to MSC4025.
 | 
			
		||||
- Allow `discovery::get_supported_versions::v1` to optionally accept
 | 
			
		||||
  authentication, according to MSC4026.
 | 
			
		||||
 | 
			
		||||
# 0.17.4
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -14,7 +14,7 @@ use ruma_common::{
 | 
			
		||||
const METADATA: Metadata = metadata! {
 | 
			
		||||
    method: GET,
 | 
			
		||||
    rate_limited: false,
 | 
			
		||||
    authentication: None,
 | 
			
		||||
    authentication: AccessTokenOptional,
 | 
			
		||||
    history: {
 | 
			
		||||
        1.0 => "/_matrix/client/versions",
 | 
			
		||||
    }
 | 
			
		||||
@ -32,6 +32,9 @@ pub struct Response {
 | 
			
		||||
    pub versions: Vec<String>,
 | 
			
		||||
 | 
			
		||||
    /// Experimental features supported by the server.
 | 
			
		||||
    ///
 | 
			
		||||
    /// Servers can enable some unstable features only for some users, so this
 | 
			
		||||
    /// list might differ when an access token is provided.
 | 
			
		||||
    #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
 | 
			
		||||
    pub unstable_features: BTreeMap<String, bool>,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,7 @@ Breaking changes:
 | 
			
		||||
  If the field is missing, push rules that depend on it will never match. However, this allows to
 | 
			
		||||
  match the `.m.rule.invite_for_me` push rule because usually the `invite_state` doesn't include
 | 
			
		||||
  `m.room.power_levels`.
 | 
			
		||||
- Add support for endpoints that take an optional authentication
 | 
			
		||||
 | 
			
		||||
Improvements:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -484,6 +484,12 @@ pub enum AuthScheme {
 | 
			
		||||
    /// It is recommended to use the header over the query parameter.
 | 
			
		||||
    AccessToken,
 | 
			
		||||
 | 
			
		||||
    /// Authentication is optional, and it is performed by including an access token in the
 | 
			
		||||
    /// `Authentication` http header, or an `access_token` query parameter.
 | 
			
		||||
    ///
 | 
			
		||||
    /// It is recommended to use the header over the query parameter.
 | 
			
		||||
    AccessTokenOptional,
 | 
			
		||||
 | 
			
		||||
    /// Authentication is performed by including X-Matrix signatures in the request headers,
 | 
			
		||||
    /// as defined in the federation API.
 | 
			
		||||
    ServerSignatures,
 | 
			
		||||
 | 
			
		||||
@ -74,6 +74,11 @@ impl Metadata {
 | 
			
		||||
                Some((header::AUTHORIZATION, format!("Bearer {token}").try_into()?))
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            AuthScheme::AccessTokenOptional => match access_token.get_required_for_endpoint() {
 | 
			
		||||
                Some(token) => Some((header::AUTHORIZATION, format!("Bearer {token}").try_into()?)),
 | 
			
		||||
                None => None,
 | 
			
		||||
            },
 | 
			
		||||
 | 
			
		||||
            AuthScheme::ServerSignatures => None,
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,13 @@
 | 
			
		||||
# [unreleased]
 | 
			
		||||
 | 
			
		||||
Bug fixes:
 | 
			
		||||
 | 
			
		||||
- Allow underscores (`_`) when validating MXC URIs.
 | 
			
		||||
  - They have always been allowed in [the spec][mxc validation spec]
 | 
			
		||||
    in order to support URL-safe base64-encoded media IDs.
 | 
			
		||||
 | 
			
		||||
[mxc validation spec]: https://spec.matrix.org/v1.9/client-server-api/#security-considerations-5
 | 
			
		||||
 | 
			
		||||
Improvements:
 | 
			
		||||
 | 
			
		||||
- Point links to the Matrix 1.9 specification
 | 
			
		||||
 | 
			
		||||
@ -18,8 +18,9 @@ pub fn validate(uri: &str) -> Result<NonZeroU8, MxcUriError> {
 | 
			
		||||
    let server_name = &uri[..index];
 | 
			
		||||
    let media_id = &uri[index + 1..];
 | 
			
		||||
    // See: https://spec.matrix.org/v1.9/client-server-api/#security-considerations-5
 | 
			
		||||
    let media_id_is_valid =
 | 
			
		||||
        media_id.bytes().all(|b| matches!(b, b'0'..=b'9' | b'a'..=b'z' | b'A'..=b'Z' | b'-' ));
 | 
			
		||||
    let media_id_is_valid = media_id
 | 
			
		||||
        .bytes()
 | 
			
		||||
        .all(|b| matches!(b, b'0'..=b'9' | b'a'..=b'z' | b'A'..=b'Z' | b'-' | b'_' ));
 | 
			
		||||
 | 
			
		||||
    if !media_id_is_valid {
 | 
			
		||||
        Err(MxcUriError::MediaIdMalformed)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user