State-reset and security mitigations.
Upgrade Ruma to present. The following are intentionally benign for activation in a later commit: - Hydra backports not default. - Room version 12 not default. - Room version 12 not listed as stable. Do not enable them manually or you can brick your database. Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
@@ -2,10 +2,19 @@
|
||||
|
||||
use std::iter::once;
|
||||
|
||||
use ruma::{RoomVersionId, api::client::discovery::get_capabilities::RoomVersionStability};
|
||||
use ruma::{RoomVersionId, api::client::discovery::get_capabilities::v3::RoomVersionStability};
|
||||
|
||||
use crate::{at, is_equal_to};
|
||||
|
||||
/// Partially supported non-compliant room versions
|
||||
pub const UNSTABLE_ROOM_VERSIONS: &[RoomVersionId] = &[
|
||||
RoomVersionId::V1,
|
||||
RoomVersionId::V2,
|
||||
RoomVersionId::V3,
|
||||
RoomVersionId::V4,
|
||||
RoomVersionId::V5,
|
||||
];
|
||||
|
||||
/// Supported and stable room versions
|
||||
pub const STABLE_ROOM_VERSIONS: &[RoomVersionId] = &[
|
||||
RoomVersionId::V6,
|
||||
@@ -16,9 +25,8 @@ pub const STABLE_ROOM_VERSIONS: &[RoomVersionId] = &[
|
||||
RoomVersionId::V11,
|
||||
];
|
||||
|
||||
/// Experimental, partially supported room versions
|
||||
pub const UNSTABLE_ROOM_VERSIONS: &[RoomVersionId] =
|
||||
&[RoomVersionId::V2, RoomVersionId::V3, RoomVersionId::V4, RoomVersionId::V5];
|
||||
/// Experimental and prototype room versions under development.
|
||||
pub const EXPERIMENTAL_ROOM_VERSIONS: &[RoomVersionId] = &[RoomVersionId::V12];
|
||||
|
||||
type RoomVersion = (RoomVersionId, RoomVersionStability);
|
||||
|
||||
@@ -31,8 +39,15 @@ impl crate::Server {
|
||||
|
||||
#[inline]
|
||||
pub fn supported_room_versions(&self) -> impl Iterator<Item = RoomVersionId> + '_ {
|
||||
let experimental_room_versions = EXPERIMENTAL_ROOM_VERSIONS
|
||||
.iter()
|
||||
.cloned()
|
||||
.zip(once(RoomVersionStability::Unstable).cycle())
|
||||
.filter(|_| self.config.allow_experimental_room_versions);
|
||||
|
||||
Self::available_room_versions()
|
||||
.filter(|(_, stability)| self.supported_stability(stability))
|
||||
.chain(experimental_room_versions)
|
||||
.map(at!(0))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user