Browse Source

Added an (untested) option to unregister an appservice previously added by calling register_appservice

merge-requests/234/head
Torsten Flammiger 4 years ago
parent
commit
4c1c6819ba
  1. 4
      src/database/admin.rs
  2. 10
      src/database/appservice.rs
  3. 9
      src/database/rooms.rs

4
src/database/admin.rs

@ -12,6 +12,7 @@ use tracing::warn;
pub enum AdminCommand { pub enum AdminCommand {
RegisterAppservice(serde_yaml::Value), RegisterAppservice(serde_yaml::Value),
UnregisterAppservice(String),
ListAppservices, ListAppservices,
SendMessage(RoomMessageEventContent), SendMessage(RoomMessageEventContent),
} }
@ -96,6 +97,9 @@ impl Admin {
AdminCommand::RegisterAppservice(yaml) => { AdminCommand::RegisterAppservice(yaml) => {
guard.appservice.register_appservice(yaml).unwrap(); // TODO handle error guard.appservice.register_appservice(yaml).unwrap(); // TODO handle error
} }
AdminCommand::UnregisterAppservice(service_name) => {
guard.appservice.unregister_appservice(&service_name).unwrap(); // TODO: see above
}
AdminCommand::ListAppservices => { AdminCommand::ListAppservices => {
if let Ok(appservices) = guard.appservice.iter_ids().map(|ids| ids.collect::<Vec<_>>()) { if let Ok(appservices) = guard.appservice.iter_ids().map(|ids| ids.collect::<Vec<_>>()) {
let count = appservices.len(); let count = appservices.len();

10
src/database/appservice.rs

@ -27,6 +27,16 @@ impl Appservice {
Ok(()) Ok(())
} }
/**
* Remove a appservice registration
*
* id is the name you send to register the service
*/
pub fn unregister_appservice(&self, service_name: &str) -> Result<()> {
self.id_appserviceregistrations.remove(service_name.as_bytes())?;
Ok(())
}
pub fn get_registration(&self, id: &str) -> Result<Option<serde_yaml::Value>> { pub fn get_registration(&self, id: &str) -> Result<Option<serde_yaml::Value>> {
self.cached_registrations self.cached_registrations
.read() .read()

9
src/database/rooms.rs

@ -1528,6 +1528,15 @@ impl Rooms {
)); ));
} }
} }
"unregister_appservice" => {
if args.len() == 1 {
db.admin.send(AdminCommand::UnregisterAppservice(args[0].to_owned()));
} else {
db.admin.send(AdminCommand::SendMessage(
RoomMessageEventContent::text_plain("Invalid appservice identifier. Need a valid identifier string"),
));
}
}
"list_appservices" => { "list_appservices" => {
db.admin.send(AdminCommand::ListAppservices); db.admin.send(AdminCommand::ListAppservices);
} }

Loading…
Cancel
Save