fix: Add admin command to ensure all appservice puppets are active

This commit is contained in:
Ginger authored and Ellis Git committed 2026-07-11 14:55:43 +00:00
1 parent f55207d5c7
commit 0b1e24a9ad
6 files changed
+41 -4

No files matched your search

+25
View File
@@ -73,4 +73,29 @@ impl crate::Context<'_> {
})
.await
}
pub(super) async fn ensure_puppets_active(&self) -> Result {
self.services
.users
.stream_local_users()
.filter_map(async |user_id| {
if self.services.appservice.is_user_id(&user_id).await {
Some(user_id)
} else {
None
}
})
.for_each(async |user_id| {
self.services
.users
.convert_to_shadow_account(&user_id)
.await
.expect("should be able to convert to shadow");
})
.await;
write!(self, "All appservice puppets have been marked as active.").await?;
Ok(())
}
}
+6
View File
@@ -37,4 +37,10 @@ pub enum AppserviceCommand {
/// List all the currently registered appservices
#[clap(alias("list"))]
ListRegistered,
/// Ensure no appservice puppets are marked as deactivated.
/// This is a debug command to fix issues caused by a faulty database
/// migration in Continuwuity 26.6.0.
#[clap(hide = true)]
EnsurePuppetsActive,
}
+1 -1
View File
@@ -107,7 +107,7 @@ async fn route_complete(
let supplied_user_id = if let Some(form) = form {
if let Ok(user_id) = UserId::parse(format!(
"@{}:{}",
&form.username,
form.username,
services.globals.server_name()
)) && services.users.status(&user_id).await.is_active()
{