From 3795034b1e3abaa0aff375ea85f4dc4047bad5da Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Mon, 26 Dec 2022 11:48:08 +1300 Subject: [PATCH] More Url validation --- src/db/relay.rs | 2 +- src/globals.rs | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/db/relay.rs b/src/db/relay.rs index 76ca8d2d..4fa49825 100644 --- a/src/db/relay.rs +++ b/src/db/relay.rs @@ -155,7 +155,7 @@ impl DbRelay { // Get from 'e' and 'p' tags let sql = - "INSERT OR IGNORE INTO RELAY (url, rank) SELECT DISTINCT field1, 3 FROM event_tag where (label='e' OR label='p') and field1 like 'wss%'"; + "INSERT OR IGNORE INTO RELAY (url, rank) SELECT DISTINCT field1, 3 FROM event_tag where (label='e' OR label='p') and field1 like 'ws%://%'"; spawn_blocking(move || { let maybe_db = GLOBALS.db.blocking_lock(); diff --git a/src/globals.rs b/src/globals.rs index bbc73e0c..cb8cad70 100644 --- a/src/globals.rs +++ b/src/globals.rs @@ -128,7 +128,9 @@ impl Globals { .entry(id) .and_modify(|urls| { if let Some(ref u) = url { - urls.push(u.to_owned()); + if let Ok(valid) = Url::new_validated(u) { + urls.push(valid); + } } }) .or_insert_with(|| if let Some(u) = url { vec![u] } else { vec![] }); @@ -223,6 +225,9 @@ pub async fn followed_pubkeys() -> Vec { pub async fn follow_key_and_relay(pubkey: String, relay: String) -> Result { let pubkeyhex = PublicKeyHex(pubkey.clone()); + // Validate the url + let _ = Url::new_validated(&relay).map_err(|e| format!("{}", e))?; + // Create or update them let person = match DbPerson::fetch_one(pubkeyhex.clone()) .await