From 7263bcac4505b863d13eddcb180477c48aa6476c 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 89416c897d7c450168a1c0d35b75605c592d6a5d 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 1c99829def6ea70dc9420f5b10fed4dd989d3437 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 b6bb596471f63b141fef7c8746912e01a7c1d865 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 7263bcac4505b863d13eddcb180477c48aa6476c. --- 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); };