From b0d85bb575b17ad74125220de42b72591cb938f2 Mon Sep 17 00:00:00 2001 From: Charles Hall Date: Wed, 12 Jun 2024 20:38:29 -0700 Subject: [PATCH] use `admin_bot_user_id` more Also change some terminology to be less weird. --- src/database.rs | 31 +++++++++---------------------- src/service/rooms/timeline.rs | 32 ++++++++++++-------------------- 2 files changed, 21 insertions(+), 42 deletions(-) diff --git a/src/database.rs b/src/database.rs index a9f2abc6..f115fd14 100644 --- a/src/database.rs +++ b/src/database.rs @@ -529,21 +529,12 @@ impl KeyValueDatabase { // Matrix resource ownership is based on the server name; changing it // requires recreating the database from scratch. if services().users.count()? > 0 { - let grapevine_user = UserId::parse_with_server_name( - if services().globals.config.conduit_compat { - "conduit" - } else { - "grapevine" - }, - services().globals.server_name(), - ) - .expect("admin bot username should be valid"); - - if !services().users.exists(&grapevine_user)? { + let admin_bot = services().globals.admin_bot_user_id.as_ref(); + if !services().users.exists(admin_bot)? { error!( - "The {} server user does not exist, and the database is \ - not new.", - grapevine_user + "The {} admin bot does not exist, and the database is not \ + new.", + admin_bot ); return Err(Error::bad_database( "Cannot reuse an existing database after changing the \ @@ -1221,25 +1212,21 @@ impl KeyValueDatabase { /// Sets the emergency password and push rules for the @grapevine account in /// case emergency password is set fn set_emergency_access() -> Result { - let grapevine_user = UserId::parse_with_server_name( - "grapevine", - services().globals.server_name(), - ) - .expect("@grapevine:server_name is a valid UserId"); + let admin_bot = services().globals.admin_bot_user_id.as_ref(); services().users.set_password( - &grapevine_user, + admin_bot, services().globals.emergency_password().as_deref(), )?; let (ruleset, res) = match services().globals.emergency_password() { - Some(_) => (Ruleset::server_default(&grapevine_user), Ok(true)), + Some(_) => (Ruleset::server_default(admin_bot), Ok(true)), None => (Ruleset::new(), Ok(false)), }; services().account_data.update( None, - &grapevine_user, + admin_bot, GlobalAccountDataEventType::PushRules.to_string().into(), &serde_json::to_value(&GlobalAccountDataEvent { content: PushRulesEventContent { diff --git a/src/service/rooms/timeline.rs b/src/service/rooms/timeline.rs index 2a0c8882..1cf176a5 100644 --- a/src/service/rooms/timeline.rs +++ b/src/service/rooms/timeline.rs @@ -516,33 +516,25 @@ impl Service { &body, )?; - let server_user = format!( - "@{}:{}", - if services().globals.config.conduit_compat { - "conduit" - } else { - "grapevine" - }, - services().globals.server_name() - ); + let admin_bot = &services().globals.admin_bot_user_id; - let to_grapevine = body - .starts_with(&format!("{server_user}: ")) - || body.starts_with(&format!("{server_user} ")) - || body == format!("{server_user}:") - || body == server_user; + let to_admin_bot = body + .starts_with(&format!("{admin_bot}: ")) + || body.starts_with(&format!("{admin_bot} ")) + || body == format!("{admin_bot}:") + || body == admin_bot.as_str(); - // This will evaluate to false if the emergency password is - // set up so that the administrator can - // execute commands as grapevine - let from_grapevine = pdu.sender == server_user + // This will evaluate to false if the emergency password + // is set up so that the administrator can execute commands + // as the admin bot + let from_admin_bot = &pdu.sender == admin_bot && services().globals.emergency_password().is_none(); if let Some(admin_room) = services().admin.get_admin_room()? { - if to_grapevine - && !from_grapevine + if to_admin_bot + && !from_admin_bot && admin_room == pdu.room_id { services().admin.process_message(body);