From bd0b04ae4d6495c63e23a3494dad79c7d17a0d77 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Tue, 18 Feb 2025 11:40:05 +0100 Subject: [PATCH 1/4] Ignore colons in localparts when importing users --- crates/syn2mas/src/synapse_reader/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/syn2mas/src/synapse_reader/mod.rs b/crates/syn2mas/src/synapse_reader/mod.rs index 63e0719b4..0f8daef8e 100644 --- a/crates/syn2mas/src/synapse_reader/mod.rs +++ b/crates/syn2mas/src/synapse_reader/mod.rs @@ -73,7 +73,7 @@ impl FullUserId { return Err(ExtractLocalpartError::NoAtSigil); }; - let Some((localpart, server_name)) = without_sigil.split_once(':') else { + let Some((localpart, server_name)) = without_sigil.rsplit_once(':') else { return Err(ExtractLocalpartError::NoSeparator); }; From 2d90e250774b82f4e9de018a8500d75173e5236b Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Thu, 6 Feb 2025 16:54:13 +0100 Subject: [PATCH 2/4] Ignore '-' as ip on devices --- crates/syn2mas/src/migration.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/syn2mas/src/migration.rs b/crates/syn2mas/src/migration.rs index 4f6b78e0a..e4c92a8f5 100644 --- a/crates/syn2mas/src/migration.rs +++ b/crates/syn2mas/src/migration.rs @@ -414,7 +414,9 @@ async fn migrate_devices( // As we're using a real IP type in the MAS database, it is possible // that we encounter invalid IP addresses in the Synapse database. // In that case, we should ignore them, but still log a warning. - let last_active_ip = ip.and_then(|ip| { + // One special case: Synapse will record '-' as IP in some cases, we don't want + // to log about those + let last_active_ip = ip.filter(|ip| ip != "-").and_then(|ip| { ip.parse() .map_err(|e| { tracing::warn!( From 500f3530e35ac81dc435583fc49ecfa06c11d106 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Thu, 6 Feb 2025 16:54:25 +0100 Subject: [PATCH 3/4] Ignore 'guest_devices' in synapse --- crates/syn2mas/src/synapse_reader/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/syn2mas/src/synapse_reader/mod.rs b/crates/syn2mas/src/synapse_reader/mod.rs index 0f8daef8e..a4d7b3a59 100644 --- a/crates/syn2mas/src/synapse_reader/mod.rs +++ b/crates/syn2mas/src/synapse_reader/mod.rs @@ -416,7 +416,7 @@ impl<'conn> SynapseReader<'conn> { SELECT user_id, device_id, display_name, last_seen, ip, user_agent FROM devices - WHERE NOT hidden + WHERE NOT hidden AND device_id != 'guest_device' ", ) .fetch(&mut *self.txn) From 435911bb85a928355dc8065ee8283c39fae240ce Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Mon, 3 Mar 2025 13:52:25 +0100 Subject: [PATCH 4/4] Revert "Ignore colons in localparts when importing users" This reverts commit bd0b04ae4d6495c63e23a3494dad79c7d17a0d77. --- crates/syn2mas/src/synapse_reader/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/syn2mas/src/synapse_reader/mod.rs b/crates/syn2mas/src/synapse_reader/mod.rs index a4d7b3a59..30257657a 100644 --- a/crates/syn2mas/src/synapse_reader/mod.rs +++ b/crates/syn2mas/src/synapse_reader/mod.rs @@ -73,7 +73,7 @@ impl FullUserId { return Err(ExtractLocalpartError::NoAtSigil); }; - let Some((localpart, server_name)) = without_sigil.rsplit_once(':') else { + let Some((localpart, server_name)) = without_sigil.split_once(':') else { return Err(ExtractLocalpartError::NoSeparator); };