From 0e06bcb182051e5b900eb3fd5e4e70759ce48ef4 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Thu, 7 Jul 2022 12:56:38 +0200 Subject: [PATCH 01/28] pull in iroh-share --- Cargo.toml | 9 ++++ src/events.rs | 2 + src/imex.rs | 127 +++++++++++++++++++++++++++++++++++++++++++++++ src/plaintext.rs | 2 +- 4 files changed, 139 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index fa9a88b2bd..ece394c332 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -83,6 +83,9 @@ futures-lite = "1.12.0" tokio-stream = { version = "0.1.11", features = ["fs"] } reqwest = { version = "0.11.12", features = ["json"] } async_zip = { version = "0.0.9", default-features = false, features = ["deflate"] } +iroh-share = { path = "../../iroh/iroh-share" } +iroh-resolver = { path = "../../iroh/iroh-resolver" } +tempfile = "3" [dev-dependencies] ansi_term = "0.12.0" @@ -148,3 +151,9 @@ vendored = [ "reqwest/native-tls-vendored" ] nightly = ["pgp/nightly"] + +[patch.crates-io] +chacha20poly1305 = { path = "../../rustcrypto/AEADs/chacha20poly1305" } +chacha20 = { path = "../../rustcrypto/stream-ciphers/chacha20" } +pgp = { path = "../../rpgp/rpgp" } +libp2p = { git = "https://github.com/dignifiedquire/rust-libp2p", branch = "feat-kad-count" } \ No newline at end of file diff --git a/src/events.rs b/src/events.rs index d0033c4ae2..17c0d9bb72 100644 --- a/src/events.rs +++ b/src/events.rs @@ -318,4 +318,6 @@ pub enum EventType { WebxdcInstanceDeleted { msg_id: MsgId, }, + + ImexBackupReady(Vec), } diff --git a/src/imex.rs b/src/imex.rs index a2ca6529c0..27828242c5 100644 --- a/src/imex.rs +++ b/src/imex.rs @@ -61,6 +61,7 @@ pub enum ImexMode { /// created by DC_IMEX_EXPORT_BACKUP and detected by imex_has_backup(). Importing a backup /// is only possible as long as the context is not configured or used in another way. ImportBackup = 12, + ExportBackupIroh = 13, } /// Import/export things. @@ -384,6 +385,9 @@ async fn imex_inner( ImexMode::ExportBackup => { export_backup(context, path, passphrase.unwrap_or_default()).await } + ImexMode::ExportBackupIroh => { + export_backup_iroh(context, path, passphrase.unwrap_or_default()).await + } ImexMode::ImportBackup => { import_backup(context, path, passphrase.unwrap_or_default()).await?; context.sql.run_migrations(context).await @@ -608,6 +612,129 @@ async fn export_backup_inner( Ok(()) } +async fn export_backup_iroh(context: &Context, dir: &Path, passphrase: String) -> Result<()> { + // get a fine backup file name (the name includes the date so that multiple backup instances are possible) + let now = time(); + let (temp_db_path, temp_path, dest_path) = get_next_backup_path(dir, now)?; + let _d1 = DeleteOnDrop(temp_db_path.clone()); + let _d2 = DeleteOnDrop(temp_path.clone()); + + context + .sql + .set_raw_config_int("backup_time", now as i32) + .await?; + sql::housekeeping(context).await.ok_or_log(context); + + context + .sql + .execute("VACUUM;", paramsv![]) + .await + .map_err(|e| warn!(context, "Vacuum failed, exporting anyway {}", e)) + .ok(); + + ensure!( + context.scheduler.read().await.is_none(), + "cannot export backup, IO is running" + ); + + info!( + context, + "Backup '{}' to '{}'.", + context.get_dbfile().display(), + dest_path.display(), + ); + + context + .sql + .export(&temp_db_path, passphrase) + .await + .with_context(|| format!("failed to backup plaintext database to {:?}", temp_db_path))?; + + let res = export_backup_iroh_inner(context, &temp_db_path, &temp_path).await; + + match &res { + Ok(dir_builder) => { + let port = 9990; + let rpc_p2p_port = 5550; + let rpc_store_port = 5560; + // TODO: not tempfile + let sender_dir = tempfile::tempdir().unwrap(); + let sender_db = sender_dir.path().join("db"); + + let sender = + iroh_share::Sender::new(port, rpc_p2p_port, rpc_store_port, &sender_db).await?; + let transfer = sender.transfer_from_dir_builder(dir_builder).await?; + let ticket = transfer.ticket().await?; + let ticket_bytes = ticket.as_bytes(); + context.emit_event(EventType::ImexBackupReady(ticket_bytes)); + } + Err(e) => { + error!(context, "backup failed: {}", e); + } + } + + res +} + +async fn export_backup_iroh_inner( + context: &Context, + temp_db_path: &Path, + temp_path: &Path, +) -> Result<()> { + use iroh_resolver::unixfs_builder::*; + + let mut dir_builder = DirectoryBuilder::new(); + dir_builder.name( + temp_path + .file_name() + .map(|s| s.to_string_lossy().to_owned()) + .unwrap_or_default(), + ); + + let mut file = FileBuilder::new(); + let db_content = tokio::fs::File::open(temp_db_path).await?; + file.name(DBFILE_BACKUP_NAME).content_reader(db_content); + + dir_builder.add_file(file.build()); + + let read_dir: Vec<_> = + tokio_stream::wrappers::ReadDirStream::new(fs::read_dir(context.get_blobdir()).await?) + .try_collect() + .await?; + let count = read_dir.len(); + let mut written_files = 0; + + let mut last_progress = 0; + for entry in read_dir.into_iter() { + let name = entry.file_name(); + if !entry.file_type().await?.is_file() { + warn!( + context, + "Export: Found dir entry {} that is not a file, ignoring", + name.to_string_lossy() + ); + continue; + } + let mut file = File::open(entry.path()).await?; + let path_in_archive = PathBuf::from(BLOBS_BACKUP_NAME).join(name); + + let mut file = FileBuilder::new(); + file.name(name.to_string_lossy().to_owned()); + file.content_reader(file); + dir_builder.add_file(file.build()); + + written_files += 1; + let progress = 1000 * written_files / count; + if progress != last_progress && progress > 10 && progress < 1000 { + // We already emitted ImexProgress(10) above + context.emit_event(EventType::ImexProgress(progress)); + last_progress = progress; + } + } + + Ok(dir_builder) +} + /******************************************************************************* * Classic key import ******************************************************************************/ diff --git a/src/plaintext.rs b/src/plaintext.rs index fd3ba16754..0a8a429216 100644 --- a/src/plaintext.rs +++ b/src/plaintext.rs @@ -67,7 +67,7 @@ impl PlainText { // and is only there to allow > at the beginning of a line that is no quote. line = line.strip_prefix(' ').unwrap_or(&line).to_string(); if is_quote { - line = "".to_owned() + &line + ""; + line = format!("{}", line); } // a trailing space indicates that the line can be merged with the next one; From 9f7e962832ac12bd39d24b0107980792ce466f1a Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Thu, 7 Jul 2022 17:34:40 +0200 Subject: [PATCH 02/28] integrate backup sending via iroh into the repl --- Cargo.toml | 5 ++- examples/repl/cmdline.rs | 14 ++++++ src/blob.rs | 2 +- src/configure.rs | 2 +- src/format_flowed.rs | 2 +- src/imex.rs | 96 ++++++++++++++++++++++++++++++---------- src/mimefactory.rs | 9 ++-- src/plaintext.rs | 2 +- src/provider.rs | 2 +- src/simplify.rs | 2 +- 10 files changed, 100 insertions(+), 36 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index ece394c332..7ddf8b36f5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ license = "MPL-2.0" rust-version = "1.57" [profile.dev] -debug = 0 +#debug = 0 panic = 'abort' opt-level = 1 @@ -86,6 +86,7 @@ async_zip = { version = "0.0.9", default-features = false, features = ["deflate" iroh-share = { path = "../../iroh/iroh-share" } iroh-resolver = { path = "../../iroh/iroh-resolver" } tempfile = "3" +multibase = "0.9.1" [dev-dependencies] ansi_term = "0.12.0" @@ -156,4 +157,4 @@ nightly = ["pgp/nightly"] chacha20poly1305 = { path = "../../rustcrypto/AEADs/chacha20poly1305" } chacha20 = { path = "../../rustcrypto/stream-ciphers/chacha20" } pgp = { path = "../../rpgp/rpgp" } -libp2p = { git = "https://github.com/dignifiedquire/rust-libp2p", branch = "feat-kad-count" } \ No newline at end of file +libp2p = { git = "https://github.com/dignifiedquire/rust-libp2p", branch = "feat-kad-count" } diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index 4527b8db19..fe5a9e5a0a 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -335,6 +335,7 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu continue-key-transfer \n\ has-backup\n\ export-backup\n\ + send-backup\n\ import-backup \n\ export-keys\n\ import-keys\n\ @@ -477,6 +478,19 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu .await?; println!("Exported to {}.", dir.to_string_lossy()); } + "send-backup" => { + let dir = dirs::home_dir().unwrap_or_default(); + let (sender, transfer) = + send_backup(&context, dir.as_ref(), Some(arg2.to_string())).await?; + let ticket_bytes = transfer.ticket().as_bytes(); + + println!( + "Ticket: {}", + multibase::encode(multibase::Base::Base64, &ticket_bytes) + ); + tokio::time::sleep(std::time::Duration::from_secs(100)).await; + sender.close().await?; + } "import-backup" => { ensure!(!arg1.is_empty(), "Argument missing."); imex( diff --git a/src/blob.rs b/src/blob.rs index 6cbfdfa319..554e6371c4 100644 --- a/src/blob.rs +++ b/src/blob.rs @@ -222,7 +222,7 @@ impl<'a> BlobObject<'a> { /// to be lowercase. pub fn suffix(&self) -> Option<&str> { let ext = self.name.rsplit('.').next(); - if ext == Some(&self.name) { + if ext == Some(self.name.as_str()) { None } else { ext diff --git a/src/configure.rs b/src/configure.rs index f61c45fed2..40e78023aa 100644 --- a/src/configure.rs +++ b/src/configure.rs @@ -455,7 +455,7 @@ async fn configure(ctx: &Context, param: &mut LoginParam) -> Result<()> { progress!(ctx, 910); - if ctx.get_config(Config::ConfiguredAddr).await?.as_deref() != Some(¶m.addr) { + if ctx.get_config(Config::ConfiguredAddr).await?.as_deref() != Some(param.addr.as_str()) { // Switched account, all server UIDs we know are invalid job::schedule_resync(ctx).await?; } diff --git a/src/format_flowed.rs b/src/format_flowed.rs index cb4c5f0459..aa05777a20 100644 --- a/src/format_flowed.rs +++ b/src/format_flowed.rs @@ -48,7 +48,7 @@ fn format_line_flowed(line: &str, prefix: &str) -> String { after_space = false; } } - result + &buffer + result + buffer.as_str() } /// Returns text formatted according to RFC 3767 (format=flowed). diff --git a/src/imex.rs b/src/imex.rs index 27828242c5..f01d080975 100644 --- a/src/imex.rs +++ b/src/imex.rs @@ -61,7 +61,6 @@ pub enum ImexMode { /// created by DC_IMEX_EXPORT_BACKUP and detected by imex_has_backup(). Importing a backup /// is only possible as long as the context is not configured or used in another way. ImportBackup = 12, - ExportBackupIroh = 13, } /// Import/export things. @@ -107,6 +106,53 @@ pub async fn imex( res } +pub async fn send_backup( + context: &Context, + path: &Path, + passphrase: Option, +) -> Result<(iroh_share::Sender, iroh_share::SenderTransfer)> { + let cancel = context.alloc_ongoing().await?; + + let res = send_backup_inner(context, path, passphrase) + .race(async { + cancel.recv().await.ok(); + Err(format_err!("canceled")) + }) + .await; + + context.free_ongoing().await; + + if let Err(err) = res.as_ref() { + // We are using Anyhow's .context() and to show the inner error, too, we need the {:#}: + error!(context, "IMEX failed to complete: {:#}", err); + context.emit_event(EventType::ImexProgress(0)); + } else { + info!(context, "IMEX successfully completed"); + context.emit_event(EventType::ImexProgress(1000)); + } + + res +} + +async fn send_backup_inner( + context: &Context, + path: &Path, + passphrase: Option, +) -> Result<(iroh_share::Sender, iroh_share::SenderTransfer)> { + info!(context, "Import/export dir: {}", path.display()); + ensure!(context.sql.is_open().await, "Database not opened."); + context.emit_event(EventType::ImexProgress(10)); + + // before we export anything, make sure the private key exists + if e2ee::ensure_secret_key_exists(context).await.is_err() { + bail!("Cannot create private key or private key not available."); + } else { + create_folder(context, &path).await?; + } + + export_backup_iroh(context, path, passphrase.unwrap_or_default()).await +} + /// Returns the filename of the backup found (otherwise an error) pub async fn has_backup(_context: &Context, dir_name: &Path) -> Result { let mut dir_iter = tokio::fs::read_dir(dir_name).await?; @@ -385,9 +431,6 @@ async fn imex_inner( ImexMode::ExportBackup => { export_backup(context, path, passphrase.unwrap_or_default()).await } - ImexMode::ExportBackupIroh => { - export_backup_iroh(context, path, passphrase.unwrap_or_default()).await - } ImexMode::ImportBackup => { import_backup(context, path, passphrase.unwrap_or_default()).await?; context.sql.run_migrations(context).await @@ -612,7 +655,11 @@ async fn export_backup_inner( Ok(()) } -async fn export_backup_iroh(context: &Context, dir: &Path, passphrase: String) -> Result<()> { +async fn export_backup_iroh( + context: &Context, + dir: &Path, + passphrase: String, +) -> Result<(iroh_share::Sender, iroh_share::SenderTransfer)> { // get a fine backup file name (the name includes the date so that multiple backup instances are possible) let now = time(); let (temp_db_path, temp_path, dest_path) = get_next_backup_path(dir, now)?; @@ -652,36 +699,34 @@ async fn export_backup_iroh(context: &Context, dir: &Path, passphrase: String) - let res = export_backup_iroh_inner(context, &temp_db_path, &temp_path).await; - match &res { + match res { Ok(dir_builder) => { let port = 9990; let rpc_p2p_port = 5550; let rpc_store_port = 5560; // TODO: not tempfile let sender_dir = tempfile::tempdir().unwrap(); - let sender_db = sender_dir.path().join("db"); + // TODO: cleanup + let sender_db = sender_dir.into_path().join("db"); let sender = iroh_share::Sender::new(port, rpc_p2p_port, rpc_store_port, &sender_db).await?; let transfer = sender.transfer_from_dir_builder(dir_builder).await?; - let ticket = transfer.ticket().await?; - let ticket_bytes = ticket.as_bytes(); - context.emit_event(EventType::ImexBackupReady(ticket_bytes)); + Ok((sender, transfer)) } Err(e) => { error!(context, "backup failed: {}", e); + Err(e) } } - - res } async fn export_backup_iroh_inner( context: &Context, temp_db_path: &Path, temp_path: &Path, -) -> Result<()> { - use iroh_resolver::unixfs_builder::*; +) -> Result { + use iroh_resolver::unixfs_builder::{DirectoryBuilder, FileBuilder}; let mut dir_builder = DirectoryBuilder::new(); dir_builder.name( @@ -691,11 +736,13 @@ async fn export_backup_iroh_inner( .unwrap_or_default(), ); - let mut file = FileBuilder::new(); - let db_content = tokio::fs::File::open(temp_db_path).await?; - file.name(DBFILE_BACKUP_NAME).content_reader(db_content); + { + let mut file = FileBuilder::new(); + let db_content = tokio::fs::File::open(temp_db_path).await?; + file.name(DBFILE_BACKUP_NAME).content_reader(db_content); - dir_builder.add_file(file.build()); + dir_builder.add_file(file.build().await?); + } let read_dir: Vec<_> = tokio_stream::wrappers::ReadDirStream::new(fs::read_dir(context.get_blobdir()).await?) @@ -715,13 +762,14 @@ async fn export_backup_iroh_inner( ); continue; } - let mut file = File::open(entry.path()).await?; - let path_in_archive = PathBuf::from(BLOBS_BACKUP_NAME).join(name); + let file_content = File::open(entry.path()).await?; - let mut file = FileBuilder::new(); - file.name(name.to_string_lossy().to_owned()); - file.content_reader(file); - dir_builder.add_file(file.build()); + { + let mut file = FileBuilder::new(); + file.name(name.to_string_lossy().to_owned()); + file.content_reader(file_content); + dir_builder.add_file(file.build().await?); + } written_files += 1; let progress = 1000 * written_files / count; diff --git a/src/mimefactory.rs b/src/mimefactory.rs index b6f0fef04b..37900cbb9f 100644 --- a/src/mimefactory.rs +++ b/src/mimefactory.rs @@ -1285,19 +1285,20 @@ impl<'a> MimeFactory<'a> { let extension_fields = if additional_msg_ids.is_empty() { "".to_string() } else { - "Additional-Message-IDs: ".to_string() - + &additional_msg_ids + format!( + "Additional-Message-IDs: {}\r\n", + additional_msg_ids .iter() .map(|mid| render_rfc724_mid(mid)) .collect::>() .join(" ") - + "\r\n" + ) }; message = message.child( PartBuilder::new() .content_type(&"message/disposition-notification".parse().unwrap()) - .body(message_text2 + &extension_fields) + .body(message_text2 + extension_fields.as_str()) .build(), ); diff --git a/src/plaintext.rs b/src/plaintext.rs index 0a8a429216..4945987671 100644 --- a/src/plaintext.rs +++ b/src/plaintext.rs @@ -83,7 +83,7 @@ impl PlainText { } else { // normal, fixed text if is_quote { - line = "".to_owned() + &line + ""; + line = format!("{}", &line); } line += "
\n"; } diff --git a/src/provider.rs b/src/provider.rs index aad3e18a9e..b8c0d70338 100644 --- a/src/provider.rs +++ b/src/provider.rs @@ -154,7 +154,7 @@ pub async fn get_provider_by_mx(context: &Context, domain: &str) -> Option<&'sta } let provider_fqdn = provider_domain.to_string() + "."; - let provider_fqdn_dot = ".".to_string() + &provider_fqdn; + let provider_fqdn_dot = format!(".{}", provider_fqdn); for mx_domain in mx_domains.iter() { let mx_domain = mx_domain.exchange().to_lowercase().to_utf8(); diff --git a/src/simplify.rs b/src/simplify.rs index 36daa333b9..b56026cfd2 100644 --- a/src/simplify.rs +++ b/src/simplify.rs @@ -10,7 +10,7 @@ // (to be only compatible with delta, only "[\r\n|\n]-- {0,2}[\r\n|\n]" needs to be replaced) pub fn escape_message_footer_marks(text: &str) -> String { if let Some(text) = text.strip_prefix("--") { - "-\u{200B}-".to_string() + &text.replace("\n--", "\n-\u{200B}-") + format!("-\u{200B}-{}", text.replace("\n--", "\n-\u{200B}-")) } else { text.replace("\n--", "\n-\u{200B}-") } From 14fc7b7d109aa229e0dd96cc405cc2068d0cca33 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Thu, 7 Jul 2022 18:05:34 +0200 Subject: [PATCH 03/28] implement receive-backup --- examples/repl/cmdline.rs | 6 +++ src/imex.rs | 96 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index fe5a9e5a0a..14fbe88f00 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -336,6 +336,7 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu has-backup\n\ export-backup\n\ send-backup\n\ + receive-backup \n\ import-backup \n\ export-keys\n\ import-keys\n\ @@ -491,6 +492,11 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu tokio::time::sleep(std::time::Duration::from_secs(100)).await; sender.close().await?; } + "receive-backup" => { + ensure!(!arg1.is_empty(), "Argument is missing."); + let (_, ticket) = multibase::decode(&arg1.to_string())?; + receive_backup(&context, ticket, Some(arg2.to_string())).await?; + } "import-backup" => { ensure!(!arg1.is_empty(), "Argument missing."); imex( diff --git a/src/imex.rs b/src/imex.rs index f01d080975..a589e9ac58 100644 --- a/src/imex.rs +++ b/src/imex.rs @@ -10,6 +10,7 @@ use futures::StreamExt; use futures_lite::FutureExt; use rand::{thread_rng, Rng}; use tokio::fs::{self, File}; +use tokio::io::AsyncWriteExt; use tokio_tar::Archive; use crate::blob::BlobObject; @@ -106,6 +107,101 @@ pub async fn imex( res } +pub async fn receive_backup( + context: &Context, + ticket_bytes: Vec, + passphrase: Option, +) -> Result<()> { + let cancel = context.alloc_ongoing().await?; + + let res = receive_backup_inner(context, ticket_bytes, passphrase.unwrap_or_default()) + .race(async { + cancel.recv().await.ok(); + Err(format_err!("canceled")) + }) + .await; + + context.free_ongoing().await; + + if let Err(err) = res.as_ref() { + // We are using Anyhow's .context() and to show the inner error, too, we need the {:#}: + error!(context, "IMEX failed to complete: {:#}", err); + context.emit_event(EventType::ImexProgress(0)); + } else { + info!(context, "IMEX successfully completed"); + context.emit_event(EventType::ImexProgress(1000)); + } + + res +} + +pub async fn receive_backup_inner( + context: &Context, + ticket_bytes: Vec, + passphrase: String, +) -> Result<()> { + use iroh_share::{Receiver, Ticket}; + ensure!( + !context.is_configured().await?, + "Cannot import backups to accounts in use." + ); + ensure!( + context.scheduler.read().await.is_none(), + "cannot import backup, IO is running" + ); + let ticket = Ticket::from_bytes(&ticket_bytes)?; + + let sender_dir = tempfile::tempdir().unwrap(); + let sender_db = sender_dir.path().join("db"); + + let port = 9991; + let rpc_p2p_port = 5551; + let rpc_store_port = 5561; + let receiver = Receiver::new(port, rpc_p2p_port, rpc_store_port, &sender_db) + .await + .context("failed to create sender")?; + let receiver_transfer = receiver + .transfer_from_ticket(&ticket) + .await + .context("failed to read transfer")?; + let data = receiver_transfer.recv().await?; + + let out = context.get_blobdir(); + + for link in data.read_dir().unwrap() { + let link = link?; + let file_content = data.read_file(&link).await?; + let name = link.name.unwrap_or_default(); + let path = out.join(&name); + println!("Writing {}", path.display()); + let mut file = tokio::fs::File::create(&path) + .await + .with_context(|| format!("create file: {}", path.display()))?; + let mut content = file_content.pretty(); + tokio::io::copy(&mut content, &mut file) + .await + .context("copy")?; + file.flush().await?; + + if name == DBFILE_BACKUP_NAME { + let unpacked_database = context.get_blobdir().join(DBFILE_BACKUP_NAME); + context + .sql + .import(&unpacked_database, passphrase.clone()) + .await + .context("cannot import unpacked database")?; + fs::remove_file(unpacked_database) + .await + .context("cannot remove unpacked database")?; + } else { + // nothing to do, unpacked directly into the blobs dir + } + } + + println!("Received all data, written to: {}", out.display()); + Ok(()) +} + pub async fn send_backup( context: &Context, path: &Path, From 364e06d8aeaef424737855ae6188115d2d3801a5 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Thu, 7 Jul 2022 18:13:49 +0200 Subject: [PATCH 04/28] update deps --- Cargo.toml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 7ddf8b36f5..54c735ed8e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -83,8 +83,8 @@ futures-lite = "1.12.0" tokio-stream = { version = "0.1.11", features = ["fs"] } reqwest = { version = "0.11.12", features = ["json"] } async_zip = { version = "0.0.9", default-features = false, features = ["deflate"] } -iroh-share = { path = "../../iroh/iroh-share" } -iroh-resolver = { path = "../../iroh/iroh-resolver" } +iroh-share = { git = "https://github.com/n0-computer/iroh", branch = "iroh-share" } +iroh-resolver = { git = "https://github.com/n0-computer/iroh", branch = "iroh-share" } tempfile = "3" multibase = "0.9.1" @@ -154,7 +154,6 @@ vendored = [ nightly = ["pgp/nightly"] [patch.crates-io] -chacha20poly1305 = { path = "../../rustcrypto/AEADs/chacha20poly1305" } -chacha20 = { path = "../../rustcrypto/stream-ciphers/chacha20" } -pgp = { path = "../../rpgp/rpgp" } +chacha20poly1305 = { git = "https://github.com/dignifiedquire/AEADs", branch = "chacha20-fix" } +chacha20 = { git = "https://github.com/dignifiedquire/stream-ciphers", branch = "chacha20-fix" } libp2p = { git = "https://github.com/dignifiedquire/rust-libp2p", branch = "feat-kad-count" } From 679242d5c43418f08096a44587298d24340c769d Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Thu, 7 Jul 2022 18:27:55 +0200 Subject: [PATCH 05/28] remove unused event --- src/events.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/events.rs b/src/events.rs index 17c0d9bb72..d0033c4ae2 100644 --- a/src/events.rs +++ b/src/events.rs @@ -318,6 +318,4 @@ pub enum EventType { WebxdcInstanceDeleted { msg_id: MsgId, }, - - ImexBackupReady(Vec), } From 63872fc271cf94587b191f51dcee0ca1a4404d3b Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Thu, 7 Jul 2022 20:24:16 +0200 Subject: [PATCH 06/28] generate qr codes --- deltachat-ffi/Cargo.toml | 1 + deltachat-ffi/src/lib.rs | 61 ++++++++++++++++++++++++++++ deltachat-ffi/src/lot.rs | 6 +++ examples/repl/cmdline.rs | 7 +++- src/qr.rs | 18 ++++++++ src/qr_code_generator.rs | 88 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 180 insertions(+), 1 deletion(-) diff --git a/deltachat-ffi/Cargo.toml b/deltachat-ffi/Cargo.toml index 76fd067fec..5ecee88722 100644 --- a/deltachat-ffi/Cargo.toml +++ b/deltachat-ffi/Cargo.toml @@ -26,6 +26,7 @@ anyhow = "1" thiserror = "1" rand = "0.7" once_cell = "1.16.0" +iroh-share = { git = "https://github.com/n0-computer/iroh", branch = "iroh-share" } [features] default = ["vendored"] diff --git a/deltachat-ffi/src/lib.rs b/deltachat-ffi/src/lib.rs index 68c7c8d27b..f78db33c8a 100644 --- a/deltachat-ffi/src/lib.rs +++ b/deltachat-ffi/src/lib.rs @@ -2204,6 +2204,67 @@ pub unsafe extern "C" fn dc_imex( } } +#[no_mangle] +pub unsafe extern "C" fn dc_send_backup( + context: *mut dc_context_t, + folder: *const libc::c_char, + passphrase: *const libc::c_char, +) -> *mut dc_backup_sender { + if context.is_null() { + eprintln!("ignoring careless call to dc_send_backup()"); + return ptr::null_mut(); + } + + let passphrase = to_opt_string_lossy(passphrase); + let ctx = &*context; + + if let Some(folder) = to_opt_string_lossy(folder) { + block_on(async move { + imex::send_backup(ctx, folder.as_ref(), passphrase) + .await + .map(|(sender, transfer)| { + Box::into_raw(Box::new(dc_backup_sender { sender, transfer })) + }) + .log_err(ctx, "send_backup failed") + .unwrap_or_else(|_| ptr::null_mut()) + }) + } else { + eprintln!("dc_imex called without a valid directory"); + ptr::null_mut() + } +} + +pub struct dc_backup_sender { + sender: iroh_share::Sender, + transfer: iroh_share::SenderTransfer, +} + +#[no_mangle] +pub unsafe extern "C" fn dc_backup_sender_qr( + ctx: *mut dc_context_t, + bs: *const dc_backup_sender, +) -> *mut libc::c_char { + if ctx.is_null() || bs.is_null() { + eprintln!("ignoring careless call to dc_backup_sender_qr"); + return ptr::null_mut(); + } + let ctx = &*ctx; + let bs = &*bs; + let ticket = bs.transfer.ticket(); + + qr_code_generator::generate_backup_qr_code(&ticket) + .map(|s| s.strdup()) + .log_err(ctx, "generate_backup_qr_code failed") + .unwrap_or_else(|_| ptr::null_mut()) +} + +#[no_mangle] +pub unsafe extern "C" fn dc_backup_sender_unref(bs: *mut dc_backup_sender) { + if !bs.is_null() { + let _ = Box::from_raw(bs); + } +} + #[no_mangle] pub unsafe extern "C" fn dc_imex_has_backup( context: *mut dc_context_t, diff --git a/deltachat-ffi/src/lot.rs b/deltachat-ffi/src/lot.rs index 0f3dadc3b4..78b21df520 100644 --- a/deltachat-ffi/src/lot.rs +++ b/deltachat-ffi/src/lot.rs @@ -50,6 +50,7 @@ impl Lot { Qr::FprMismatch { .. } => None, Qr::FprWithoutAddr { fingerprint, .. } => Some(fingerprint), Qr::Account { domain } => Some(domain), + Qr::Backup { .. } => None, Qr::WebrtcInstance { domain, .. } => Some(domain), Qr::Addr { draft, .. } => draft.as_deref(), Qr::Url { url } => Some(url), @@ -101,6 +102,7 @@ impl Lot { Qr::FprMismatch { .. } => LotState::QrFprMismatch, Qr::FprWithoutAddr { .. } => LotState::QrFprWithoutAddr, Qr::Account { .. } => LotState::QrAccount, + Qr::Backup { .. } => LotState::QrBackup, Qr::WebrtcInstance { .. } => LotState::QrWebrtcInstance, Qr::Addr { .. } => LotState::QrAddr, Qr::Url { .. } => LotState::QrUrl, @@ -125,6 +127,7 @@ impl Lot { Qr::FprMismatch { contact_id } => contact_id.unwrap_or_default().to_u32(), Qr::FprWithoutAddr { .. } => Default::default(), Qr::Account { .. } => Default::default(), + Qr::Backup { .. } => Default::default(), Qr::WebrtcInstance { .. } => Default::default(), Qr::Addr { contact_id, .. } => contact_id.to_u32(), Qr::Url { .. } => Default::default(), @@ -173,6 +176,9 @@ pub enum LotState { /// text1=domain QrAccount = 250, + /// TODO + QrBackup = 251, + /// text1=domain, text2=instance pattern QrWebrtcInstance = 260, diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index 14fbe88f00..e0ffe30ec5 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -483,12 +483,17 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu let dir = dirs::home_dir().unwrap_or_default(); let (sender, transfer) = send_backup(&context, dir.as_ref(), Some(arg2.to_string())).await?; - let ticket_bytes = transfer.ticket().as_bytes(); + let ticket = transfer.ticket(); + let ticket_bytes = ticket.as_bytes(); println!( "Ticket: {}", multibase::encode(multibase::Base::Base64, &ticket_bytes) ); + let qr_code = deltachat::qr_code_generator::generate_backup_qr_code(&ticket)?; + let file = dir.join("qr.svg"); + tokio::fs::write(file, qr_code.as_bytes()).await?; + tokio::time::sleep(std::time::Duration::from_secs(100)).await; sender.close().await?; } diff --git a/src/qr.rs b/src/qr.rs index 800eb48724..541d7c4cea 100644 --- a/src/qr.rs +++ b/src/qr.rs @@ -32,6 +32,7 @@ const VCARD_SCHEME: &str = "BEGIN:VCARD"; const SMTP_SCHEME: &str = "SMTP:"; const HTTP_SCHEME: &str = "http://"; const HTTPS_SCHEME: &str = "https://"; +pub const DCBACKUP_SCHEME: &str = "DCBACKUP:"; #[derive(Debug, Clone, PartialEq, Eq)] pub enum Qr { @@ -61,6 +62,9 @@ pub enum Qr { Account { domain: String, }, + Backup { + ticket: iroh_share::Ticket, + }, WebrtcInstance { domain: String, instance_pattern: String, @@ -127,6 +131,8 @@ pub async fn check_qr(context: &Context, qr: &str) -> Result { decode_account(qr)? } else if starts_with_ignore_case(qr, DCLOGIN_SCHEME) { dclogin_scheme::decode_login(qr)? + } else if starts_with_ignore_case(qr, DCBACKUP_SCHEME) { + decode_backup(qr)? } else if starts_with_ignore_case(qr, DCWEBRTC_SCHEME) { decode_webrtc_instance(context, qr)? } else if qr.starts_with(MAILTO_SCHEME) { @@ -332,6 +338,18 @@ fn decode_account(qr: &str) -> Result { } } +/// scheme: `DCBACKUP:` +fn decode_backup(qr: &str) -> Result { + let payload = qr + .get(DCBACKUP_SCHEME.len()..) + .context("invalid DCBACKUP payload")?; + + let (_, ticket_bytes) = multibase::decode(payload)?; + let ticket = iroh_share::Ticket::from_bytes(&ticket_bytes)?; + + Ok(Qr::Backup { ticket }) +} + /// scheme: `DCWEBRTC:https://meet.jit.si/$ROOM` fn decode_webrtc_instance(_context: &Context, qr: &str) -> Result { let payload = qr diff --git a/src/qr_code_generator.rs b/src/qr_code_generator.rs index b3b4aef119..22749daa03 100644 --- a/src/qr_code_generator.rs +++ b/src/qr_code_generator.rs @@ -8,6 +8,7 @@ use crate::{ config::Config, contact::{Contact, ContactId}, context::Context, + qr::DCBACKUP_SCHEME, securejoin, stock_str, }; @@ -262,6 +263,93 @@ fn inner_generate_secure_join_qr_code( Ok(svg) } +pub fn generate_backup_qr_code(ticket: &iroh_share::Ticket) -> Result { + let ticket_bytes = ticket.as_bytes(); + let ticket_str = multibase::encode(multibase::Base::Base64, &ticket_bytes); + let ticket_str = format!("{}{}", DCBACKUP_SCHEME, ticket_str); + // config + let width = 515.0; + let height = 630.0; + let qr_code_size = 400.0; + let qr_translate_up = 40.0; + let card_roundness = 40.0; + let card_border_size = 2.0; + + let qr = QrCode::encode_text(&ticket_str, QrCodeEcc::Medium)?; + let mut svg = String::with_capacity(28000); + let mut w = tagger::new(&mut svg); + + w.elem("svg", |d| { + d.attr("xmlns", "http://www.w3.org/2000/svg")?; + d.attr("viewBox", format_args!("0 0 {} {}", width, height))?; + Ok(()) + })? + .build(|w| { + // White Background apears like a card + w.single("rect", |d| { + d.attr("x", card_border_size)?; + d.attr("y", card_border_size)?; + d.attr("rx", card_roundness)?; + d.attr("stroke", "#c6c6c6")?; + d.attr("stroke-width", card_border_size)?; + d.attr("width", width - (card_border_size * 2.0))?; + d.attr("height", height - (card_border_size * 2.0))?; + d.attr("style", "fill:#f2f2f2")?; + Ok(()) + })?; + // Qrcode + w.elem("g", |d| { + d.attr( + "transform", + format!( + "translate({},{})", + (width - qr_code_size) / 2.0, + ((height - qr_code_size) / 2.0) - qr_translate_up + ), + ) + // If the qr code should be in the wrong place, + // we could also translate and scale the points in the path already, + // but that would make the resulting svg way bigger in size and might bring up rounding issues, + // so better avoid doing it manually if possible + })? + .build(|w| { + w.single("path", |d| { + let mut path_data = String::with_capacity(0); + let scale = qr_code_size / qr.size() as f32; + + for y in 0..qr.size() { + for x in 0..qr.size() { + if qr.get_module(x, y) { + path_data += &format!("M{},{}h1v1h-1z", x, y); + } + } + } + + d.attr("style", "fill:#000000")?; + d.attr("d", path_data)?; + d.attr("transform", format!("scale({})", scale)) + }) + })?; + + // Footer logo + const FOOTER_HEIGHT: f32 = 35.0; + const FOOTER_WIDTH: f32 = 198.0; + w.elem("g", |d| { + d.attr( + "transform", + format!( + "translate({},{})", + (width - FOOTER_WIDTH) / 2.0, + height - FOOTER_HEIGHT + ), + ) + })? + .build(|w| w.put_raw(include_str!("../assets/qrcode_logo_footer.svg"))) + })?; + + Ok(svg) +} + #[cfg(test)] mod tests { use super::*; From 995bf6fa9efedc9d9a7581731b493bc4f7ad9c5e Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Thu, 7 Jul 2022 20:31:15 +0200 Subject: [PATCH 07/28] update deltachat.h --- deltachat-ffi/deltachat.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/deltachat-ffi/deltachat.h b/deltachat-ffi/deltachat.h index 95e4cf45f8..f79c4ba9ab 100644 --- a/deltachat-ffi/deltachat.h +++ b/deltachat-ffi/deltachat.h @@ -24,6 +24,7 @@ typedef struct _dc_provider dc_provider_t; typedef struct _dc_event dc_event_t; typedef struct _dc_event_emitter dc_event_emitter_t; typedef struct _dc_jsonrpc_instance dc_jsonrpc_instance_t; +typedef struct _dc_backup_sender dc_backup_sender_t; // Alias for backwards compatibility, use dc_event_emitter_t instead. typedef struct _dc_event_emitter dc_accounts_event_emitter_t; @@ -2142,6 +2143,11 @@ dc_contact_t* dc_get_contact (dc_context_t* context, uint32_t co void dc_imex (dc_context_t* context, int what, const char* param1, const char* param2); +dc_backup_sender_t* dc_send_backup(dc_context_t* context, const char* folder, const char* passphrase); +char* dc_backup_sender_qr(dc_context_t* context, const dc_backup_sender_t* bs); +void dc_backup_sender_unref(dc_backup_sender_t* bs); + + /** * Check if there is a backup file. * May only be used on fresh installations (e.g. dc_is_configured() returns 0). From 0aa4e21f7ac42c9873c925966a6ddc71b1f207bd Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Mon, 11 Jul 2022 16:41:49 +0200 Subject: [PATCH 08/28] proper shutdown and progress reports --- Cargo.toml | 2 -- examples/repl/cmdline.rs | 2 +- src/imex.rs | 37 +++++++++++++++++++++++++++++++------ 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 54c735ed8e..b61b1c6dab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -154,6 +154,4 @@ vendored = [ nightly = ["pgp/nightly"] [patch.crates-io] -chacha20poly1305 = { git = "https://github.com/dignifiedquire/AEADs", branch = "chacha20-fix" } -chacha20 = { git = "https://github.com/dignifiedquire/stream-ciphers", branch = "chacha20-fix" } libp2p = { git = "https://github.com/dignifiedquire/rust-libp2p", branch = "feat-kad-count" } diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index e0ffe30ec5..3f00dfcb01 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -494,7 +494,7 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu let file = dir.join("qr.svg"); tokio::fs::write(file, qr_code.as_bytes()).await?; - tokio::time::sleep(std::time::Duration::from_secs(100)).await; + transfer.done().await?; sender.close().await?; } "receive-backup" => { diff --git a/src/imex.rs b/src/imex.rs index a589e9ac58..d727f4a658 100644 --- a/src/imex.rs +++ b/src/imex.rs @@ -160,11 +160,33 @@ pub async fn receive_backup_inner( let receiver = Receiver::new(port, rpc_p2p_port, rpc_store_port, &sender_db) .await .context("failed to create sender")?; - let receiver_transfer = receiver + let mut receiver_transfer = receiver .transfer_from_ticket(&ticket) .await .context("failed to read transfer")?; let data = receiver_transfer.recv().await?; + let progress = receiver_transfer.progress()?; + + // progress report + let ctx = context.clone(); + let progress_task = tokio::spawn(async move { + let mut last_progress = 0; + while let Ok(ev) = progress.recv().await { + match ev { + Ok(iroh_share::ProgressEvent::Piece { index, total }) => { + let progress = 1000 * index / total; + if progress != last_progress && progress < 1000 { + ctx.emit_event(EventType::ImexProgress(progress)); + last_progress = progress; + } + } + Err(err) => { + error!(ctx, "IMEX receive backup failed to complete: {}", err); + ctx.emit_event(EventType::ImexProgress(0)); + } + } + } + }); let out = context.get_blobdir(); @@ -199,6 +221,9 @@ pub async fn receive_backup_inner( } println!("Received all data, written to: {}", out.display()); + receiver.close().await?; + progress_task.await?; + Ok(()) } @@ -759,8 +784,10 @@ async fn export_backup_iroh( // get a fine backup file name (the name includes the date so that multiple backup instances are possible) let now = time(); let (temp_db_path, temp_path, dest_path) = get_next_backup_path(dir, now)?; + let sender_db_path = dir.join("iroh_db"); let _d1 = DeleteOnDrop(temp_db_path.clone()); let _d2 = DeleteOnDrop(temp_path.clone()); + let _d3 = DeleteOnDrop(sender_db_path.clone()); context .sql @@ -800,14 +827,12 @@ async fn export_backup_iroh( let port = 9990; let rpc_p2p_port = 5550; let rpc_store_port = 5560; - // TODO: not tempfile - let sender_dir = tempfile::tempdir().unwrap(); - // TODO: cleanup - let sender_db = sender_dir.into_path().join("db"); let sender = - iroh_share::Sender::new(port, rpc_p2p_port, rpc_store_port, &sender_db).await?; + iroh_share::Sender::new(port, rpc_p2p_port, rpc_store_port, &sender_db_path) + .await?; let transfer = sender.transfer_from_dir_builder(dir_builder).await?; + Ok((sender, transfer)) } Err(e) => { From 4ff746ef81032c3cc3eaa25e993ae82fd78d67d2 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Mon, 11 Jul 2022 20:27:40 +0200 Subject: [PATCH 09/28] fix "the trait `Add<&&str>` is not implemented for `std::string::String`" --- src/qr.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qr.rs b/src/qr.rs index 541d7c4cea..c025eca344 100644 --- a/src/qr.rs +++ b/src/qr.rs @@ -534,7 +534,7 @@ async fn decode_mailto(context: &Context, qr: &str) -> Result { if subject.is_empty() { body.to_string() } else { - subject + "\n" + body + subject + "\n" + *body } } else { subject From 94c16ef176039ceff7abc8bf6f008a5083a4c498 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Mon, 11 Jul 2022 22:50:05 +0200 Subject: [PATCH 10/28] repl: documentation and tab-completion for the new send-backup commands --- examples/repl/cmdline.rs | 4 ++-- examples/repl/main.rs | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index 3f00dfcb01..b908e29f5a 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -335,8 +335,8 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu continue-key-transfer \n\ has-backup\n\ export-backup\n\ - send-backup\n\ - receive-backup \n\ + send-backup []\n\ + receive-backup []\n\ import-backup \n\ export-keys\n\ import-keys\n\ diff --git a/examples/repl/main.rs b/examples/repl/main.rs index d0b45f975f..c8b118c904 100644 --- a/examples/repl/main.rs +++ b/examples/repl/main.rs @@ -155,13 +155,15 @@ impl Completer for DcHelper { } } -const IMEX_COMMANDS: [&str; 12] = [ +const IMEX_COMMANDS: [&str; 14] = [ "initiate-key-transfer", "get-setupcodebegin", "continue-key-transfer", "has-backup", "export-backup", "import-backup", + "send-backup", + "receive-backup", "export-keys", "import-keys", "export-setup", From 17f01e5e71c71840a47be0474a91451fcac43bc1 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Mon, 11 Jul 2022 22:50:46 +0200 Subject: [PATCH 11/28] fix: make passphrase work for repl's send-backup --- examples/repl/cmdline.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index b908e29f5a..f5c47a789d 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -482,7 +482,7 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu "send-backup" => { let dir = dirs::home_dir().unwrap_or_default(); let (sender, transfer) = - send_backup(&context, dir.as_ref(), Some(arg2.to_string())).await?; + send_backup(&context, dir.as_ref(), Some(arg1.to_string())).await?; let ticket = transfer.ticket(); let ticket_bytes = ticket.as_bytes(); From e61ee76e68f8208f8d523f1fd9f9475298742953 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Tue, 12 Jul 2022 00:13:18 +0200 Subject: [PATCH 12/28] document ffi wrt sending and receiving backups --- deltachat-ffi/deltachat.h | 88 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 83 insertions(+), 5 deletions(-) diff --git a/deltachat-ffi/deltachat.h b/deltachat-ffi/deltachat.h index f79c4ba9ab..59b7e8ced4 100644 --- a/deltachat-ffi/deltachat.h +++ b/deltachat-ffi/deltachat.h @@ -2143,11 +2143,6 @@ dc_contact_t* dc_get_contact (dc_context_t* context, uint32_t co void dc_imex (dc_context_t* context, int what, const char* param1, const char* param2); -dc_backup_sender_t* dc_send_backup(dc_context_t* context, const char* folder, const char* passphrase); -char* dc_backup_sender_qr(dc_context_t* context, const dc_backup_sender_t* bs); -void dc_backup_sender_unref(dc_backup_sender_t* bs); - - /** * Check if there is a backup file. * May only be used on fresh installations (e.g. dc_is_configured() returns 0). @@ -2297,6 +2292,7 @@ void dc_stop_ongoing_process (dc_context_t* context); #define DC_QR_FPR_MISMATCH 220 // id=contact #define DC_QR_FPR_WITHOUT_ADDR 230 // test1=formatted fingerprint #define DC_QR_ACCOUNT 250 // text1=domain +#define DC_QR_BACKUP 251 // text1=ticket #define DC_QR_WEBRTC_INSTANCE 260 // text1=domain, text2=instance pattern #define DC_QR_ADDR 320 // id=contact #define DC_QR_TEXT 330 // text1=text @@ -2342,6 +2338,10 @@ void dc_stop_ongoing_process (dc_context_t* context); * ask the user if they want to create an account on the given domain, * if so, call dc_set_config_from_qr() and then dc_configure(). * + * - DC_QR_BACKUP with dc_lot_t::text1=ticket + * ask the user if they want to set up a new device. + * If so, get pass the ticket to dc_receive_backup(). + * * - DC_QR_WEBRTC_INSTANCE with dc_lot_t::text1=domain: * ask the user if they want to use the given service for video chats; * if so, call dc_set_config_from_qr(). @@ -2632,6 +2632,84 @@ char* dc_get_last_error (dc_context_t* context); void dc_str_unref (char* str); +/** + * @class dc_backup_sender_t + * + * Set up another device. + */ + +/** + * Create an object for sending a backup to another device. + * The backup is sent through an peer-to-peer channel which is bootstrapped by a QR-code. + * As a backup contains the whole state of the account, including credentials, + * this can be used to setup a new device. + * + * @memberof dc_backup_sender_t + * @param context The context. + * @param folder Path to create the backup in before it is sent out. + * The path must exist and being accessible at least until the other device has received all data. + * The folder is not cleaned up by the backup send; + * a temporary directory seems to be good place therefore. + * @param passphrase Used to at-rest-encrypt the backuped database in `folder` before sending, + * similar to dc_imex(). + * The same passphrase must be given to dc_receive_backup() on the other device. + * If NULL or empty string is given, the sent backup is not encrypted at rest. + * The transport of the backup is always encrypted additionally. + * @return Opaque object for sending the backup. + * On errors, NULL is returned and dc_get_last_error() returns an error that should be shown to the user. + */ +dc_backup_sender_t* dc_send_backup (dc_context_t* context, const char* folder, const char* passphrase); + + +/** + * Get QR code text that will offer the backup to other devices. + * The QR code contains a ticket that will unambiguously identify the backup. + * + * The scanning device will pass the scanned content to dc_check_qr() then; + * if dc_check_qr() returns DC_QR_BACKUP, + * the backup transfer can be started using dc_receive_backup(). + * + * @memberof dc_backup_sender_t + * @param context The context. + * @param backup_sender The backup sender object as created by dc_send_backup(). + * @return The text that should go to the QR code, + * On errors, an empty QR code is returned, NULL is never returned. + * The returned string must be released using dc_str_unref() after usage. + */ +char* dc_backup_sender_qr (dc_context_t* context, const dc_backup_sender_t* backup_sender); + + +/** + * Free a backup sender object. + * + * @memberof dc_backup_sender_t + * @param backup_sender The backup sender object as created by dc_send_backup(), + * If NULL is given, nothing is done. + */ +void dc_backup_sender_unref (dc_backup_sender_t* backup_sender); + + +/** + * Receive a backup offered by a dc_backup_sender_t object on another device. + * + * This function is typically not called on the device where the dc_backup_sender_t object exist, + * but on a device that has scanned the QR code generated by dc_backup_sender_qr(). + * + * While dc_receive_backup() returns immediately, the started job may take a while; + * you can stop it using dc_stop_ongoing_process(). + * During execution of the job #DC_EVENT_IMEX_PROGRESS is sent out several times to indicate state and progress. + * + * @memberof dc_backup_sender_t + * @param context The context. + * @param ticket The ticket of the backup from the QR code: + * If dc_check_qr() returns DC_QR_BACKUP, you can get the ticket from the QR code using dc_lot_get_text1(). + * @param passphrase Passphrase for the additional at-rest-encryption + * as defined at dc_send_backup() on the other device. + * If no passphrase is used, pass NULL or empty string. + */ +void dc_receive_backup (dc_context_t* context, const char* ticket, const char* passphrase); + + /** * @class dc_accounts_t * From 0ed3348bdf0d14bc6aa3540cc38ab99b7e625bd2 Mon Sep 17 00:00:00 2001 From: bjoern Date: Wed, 13 Jul 2022 14:44:34 +0200 Subject: [PATCH 13/28] add `dc_receive_backup` ffi (#3504) * add dc_receive_backup ffi * fix compile issues * make clippy happy Co-authored-by: dignifiedquire --- deltachat-ffi/Cargo.toml | 1 + deltachat-ffi/src/lib.rs | 31 +++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/deltachat-ffi/Cargo.toml b/deltachat-ffi/Cargo.toml index 5ecee88722..e5ba6f341b 100644 --- a/deltachat-ffi/Cargo.toml +++ b/deltachat-ffi/Cargo.toml @@ -27,6 +27,7 @@ thiserror = "1" rand = "0.7" once_cell = "1.16.0" iroh-share = { git = "https://github.com/n0-computer/iroh", branch = "iroh-share" } +multibase = "0.9" [features] default = ["vendored"] diff --git a/deltachat-ffi/src/lib.rs b/deltachat-ffi/src/lib.rs index f78db33c8a..eb0ba1ff76 100644 --- a/deltachat-ffi/src/lib.rs +++ b/deltachat-ffi/src/lib.rs @@ -2223,7 +2223,10 @@ pub unsafe extern "C" fn dc_send_backup( imex::send_backup(ctx, folder.as_ref(), passphrase) .await .map(|(sender, transfer)| { - Box::into_raw(Box::new(dc_backup_sender { sender, transfer })) + Box::into_raw(Box::new(dc_backup_sender { + _sender: sender, + transfer, + })) }) .log_err(ctx, "send_backup failed") .unwrap_or_else(|_| ptr::null_mut()) @@ -2235,7 +2238,7 @@ pub unsafe extern "C" fn dc_send_backup( } pub struct dc_backup_sender { - sender: iroh_share::Sender, + _sender: iroh_share::Sender, transfer: iroh_share::SenderTransfer, } @@ -2265,6 +2268,30 @@ pub unsafe extern "C" fn dc_backup_sender_unref(bs: *mut dc_backup_sender) { } } +#[no_mangle] +pub unsafe extern "C" fn dc_receive_backup( + ctx: *mut dc_context_t, + ticket: *const libc::c_char, + passphrase: *const libc::c_char, +) { + if ctx.is_null() || ticket.is_null() { + eprintln!("ignoring careless call to dc_receive_backup"); + return; + } + let ctx = &*ctx; + let ticket = multibase::decode(to_string_lossy(ticket)) + .map(|(_, ticket)| ticket) + .unwrap_or_default(); + + let passphrase = to_opt_string_lossy(passphrase); + + spawn(async move { + imex::receive_backup(ctx, ticket, passphrase) + .await + .log_err(ctx, "IMEX failed") + }); +} + #[no_mangle] pub unsafe extern "C" fn dc_imex_has_backup( context: *mut dc_context_t, From 411d0a7cd414c5a31fdacd7e3664bd9aaa0a4ad8 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Thu, 14 Jul 2022 20:17:08 +0200 Subject: [PATCH 14/28] dc_reveive_backup() ffi just takes the qr-code again instead of several parameters --- deltachat-ffi/deltachat.h | 12 ++++++------ deltachat-ffi/src/lib.rs | 13 +++++++------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/deltachat-ffi/deltachat.h b/deltachat-ffi/deltachat.h index 59b7e8ced4..b6bd78f6a2 100644 --- a/deltachat-ffi/deltachat.h +++ b/deltachat-ffi/deltachat.h @@ -2292,7 +2292,7 @@ void dc_stop_ongoing_process (dc_context_t* context); #define DC_QR_FPR_MISMATCH 220 // id=contact #define DC_QR_FPR_WITHOUT_ADDR 230 // test1=formatted fingerprint #define DC_QR_ACCOUNT 250 // text1=domain -#define DC_QR_BACKUP 251 // text1=ticket +#define DC_QR_BACKUP 251 #define DC_QR_WEBRTC_INSTANCE 260 // text1=domain, text2=instance pattern #define DC_QR_ADDR 320 // id=contact #define DC_QR_TEXT 330 // text1=text @@ -2338,9 +2338,9 @@ void dc_stop_ongoing_process (dc_context_t* context); * ask the user if they want to create an account on the given domain, * if so, call dc_set_config_from_qr() and then dc_configure(). * - * - DC_QR_BACKUP with dc_lot_t::text1=ticket + * - DC_QR_BACKUP: * ask the user if they want to set up a new device. - * If so, get pass the ticket to dc_receive_backup(). + * If so, pass the qr-code to dc_receive_backup(). * * - DC_QR_WEBRTC_INSTANCE with dc_lot_t::text1=domain: * ask the user if they want to use the given service for video chats; @@ -2701,13 +2701,13 @@ void dc_backup_sender_unref (dc_backup_sender_t* backup_sender); * * @memberof dc_backup_sender_t * @param context The context. - * @param ticket The ticket of the backup from the QR code: - * If dc_check_qr() returns DC_QR_BACKUP, you can get the ticket from the QR code using dc_lot_get_text1(). + * @param qr The qr code containing all data needed to transfer the backup; + * usually, this is the case if dc_check_qr() returns DC_QR_BACKUP. * @param passphrase Passphrase for the additional at-rest-encryption * as defined at dc_send_backup() on the other device. * If no passphrase is used, pass NULL or empty string. */ -void dc_receive_backup (dc_context_t* context, const char* ticket, const char* passphrase); +void dc_receive_backup (dc_context_t* context, const char* qr, const char* passphrase); /** diff --git a/deltachat-ffi/src/lib.rs b/deltachat-ffi/src/lib.rs index eb0ba1ff76..5e719338bf 100644 --- a/deltachat-ffi/src/lib.rs +++ b/deltachat-ffi/src/lib.rs @@ -51,6 +51,7 @@ mod lot; mod string; use self::string::*; use deltachat::chatlist::Chatlist; +use deltachat::qr::Qr; // as C lacks a good and portable error handling, // in general, the C Interface is forgiving wrt to bad parameters. @@ -2271,18 +2272,18 @@ pub unsafe extern "C" fn dc_backup_sender_unref(bs: *mut dc_backup_sender) { #[no_mangle] pub unsafe extern "C" fn dc_receive_backup( ctx: *mut dc_context_t, - ticket: *const libc::c_char, + qr: *const libc::c_char, passphrase: *const libc::c_char, ) { - if ctx.is_null() || ticket.is_null() { + if ctx.is_null() { eprintln!("ignoring careless call to dc_receive_backup"); return; } let ctx = &*ctx; - let ticket = multibase::decode(to_string_lossy(ticket)) - .map(|(_, ticket)| ticket) - .unwrap_or_default(); - + let ticket = match block_on(qr::check_qr(ctx, &to_string_lossy(qr))) { + Ok(Qr::Backup { ticket }) => ticket.as_bytes(), + _ => vec![], + }; let passphrase = to_opt_string_lossy(passphrase); spawn(async move { From 1633b2fd26af684b133725c9352ddf23d92b2566 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Thu, 14 Jul 2022 23:40:49 +0200 Subject: [PATCH 15/28] clear config cache before receiving a backup (with new config values) --- src/imex.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/imex.rs b/src/imex.rs index d727f4a658..f6fd7a2492 100644 --- a/src/imex.rs +++ b/src/imex.rs @@ -167,6 +167,8 @@ pub async fn receive_backup_inner( let data = receiver_transfer.recv().await?; let progress = receiver_transfer.progress()?; + context.sql.config_cache.write().await.clear(); + // progress report let ctx = context.clone(); let progress_task = tokio::spawn(async move { From f696f3e48581f00cf949eab5130c1a1185130e58 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Thu, 28 Jul 2022 16:58:17 +0200 Subject: [PATCH 16/28] update iroh-share & cleanup api --- Cargo.toml | 4 ++-- deltachat-ffi/Cargo.toml | 2 +- deltachat-ffi/deltachat.h | 5 +++-- deltachat-ffi/src/lib.rs | 23 +++++++++++++---------- examples/repl/cmdline.rs | 4 +--- src/imex.rs | 28 +++++++++++----------------- 6 files changed, 31 insertions(+), 35 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b61b1c6dab..2badfc4497 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -83,8 +83,8 @@ futures-lite = "1.12.0" tokio-stream = { version = "0.1.11", features = ["fs"] } reqwest = { version = "0.11.12", features = ["json"] } async_zip = { version = "0.0.9", default-features = false, features = ["deflate"] } -iroh-share = { git = "https://github.com/n0-computer/iroh", branch = "iroh-share" } -iroh-resolver = { git = "https://github.com/n0-computer/iroh", branch = "iroh-share" } +iroh-share = { git = "https://github.com/n0-computer/iroh", branch = "main" } +iroh-resolver = { git = "https://github.com/n0-computer/iroh", branch = "main", default-features = false } tempfile = "3" multibase = "0.9.1" diff --git a/deltachat-ffi/Cargo.toml b/deltachat-ffi/Cargo.toml index e5ba6f341b..b9934d2aeb 100644 --- a/deltachat-ffi/Cargo.toml +++ b/deltachat-ffi/Cargo.toml @@ -26,7 +26,7 @@ anyhow = "1" thiserror = "1" rand = "0.7" once_cell = "1.16.0" -iroh-share = { git = "https://github.com/n0-computer/iroh", branch = "iroh-share" } +iroh-share = { git = "https://github.com/n0-computer/iroh", branch = "main" } multibase = "0.9" [features] diff --git a/deltachat-ffi/deltachat.h b/deltachat-ffi/deltachat.h index b6bd78f6a2..49fa12a999 100644 --- a/deltachat-ffi/deltachat.h +++ b/deltachat-ffi/deltachat.h @@ -2680,13 +2680,14 @@ char* dc_backup_sender_qr (dc_context_t* context, const dc_backup_sender_t* back /** - * Free a backup sender object. + * Waits for the sending to finish and frees the backup sender object. * * @memberof dc_backup_sender_t + * @param context The context. * @param backup_sender The backup sender object as created by dc_send_backup(), * If NULL is given, nothing is done. */ -void dc_backup_sender_unref (dc_backup_sender_t* backup_sender); +void dc_backup_sender_done (dc_context_t* context, dc_backup_sender_t* backup_sender); /** diff --git a/deltachat-ffi/src/lib.rs b/deltachat-ffi/src/lib.rs index 5e719338bf..f0811118f7 100644 --- a/deltachat-ffi/src/lib.rs +++ b/deltachat-ffi/src/lib.rs @@ -2223,12 +2223,7 @@ pub unsafe extern "C" fn dc_send_backup( block_on(async move { imex::send_backup(ctx, folder.as_ref(), passphrase) .await - .map(|(sender, transfer)| { - Box::into_raw(Box::new(dc_backup_sender { - _sender: sender, - transfer, - })) - }) + .map(|transfer| Box::into_raw(Box::new(dc_backup_sender { transfer }))) .log_err(ctx, "send_backup failed") .unwrap_or_else(|_| ptr::null_mut()) }) @@ -2239,7 +2234,6 @@ pub unsafe extern "C" fn dc_send_backup( } pub struct dc_backup_sender { - _sender: iroh_share::Sender, transfer: iroh_share::SenderTransfer, } @@ -2263,10 +2257,19 @@ pub unsafe extern "C" fn dc_backup_sender_qr( } #[no_mangle] -pub unsafe extern "C" fn dc_backup_sender_unref(bs: *mut dc_backup_sender) { - if !bs.is_null() { - let _ = Box::from_raw(bs); +pub unsafe extern "C" fn dc_backup_sender_done(ctx: *mut dc_context_t, bs: *mut dc_backup_sender) { + if ctx.is_null() || bs.is_null() { + eprintln!("ignoring careless call to dc_backup_sender_wait"); + return; } + let ctx = &*ctx; + let bs = Box::from_raw(bs); + + block_on(async move { + if let Err(e) = bs.transfer.done().await { + error!(ctx, "sending backup failed: {:?}", e); + } + }); } #[no_mangle] diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index f5c47a789d..d8dee3b1cc 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -481,8 +481,7 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu } "send-backup" => { let dir = dirs::home_dir().unwrap_or_default(); - let (sender, transfer) = - send_backup(&context, dir.as_ref(), Some(arg1.to_string())).await?; + let transfer = send_backup(&context, dir.as_ref(), Some(arg1.to_string())).await?; let ticket = transfer.ticket(); let ticket_bytes = ticket.as_bytes(); @@ -495,7 +494,6 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu tokio::fs::write(file, qr_code.as_bytes()).await?; transfer.done().await?; - sender.close().await?; } "receive-backup" => { ensure!(!arg1.is_empty(), "Argument is missing."); diff --git a/src/imex.rs b/src/imex.rs index f6fd7a2492..2ffd253c78 100644 --- a/src/imex.rs +++ b/src/imex.rs @@ -155,9 +155,7 @@ pub async fn receive_backup_inner( let sender_db = sender_dir.path().join("db"); let port = 9991; - let rpc_p2p_port = 5551; - let rpc_store_port = 5561; - let receiver = Receiver::new(port, rpc_p2p_port, rpc_store_port, &sender_db) + let receiver = Receiver::new(port, &sender_db) .await .context("failed to create sender")?; let mut receiver_transfer = receiver @@ -165,7 +163,7 @@ pub async fn receive_backup_inner( .await .context("failed to read transfer")?; let data = receiver_transfer.recv().await?; - let progress = receiver_transfer.progress()?; + let mut progress = receiver_transfer.progress()?; context.sql.config_cache.write().await.clear(); @@ -173,7 +171,7 @@ pub async fn receive_backup_inner( let ctx = context.clone(); let progress_task = tokio::spawn(async move { let mut last_progress = 0; - while let Ok(ev) = progress.recv().await { + while let Some(ev) = progress.next().await { match ev { Ok(iroh_share::ProgressEvent::Piece { index, total }) => { let progress = 1000 * index / total; @@ -222,9 +220,10 @@ pub async fn receive_backup_inner( } } - println!("Received all data, written to: {}", out.display()); - receiver.close().await?; progress_task.await?; + receiver_transfer.finish().await?; + + println!("Received all data, written to: {}", out.display()); Ok(()) } @@ -233,7 +232,7 @@ pub async fn send_backup( context: &Context, path: &Path, passphrase: Option, -) -> Result<(iroh_share::Sender, iroh_share::SenderTransfer)> { +) -> Result { let cancel = context.alloc_ongoing().await?; let res = send_backup_inner(context, path, passphrase) @@ -261,7 +260,7 @@ async fn send_backup_inner( context: &Context, path: &Path, passphrase: Option, -) -> Result<(iroh_share::Sender, iroh_share::SenderTransfer)> { +) -> Result { info!(context, "Import/export dir: {}", path.display()); ensure!(context.sql.is_open().await, "Database not opened."); context.emit_event(EventType::ImexProgress(10)); @@ -782,7 +781,7 @@ async fn export_backup_iroh( context: &Context, dir: &Path, passphrase: String, -) -> Result<(iroh_share::Sender, iroh_share::SenderTransfer)> { +) -> Result { // get a fine backup file name (the name includes the date so that multiple backup instances are possible) let now = time(); let (temp_db_path, temp_path, dest_path) = get_next_backup_path(dir, now)?; @@ -827,15 +826,10 @@ async fn export_backup_iroh( match res { Ok(dir_builder) => { let port = 9990; - let rpc_p2p_port = 5550; - let rpc_store_port = 5560; - - let sender = - iroh_share::Sender::new(port, rpc_p2p_port, rpc_store_port, &sender_db_path) - .await?; + let sender = iroh_share::Sender::new(port, &sender_db_path).await?; let transfer = sender.transfer_from_dir_builder(dir_builder).await?; - Ok((sender, transfer)) + Ok(transfer) } Err(e) => { error!(context, "backup failed: {}", e); From 6c6499f2ff2cfaca5e0ac926ecb4d4b69b29d4af Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Mon, 29 Aug 2022 14:39:07 +0200 Subject: [PATCH 17/28] apply updates --- deltachat-jsonrpc/src/api/types/mod.rs | 212 +++++++++++++++++++++++++ examples/repl/cmdline.rs | 4 +- src/imex.rs | 26 +-- src/qr.rs | 2 +- 4 files changed, 230 insertions(+), 14 deletions(-) diff --git a/deltachat-jsonrpc/src/api/types/mod.rs b/deltachat-jsonrpc/src/api/types/mod.rs index 5f8b541bd2..a0f973271a 100644 --- a/deltachat-jsonrpc/src/api/types/mod.rs +++ b/deltachat-jsonrpc/src/api/types/mod.rs @@ -20,3 +20,215 @@ fn maybe_empty_string_to_option(string: String) -> Option { Some(string) } } +#[derive(Serialize, TypeDef)] +#[serde(rename = "Qr", rename_all = "camelCase")] +#[serde(tag = "type")] +pub enum QrObject { + AskVerifyContact { + contact_id: u32, + fingerprint: String, + invitenumber: String, + authcode: String, + }, + AskVerifyGroup { + grpname: String, + grpid: String, + contact_id: u32, + fingerprint: String, + invitenumber: String, + authcode: String, + }, + FprOk { + contact_id: u32, + }, + FprMismatch { + contact_id: Option, + }, + FprWithoutAddr { + fingerprint: String, + }, + Account { + domain: String, + }, + WebrtcInstance { + domain: String, + instance_pattern: String, + }, + Addr { + contact_id: u32, + draft: Option, + }, + Url { + url: String, + }, + Text { + text: String, + }, + WithdrawVerifyContact { + contact_id: u32, + fingerprint: String, + invitenumber: String, + authcode: String, + }, + WithdrawVerifyGroup { + grpname: String, + grpid: String, + contact_id: u32, + fingerprint: String, + invitenumber: String, + authcode: String, + }, + ReviveVerifyContact { + contact_id: u32, + fingerprint: String, + invitenumber: String, + authcode: String, + }, + ReviveVerifyGroup { + grpname: String, + grpid: String, + contact_id: u32, + fingerprint: String, + invitenumber: String, + authcode: String, + }, + Login { + address: String, + }, +} + +impl From for QrObject { + fn from(qr: Qr) -> Self { + match qr { + Qr::AskVerifyContact { + contact_id, + fingerprint, + invitenumber, + authcode, + } => { + let contact_id = contact_id.to_u32(); + let fingerprint = fingerprint.to_string(); + QrObject::AskVerifyContact { + contact_id, + fingerprint, + invitenumber, + authcode, + } + } + Qr::AskVerifyGroup { + grpname, + grpid, + contact_id, + fingerprint, + invitenumber, + authcode, + } => { + let contact_id = contact_id.to_u32(); + let fingerprint = fingerprint.to_string(); + QrObject::AskVerifyGroup { + grpname, + grpid, + contact_id, + fingerprint, + invitenumber, + authcode, + } + } + Qr::FprOk { contact_id } => { + let contact_id = contact_id.to_u32(); + QrObject::FprOk { contact_id } + } + Qr::FprMismatch { contact_id } => { + let contact_id = contact_id.map(|contact_id| contact_id.to_u32()); + QrObject::FprMismatch { contact_id } + } + Qr::FprWithoutAddr { fingerprint } => QrObject::FprWithoutAddr { fingerprint }, + Qr::Account { domain } => QrObject::Account { domain }, + Qr::WebrtcInstance { + domain, + instance_pattern, + } => QrObject::WebrtcInstance { + domain, + instance_pattern, + }, + Qr::Addr { contact_id, draft } => { + let contact_id = contact_id.to_u32(); + QrObject::Addr { contact_id, draft } + } + Qr::Url { url } => QrObject::Url { url }, + Qr::Text { text } => QrObject::Text { text }, + Qr::WithdrawVerifyContact { + contact_id, + fingerprint, + invitenumber, + authcode, + } => { + let contact_id = contact_id.to_u32(); + let fingerprint = fingerprint.to_string(); + QrObject::WithdrawVerifyContact { + contact_id, + fingerprint, + invitenumber, + authcode, + } + } + Qr::WithdrawVerifyGroup { + grpname, + grpid, + contact_id, + fingerprint, + invitenumber, + authcode, + } => { + let contact_id = contact_id.to_u32(); + let fingerprint = fingerprint.to_string(); + QrObject::WithdrawVerifyGroup { + grpname, + grpid, + contact_id, + fingerprint, + invitenumber, + authcode, + } + } + Qr::ReviveVerifyContact { + contact_id, + fingerprint, + invitenumber, + authcode, + } => { + let contact_id = contact_id.to_u32(); + let fingerprint = fingerprint.to_string(); + QrObject::ReviveVerifyContact { + contact_id, + fingerprint, + invitenumber, + authcode, + } + } + Qr::ReviveVerifyGroup { + grpname, + grpid, + contact_id, + fingerprint, + invitenumber, + authcode, + } => { + let contact_id = contact_id.to_u32(); + let fingerprint = fingerprint.to_string(); + QrObject::ReviveVerifyGroup { + grpname, + grpid, + contact_id, + fingerprint, + invitenumber, + authcode, + } + } + Qr::Login { address, .. } => QrObject::Login { address }, + Qr::Backup { ticket } => QrObject::Backup { + ticket: ticket.as_bytes(), + }, + } + } +} diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index d8dee3b1cc..83a7e9bb94 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -489,7 +489,7 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu "Ticket: {}", multibase::encode(multibase::Base::Base64, &ticket_bytes) ); - let qr_code = deltachat::qr_code_generator::generate_backup_qr_code(&ticket)?; + let qr_code = deltachat::qr_code_generator::generate_backup_qr_code(ticket)?; let file = dir.join("qr.svg"); tokio::fs::write(file, qr_code.as_bytes()).await?; @@ -497,7 +497,7 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu } "receive-backup" => { ensure!(!arg1.is_empty(), "Argument is missing."); - let (_, ticket) = multibase::decode(&arg1.to_string())?; + let (_, ticket) = multibase::decode(&arg1)?; receive_backup(&context, ticket, Some(arg2.to_string())).await?; } "import-backup" => { diff --git a/src/imex.rs b/src/imex.rs index 2ffd253c78..1164288ea2 100644 --- a/src/imex.rs +++ b/src/imex.rs @@ -151,11 +151,11 @@ pub async fn receive_backup_inner( ); let ticket = Ticket::from_bytes(&ticket_bytes)?; - let sender_dir = tempfile::tempdir().unwrap(); - let sender_db = sender_dir.path().join("db"); - + let recv_dir = tempfile::tempdir().unwrap(); + let recv_db = recv_dir.path().join("db"); let port = 9991; - let receiver = Receiver::new(port, &sender_db) + + let receiver = Receiver::new(port, &recv_db) .await .context("failed to create sender")?; let mut receiver_transfer = receiver @@ -190,16 +190,20 @@ pub async fn receive_backup_inner( let out = context.get_blobdir(); - for link in data.read_dir().unwrap() { + let mut read_dir_stream = data + .read_dir()? + .ok_or_else(|| anyhow::anyhow!("unexpected data structure"))?; + + while let Some(link) = read_dir_stream.next().await { let link = link?; let file_content = data.read_file(&link).await?; let name = link.name.unwrap_or_default(); let path = out.join(&name); - println!("Writing {}", path.display()); + let mut file = tokio::fs::File::create(&path) .await .with_context(|| format!("create file: {}", path.display()))?; - let mut content = file_content.pretty(); + let mut content = file_content.pretty()?; tokio::io::copy(&mut content, &mut file) .await .context("copy")?; @@ -223,7 +227,7 @@ pub async fn receive_backup_inner( progress_task.await?; receiver_transfer.finish().await?; - println!("Received all data, written to: {}", out.display()); + info!(context, "Received all data, written to: {}", out.display()); Ok(()) } @@ -246,10 +250,10 @@ pub async fn send_backup( if let Err(err) = res.as_ref() { // We are using Anyhow's .context() and to show the inner error, too, we need the {:#}: - error!(context, "IMEX failed to complete: {:#}", err); + error!(context, "Send backup failed to complete: {:#}", err); context.emit_event(EventType::ImexProgress(0)); } else { - info!(context, "IMEX successfully completed"); + info!(context, "Send backup successfully completed"); context.emit_event(EventType::ImexProgress(1000)); } @@ -261,7 +265,7 @@ async fn send_backup_inner( path: &Path, passphrase: Option, ) -> Result { - info!(context, "Import/export dir: {}", path.display()); + info!(context, "Send backup dir: {}", path.display()); ensure!(context.sql.is_open().await, "Database not opened."); context.emit_event(EventType::ImexProgress(10)); diff --git a/src/qr.rs b/src/qr.rs index c025eca344..191e79a3c6 100644 --- a/src/qr.rs +++ b/src/qr.rs @@ -34,7 +34,7 @@ const HTTP_SCHEME: &str = "http://"; const HTTPS_SCHEME: &str = "https://"; pub const DCBACKUP_SCHEME: &str = "DCBACKUP:"; -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq)] pub enum Qr { AskVerifyContact { contact_id: ContactId, From ba869a2e7f037b34585791bcfebb9d854d6f0a01 Mon Sep 17 00:00:00 2001 From: Asmir Avdicevic Date: Tue, 30 Aug 2022 21:22:09 +0200 Subject: [PATCH 18/28] ci: protoc fix (#3566) --- .github/workflows/ci.yml | 16 +++++++++++++++- .github/workflows/jsonrpc.yml | 5 +++++ .github/workflows/node-package.yml | 6 +++++- .github/workflows/node-tests.yml | 6 +++++- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f9b1378fed..6cecd2eb2a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,6 +40,11 @@ jobs: toolchain: stable components: clippy override: true + - name: Install Protoc + uses: arduino/setup-protoc@v1 + with: + version: '3.20.1' + repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Cache rust cargo artifacts uses: swatinem/rust-cache@v1 - uses: actions-rs/clippy-check@v1 @@ -55,6 +60,11 @@ jobs: steps: - name: Checkout sources uses: actions/checkout@v2 + - name: Install Protoc + uses: arduino/setup-protoc@v1 + with: + version: '3.20.1' + repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Install rust stable toolchain uses: actions-rs/toolchain@v1 with: @@ -94,7 +104,11 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@master - + - name: Install Protoc + uses: arduino/setup-protoc@v1 + with: + version: '3.20.1' + repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Install ${{ matrix.rust }} uses: actions-rs/toolchain@v1 with: diff --git a/.github/workflows/jsonrpc.yml b/.github/workflows/jsonrpc.yml index 5b1781a469..43290f2b33 100644 --- a/.github/workflows/jsonrpc.yml +++ b/.github/workflows/jsonrpc.yml @@ -26,6 +26,11 @@ jobs: override: true - name: Add Rust cache uses: Swatinem/rust-cache@v1.3.0 + - name: Install Protoc + uses: arduino/setup-protoc@v1 + with: + version: '3.20.1' + repo-token: ${{ secrets.GITHUB_TOKEN }} - name: npm install run: | cd deltachat-jsonrpc/typescript diff --git a/.github/workflows/node-package.yml b/.github/workflows/node-package.yml index a73e0579e7..267442a937 100644 --- a/.github/workflows/node-package.yml +++ b/.github/workflows/node-package.yml @@ -27,7 +27,11 @@ jobs: cargo -vV npm --version node --version - + - name: Install Protoc + uses: arduino/setup-protoc@v1 + with: + version: '3.20.1' + repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Cache node modules uses: actions/cache@v2 with: diff --git a/.github/workflows/node-tests.yml b/.github/workflows/node-tests.yml index 6f90530da6..4742b3a9f8 100644 --- a/.github/workflows/node-tests.yml +++ b/.github/workflows/node-tests.yml @@ -27,7 +27,11 @@ jobs: cargo -vV npm --version node --version - + - name: Install Protoc + uses: arduino/setup-protoc@v1 + with: + version: '3.20.1' + repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Cache node modules uses: actions/cache@v2 with: From 09d5cbe564dd0d9fe5a539244eb0b24c628e44b9 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Mon, 19 Sep 2022 10:59:19 +0200 Subject: [PATCH 19/28] update deps --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 2badfc4497..62a30a06c5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -154,4 +154,4 @@ vendored = [ nightly = ["pgp/nightly"] [patch.crates-io] -libp2p = { git = "https://github.com/dignifiedquire/rust-libp2p", branch = "feat-kad-count" } +libp2p = { git = "https://github.com/dignifiedquire/rust-libp2p", branch = "iroh" } From 26719ee358820e755d279a32282b3407ee8c2238 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Mon, 19 Sep 2022 11:18:03 +0200 Subject: [PATCH 20/28] apply CR --- Cargo.lock | 3536 ++++++++++++++++++++++++++++++++++---- Cargo.toml | 5 +- examples/repl/cmdline.rs | 6 +- foo-shm | Bin 0 -> 32768 bytes foo-wal | Bin 0 -> 539752 bytes src/imex.rs | 25 +- 6 files changed, 3231 insertions(+), 341 deletions(-) create mode 100644 foo-shm create mode 100644 foo-wal diff --git a/Cargo.lock b/Cargo.lock index f1882dfd81..37d410e007 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,10 +24,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] -name = "adler32" -version = "1.2.0" +name = "aead" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" +dependencies = [ + "generic-array", +] + +[[package]] +name = "aes" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +dependencies = [ + "cfg-if", + "cipher 0.3.0", + "cpufeatures", + "opaque-debug", +] [[package]] name = "aes" @@ -36,10 +51,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" dependencies = [ "cfg-if", - "cipher", + "cipher 0.4.3", "cpufeatures", ] +[[package]] +name = "aes-gcm" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" +dependencies = [ + "aead", + "aes 0.7.5", + "cipher 0.3.0", + "ctr", + "ghash", + "subtle", +] + [[package]] name = "ahash" version = "0.7.6" @@ -53,9 +82,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.18" +version = "0.7.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" dependencies = [ "memchr", ] @@ -68,9 +97,9 @@ checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" [[package]] name = "android_system_properties" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7ed72e1635e121ca3e79420540282af22da58be50de153d36f81ddc6b83aa9e" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ "libc", ] @@ -86,9 +115,21 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.66" +version = "1.0.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602" + +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "arrayvec" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] name = "ascii_utils" @@ -96,6 +137,12 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71938f30533e4d95a6d17aa530939da3842c2ab6f4f84b9dae68447e4129f74a" +[[package]] +name = "asn1_der" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21" + [[package]] name = "async-channel" version = "1.7.1" @@ -116,10 +163,39 @@ dependencies = [ "flate2", "futures-core", "memchr", - "pin-project-lite", + "pin-project-lite 0.2.9", "tokio", ] +[[package]] +name = "async-executor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0da5b41ee986eed3f524c380e6d64965aea573882a8907682ad100f7859305ca" +dependencies = [ + "async-channel", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + [[package]] name = "async-imap" version = "0.6.0" @@ -127,7 +203,7 @@ source = "git+https://github.com/async-email/async-imap?branch=master#8755b666fc dependencies = [ "async-channel", "async-native-tls", - "base64 0.13.1", + "base64 0.13.0", "byte-pool", "chrono", "futures", @@ -142,6 +218,35 @@ dependencies = [ "tokio", ] +[[package]] +name = "async-io" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e21f3a490c72b3b0cf44962180e60045de2925d8dff97918f7ee43c8f637c7" +dependencies = [ + "autocfg", + "concurrent-queue", + "futures-lite", + "libc", + "log", + "once_cell", + "parking", + "polling", + "slab", + "socket2", + "waker-fn", + "winapi", +] + +[[package]] +name = "async-lock" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" +dependencies = [ + "event-listener", +] + [[package]] name = "async-mutex" version = "1.4.0" @@ -163,6 +268,17 @@ dependencies = [ "url", ] +[[package]] +name = "async-recursion" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cda8f4bcc10624c4e85bc66b3f452cca98cfa5ca002dc83a16aad2367641bea" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "async-smtp" version = "0.5.0" @@ -171,7 +287,7 @@ checksum = "6da21e1dd19fbad3e095ad519fb1558ab77fd82e5c4778dca8f9be0464589e1e" dependencies = [ "async-native-tls", "async-trait", - "base64 0.13.1", + "base64 0.13.0", "bufstream", "fast-socks5", "futures", @@ -184,6 +300,33 @@ dependencies = [ "tokio", ] +[[package]] +name = "async-stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e" +dependencies = [ + "async-stream-impl", + "futures-core", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "async-task" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" + [[package]] name = "async-trait" version = "0.1.57" @@ -218,6 +361,25 @@ dependencies = [ "tokio", ] +[[package]] +name = "asynchronous-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690" +dependencies = [ + "bytes", + "futures-sink", + "futures-util", + "memchr", + "pin-project-lite 0.2.9", +] + +[[package]] +name = "atomic-waker" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" + [[package]] name = "atty" version = "0.2.14" @@ -243,7 +405,7 @@ checksum = "acee9fd5073ab6b045a275b3e709c163dd36c90685219cb21804a147b58dba43" dependencies = [ "async-trait", "axum-core", - "base64 0.13.1", + "base64 0.13.0", "bitflags", "bytes", "futures-util", @@ -255,11 +417,11 @@ dependencies = [ "memchr", "mime", "percent-encoding", - "pin-project-lite", + "pin-project-lite 0.2.9", "serde", "serde_json", "serde_urlencoded", - "sha-1", + "sha-1 0.10.0", "sync_wrapper", "tokio", "tokio-tungstenite", @@ -300,6 +462,12 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + [[package]] name = "base64" version = "0.11.0" @@ -314,15 +482,43 @@ checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" [[package]] name = "base64" -version = "0.13.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "base64ct" -version = "1.5.1" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2b2456fd614d856680dcd9fcc660a51a820fa09daef2e49772b56a193c8474" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bindgen" +version = "0.60.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bdca834647821e0b13d9539a8634eb62d3501b6b6c2cec1722786ee6671b851" +checksum = "062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", +] [[package]] name = "bitfield" @@ -336,6 +532,50 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "blake2" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cf849ee05b2ee5fba5e36f97ff8ec2533916700fc0758d40d92136a42f3388" +dependencies = [ + "digest 0.10.5", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72936ee4afc7f8f736d1c38383b56480b5497b4617b4a77bdbf1d2ababc76127" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake2s_simd" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db539cc2b5f6003621f1cd9ef92d7ded8ea5232c7de0f9faa2de251cd98730d4" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake3" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.9.0" @@ -347,9 +587,9 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" dependencies = [ "generic-array", ] @@ -363,6 +603,20 @@ dependencies = [ "generic-array", ] +[[package]] +name = "blocking" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" +dependencies = [ + "async-channel", + "async-task", + "atomic-waker", + "fastrand", + "futures-lite", + "once_cell", +] + [[package]] name = "blowfish" version = "0.9.1" @@ -370,9 +624,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7" dependencies = [ "byteorder", - "cipher", + "cipher 0.4.3", ] +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + [[package]] name = "bstr" version = "0.2.17" @@ -403,9 +663,9 @@ checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" [[package]] name = "bumpalo" -version = "3.10.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" +checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" [[package]] name = "byte-pool" @@ -417,11 +677,32 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "bytecheck" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d11cac2c12b5adc6570dad2ee1b87eff4955dac476fe12d81e5fdd352e52406f" +dependencies = [ + "bytecheck_derive", + "ptr_meta", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13e576ebe98e605500b3c8041bb888e966653577172df6dd97398714eb30b9bf" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "bytemuck" -version = "1.11.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5377c8865e74a160d21f29c2d40669f53286db6eab59b88540cbb12ffc8b835" +checksum = "2f5715e491b5a1598fc2bef5a606847b5dc1d48ea625bd3c02c00de8285591da" [[package]] name = "byteorder" @@ -434,6 +715,20 @@ name = "bytes" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" +dependencies = [ + "serde", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] [[package]] name = "cache-padded" @@ -441,6 +736,16 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" +[[package]] +name = "cached" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af4dfac631a8e77b2f327f7852bb6172771f5279c4512efe79fad6067b37be3d" +dependencies = [ + "hashbrown 0.11.2", + "once_cell", +] + [[package]] name = "cast" version = "0.3.0" @@ -453,7 +758,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26b07d673db1ccf000e90f54b819db9e75a8348d6eb056e9b8ab53231b7a9911" dependencies = [ - "cipher", + "cipher 0.4.3", ] [[package]] @@ -461,6 +766,18 @@ name = "cc" version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom 7.1.1", +] [[package]] name = "cfb-mode" @@ -468,7 +785,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "738b8d467867f80a71351933f70461f5b56f24d5c93e0cf216e59229c968d330" dependencies = [ - "cipher", + "cipher 0.4.3", ] [[package]] @@ -477,13 +794,38 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chacha20" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c80e5460aa66fe3b91d40bcbdab953a597b60053e34d684ac6903f863b680a6" +dependencies = [ + "cfg-if", + "cipher 0.3.0", + "cpufeatures", + "zeroize", +] + +[[package]] +name = "chacha20poly1305" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18446b09be63d457bbec447509e85f662f32952b035ce892290396bc0b0cff5" +dependencies = [ + "aead", + "chacha20", + "cipher 0.3.0", + "poly1305", + "zeroize", +] + [[package]] name = "charset" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18e9079d1a12a2cc2bffb5db039c43661836ead4082120d5844f02555aca2d46" dependencies = [ - "base64 0.13.1", + "base64 0.13.0", "encoding_rs", ] @@ -497,11 +839,35 @@ dependencies = [ "js-sys", "num-integer", "num-traits", - "time", + "serde", + "time 0.1.44", "wasm-bindgen", "winapi", ] +[[package]] +name = "cid" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ed9c8b2d17acb8110c46f1da5bf4a696d745e1474a16db0cd2b49cd0249bf2" +dependencies = [ + "core2", + "multibase", + "multihash", + "serde", + "serde_bytes", + "unsigned-varint", +] + +[[package]] +name = "cipher" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array", +] + [[package]] name = "cipher" version = "0.4.3" @@ -513,16 +879,66 @@ dependencies = [ ] [[package]] -name = "clap" -version = "2.34.0" +name = "clang-sys" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +checksum = "5a050e2153c5be08febd6734e29298e844fdb0fa21aeddd63b4eb7baa106c69b" dependencies = [ - "bitflags", + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "bitflags", "textwrap 0.11.0", "unicode-width", ] +[[package]] +name = "clap" +version = "3.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750" +dependencies = [ + "atty", + "bitflags", + "clap_derive", + "clap_lex", + "indexmap", + "once_cell", + "strsim", + "termcolor", + "textwrap 0.15.1", +] + +[[package]] +name = "clap_derive" +version = "3.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" +dependencies = [ + "heck 0.4.0", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + [[package]] name = "clipboard-win" version = "4.4.2" @@ -549,11 +965,36 @@ dependencies = [ "cache-padded", ] +[[package]] +name = "config" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11f1667b8320afa80d69d8bbe40830df2c8a06003d86f73d8e003b2c48df416d" +dependencies = [ + "async-trait", + "json5", + "lazy_static", + "nom 7.1.1", + "pathdiff", + "ron", + "rust-ini", + "serde", + "serde_json", + "toml", + "yaml-rust", +] + [[package]] name = "const-oid" -version = "0.9.0" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cec318a675afcb6a1ea1d4340e2d377e56e47c266f28043ceccbf4412ddfdd3b" + +[[package]] +name = "constant_time_eq" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "convert_case" @@ -577,11 +1018,20 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +[[package]] +name = "core2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" +dependencies = [ + "memchr", +] + [[package]] name = "cpufeatures" -version = "0.2.2" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" dependencies = [ "libc", ] @@ -609,7 +1059,7 @@ checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" dependencies = [ "atty", "cast", - "clap", + "clap 2.34.0", "criterion-plot", "csv", "futures", @@ -694,6 +1144,12 @@ dependencies = [ "once_cell", ] +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + [[package]] name = "crypto-common" version = "0.1.6" @@ -726,6 +1182,25 @@ dependencies = [ "memchr", ] +[[package]] +name = "ctr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +dependencies = [ + "cipher 0.3.0", +] + +[[package]] +name = "ctrlc" +version = "3.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d91974fbbe88ec1df0c24a4f00f99583667a7e2e6272b2b92d294d81e462173" +dependencies = [ + "nix 0.25.0", + "winapi", +] + [[package]] name = "curve25519-dalek" version = "3.2.0" @@ -739,6 +1214,19 @@ dependencies = [ "zeroize", ] +[[package]] +name = "curve25519-dalek" +version = "4.0.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4033478fbf70d6acf2655ac70da91ee65852d69daf7a67bf7a2f518fb47aafcf" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + [[package]] name = "darling" version = "0.13.4" @@ -816,12 +1304,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" [[package]] -name = "deflate" -version = "1.0.0" +name = "data-encoding-macro" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86927b7cd2fe88fa698b87404b287ab98d1a0063a34071d92e575b72d3029aca" +dependencies = [ + "data-encoding", + "data-encoding-macro-internal", +] + +[[package]] +name = "data-encoding-macro-internal" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f" +checksum = "a5bbed42daaa95e780b60a50546aa345b8413a1e46f9a40a12907d3598f038db" dependencies = [ - "adler32", + "data-encoding", + "syn", ] [[package]] @@ -836,7 +1335,7 @@ dependencies = [ "async-smtp", "async_zip", "backtrace", - "base64 0.13.1", + "base64 0.13.0", "bitflags", "chrono", "criterion", @@ -851,11 +1350,14 @@ dependencies = [ "hex", "humansize", "image", + "iroh-resolver", + "iroh-share", "kamadak-exif", "lettre_email", "libc", "log", "mailparse", + "multibase", "native-tls", "num-derive", "num-traits", @@ -863,6 +1365,7 @@ dependencies = [ "once_cell", "percent-encoding", "pgp", + "port_check", "pretty_env_logger", "proptest", "qrcodegen", @@ -878,7 +1381,7 @@ dependencies = [ "sanitize-filename", "serde", "serde_json", - "sha-1", + "sha-1 0.10.0", "sha2 0.10.6", "smallvec", "strum", @@ -891,9 +1394,9 @@ dependencies = [ "tokio-stream", "tokio-tar", "toml", - "trust-dns-resolver", + "trust-dns-resolver 0.22.0", "url", - "uuid 1.2.1", + "uuid 1.1.2", ] [[package]] @@ -949,7 +1452,9 @@ dependencies = [ "deltachat", "deltachat-jsonrpc", "human-panic", + "iroh-share", "libc", + "multibase", "num-traits", "once_cell", "rand 0.7.3", @@ -1006,7 +1511,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffdd80ce8ce993de27e9f063a444a4d53ce8e8db4c1f00cc03af5ad5a9867a1e" dependencies = [ - "cipher", + "cipher 0.4.3", ] [[package]] @@ -1024,9 +1529,10 @@ version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" dependencies = [ - "block-buffer 0.10.2", + "block-buffer 0.10.3", "const-oid", "crypto-common", + "subtle", ] [[package]] @@ -1070,6 +1576,28 @@ dependencies = [ "winapi", ] +[[package]] +name = "dlv-list" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" + +[[package]] +name = "dns-parser" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea" +dependencies = [ + "byteorder", + "quick-error 1.2.3", +] + +[[package]] +name = "dtoa" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6053ff46b5639ceb91756a85a4c8914668393a03170efd79c8884a529d80656" + [[package]] name = "ed25519" version = "1.5.2" @@ -1085,7 +1613,7 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ - "curve25519-dalek", + "curve25519-dalek 3.2.0", "ed25519", "rand 0.7.3", "serde", @@ -1095,9 +1623,9 @@ dependencies = [ [[package]] name = "either" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" [[package]] name = "email" @@ -1110,7 +1638,7 @@ dependencies = [ "encoding", "lazy_static", "rand 0.7.3", - "time", + "time 0.1.44", "version_check 0.9.4", ] @@ -1213,13 +1741,25 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" +[[package]] +name = "enum-as-inner" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" +dependencies = [ + "heck 0.4.0", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "enum-as-inner" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116" dependencies = [ - "heck", + "heck 0.4.0", "proc-macro2", "quote", "syn", @@ -1331,6 +1871,12 @@ dependencies = [ "ascii_utils", ] +[[package]] +name = "fastmurmur3" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d922f481ae01f2a3f1fff7b9e0e789f18f0c755a38ec983a3e6f37762cdcc2a2" + [[package]] name = "fastrand" version = "1.8.0" @@ -1348,7 +1894,7 @@ checksum = "e11dcc7e4d79a8c89b9ab4c6f5c30b1fc4a83c420792da3542fd31179ed5f517" dependencies = [ "cfg-if", "rustix", - "windows-sys 0.36.1", + "windows-sys", ] [[package]] @@ -1360,9 +1906,15 @@ dependencies = [ "cfg-if", "libc", "redox_syscall", - "windows-sys 0.36.1", + "windows-sys", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "flate2" version = "1.0.24" @@ -1370,6 +1922,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" dependencies = [ "crc32fast", + "libz-sys", "miniz_oxide", ] @@ -1443,6 +1996,7 @@ dependencies = [ "futures-core", "futures-task", "futures-util", + "num_cpus", ] [[package]] @@ -1462,7 +2016,7 @@ dependencies = [ "futures-io", "memchr", "parking", - "pin-project-lite", + "pin-project-lite 0.2.9", "waker-fn", ] @@ -1477,6 +2031,17 @@ dependencies = [ "syn", ] +[[package]] +name = "futures-rustls" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bd" +dependencies = [ + "futures-io", + "rustls", + "webpki", +] + [[package]] name = "futures-sink" version = "0.3.25" @@ -1489,6 +2054,12 @@ version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" + [[package]] name = "futures-util" version = "0.3.25" @@ -1502,7 +2073,7 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project-lite", + "pin-project-lite 0.2.9", "pin-utils", "slab", ] @@ -1539,6 +2110,16 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "ghash" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" +dependencies = [ + "opaque-debug", + "polyval", +] + [[package]] name = "gif" version = "0.11.4" @@ -1555,11 +2136,39 @@ version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +[[package]] +name = "git-version" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6b0decc02f4636b9ccad390dcbe77b722a77efedfa393caf8379a51d5c61899" +dependencies = [ + "git-version-macro", + "proc-macro-hack", +] + +[[package]] +name = "git-version-macro" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe69f1cbdb6e28af2bac214e943b99ce8a0a06b447d15d3e61161b0423139f3f" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + [[package]] name = "h2" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" +checksum = "5ca32592cf21ac7ccab1825cd87f6c9b3d9022c44d086172ed0966bec8af30be" dependencies = [ "bytes", "fnv", @@ -1570,7 +2179,7 @@ dependencies = [ "indexmap", "slab", "tokio", - "tokio-util", + "tokio-util 0.7.4", "tracing", ] @@ -1607,6 +2216,15 @@ dependencies = [ "hashbrown 0.11.2", ] +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "heck" version = "0.4.0" @@ -1628,6 +2246,12 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hex_fmt" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" + [[package]] name = "hostname" version = "0.3.1" @@ -1658,7 +2282,7 @@ checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", "http", - "pin-project-lite", + "pin-project-lite 0.2.9", ] [[package]] @@ -1669,9 +2293,9 @@ checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" [[package]] name = "httparse" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" @@ -1731,7 +2355,7 @@ dependencies = [ "httparse", "httpdate", "itoa 1.0.3", - "pin-project-lite", + "pin-project-lite 0.2.9", "socket2", "tokio", "tower-service", @@ -1739,6 +2363,31 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-rustls" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac" +dependencies = [ + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper", + "pin-project-lite 0.2.9", + "tokio", + "tokio-io-timeout", +] + [[package]] name = "hyper-tls" version = "0.5.0" @@ -1754,13 +2403,14 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.46" +version = "0.1.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad2bfd338099682614d3ee3fe0cd72e0b6a41ca6a87f6a74a3bd593c91650501" +checksum = "237a0714f28b1ee39ccec0770ccb544eb02c9ef2c82bb096230eefcffa6468b0" dependencies = [ "android_system_properties", "core-foundation-sys", "js-sys", + "once_cell", "wasm-bindgen", "winapi", ] @@ -1792,11 +2442,39 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "if-addrs" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "if-watch" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "015a7df1eb6dda30df37f34b63ada9b7b352984b0e84de2a20ed526345000791" +dependencies = [ + "async-io", + "core-foundation", + "fnv", + "futures", + "if-addrs", + "ipnet", + "log", + "rtnetlink", + "system-configuration", + "windows", +] + [[package]] name = "image" -version = "0.24.4" +version = "0.24.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd8e4fb07cf672b1642304e731ef8a6a4c7891d67bb4fd4f5ce58cd6ed86803c" +checksum = "69b7ea949b537b0fd0af141fff8c77690f2ce96f4f41f042ccb6c69c6c965945" dependencies = [ "bytemuck", "byteorder", @@ -1825,6 +2503,7 @@ checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] @@ -1847,9 +2526,9 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24c3f4eff5495aee4c0399d7b6a0dc2b6e81be84242ffbfcf253ebacccc1d0cb" +checksum = "1ea37f355c05dde75b84bba2d767906ad522e97cd9e2eef2be7a4ab7fb442c06" [[package]] name = "ipconfig" @@ -1870,100 +2549,881 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" [[package]] -name = "itertools" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +name = "iroh-bitswap" +version = "0.1.0" +source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" dependencies = [ - "either", + "ahash", + "bytes", + "cid", + "futures", + "git-version", + "iroh-metrics", + "libp2p", + "multihash", + "names", + "num_enum", + "prost 0.11.0", + "prost-build 0.11.1", + "thiserror", + "tokio", + "tracing", + "unsigned-varint", ] [[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" - -[[package]] -name = "jpeg-decoder" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9478aa10f73e7528198d75109c8be5cd7d15fb530238040148d5f9a22d4c5b3b" +name = "iroh-metrics" +version = "0.1.0" +source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +dependencies = [ + "async-trait", + "config", + "iroh-util", + "lazy_static", + "libp2p", + "metrics", + "metrics-exporter-prometheus", + "metrics-util", + "names", + "opentelemetry", + "opentelemetry-otlp", + "prometheus-client", + "reqwest", + "serde", + "tokio", + "tracing", + "tracing-futures", + "tracing-opentelemetry", + "tracing-subscriber", +] [[package]] -name = "js-sys" -version = "0.3.59" +name = "iroh-p2p" +version = "0.1.0" +source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +dependencies = [ + "ahash", + "anyhow", + "async-stream", + "async-trait", + "asynchronous-codec", + "bytes", + "cid", + "clap 3.2.22", + "config", + "dirs", + "futures", + "futures-util", + "git-version", + "iroh-bitswap", + "iroh-metrics", + "iroh-rpc-client", + "iroh-rpc-types", + "iroh-util", + "lazy_static", + "libp2p", + "multihash", + "names", + "rand 0.8.5", + "serde", + "smallvec", + "ssh-key", + "tempfile", + "tokio", + "toml", + "tracing", + "tracing-subscriber", + "zeroize", +] + +[[package]] +name = "iroh-resolver" +version = "0.1.0" +source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +dependencies = [ + "anyhow", + "async-recursion", + "async-stream", + "async-trait", + "bytes", + "cid", + "fastmurmur3", + "futures", + "iroh-metrics", + "iroh-rpc-client", + "iroh-util", + "libipld", + "num_enum", + "once_cell", + "prost 0.11.0", + "prost-build 0.11.1", + "tokio", + "tokio-util 0.7.4", + "tracing", + "trust-dns-resolver 0.21.2", +] + +[[package]] +name = "iroh-rpc-client" +version = "0.1.0" +source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +dependencies = [ + "anyhow", + "async-stream", + "async-trait", + "bytes", + "cid", + "config", + "futures", + "iroh-metrics", + "iroh-rpc-types", + "iroh-util", + "libp2p", + "paste", + "prost 0.11.0", + "serde", + "tokio", + "toml", + "tracing", +] + +[[package]] +name = "iroh-rpc-types" +version = "0.1.0" +source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +dependencies = [ + "anyhow", + "async-trait", + "iroh-metrics", + "paste", + "prost 0.11.0", + "prost-build 0.11.1", + "prost-types 0.11.1", + "serde_with", + "tokio", +] + +[[package]] +name = "iroh-share" +version = "0.1.0" +source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +dependencies = [ + "anyhow", + "async-trait", + "bincode", + "bytes", + "cid", + "clap 3.2.22", + "futures", + "iroh-metrics", + "iroh-p2p", + "iroh-resolver", + "iroh-rpc-client", + "iroh-rpc-types", + "iroh-store", + "iroh-util", + "libp2p", + "multibase", + "rand 0.8.5", + "serde", + "tempfile", + "tokio", + "tokio-stream", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "iroh-store" +version = "0.1.0" +source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +dependencies = [ + "anyhow", + "async-trait", + "bytecheck", + "bytes", + "cid", + "clap 3.2.22", + "config", + "ctrlc", + "futures", + "git-version", + "iroh-metrics", + "iroh-rpc-client", + "iroh-rpc-types", + "iroh-util", + "names", + "opentelemetry", + "rkyv", + "rocksdb", + "serde", + "tokio", + "tracing", + "tracing-opentelemetry", + "tracing-subscriber", +] + +[[package]] +name = "iroh-util" +version = "0.1.0" +source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +dependencies = [ + "anyhow", + "cid", + "config", + "ctrlc", + "dirs-next", + "futures", + "rlimit", + "serde", + "temp-env", + "toml", + "tracing", +] + +[[package]] +name = "itertools" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8bf247779e67a9082a4790b45e71ac7cfd1321331a5c856a74a9faebdab78d0" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" + +[[package]] +name = "jobserver" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2" +checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +dependencies = [ + "libc", +] + +[[package]] +name = "jpeg-decoder" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" dependencies = [ "wasm-bindgen", ] [[package]] -name = "kamadak-exif" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4fc70d0ab7e5b6bafa30216a6b48705ea964cdfc29c050f2412295eba58077" +name = "json5" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +dependencies = [ + "pest", + "pest_derive", + "serde", +] + +[[package]] +name = "kamadak-exif" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70494964492bf8e491eb3951c5d70c9627eb7100ede6cc56d748b9a3f302cfb6" +dependencies = [ + "mutate_once", +] + +[[package]] +name = "keccak" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin", +] + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "lettre" +version = "0.9.2" +source = "git+https://github.com/deltachat/lettre?branch=master#96555ec428ac114ecfca9934d2fda34c13737e54" +dependencies = [ + "fast_chemail", + "log", +] + +[[package]] +name = "lettre_email" +version = "0.9.2" +source = "git+https://github.com/deltachat/lettre?branch=master#96555ec428ac114ecfca9934d2fda34c13737e54" +dependencies = [ + "base64 0.11.0", + "email", + "lazy_static", + "lettre", + "mime", + "regex", + "time 0.1.44", + "uuid 0.8.2", +] + +[[package]] +name = "libc" +version = "0.2.132" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" + +[[package]] +name = "libipld" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfb2f6a99d838dcb1cc18361c79e827b76e91987227406e705d07cbef51ab7be" +dependencies = [ + "async-trait", + "cached", + "fnv", + "libipld-cbor", + "libipld-cbor-derive", + "libipld-core", + "libipld-json", + "libipld-macro", + "libipld-pb", + "log", + "multihash", + "parking_lot 0.12.1", + "thiserror", +] + +[[package]] +name = "libipld-cbor" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46b3bbc4f35b8f25eb140d183f33d4610a1eb6531b312f01161fa06693f8c28a" +dependencies = [ + "byteorder", + "libipld-core", + "thiserror", +] + +[[package]] +name = "libipld-cbor-derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6ec17d094f4f62e33e201ded63d911fd0bff3b12121ddc50d611e967f7e6824" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "libipld-core" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbdd758764f9680a818af33c31db733eb7c45224715d8816b9dcf0548c75f7c5" +dependencies = [ + "anyhow", + "cid", + "core2", + "multibase", + "multihash", + "thiserror", +] + +[[package]] +name = "libipld-json" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "415427568962961e21009eb92fd6052de95174423cff9d3c583491858e060f4e" +dependencies = [ + "libipld-core", + "multihash", + "serde", + "serde_json", +] + +[[package]] +name = "libipld-macro" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6c4cb1056262ef4056ad9e5fb41f252c45f55009888e21b7837ac051f38814a" +dependencies = [ + "libipld-core", +] + +[[package]] +name = "libipld-pb" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b851a08aeff23e1e8df42081ef22052a838e8e39b769fcb7867d2fadd834d2d" +dependencies = [ + "libipld-core", + "prost 0.9.0", + "prost-build 0.9.0", + "thiserror", +] + +[[package]] +name = "libloading" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libm" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "292a948cd991e376cf75541fe5b97a1081d713c618b4f1b9500f8844e49eb565" + +[[package]] +name = "libp2p" +version = "0.48.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "bytes", + "futures", + "futures-timer", + "getrandom 0.2.7", + "instant", + "lazy_static", + "libp2p-autonat", + "libp2p-core", + "libp2p-dcutr", + "libp2p-dns", + "libp2p-gossipsub", + "libp2p-identify", + "libp2p-kad", + "libp2p-mdns", + "libp2p-metrics", + "libp2p-mplex", + "libp2p-noise", + "libp2p-ping", + "libp2p-relay", + "libp2p-request-response", + "libp2p-swarm", + "libp2p-swarm-derive", + "libp2p-tcp", + "libp2p-websocket", + "libp2p-yamux", + "multiaddr", + "parking_lot 0.12.1", + "pin-project", + "rand 0.7.3", + "smallvec", +] + +[[package]] +name = "libp2p-autonat" +version = "0.7.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "async-trait", + "futures", + "futures-timer", + "instant", + "libp2p-core", + "libp2p-request-response", + "libp2p-swarm", + "log", + "prost 0.11.0", + "prost-build 0.11.1", + "rand 0.8.5", +] + +[[package]] +name = "libp2p-core" +version = "0.35.1" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "asn1_der", + "bs58", + "ed25519-dalek", + "either", + "fnv", + "futures", + "futures-timer", + "instant", + "lazy_static", + "log", + "multiaddr", + "multihash", + "multistream-select", + "parking_lot 0.12.1", + "pin-project", + "prost 0.11.0", + "prost-build 0.11.1", + "rand 0.8.5", + "ring", + "rw-stream-sink", + "serde", + "sha2 0.10.6", + "smallvec", + "thiserror", + "unsigned-varint", + "void", + "zeroize", +] + +[[package]] +name = "libp2p-dcutr" +version = "0.6.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "asynchronous-codec", + "bytes", + "either", + "futures", + "futures-timer", + "instant", + "libp2p-core", + "libp2p-swarm", + "log", + "prost 0.11.0", + "prost-build 0.11.1", + "prost-codec", + "thiserror", + "void", +] + +[[package]] +name = "libp2p-dns" +version = "0.35.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "futures", + "libp2p-core", + "log", + "parking_lot 0.12.1", + "smallvec", + "trust-dns-resolver 0.21.2", +] + +[[package]] +name = "libp2p-gossipsub" +version = "0.41.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "asynchronous-codec", + "base64 0.13.0", + "byteorder", + "bytes", + "fnv", + "futures", + "hex_fmt", + "instant", + "libp2p-core", + "libp2p-swarm", + "log", + "prometheus-client", + "prost 0.11.0", + "prost-build 0.11.1", + "rand 0.7.3", + "regex", + "serde", + "sha2 0.10.6", + "smallvec", + "unsigned-varint", + "wasm-timer", +] + +[[package]] +name = "libp2p-identify" +version = "0.39.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "asynchronous-codec", + "futures", + "futures-timer", + "libp2p-core", + "libp2p-swarm", + "log", + "lru", + "prost 0.11.0", + "prost-build 0.11.1", + "prost-codec", + "smallvec", + "thiserror", + "void", +] + +[[package]] +name = "libp2p-kad" +version = "0.40.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" dependencies = [ - "mutate_once", + "arrayvec", + "asynchronous-codec", + "bytes", + "either", + "fnv", + "futures", + "futures-timer", + "instant", + "libp2p-core", + "libp2p-swarm", + "log", + "prost 0.11.0", + "prost-build 0.11.1", + "rand 0.7.3", + "serde", + "sha2 0.10.6", + "smallvec", + "thiserror", + "uint", + "unsigned-varint", + "void", ] [[package]] -name = "keccak" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838" +name = "libp2p-mdns" +version = "0.40.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "async-io", + "data-encoding", + "dns-parser", + "futures", + "if-watch", + "lazy_static", + "libp2p-core", + "libp2p-swarm", + "log", + "rand 0.8.5", + "smallvec", + "socket2", + "void", +] [[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +name = "libp2p-metrics" +version = "0.9.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" dependencies = [ - "spin", + "libp2p-core", + "libp2p-dcutr", + "libp2p-gossipsub", + "libp2p-identify", + "libp2p-kad", + "libp2p-ping", + "libp2p-relay", + "libp2p-swarm", + "prometheus-client", ] [[package]] -name = "lettre" -version = "0.9.2" -source = "git+https://github.com/deltachat/lettre?branch=master#96555ec428ac114ecfca9934d2fda34c13737e54" +name = "libp2p-mplex" +version = "0.35.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" dependencies = [ - "fast_chemail", + "asynchronous-codec", + "bytes", + "futures", + "libp2p-core", "log", + "nohash-hasher", + "parking_lot 0.12.1", + "rand 0.7.3", + "smallvec", + "unsigned-varint", ] [[package]] -name = "lettre_email" -version = "0.9.2" -source = "git+https://github.com/deltachat/lettre?branch=master#96555ec428ac114ecfca9934d2fda34c13737e54" +name = "libp2p-noise" +version = "0.38.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" dependencies = [ - "base64 0.11.0", - "email", + "bytes", + "curve25519-dalek 3.2.0", + "futures", "lazy_static", - "lettre", - "mime", - "regex", - "time", - "uuid 0.8.2", + "libp2p-core", + "log", + "prost 0.11.0", + "prost-build 0.11.1", + "rand 0.8.5", + "sha2 0.10.6", + "snow", + "static_assertions", + "x25519-dalek", + "zeroize", ] [[package]] -name = "libc" -version = "0.2.137" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" +name = "libp2p-ping" +version = "0.39.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "futures", + "futures-timer", + "instant", + "libp2p-core", + "libp2p-swarm", + "log", + "rand 0.7.3", + "void", +] [[package]] -name = "libm" -version = "0.2.5" +name = "libp2p-relay" +version = "0.12.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "asynchronous-codec", + "bytes", + "either", + "futures", + "futures-timer", + "instant", + "libp2p-core", + "libp2p-swarm", + "log", + "pin-project", + "prost 0.11.0", + "prost-build 0.11.1", + "prost-codec", + "rand 0.8.5", + "smallvec", + "static_assertions", + "thiserror", + "void", +] + +[[package]] +name = "libp2p-request-response" +version = "0.21.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "async-trait", + "bytes", + "futures", + "instant", + "libp2p-core", + "libp2p-swarm", + "log", + "rand 0.7.3", + "smallvec", + "unsigned-varint", +] + +[[package]] +name = "libp2p-swarm" +version = "0.39.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "instant", + "libp2p-core", + "log", + "pin-project", + "rand 0.7.3", + "smallvec", + "thiserror", + "void", +] + +[[package]] +name = "libp2p-swarm-derive" +version = "0.30.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "heck 0.4.0", + "quote", + "syn", +] + +[[package]] +name = "libp2p-tcp" +version = "0.35.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "futures", + "futures-timer", + "if-addrs", + "ipnet", + "libc", + "libp2p-core", + "log", + "socket2", + "tokio", +] + +[[package]] +name = "libp2p-websocket" +version = "0.37.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "either", + "futures", + "futures-rustls", + "libp2p-core", + "log", + "parking_lot 0.12.1", + "quicksink", + "rw-stream-sink", + "soketto", + "url", + "webpki-roots", +] + +[[package]] +name = "libp2p-yamux" +version = "0.39.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "futures", + "libp2p-core", + "parking_lot 0.12.1", + "thiserror", + "yamux", +] + +[[package]] +name = "librocksdb-sys" +version = "0.8.0+7.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "292a948cd991e376cf75541fe5b97a1081d713c618b4f1b9500f8844e49eb565" +checksum = "611804e4666a25136fcc5f8cf425ab4d26c7f74ea245ffe92ea23b85b6420b5d" +dependencies = [ + "bindgen", + "bzip2-sys", + "cc", + "glob", + "libc", + "libz-sys", + "zstd-sys", +] [[package]] name = "libsqlite3-sys" @@ -1977,6 +3437,17 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "libz-sys" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + [[package]] name = "linked-hash-map" version = "0.5.6" @@ -1991,9 +3462,9 @@ checksum = "d4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854d" [[package]] name = "lock_api" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +checksum = "9f80bf5aacaf25cbfc8210d1cfb718f2bf3b11c4c54e5afe36c236853a8ec390" dependencies = [ "autocfg", "scopeguard", @@ -2008,6 +3479,15 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "lru" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +dependencies = [ + "hashbrown 0.12.3", +] + [[package]] name = "lru-cache" version = "0.1.2" @@ -2017,6 +3497,15 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + [[package]] name = "mailparse" version = "0.13.8" @@ -2034,6 +3523,15 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", +] + [[package]] name = "matches" version = "0.1.9" @@ -2070,6 +3568,68 @@ dependencies = [ "autocfg", ] +[[package]] +name = "metrics" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b9b8653cec6897f73b519a43fba5ee3d50f62fe9af80b428accdcc093b4a849" +dependencies = [ + "ahash", + "metrics-macros", + "portable-atomic", +] + +[[package]] +name = "metrics-exporter-prometheus" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8603921e1f54ef386189335f288441af761e0fc61bcb552168d9cedfe63ebc70" +dependencies = [ + "hyper", + "indexmap", + "ipnet", + "metrics", + "metrics-util", + "parking_lot 0.12.1", + "portable-atomic", + "quanta", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "metrics-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "731f8ecebd9f3a4aa847dfe75455e4757a45da40a7793d2f0b1f9b6ed18b23f3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "metrics-util" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d24dc2dbae22bff6f1f9326ffce828c9f07ef9cc1e8002e5279f845432a30a" +dependencies = [ + "aho-corasick", + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.12.3", + "indexmap", + "metrics", + "num_cpus", + "ordered-float", + "parking_lot 0.12.1", + "portable-atomic", + "quanta", + "radix_trie", + "sketches-ddsketch", +] + [[package]] name = "mime" version = "0.3.16" @@ -2084,23 +3644,104 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" +checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" dependencies = [ "adler", ] [[package]] -name = "mio" -version = "0.8.5" +name = "mio" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "multiaddr" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c580bfdd8803cce319b047d239559a22f809094aaea4ac13902a1fdcfcd4261" +dependencies = [ + "arrayref", + "bs58", + "byteorder", + "data-encoding", + "multihash", + "percent-encoding", + "serde", + "static_assertions", + "unsigned-varint", + "url", +] + +[[package]] +name = "multibase" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404" +dependencies = [ + "base-x", + "data-encoding", + "data-encoding-macro", +] + +[[package]] +name = "multihash" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c346cf9999c631f002d8f977c4eaeaa0e6386f16007202308d0b3757522c2cc" +dependencies = [ + "blake2b_simd", + "blake2s_simd", + "blake3", + "core2", + "digest 0.10.5", + "multihash-derive", + "serde", + "serde-big-array", + "sha2 0.10.6", + "sha3", + "unsigned-varint", +] + +[[package]] +name = "multihash-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd" +dependencies = [ + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "multimap" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + +[[package]] +name = "multistream-select" +version = "0.11.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" dependencies = [ - "libc", + "bytes", + "futures", "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.42.0", + "pin-project", + "smallvec", + "unsigned-varint", ] [[package]] @@ -2109,11 +3750,20 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b" +[[package]] +name = "names" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bddcd3bf5144b6392de80e04c347cd7fab2508f6df16a85fc496ecd5cec39bc" +dependencies = [ + "rand 0.8.5", +] + [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" dependencies = [ "lazy_static", "libc", @@ -2127,6 +3777,72 @@ dependencies = [ "tempfile", ] +[[package]] +name = "netlink-packet-core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297" +dependencies = [ + "anyhow", + "byteorder", + "libc", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-route" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9ea4302b9759a7a88242299225ea3688e63c85ea136371bb6cf94fd674efaab" +dependencies = [ + "anyhow", + "bitflags", + "byteorder", + "libc", + "netlink-packet-core", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-utils" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25af9cf0dc55498b7bd94a1508af7a78706aa0ab715a73c5169273e03c84845e" +dependencies = [ + "anyhow", + "byteorder", + "paste", + "thiserror", +] + +[[package]] +name = "netlink-proto" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6" +dependencies = [ + "bytes", + "futures", + "log", + "netlink-packet-core", + "netlink-sys", + "thiserror", + "tokio", +] + +[[package]] +name = "netlink-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92b654097027250401127914afb37cb1f311df6610a9891ff07a757e94199027" +dependencies = [ + "async-io", + "bytes", + "futures", + "libc", + "log", +] + [[package]] name = "nibble_vec" version = "0.1.0" @@ -2147,6 +3863,24 @@ dependencies = [ "libc", ] +[[package]] +name = "nix" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e322c04a9e3440c327fca7b6c8a63e6890a32fa2ad689db972425f07e0d22abb" +dependencies = [ + "autocfg", + "bitflags", + "cfg-if", + "libc", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + [[package]] name = "nom" version = "4.2.3" @@ -2248,6 +3982,36 @@ dependencies = [ "libc", ] +[[package]] +name = "num_enum" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + [[package]] name = "object" version = "0.29.0" @@ -2330,6 +4094,70 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror", + "tokio", + "tokio-stream", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1a6ca9de4c8b00aa7f1a153bd76cb263287155cec642680d79d98706f3d28a" +dependencies = [ + "async-trait", + "futures", + "futures-util", + "http", + "opentelemetry", + "prost 0.9.0", + "thiserror", + "tokio", + "tonic", + "tonic-build", +] + +[[package]] +name = "ordered-float" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ordered-multimap" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a" +dependencies = [ + "dlv-list", + "hashbrown 0.12.3", +] + +[[package]] +name = "os_str_bytes" +version = "6.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" + [[package]] name = "os_type" version = "2.4.0" @@ -2341,9 +4169,9 @@ dependencies = [ [[package]] name = "ouroboros" -version = "0.15.2" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7425ea87a1e31df63a27b6d31e21a35a9003268032a876465e8d43c2364b0de2" +checksum = "dfbb50b356159620db6ac971c6d5c9ab788c9cc38a6f49619fca2a27acb062ca" dependencies = [ "aliasable", "ouroboros_macro", @@ -2351,9 +4179,9 @@ dependencies = [ [[package]] name = "ouroboros_macro" -version = "0.15.2" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "734aa7a4a6390b162112523cac2923a18e4f23b917880a68c826bf6e8bf48f06" +checksum = "4a0d9d1a6191c4f391f87219d1ea42b23f09ee84d64763cd05ee6ea88d9f384d" dependencies = [ "Inflector", "proc-macro-error", @@ -2368,6 +4196,17 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.5", +] + [[package]] name = "parking_lot" version = "0.12.1" @@ -2375,7 +4214,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core", + "parking_lot_core 0.9.3", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", ] [[package]] @@ -2388,9 +4241,27 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-sys 0.36.1", + "windows-sys", ] +[[package]] +name = "paste" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + [[package]] name = "pem-rfc7468" version = "0.6.0" @@ -2406,14 +4277,68 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +[[package]] +name = "pest" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb779fcf4bb850fbbb0edc96ff6cf34fd90c4b1a112ce042653280d9a7364048" +dependencies = [ + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502b62a6d0245378b04ffe0a7fb4f4419a4815fce813bd8a0ec89a56e07d67b1" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "451e629bf49b750254da26132f1a5a9d11fd8a95a3df51d15c4abd1ba154cb6c" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pest_meta" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcec162c71c45e269dfc3fc2916eaeb97feab22993a21bcce4721d08cd7801a6" +dependencies = [ + "once_cell", + "pest", + "sha1", +] + +[[package]] +name = "petgraph" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" +dependencies = [ + "fixedbitset", + "indexmap", +] + [[package]] name = "pgp" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "991e3f098483f52c454c7cb16720adc010c2966a8845d3c34aad589cb86d3196" dependencies = [ - "aes", - "base64 0.13.1", + "aes 0.8.2", + "base64 0.13.0", "bitfield", "block-padding", "blowfish", @@ -2422,7 +4347,7 @@ dependencies = [ "cast5", "cfb-mode", "chrono", - "cipher", + "cipher 0.4.3", "crc24", "derive_builder", "des", @@ -2453,24 +4378,30 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78203e83c48cffbe01e4a2d35d566ca4de445d79a85372fc64e378bfc812a260" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" dependencies = [ "proc-macro2", "quote", "syn", ] +[[package]] +name = "pin-project-lite" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" + [[package]] name = "pin-project-lite" version = "0.2.9" @@ -2513,9 +4444,9 @@ checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "plotters" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9428003b84df1496fb9d6eeee9c5f8145cb41ca375eb0dad204328888832811f" +checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" dependencies = [ "num-traits", "plotters-backend", @@ -2532,25 +4463,74 @@ checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" [[package]] name = "plotters-svg" -version = "0.3.2" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "png" +version = "0.17.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f0e7f4c94ec26ff209cee506314212639d6c91b80afb82984819fafce9df01c" +dependencies = [ + "bitflags", + "crc32fast", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899b00b9c8ab553c743b3e11e87c5c7d423b2a2de229ba95b24a756344748011" +dependencies = [ + "autocfg", + "cfg-if", + "libc", + "log", + "wepoll-ffi", + "winapi", +] + +[[package]] +name = "poly1305" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0918736323d1baff32ee0eade54984f6f201ad7e97d5cfb5d6ab4a358529615" +checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" dependencies = [ - "plotters-backend", + "cpufeatures", + "opaque-debug", + "universal-hash", ] [[package]] -name = "png" -version = "0.17.5" +name = "polyval" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc38c0ad57efb786dd57b9864e5b18bae478c00c824dc55a38bbc9da95dde3ba" +checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" dependencies = [ - "bitflags", - "crc32fast", - "deflate", - "miniz_oxide", + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", ] +[[package]] +name = "port_check" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6519412c9e0d4be579b9f0618364d19cb434b324fc6ddb1b27b1e682c7105ed" + +[[package]] +name = "portable-atomic" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15eb2c6e362923af47e13c23ca5afb859e83d54452c55b0b9ac763b8f7c1ac16" + [[package]] name = "ppv-lite86" version = "0.2.16" @@ -2567,6 +4547,17 @@ dependencies = [ "log", ] +[[package]] +name = "proc-macro-crate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +dependencies = [ + "once_cell", + "thiserror", + "toml", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -2591,15 +4582,44 @@ dependencies = [ "version_check 0.9.4", ] +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + [[package]] name = "proc-macro2" -version = "1.0.46" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ "unicode-ident", ] +[[package]] +name = "prometheus-client" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c473049631c233933d6286c88bbb7be30e62ec534cf99a9ae0079211f7fa603" +dependencies = [ + "dtoa", + "itoa 1.0.3", + "parking_lot 0.12.1", + "prometheus-client-derive-text-encode", +] + +[[package]] +name = "prometheus-client-derive-text-encode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a455fbcb954c1a7decf3c586e860fd7889cddf4b8e164be736dbac95a953cd" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "proptest" version = "1.0.0" @@ -2617,12 +4637,166 @@ dependencies = [ "regex-syntax", ] +[[package]] +name = "prost" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" +dependencies = [ + "bytes", + "prost-derive 0.9.0", +] + +[[package]] +name = "prost" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "399c3c31cdec40583bb68f0b18403400d01ec4289c383aa047560439952c4dd7" +dependencies = [ + "bytes", + "prost-derive 0.11.0", +] + +[[package]] +name = "prost-build" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" +dependencies = [ + "bytes", + "heck 0.3.3", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prost 0.9.0", + "prost-types 0.9.0", + "regex", + "tempfile", + "which", +] + +[[package]] +name = "prost-build" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f835c582e6bd972ba8347313300219fed5bfa52caf175298d860b61ff6069bb" +dependencies = [ + "bytes", + "heck 0.4.0", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prost 0.11.0", + "prost-types 0.11.1", + "regex", + "tempfile", + "which", +] + +[[package]] +name = "prost-codec" +version = "0.2.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "asynchronous-codec", + "bytes", + "prost 0.11.0", + "thiserror", + "unsigned-varint", +] + +[[package]] +name = "prost-derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost-derive" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7345d5f0e08c0536d7ac7229952590239e77abf0a0100a1b1d890add6ea96364" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost-types" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" +dependencies = [ + "bytes", + "prost 0.9.0", +] + +[[package]] +name = "prost-types" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dfaa718ad76a44b3415e6c4d53b17c8f99160dcb3a99b10470fce8ad43f6e3e" +dependencies = [ + "bytes", + "prost 0.11.0", +] + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "qrcodegen" version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4339fc7a1021c9c1621d87f5e3505f2805c8c105420ba2f2a4df86814590c142" +[[package]] +name = "quanta" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e31331286705f455e56cca62e0e717158474ff02b7936c1fa596d983f4ae27" +dependencies = [ + "crossbeam-utils", + "libc", + "mach", + "once_cell", + "raw-cpuid", + "wasi 0.10.0+wasi-snapshot-preview1", + "web-sys", + "winapi", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -2637,13 +4811,24 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quick-xml" -version = "0.23.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9279fbdacaad3baf559d8cabe0acc3d06e30ea14931af31af79578ac0946decc" +checksum = "11bafc859c6815fbaffbbbf4229ecb767ac913fecb27f9ad4343662e9ef099ea" dependencies = [ "memchr", ] +[[package]] +name = "quicksink" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858" +dependencies = [ + "futures-core", + "futures-sink", + "pin-project-lite 0.1.12", +] + [[package]] name = "quote" version = "1.0.21" @@ -2666,7 +4851,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93" dependencies = [ "log", - "parking_lot", + "parking_lot 0.12.1", "scheduled-thread-pool", ] @@ -2711,7 +4896,7 @@ checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha 0.3.1", - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -2731,7 +4916,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -2745,9 +4930,9 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom 0.2.7", ] @@ -2767,7 +4952,16 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core 0.6.3", + "rand_core 0.6.4", +] + +[[package]] +name = "raw-cpuid" +version = "10.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6823ea29436221176fe662da99998ad3b4db2c7f31e7b6f5fe43adccd6320bb" +dependencies = [ + "bitflags", ] [[package]] @@ -2830,6 +5024,9 @@ name = "regex-automata" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] [[package]] name = "regex-syntax" @@ -2846,67 +5043,151 @@ dependencies = [ "winapi", ] +[[package]] +name = "rend" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79af64b4b6362ffba04eef3a4e10829718a4896dac19daa741851c86781edf95" +dependencies = [ + "bytecheck", +] + [[package]] name = "reqwest" -version = "0.11.12" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68cc60575865c7831548863cc02356512e3f1dc2f3f82cb837d7fc4cc8f3c97c" +dependencies = [ + "base64 0.13.0", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite 0.2.9", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg 0.10.1", +] + +[[package]] +name = "resolv-conf" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" +dependencies = [ + "hostname", + "quick-error 1.2.3", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.5", +] + +[[package]] +name = "rkyv" +version = "0.7.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cec2b3485b07d96ddfd3134767b8a447b45ea4eb91448d0a35180ec0ffd5ed15" +dependencies = [ + "bytecheck", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eaedadc88b53e36dd32d940ed21ae4d850d5916f2581526921f553a72ac34c4" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "rlimit" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc" +checksum = "f7278a1ec8bfd4a4e07515c589f5ff7b309a373f987393aef44813d9dcf87aa3" dependencies = [ - "base64 0.13.1", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-tls", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg 0.10.1", + "libc", ] [[package]] -name = "resolv-conf" -version = "0.7.0" +name = "rocksdb" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" +checksum = "7e9562ea1d70c0cc63a34a22d977753b50cca91cc6b6527750463bd5dd8697bc" dependencies = [ - "hostname", - "quick-error 1.2.3", + "libc", + "librocksdb-sys", ] [[package]] -name = "ripemd" -version = "0.1.3" +name = "ron" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a" dependencies = [ - "digest 0.10.5", + "base64 0.13.0", + "bitflags", + "serde", ] [[package]] name = "rsa" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0ecc3307be66bfb3574577895555bacfb9a37a8d5cd959444b72ff02495c618" +checksum = "094052d5470cbcef561cb848a7209968c9f12dfa6d668f4bca048ac5de51099c" dependencies = [ "byteorder", "digest 0.10.5", @@ -2916,13 +5197,28 @@ dependencies = [ "num-traits", "pkcs1", "pkcs8", - "rand_core 0.6.3", + "rand_core 0.6.4", "signature", "smallvec", "subtle", "zeroize", ] +[[package]] +name = "rtnetlink" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0" +dependencies = [ + "async-global-executor", + "futures", + "log", + "netlink-packet-route", + "netlink-proto", + "nix 0.24.2", + "thiserror", +] + [[package]] name = "rusqlite" version = "0.27.0" @@ -2944,24 +5240,70 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "efe2374f2385cdd8755a446f80b2a646de603c9d8539ca38734879b5c71e378b" +[[package]] +name = "rust-ini" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df" +dependencies = [ + "cfg-if", + "ordered-multimap", +] + [[package]] name = "rustc-demangle" version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + [[package]] name = "rustix" -version = "0.35.7" +version = "0.35.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51cc38aa10f6bbb377ed28197aa052aa4e2b762c22be9d3153d01822587e787" +checksum = "72c825b8aa8010eb9ee99b75f05e10180b9278d161583034d7574c9d617aeada" dependencies = [ "bitflags", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.36.1", + "windows-sys", +] + +[[package]] +name = "rustls" +version = "0.20.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033" +dependencies = [ + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" +dependencies = [ + "base64 0.13.0", ] [[package]] @@ -2984,7 +5326,7 @@ dependencies = [ "libc", "log", "memchr", - "nix", + "nix 0.24.2", "radix_trie", "scopeguard", "unicode-segmentation", @@ -2993,6 +5335,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "rw-stream-sink" +version = "0.3.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +dependencies = [ + "futures", + "pin-project", + "static_assertions", +] + [[package]] name = "ryu" version = "1.0.11" @@ -3031,7 +5383,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" dependencies = [ "lazy_static", - "windows-sys 0.36.1", + "windows-sys", ] [[package]] @@ -3040,7 +5392,7 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "977a7519bff143a44f842fd07e80ad1329295bd71686457f18e496736f4bf9bf" dependencies = [ - "parking_lot", + "parking_lot 0.12.1", ] [[package]] @@ -3049,11 +5401,27 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + [[package]] name = "security-framework" -version = "2.6.1" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" dependencies = [ "bitflags", "core-foundation", @@ -3072,15 +5440,39 @@ dependencies = [ "libc", ] +[[package]] +name = "semver" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" + [[package]] name = "serde" -version = "1.0.147" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" +checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" dependencies = [ "serde_derive", ] +[[package]] +name = "serde-big-array" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd31f59f6fe2b0c055371bb2f16d7f0aa7d8881676c04a55b1596d1a17cd10a4" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_bytes" +version = "0.11.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfc50e8183eeeb6178dcb167ae34a8051d63535023ae38b5d8d12beae193d37b" +dependencies = [ + "serde", +] + [[package]] name = "serde_cbor" version = "0.11.2" @@ -3093,9 +5485,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.147" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" +checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" dependencies = [ "proc-macro2", "quote", @@ -3104,9 +5496,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.87" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" +checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" dependencies = [ "itoa 1.0.3", "ryu", @@ -3125,6 +5517,47 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_with" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f2d60d049ea019a84dcd6687b0d1e0030fe663ae105039bdf967ed5e6a9a7" +dependencies = [ + "base64 0.13.0", + "chrono", + "hex", + "indexmap", + "serde", + "serde_json", + "serde_with_macros", + "time 0.3.14", +] + +[[package]] +name = "serde_with_macros" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ccadfacf6cf10faad22bbadf55986bdd0856edfb5d9210aa1dcf1f516e84e93" +dependencies = [ + "darling 0.14.1", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sha-1" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + [[package]] name = "sha-1" version = "0.10.0" @@ -3173,14 +5606,29 @@ dependencies = [ [[package]] name = "sha3" -version = "0.10.6" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" +checksum = "e2904bea16a1ae962b483322a1c7b81d976029203aea1f461e51cd7705db7ba9" dependencies = [ "digest 0.10.5", "keccak", ] +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" + [[package]] name = "signal-hook-registry" version = "1.4.0" @@ -3197,9 +5645,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" dependencies = [ "digest 0.10.5", - "rand_core 0.6.3", + "rand_core 0.6.4", ] +[[package]] +name = "sketches-ddsketch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ceb945e54128e09c43d8e4f1277851bd5044c6fc540bbaa2ad888f60b3da9ae7" + [[package]] name = "slab" version = "0.4.7" @@ -3211,9 +5665,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.10.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" [[package]] name = "smawk" @@ -3221,16 +5675,49 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043" +[[package]] +name = "snow" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "774d05a3edae07ce6d68ea6984f3c05e9bba8927e3dd591e3b479e5b03213d0d" +dependencies = [ + "aes-gcm", + "blake2", + "chacha20poly1305", + "curve25519-dalek 4.0.0-pre.1", + "rand_core 0.6.4", + "ring", + "rustc_version", + "sha2 0.10.6", + "subtle", +] + [[package]] name = "socket2" -version = "0.4.4" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" dependencies = [ "libc", "winapi", ] +[[package]] +name = "soketto" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" +dependencies = [ + "base64 0.13.0", + "bytes", + "flate2", + "futures", + "httparse", + "log", + "rand 0.8.5", + "sha-1 0.9.8", +] + [[package]] name = "spin" version = "0.5.2" @@ -3247,12 +5734,32 @@ dependencies = [ "der", ] +[[package]] +name = "ssh-key" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e09d8b0ff2fca365c89ad535055c17adbd9fb0a5daf338299049882e95b6931" +dependencies = [ + "base64ct", + "ed25519-dalek", + "pem-rfc7468", + "rand_core 0.6.4", + "signature", + "zeroize", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "stop-token" version = "0.7.0" @@ -3262,7 +5769,7 @@ dependencies = [ "async-channel", "cfg-if", "futures-core", - "pin-project-lite", + "pin-project-lite 0.2.9", ] [[package]] @@ -3289,7 +5796,7 @@ version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ - "heck", + "heck 0.4.0", "proc-macro2", "quote", "rustversion", @@ -3304,9 +5811,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.103" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" +checksum = "52205623b1b0f064a4e71182c3b18ae902267282930c6d5462c91b859668426e" dependencies = [ "proc-macro2", "quote", @@ -3331,12 +5838,42 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "system-configuration" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75182f12f490e953596550b65ee31bda7c8e043d9386174b353bda50838c3fd" +dependencies = [ + "bitflags", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tagger" version = "4.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77dd78fc7dd20ba3a13620ec231cef9e73ea5c7ba162f6c4e05b1d521e04b221" +[[package]] +name = "temp-env" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45107136c2ddf8c4b87453c02294fd0adf41751796e81e8ba3f7fd951977ab57" +dependencies = [ + "once_cell", +] + [[package]] name = "tempfile" version = "3.3.0" @@ -3369,6 +5906,12 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "textwrap" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" + [[package]] name = "textwrap" version = "0.16.0" @@ -3400,6 +5943,15 @@ dependencies = [ "syn", ] +[[package]] +name = "thread_local" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +dependencies = [ + "once_cell", +] + [[package]] name = "time" version = "0.1.44" @@ -3411,6 +5963,18 @@ dependencies = [ "winapi", ] +[[package]] +name = "time" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3f9a28b618c3a6b9251b6908e9c99e04b9e5c02e6581ccbb67d59c34ef7f9b" +dependencies = [ + "itoa 1.0.3", + "libc", + "num_threads", + "serde", +] + [[package]] name = "tinytemplate" version = "1.2.1" @@ -3438,9 +6002,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.21.2" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" +checksum = "d76ce4a75fb488c605c54bf610f221cea8b0dafb53333c1a67e8ee199dcd2ae3" dependencies = [ "autocfg", "bytes", @@ -3448,14 +6012,24 @@ dependencies = [ "memchr", "mio", "num_cpus", - "parking_lot", - "pin-project-lite", + "parking_lot 0.12.1", + "pin-project-lite 0.2.9", "signal-hook-registry", "socket2", "tokio-macros", "winapi", ] +[[package]] +name = "tokio-io-timeout" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +dependencies = [ + "pin-project-lite 0.2.9", + "tokio", +] + [[package]] name = "tokio-macros" version = "1.8.0" @@ -3477,6 +6051,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-rustls" +version = "0.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +dependencies = [ + "rustls", + "tokio", + "webpki", +] + [[package]] name = "tokio-stream" version = "0.1.11" @@ -3484,7 +6069,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" dependencies = [ "futures-core", - "pin-project-lite", + "pin-project-lite 0.2.9", "tokio", ] @@ -3517,14 +6102,28 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.3" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite 0.2.9", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" +checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" dependencies = [ "bytes", "futures-core", "futures-sink", - "pin-project-lite", + "pin-project-lite 0.2.9", "tokio", "tracing", ] @@ -3538,6 +6137,49 @@ dependencies = [ "serde", ] +[[package]] +name = "tonic" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a" +dependencies = [ + "async-stream", + "async-trait", + "base64 0.13.0", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost 0.9.0", + "prost-derive 0.9.0", + "tokio", + "tokio-stream", + "tokio-util 0.6.10", + "tower", + "tower-layer", + "tower-service", + "tracing", + "tracing-futures", +] + +[[package]] +name = "tonic-build" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9403f1bafde247186684b230dc6f38b5cd514584e8bec1dd32514be4745fa757" +dependencies = [ + "proc-macro2", + "prost-build 0.9.0", + "quote", + "syn", +] + [[package]] name = "tower" version = "0.4.13" @@ -3546,9 +6188,13 @@ checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ "futures-core", "futures-util", + "indexmap", "pin-project", - "pin-project-lite", + "pin-project-lite 0.2.9", + "rand 0.8.5", + "slab", "tokio", + "tokio-util 0.7.4", "tower-layer", "tower-service", "tracing", @@ -3567,7 +6213,7 @@ dependencies = [ "http", "http-body", "http-range-header", - "pin-project-lite", + "pin-project-lite 0.2.9", "tower", "tower-layer", "tower-service", @@ -3593,7 +6239,7 @@ checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" dependencies = [ "cfg-if", "log", - "pin-project-lite", + "pin-project-lite 0.2.9", "tracing-attributes", "tracing-core", ] @@ -3616,6 +6262,85 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60db860322da191b40952ad9affe65ea23e7dd6a5c442c2c42865810c6ab8e6b" +dependencies = [ + "ansi_term", + "matchers", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "trust-dns-proto" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner 0.4.0", + "futures-channel", + "futures-io", + "futures-util", + "idna 0.2.3", + "ipnet", + "lazy_static", + "log", + "rand 0.8.5", + "smallvec", + "thiserror", + "tinyvec", + "tokio", + "url", ] [[package]] @@ -3627,7 +6352,7 @@ dependencies = [ "async-trait", "cfg-if", "data-encoding", - "enum-as-inner", + "enum-as-inner 0.5.1", "futures-channel", "futures-io", "futures-util", @@ -3643,6 +6368,26 @@ dependencies = [ "url", ] +[[package]] +name = "trust-dns-resolver" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558" +dependencies = [ + "cfg-if", + "futures-util", + "ipconfig", + "lazy_static", + "log", + "lru-cache", + "parking_lot 0.12.1", + "resolv-conf", + "smallvec", + "thiserror", + "tokio", + "trust-dns-proto 0.21.2", +] + [[package]] name = "trust-dns-resolver" version = "0.22.0" @@ -3654,13 +6399,13 @@ dependencies = [ "ipconfig", "lazy_static", "lru-cache", - "parking_lot", + "parking_lot 0.12.1", "resolv-conf", "smallvec", "thiserror", "tokio", "tracing", - "trust-dns-proto", + "trust-dns-proto 0.22.0", ] [[package]] @@ -3675,14 +6420,14 @@ version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0" dependencies = [ - "base64 0.13.1", + "base64 0.13.0", "byteorder", "bytes", "http", "httparse", "log", "rand 0.8.5", - "sha-1", + "sha-1 0.10.0", "thiserror", "url", "utf-8", @@ -3694,7 +6439,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a78e83a30223c757c3947cd144a31014ff04298d8719ae10d03c31c0448c8013" dependencies = [ - "cipher", + "cipher 0.4.3", ] [[package]] @@ -3727,6 +6472,24 @@ dependencies = [ "syn", ] +[[package]] +name = "ucd-trie" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" + +[[package]] +name = "uint" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f03af7ccf01dd611cc450a0d10dbc9b745770d096473e2faf0ca6e2d66d1e0" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + [[package]] name = "unicode-bidi" version = "0.3.8" @@ -3735,9 +6498,9 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" +checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" [[package]] name = "unicode-linebreak" @@ -3751,18 +6514,18 @@ dependencies = [ [[package]] name = "unicode-normalization" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" +checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" [[package]] name = "unicode-width" @@ -3772,9 +6535,37 @@ checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "unicode-xid" -version = "0.2.3" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "universal-hash" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "unsigned-varint" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836" +dependencies = [ + "asynchronous-codec", + "bytes", + "futures-io", + "futures-util", +] + +[[package]] +name = "untrusted" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" @@ -3810,14 +6601,20 @@ dependencies = [ [[package]] name = "uuid" -version = "1.2.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb41e78f93363bb2df8b0e86a2ca30eed7806ea16ea0c790d757cf93f79be83" +checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f" dependencies = [ "getrandom 0.2.7", "serde", ] +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + [[package]] name = "vcpkg" version = "0.2.15" @@ -3836,6 +6633,12 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + [[package]] name = "waker-fn" version = "1.1.0" @@ -3883,9 +6686,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3893,9 +6696,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" dependencies = [ "bumpalo", "log", @@ -3908,9 +6711,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.32" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa76fb221a1f8acddf5b54ace85912606980ad661ac7a503b4570ffd3a624dad" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" dependencies = [ "cfg-if", "js-sys", @@ -3920,9 +6723,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3930,9 +6733,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ "proc-macro2", "quote", @@ -3943,26 +6746,80 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" + +[[package]] +name = "wasm-timer" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" +dependencies = [ + "futures", + "js-sys", + "parking_lot 0.11.2", + "pin-utils", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] [[package]] name = "web-sys" -version = "0.3.59" +version = "0.3.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" dependencies = [ "js-sys", "wasm-bindgen", ] +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1c760f0d366a6c24a02ed7816e23e691f5d92291f94d15e836006fd11b04daf" +dependencies = [ + "webpki", +] + [[package]] name = "weezl" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" +[[package]] +name = "wepoll-ffi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" +dependencies = [ + "cc", +] + +[[package]] +name = "which" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" +dependencies = [ + "either", + "libc", + "once_cell", +] + [[package]] name = "widestring" version = "0.5.1" @@ -4000,6 +6857,19 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45296b64204227616fdbf2614cefa4c236b98ee64dfaaaa435207ed99fe7829f" +dependencies = [ + "windows_aarch64_msvc 0.34.0", + "windows_i686_gnu 0.34.0", + "windows_i686_msvc 0.34.0", + "windows_x86_64_gnu 0.34.0", + "windows_x86_64_msvc 0.34.0", +] + [[package]] name = "windows-sys" version = "0.36.1" @@ -4014,25 +6884,10 @@ dependencies = [ ] [[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.0", - "windows_i686_gnu 0.42.0", - "windows_i686_msvc 0.42.0", - "windows_x86_64_gnu 0.42.0", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.0", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.0" +name = "windows_aarch64_msvc" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" [[package]] name = "windows_aarch64_msvc" @@ -4041,10 +6896,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" [[package]] -name = "windows_aarch64_msvc" -version = "0.42.0" +name = "windows_i686_gnu" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" [[package]] name = "windows_i686_gnu" @@ -4053,10 +6908,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" [[package]] -name = "windows_i686_gnu" -version = "0.42.0" +name = "windows_i686_msvc" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" +checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" [[package]] name = "windows_i686_msvc" @@ -4065,10 +6920,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" [[package]] -name = "windows_i686_msvc" -version = "0.42.0" +name = "windows_x86_64_gnu" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" +checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" [[package]] name = "windows_x86_64_gnu" @@ -4077,16 +6932,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" [[package]] -name = "windows_x86_64_gnu" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.0" +name = "windows_x86_64_msvc" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" +checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" [[package]] name = "windows_x86_64_msvc" @@ -4094,12 +6943,6 @@ version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" - [[package]] name = "winreg" version = "0.7.0" @@ -4124,7 +6967,7 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4f" dependencies = [ - "curve25519-dalek", + "curve25519-dalek 3.2.0", "rand_core 0.5.1", "zeroize", ] @@ -4138,6 +6981,29 @@ dependencies = [ "libc", ] +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "yamux" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d9ba232399af1783a58d8eb26f6b5006fbefe2dc9ef36bd283324792d03ea5" +dependencies = [ + "futures", + "log", + "nohash-hasher", + "parking_lot 0.12.1", + "rand 0.8.5", + "static_assertions", +] + [[package]] name = "yerpc" version = "0.3.1" @@ -4193,3 +7059,13 @@ dependencies = [ "syn", "synstructure", ] + +[[package]] +name = "zstd-sys" +version = "2.0.1+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b" +dependencies = [ + "cc", + "libc", +] diff --git a/Cargo.toml b/Cargo.toml index 62a30a06c5..e160d0adfb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ license = "MPL-2.0" rust-version = "1.57" [profile.dev] -#debug = 0 +debug = 0 panic = 'abort' opt-level = 1 @@ -86,7 +86,8 @@ async_zip = { version = "0.0.9", default-features = false, features = ["deflate" iroh-share = { git = "https://github.com/n0-computer/iroh", branch = "main" } iroh-resolver = { git = "https://github.com/n0-computer/iroh", branch = "main", default-features = false } tempfile = "3" -multibase = "0.9.1" +multibase = "0.9" +port_check = "0.1.5" [dev-dependencies] ansi_term = "0.12.0" diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index 83a7e9bb94..fdd5314ab7 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -477,10 +477,12 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu Some(arg2.to_string()), ) .await?; - println!("Exported to {}.", dir.to_string_lossy()); + println!("Exported to {}.", dir.display()); } "send-backup" => { - let dir = dirs::home_dir().unwrap_or_default(); + let tdir = tempfile::TempDir::new()?; + let dir = tdir.path(); + println!("Storing backup in: {} ", dir.display()); let transfer = send_backup(&context, dir.as_ref(), Some(arg1.to_string())).await?; let ticket = transfer.ticket(); let ticket_bytes = ticket.as_bytes(); diff --git a/foo-shm b/foo-shm new file mode 100644 index 0000000000000000000000000000000000000000..85e14c8a0d8c6102ba4e761a0b4989852b36750b GIT binary patch literal 32768 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, @@ -135,7 +139,7 @@ pub async fn receive_backup( res } -pub async fn receive_backup_inner( +async fn receive_backup_inner( context: &Context, ticket_bytes: Vec, passphrase: String, @@ -153,11 +157,12 @@ pub async fn receive_backup_inner( let recv_dir = tempfile::tempdir().unwrap(); let recv_db = recv_dir.path().join("db"); - let port = 9991; + let port = port_check::free_local_port() + .ok_or_else(|| anyhow!("failed to find free local port to bind to"))?; let receiver = Receiver::new(port, &recv_db) .await - .context("failed to create sender")?; + .context("failed to create receiver")?; let mut receiver_transfer = receiver .transfer_from_ticket(&ticket) .await @@ -200,9 +205,10 @@ pub async fn receive_backup_inner( let name = link.name.unwrap_or_default(); let path = out.join(&name); - let mut file = tokio::fs::File::create(&path) + let file = tokio::fs::File::create(&path) .await .with_context(|| format!("create file: {}", path.display()))?; + let mut file = tokio::io::BufWriter::new(file); let mut content = file_content.pretty()?; tokio::io::copy(&mut content, &mut file) .await @@ -232,6 +238,10 @@ pub async fn receive_backup_inner( Ok(()) } +/// Send a backup. +/// +/// Only one send-progress can run at the same time. +/// To cancel a send-progress, drop the future returned by this function. pub async fn send_backup( context: &Context, path: &Path, @@ -829,7 +839,8 @@ async fn export_backup_iroh( match res { Ok(dir_builder) => { - let port = 9990; + let port = port_check::free_local_port() + .ok_or_else(|| anyhow!("failed to find free local port to bind to"))?; let sender = iroh_share::Sender::new(port, &sender_db_path).await?; let transfer = sender.transfer_from_dir_builder(dir_builder).await?; From 1f4384b30285ba8265f9b8e521631786957aae5c Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Mon, 19 Sep 2022 21:46:53 +0200 Subject: [PATCH 21/28] fixup --- foo-shm | Bin 32768 -> 0 bytes foo-wal | Bin 539752 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 foo-shm delete mode 100644 foo-wal diff --git a/foo-shm b/foo-shm deleted file mode 100644 index 85e14c8a0d8c6102ba4e761a0b4989852b36750b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 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 Date: Mon, 19 Sep 2022 21:49:44 +0200 Subject: [PATCH 22/28] clippy fixes --- deltachat-ffi/src/lib.rs | 6 +++--- examples/repl/cmdline.rs | 2 +- src/imex.rs | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deltachat-ffi/src/lib.rs b/deltachat-ffi/src/lib.rs index f0811118f7..a89764c0d8 100644 --- a/deltachat-ffi/src/lib.rs +++ b/deltachat-ffi/src/lib.rs @@ -2225,7 +2225,7 @@ pub unsafe extern "C" fn dc_send_backup( .await .map(|transfer| Box::into_raw(Box::new(dc_backup_sender { transfer }))) .log_err(ctx, "send_backup failed") - .unwrap_or_else(|_| ptr::null_mut()) + .unwrap_or(ptr::null_mut()) }) } else { eprintln!("dc_imex called without a valid directory"); @@ -2250,10 +2250,10 @@ pub unsafe extern "C" fn dc_backup_sender_qr( let bs = &*bs; let ticket = bs.transfer.ticket(); - qr_code_generator::generate_backup_qr_code(&ticket) + qr_code_generator::generate_backup_qr_code(ticket) .map(|s| s.strdup()) .log_err(ctx, "generate_backup_qr_code failed") - .unwrap_or_else(|_| ptr::null_mut()) + .unwrap_or(ptr::null_mut()) } #[no_mangle] diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index fdd5314ab7..acb25b91a2 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -483,7 +483,7 @@ pub async fn cmdline(context: Context, line: &str, chat_id: &mut ChatId) -> Resu let tdir = tempfile::TempDir::new()?; let dir = tdir.path(); println!("Storing backup in: {} ", dir.display()); - let transfer = send_backup(&context, dir.as_ref(), Some(arg1.to_string())).await?; + let transfer = send_backup(&context, dir, Some(arg1.to_string())).await?; let ticket = transfer.ticket(); let ticket_bytes = ticket.as_bytes(); diff --git a/src/imex.rs b/src/imex.rs index 835bc030a0..6e4c7dedce 100644 --- a/src/imex.rs +++ b/src/imex.rs @@ -864,7 +864,7 @@ async fn export_backup_iroh_inner( dir_builder.name( temp_path .file_name() - .map(|s| s.to_string_lossy().to_owned()) + .map(|s| s.to_string_lossy()) .unwrap_or_default(), ); From b2c68c77f2aa40a95c8a1f7387ba298a950e53d3 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Wed, 5 Oct 2022 16:45:53 +0200 Subject: [PATCH 23/28] fixup rebase --- deltachat-jsonrpc/typescript/generated/types.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deltachat-jsonrpc/typescript/generated/types.ts b/deltachat-jsonrpc/typescript/generated/types.ts index e3a3055a22..ca60c746fc 100644 --- a/deltachat-jsonrpc/typescript/generated/types.ts +++ b/deltachat-jsonrpc/typescript/generated/types.ts @@ -4,7 +4,8 @@ export type U32=number; export type Account=(({"type":"Configured";}&{"id":U32;"displayName":(string|null);"addr":(string|null);"profileImage":(string|null);"color":string;})|({"type":"Unconfigured";}&{"id":U32;})); export type U64=number; export type ProviderInfo={"beforeLoginHint":string;"overviewPage":string;"status":U32;}; -export type Qr=(({"type":"askVerifyContact";}&{"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"askVerifyGroup";}&{"grpname":string;"grpid":string;"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"fprOk";}&{"contact_id":U32;})|({"type":"fprMismatch";}&{"contact_id":(U32|null);})|({"type":"fprWithoutAddr";}&{"fingerprint":string;})|({"type":"account";}&{"domain":string;})|({"type":"webrtcInstance";}&{"domain":string;"instance_pattern":string;})|({"type":"addr";}&{"contact_id":U32;"draft":(string|null);})|({"type":"url";}&{"url":string;})|({"type":"text";}&{"text":string;})|({"type":"withdrawVerifyContact";}&{"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"withdrawVerifyGroup";}&{"grpname":string;"grpid":string;"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"reviveVerifyContact";}&{"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"reviveVerifyGroup";}&{"grpname":string;"grpid":string;"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"login";}&{"address":string;})); +export type U8=number; +export type Qr=(({"type":"askVerifyContact";}&{"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"askVerifyGroup";}&{"grpname":string;"grpid":string;"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"fprOk";}&{"contact_id":U32;})|({"type":"fprMismatch";}&{"contact_id":(U32|null);})|({"type":"fprWithoutAddr";}&{"fingerprint":string;})|({"type":"account";}&{"domain":string;})|({"type":"webrtcInstance";}&{"domain":string;"instance_pattern":string;})|({"type":"addr";}&{"contact_id":U32;"draft":(string|null);})|({"type":"url";}&{"url":string;})|({"type":"text";}&{"text":string;})|({"type":"withdrawVerifyContact";}&{"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"withdrawVerifyGroup";}&{"grpname":string;"grpid":string;"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"reviveVerifyContact";}&{"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"reviveVerifyGroup";}&{"grpname":string;"grpid":string;"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"login";}&{"address":string;})|({"type":"backup";}&{"ticket":(U8)[];})); export type Usize=number; export type I64=number; export type ChatListEntry=[U32,U32]; From b6e8c9f1a4dec72f8aed709f90e7ee65eec9af7a Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Wed, 5 Oct 2022 22:41:30 +0200 Subject: [PATCH 24/28] clippy --- src/qr.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qr.rs b/src/qr.rs index 191e79a3c6..c025eca344 100644 --- a/src/qr.rs +++ b/src/qr.rs @@ -34,7 +34,7 @@ const HTTP_SCHEME: &str = "http://"; const HTTPS_SCHEME: &str = "https://"; pub const DCBACKUP_SCHEME: &str = "DCBACKUP:"; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum Qr { AskVerifyContact { contact_id: ContactId, From 1fd4e8e0ec77dc03c778f349f6842943e687b7f5 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Wed, 23 Nov 2022 16:36:05 +0100 Subject: [PATCH 25/28] fixup --- src/receive_imf.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/receive_imf.rs b/src/receive_imf.rs index a60ebc3393..08e29b7dec 100644 --- a/src/receive_imf.rs +++ b/src/receive_imf.rs @@ -1904,7 +1904,7 @@ async fn apply_mailinglist_changes( let (contact_id, _) = Contact::add_or_lookup(context, "", list_post, Origin::Hidden).await?; let mut contact = Contact::load_from_db(context, contact_id).await?; - if contact.param.get(Param::ListId) != Some(listid) { + if contact.param.get(Param::ListId) != Some(listid.as_str()) { contact.param.set(Param::ListId, listid); contact.update_param(context).await?; } From 415279c450f43be45987ba7bacfe02a7b5607914 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Wed, 23 Nov 2022 16:50:03 +0100 Subject: [PATCH 26/28] update dependencies, including iroh to 0.1.1 --- Cargo.lock | 2696 +++++++++++++++++++++--------- Cargo.toml | 8 +- deltachat-ffi/Cargo.toml | 2 +- rust-toolchain | 2 +- scripts/coredeps/install-rust.sh | 2 +- src/imex.rs | 3 +- src/location.rs | 3 +- src/mimefactory.rs | 13 +- src/provider.rs | 8 +- src/provider/data.rs | 2 +- src/tools.rs | 21 +- 11 files changed, 1956 insertions(+), 804 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 37d410e007..4b1e31dd3f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,6 +23,15 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "aead" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" +dependencies = [ + "generic-array", +] + [[package]] name = "aead" version = "0.4.3" @@ -30,6 +39,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" dependencies = [ "generic-array", + "rand_core 0.6.4", +] + +[[package]] +name = "aes" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" +dependencies = [ + "aes-soft", + "aesni", + "cipher 0.2.5", ] [[package]] @@ -55,36 +76,82 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "aes-gcm" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88da" +dependencies = [ + "aead 0.3.2", + "aes 0.6.0", + "cipher 0.2.5", + "ctr 0.6.0", + "ghash 0.3.1", + "subtle", +] + [[package]] name = "aes-gcm" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" dependencies = [ - "aead", + "aead 0.4.3", "aes 0.7.5", "cipher 0.3.0", - "ctr", - "ghash", + "ctr 0.8.0", + "ghash 0.4.4", "subtle", ] +[[package]] +name = "aes-soft" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" +dependencies = [ + "cipher 0.2.5", + "opaque-debug", +] + +[[package]] +name = "aesni" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" +dependencies = [ + "cipher 0.2.5", + "opaque-debug", +] + [[package]] name = "ahash" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.7", + "getrandom 0.2.8", + "once_cell", + "version_check 0.9.4", +] + +[[package]] +name = "ahash" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf6ccdb167abbf410dcb915cabd428929d7f6a04980b54a11f26a39f1c7f7107" +dependencies = [ + "cfg-if", + "getrandom 0.2.8", "once_cell", "version_check 0.9.4", ] [[package]] name = "aho-corasick" -version = "0.7.19" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" dependencies = [ "memchr", ] @@ -115,9 +182,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.65" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602" +checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" + +[[package]] +name = "arc-swap" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "983cd8b9d4b02a6dc6ffa557262eb5858a27a0038ffffe21a0f133eaa819a164" [[package]] name = "arrayref" @@ -137,12 +210,90 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71938f30533e4d95a6d17aa530939da3842c2ab6f4f84b9dae68447e4129f74a" +[[package]] +name = "asn1-rs" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ff05a702273012438132f449575dbc804e27b2f3cbe3069aa237d26c98fa33" +dependencies = [ + "asn1-rs-derive 0.1.0", + "asn1-rs-impl", + "displaydoc", + "nom 7.1.1", + "num-traits", + "rusticata-macros", + "thiserror", + "time 0.3.17", +] + +[[package]] +name = "asn1-rs" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf6690c370453db30743b373a60ba498fc0d6d83b11f4abfd87a84a075db5dd4" +dependencies = [ + "asn1-rs-derive 0.4.0", + "asn1-rs-impl", + "displaydoc", + "nom 7.1.1", + "num-traits", + "rusticata-macros", + "thiserror", + "time 0.3.17", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8b7511298d5b7784b40b092d9e9dcd3a627a5707e4b5e507931ab0d44eeebf" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "asn1_der" version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21" +[[package]] +name = "async-broadcast" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d26004fe83b2d1cd3a97609b21e39f9a31535822210fe83205d2ce48866ea61" +dependencies = [ + "event-listener", + "futures-core", + "parking_lot 0.12.1", +] + [[package]] name = "async-channel" version = "1.7.1" @@ -167,35 +318,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "async-executor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "once_cell", - "slab", -] - -[[package]] -name = "async-global-executor" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da5b41ee986eed3f524c380e6d64965aea573882a8907682ad100f7859305ca" -dependencies = [ - "async-channel", - "async-executor", - "async-io", - "async-lock", - "blocking", - "futures-lite", - "once_cell", -] - [[package]] name = "async-imap" version = "0.6.0" @@ -203,7 +325,7 @@ source = "git+https://github.com/async-email/async-imap?branch=master#8755b666fc dependencies = [ "async-channel", "async-native-tls", - "base64 0.13.0", + "base64 0.13.1", "byte-pool", "chrono", "futures", @@ -220,16 +342,16 @@ dependencies = [ [[package]] name = "async-io" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83e21f3a490c72b3b0cf44962180e60045de2925d8dff97918f7ee43c8f637c7" +checksum = "e8121296a9f05be7f34aa4196b1747243b3b62e048bb7906f644f3fbfc490cf7" dependencies = [ + "async-lock", "autocfg", "concurrent-queue", "futures-lite", "libc", "log", - "once_cell", "parking", "polling", "slab", @@ -240,11 +362,12 @@ dependencies = [ [[package]] name = "async-lock" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" +checksum = "c8101efe8695a6c17e02911402145357e718ac92d3ff88ae8419e84b1707b685" dependencies = [ "event-listener", + "futures-lite", ] [[package]] @@ -287,7 +410,7 @@ checksum = "6da21e1dd19fbad3e095ad519fb1558ab77fd82e5c4778dca8f9be0464589e1e" dependencies = [ "async-native-tls", "async-trait", - "base64 0.13.0", + "base64 0.13.1", "bufstream", "fast-socks5", "futures", @@ -321,17 +444,11 @@ dependencies = [ "syn", ] -[[package]] -name = "async-task" -version = "4.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" - [[package]] name = "async-trait" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" +checksum = "1e805d94e6b5001b651426cf4cd446b1ab5f319d27bab5c644f61de0a804360c" dependencies = [ "proc-macro2", "quote", @@ -363,9 +480,9 @@ dependencies = [ [[package]] name = "asynchronous-codec" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690" +checksum = "06a0daa378f5fd10634e44b0a29b2a87b890657658e072a30d6f26e57ddee182" dependencies = [ "bytes", "futures-sink", @@ -405,14 +522,14 @@ checksum = "acee9fd5073ab6b045a275b3e709c163dd36c90685219cb21804a147b58dba43" dependencies = [ "async-trait", "axum-core", - "base64 0.13.0", + "base64 0.13.1", "bitflags", "bytes", "futures-util", "http", "http-body", "hyper", - "itoa 1.0.3", + "itoa 1.0.4", "matchit", "memchr", "mime", @@ -457,7 +574,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.5.4", "object", "rustc-demangle", ] @@ -468,6 +585,12 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" +[[package]] +name = "base16ct" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" + [[package]] name = "base64" version = "0.11.0" @@ -482,15 +605,15 @@ checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64ct" -version = "1.5.2" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2b2456fd614d856680dcd9fcc660a51a820fa09daef2e49772b56a193c8474" +checksum = "b645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bf" [[package]] name = "bincode" @@ -534,11 +657,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "blake2" -version = "0.10.4" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9cf849ee05b2ee5fba5e36f97ff8ec2533916700fc0758d40d92136a42f3388" +checksum = "b12e5fd123190ce1c2e559308a94c9bacad77907d4c6005d9e58fe1a0689e55e" dependencies = [ - "digest 0.10.5", + "digest 0.10.6", ] [[package]] @@ -549,7 +672,7 @@ checksum = "72936ee4afc7f8f736d1c38383b56480b5497b4617b4a77bdbf1d2ababc76127" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq", + "constant_time_eq 0.1.5", ] [[package]] @@ -560,20 +683,20 @@ checksum = "db539cc2b5f6003621f1cd9ef92d7ded8ea5232c7de0f9faa2de251cd98730d4" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq", + "constant_time_eq 0.1.5", ] [[package]] name = "blake3" -version = "1.3.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" +checksum = "895adc16c8b3273fbbc32685a7d55227705eda08c01e77704020f3491924b44b" dependencies = [ "arrayref", "arrayvec", "cc", "cfg-if", - "constant_time_eq", + "constant_time_eq 0.2.4", ] [[package]] @@ -595,26 +718,28 @@ dependencies = [ ] [[package]] -name = "block-padding" -version = "0.3.2" +name = "block-modes" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a90ec2df9600c28a01c56c4784c9207a96d2451833aeceb8cc97e4c9548bb78" +checksum = "57a0e8073e8baa88212fb5823574c02ebccb395136ba9a164ab89379ec6072f0" dependencies = [ - "generic-array", + "block-padding 0.2.1", + "cipher 0.2.5", ] [[package]] -name = "blocking" -version = "1.2.0" +name = "block-padding" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" + +[[package]] +name = "block-padding" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" +checksum = "0a90ec2df9600c28a01c56c4784c9207a96d2451833aeceb8cc97e4c9548bb78" dependencies = [ - "async-channel", - "async-task", - "atomic-waker", - "fastrand", - "futures-lite", - "once_cell", + "generic-array", ] [[package]] @@ -663,9 +788,9 @@ checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" [[package]] name = "bumpalo" -version = "3.11.0" +version = "3.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" +checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" [[package]] name = "byte-pool" @@ -700,9 +825,9 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.12.1" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f5715e491b5a1598fc2bef5a606847b5dc1d48ea625bd3c02c00de8285591da" +checksum = "aaa3a8d9a1ca92e282c96a32d6511b695d7d994d1d102ba85d279f9b2756947f" [[package]] name = "byteorder" @@ -712,9 +837,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" +checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" dependencies = [ "serde", ] @@ -763,13 +888,24 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.73" +version = "1.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4" dependencies = [ "jobserver", ] +[[package]] +name = "ccm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aca1a8fbc20b50ac9673ff014abfb2b5f4085ee1a850d408f14a159c5853ac7" +dependencies = [ + "aead 0.3.2", + "cipher 0.2.5", + "subtle", +] + [[package]] name = "cexpr" version = "0.6.0" @@ -812,7 +948,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a18446b09be63d457bbec447509e85f662f32952b035ce892290396bc0b0cff5" dependencies = [ - "aead", + "aead 0.4.3", "chacha20", "cipher 0.3.0", "poly1305", @@ -825,15 +961,15 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18e9079d1a12a2cc2bffb5db039c43661836ead4082120d5844f02555aca2d46" dependencies = [ - "base64 0.13.0", + "base64 0.13.1", "encoding_rs", ] [[package]] name = "chrono" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1" +checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" dependencies = [ "iana-time-zone", "js-sys", @@ -859,6 +995,15 @@ dependencies = [ "unsigned-varint", ] +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + [[package]] name = "cipher" version = "0.3.0" @@ -880,9 +1025,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.3.3" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a050e2153c5be08febd6734e29298e844fdb0fa21aeddd63b4eb7baa106c69b" +checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3" dependencies = [ "glob", "libc", @@ -902,28 +1047,26 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.22" +version = "4.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750" +checksum = "2148adefda54e14492fb9bddcc600b4344c5d1a3123bd666dcb939c6f0e0e57e" dependencies = [ "atty", "bitflags", "clap_derive", "clap_lex", - "indexmap", "once_cell", "strsim", "termcolor", - "textwrap 0.15.1", ] [[package]] name = "clap_derive" -version = "3.2.18" +version = "4.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" +checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014" dependencies = [ - "heck 0.4.0", + "heck", "proc-macro-error", "proc-macro2", "quote", @@ -932,9 +1075,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.2.4" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8" dependencies = [ "os_str_bytes", ] @@ -950,6 +1093,25 @@ dependencies = [ "winapi", ] +[[package]] +name = "cmake" +version = "0.1.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db34956e100b30725f2eb215f90d4871051239535632f84fea3bc92722c66b7c" +dependencies = [ + "cc", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + [[package]] name = "color_quant" version = "1.1.0" @@ -996,6 +1158,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +[[package]] +name = "constant_time_eq" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3ad85c1f65dc7b37604eb0e89748faf0b9653065f2a8ef69f96a687ec1e9279" + [[package]] name = "convert_case" version = "0.5.0" @@ -1036,6 +1204,27 @@ dependencies = [ "libc", ] +[[package]] +name = "cpuid-bool" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" + +[[package]] +name = "crc" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53757d12b596c16c78b83458d732a5d1a17ab3f53f2f7412f6fb57cc8a140ab3" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d0165d2900ae6778e36e80bbc4da3b5eefccee9ba939761f9c2882a5d9af3ff" + [[package]] name = "crc24" version = "0.1.6" @@ -1112,23 +1301,22 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.10" +version = "0.9.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1" +checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset", - "once_cell", + "memoffset 0.7.1", "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd42583b04998a5363558e5f9291ee5a5ff6b49944332103f251e7479a82aa7" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" dependencies = [ "cfg-if", "crossbeam-utils", @@ -1136,12 +1324,11 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.11" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" +checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -1150,6 +1337,18 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "crypto-bigint" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -1160,6 +1359,26 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-mac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "crypto-mac" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" +dependencies = [ + "generic-array", + "subtle", +] + [[package]] name = "csv" version = "1.1.6" @@ -1184,16 +1403,25 @@ dependencies = [ [[package]] name = "ctr" -version = "0.8.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" dependencies = [ - "cipher 0.3.0", + "cipher 0.2.5", ] [[package]] -name = "ctrlc" -version = "3.2.3" +name = "ctr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +dependencies = [ + "cipher 0.3.0", +] + +[[package]] +name = "ctrlc" +version = "3.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d91974fbbe88ec1df0c24a4f00f99583667a7e2e6272b2b92d294d81e462173" dependencies = [ @@ -1227,6 +1455,50 @@ dependencies = [ "zeroize", ] +[[package]] +name = "cxx" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a41a86530d0fe7f5d9ea779916b7cadd2d4f9add748b99c2c029cbbdfaf453" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06416d667ff3e3ad2df1cd8cd8afae5da26cf9cec4d0825040f88b5ca659a2f0" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "820a9a2af1669deeef27cb271f476ffd196a2c4b6731336011e0ba63e2c7cf71" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a08a6e2fcc370a089ad3b4aaf54db3b1b4cee38ddabce5896b33eb693275f470" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "darling" version = "0.13.4" @@ -1239,12 +1511,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4529658bdda7fd6769b8614be250cdcfc3aeb0ee72fe66f9e41e5e5eb73eac02" +checksum = "b0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfa" dependencies = [ - "darling_core 0.14.1", - "darling_macro 0.14.1", + "darling_core 0.14.2", + "darling_macro 0.14.2", ] [[package]] @@ -1263,9 +1535,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "649c91bc01e8b1eac09fb91e8dbc7d517684ca6be8ebc75bb9cafc894f9fdb6f" +checksum = "a784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859f" dependencies = [ "fnv", "ident_case", @@ -1288,15 +1560,28 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc69c5bfcbd2fc09a0f38451d2daf0e372e367986a83906d1b0dbc88134fb5" +checksum = "7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7e" dependencies = [ - "darling_core 0.14.1", + "darling_core 0.14.2", "quote", "syn", ] +[[package]] +name = "dashmap" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" +dependencies = [ + "cfg-if", + "hashbrown 0.12.3", + "lock_api", + "once_cell", + "parking_lot_core 0.9.4", +] + [[package]] name = "data-encoding" version = "2.3.2" @@ -1323,6 +1608,16 @@ dependencies = [ "syn", ] +[[package]] +name = "deadqueue" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16a2561fd313df162315935989dceb8c99db4ee1933358270a57a3cfb8c957f3" +dependencies = [ + "crossbeam-queue", + "tokio", +] + [[package]] name = "deltachat" version = "1.101.0" @@ -1335,7 +1630,7 @@ dependencies = [ "async-smtp", "async_zip", "backtrace", - "base64 0.13.0", + "base64 0.13.1", "bitflags", "chrono", "criterion", @@ -1348,7 +1643,7 @@ dependencies = [ "futures", "futures-lite", "hex", - "humansize", + "humansize 1.1.1", "image", "iroh-resolver", "iroh-share", @@ -1394,9 +1689,9 @@ dependencies = [ "tokio-stream", "tokio-tar", "toml", - "trust-dns-resolver 0.22.0", + "trust-dns-resolver", "url", - "uuid 1.1.2", + "uuid 1.2.2", ] [[package]] @@ -1407,7 +1702,7 @@ dependencies = [ "async-channel", "axum", "deltachat", - "env_logger 0.9.1", + "env_logger 0.9.3", "futures", "log", "num-traits", @@ -1427,7 +1722,7 @@ version = "1.101.0" dependencies = [ "anyhow", "deltachat-jsonrpc", - "env_logger 0.9.1", + "env_logger 0.9.3", "futures-lite", "log", "serde", @@ -1474,6 +1769,45 @@ dependencies = [ "zeroize", ] +[[package]] +name = "der-parser" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe398ac75057914d7d07307bf67dc7f3f574a26783b4fc7805a20ffa9f506e82" +dependencies = [ + "asn1-rs 0.3.1", + "displaydoc", + "nom 7.1.1", + "num-bigint", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "der-parser" +version = "8.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d4bc9b0db0a0df9ae64634ac5bdefb7afcb534e182275ca0beadbe486701c1" +dependencies = [ + "asn1-rs 0.5.1", + "displaydoc", + "nom 7.1.1", + "num-bigint", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "derive_builder" version = "0.11.2" @@ -1489,7 +1823,7 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f91d4cfa921f1c05904dc3c57b4a32c38aed3340cce209f3a6fd1478babafc4" dependencies = [ - "darling 0.14.1", + "darling 0.14.2", "proc-macro2", "quote", "syn", @@ -1525,9 +1859,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" dependencies = [ "block-buffer 0.10.3", "const-oid", @@ -1576,6 +1910,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "displaydoc" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "dlv-list" version = "0.3.0" @@ -1583,20 +1928,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" [[package]] -name = "dns-parser" -version = "0.8.0" +name = "dtoa" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea" -dependencies = [ - "byteorder", - "quick-error 1.2.3", -] +checksum = "f8a6eee2d5d0d113f015688310da018bd1d864d86bd567c8fca9c266889e1bfa" [[package]] -name = "dtoa" -version = "1.0.3" +name = "ecdsa" +version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6053ff46b5639ceb91756a85a4c8914668393a03170efd79c8884a529d80656" +checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" +dependencies = [ + "der", + "elliptic-curve", + "rfc6979", + "signature", +] [[package]] name = "ed25519" @@ -1627,6 +1974,28 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" +[[package]] +name = "elliptic-curve" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +dependencies = [ + "base16ct", + "crypto-bigint", + "der", + "digest 0.10.6", + "ff", + "generic-array", + "group", + "hkdf", + "pem-rfc7468", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + [[package]] name = "email" version = "0.0.21" @@ -1741,25 +2110,13 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" -[[package]] -name = "enum-as-inner" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" -dependencies = [ - "heck 0.4.0", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "enum-as-inner" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116" dependencies = [ - "heck 0.4.0", + "heck", "proc-macro2", "quote", "syn", @@ -1780,9 +2137,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.9.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c90bf5f19754d10198ccb95b70664fc925bd1fc090a0fd9a6ebc54acc8cd6272" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" dependencies = [ "atty", "humantime 2.1.0", @@ -1888,25 +2245,35 @@ dependencies = [ [[package]] name = "fd-lock" -version = "3.0.6" +version = "3.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e11dcc7e4d79a8c89b9ab4c6f5c30b1fc4a83c420792da3542fd31179ed5f517" +checksum = "bb21c69b9fea5e15dbc1049e4b77145dd0ba1c84019c488102de0dc4ea4b0a27" dependencies = [ "cfg-if", "rustix", - "windows-sys", + "windows-sys 0.42.0", +] + +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "rand_core 0.6.4", + "subtle", ] [[package]] name = "filetime" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94a7bbaa59354bc20dd75b67f23e2797b4490e9d6928203fb105c79e448c86c" +checksum = "4b9663d381d07ae25dc88dbdf27df458faa83a9b25336bcac83d5e452b5fc9d3" dependencies = [ "cfg-if", "libc", "redox_syscall", - "windows-sys", + "windows-sys 0.42.0", ] [[package]] @@ -1923,7 +2290,7 @@ checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" dependencies = [ "crc32fast", "libz-sys", - "miniz_oxide", + "miniz_oxide 0.5.4", ] [[package]] @@ -2038,8 +2405,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bd" dependencies = [ "futures-io", - "rustls", - "webpki", + "rustls 0.20.7", + "webpki 0.22.0", ] [[package]] @@ -2101,15 +2468,25 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ "cfg-if", "libc", "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "ghash" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" +dependencies = [ + "opaque-debug", + "polyval 0.4.5", +] + [[package]] name = "ghash" version = "0.4.4" @@ -2117,7 +2494,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" dependencies = [ "opaque-debug", - "polyval", + "polyval 0.5.3", ] [[package]] @@ -2164,11 +2541,22 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "h2" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca32592cf21ac7ccab1825cd87f6c9b3d9022c44d086172ed0966bec8af30be" +checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" dependencies = [ "bytes", "fnv", @@ -2179,7 +2567,7 @@ dependencies = [ "indexmap", "slab", "tokio", - "tokio-util 0.7.4", + "tokio-util", "tracing", ] @@ -2195,7 +2583,7 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "ahash", + "ahash 0.7.6", ] [[package]] @@ -2204,7 +2592,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash", + "ahash 0.7.6", ] [[package]] @@ -2216,15 +2604,6 @@ dependencies = [ "hashbrown 0.11.2", ] -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "heck" version = "0.4.0" @@ -2252,6 +2631,44 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" +[[package]] +name = "hkdf" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +dependencies = [ + "hmac 0.12.1", +] + +[[package]] +name = "hmac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +dependencies = [ + "crypto-mac 0.10.1", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +dependencies = [ + "crypto-mac 0.11.1", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.6", +] + [[package]] name = "hostname" version = "0.3.1" @@ -2271,7 +2688,7 @@ checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" dependencies = [ "bytes", "fnv", - "itoa 1.0.3", + "itoa 1.0.4", ] [[package]] @@ -2324,6 +2741,15 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026" +[[package]] +name = "humansize" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e682e2bd70ecbcce5209f11a992a4ba001fea8e60acf7860ce007629e6d2756" +dependencies = [ + "libm", +] + [[package]] name = "humantime" version = "1.3.0" @@ -2341,9 +2767,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.20" +version = "0.14.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac" +checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" dependencies = [ "bytes", "futures-channel", @@ -2354,7 +2780,7 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa 1.0.3", + "itoa 1.0.4", "pin-project-lite 0.2.9", "socket2", "tokio", @@ -2365,13 +2791,13 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.23.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac" +checksum = "59df7c4e19c950e6e0e868dcc0a300b09a9b88e9ec55bd879ca819087a77355d" dependencies = [ "http", "hyper", - "rustls", + "rustls 0.20.7", "tokio", "tokio-rustls", ] @@ -2403,18 +2829,28 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.48" +version = "0.1.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "237a0714f28b1ee39ccec0770ccb544eb02c9ef2c82bb096230eefcffa6468b0" +checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" dependencies = [ "android_system_properties", "core-foundation-sys", + "iana-time-zone-haiku", "js-sys", - "once_cell", "wasm-bindgen", "winapi", ] +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2454,9 +2890,9 @@ dependencies = [ [[package]] name = "if-watch" -version = "1.1.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "015a7df1eb6dda30df37f34b63ada9b7b352984b0e84de2a20ed526345000791" +checksum = "ba7abdbb86e485125dad06c2691e1e393bf3b08c7b743b43aa162a00fd39062e" dependencies = [ "async-io", "core-foundation", @@ -2467,6 +2903,7 @@ dependencies = [ "log", "rtnetlink", "system-configuration", + "tokio", "windows", ] @@ -2497,9 +2934,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" dependencies = [ "autocfg", "hashbrown 0.12.3", @@ -2524,94 +2961,127 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "interceptor" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ffaa4d24f546a18eaeee91f7b2c52e080e20e285e43cd7c27a527b4712cfdad" +dependencies = [ + "async-trait", + "bytes", + "log", + "rand 0.8.5", + "rtcp", + "rtp", + "thiserror", + "tokio", + "waitgroup", + "webrtc-srtp", + "webrtc-util", +] + [[package]] name = "io-lifetimes" -version = "0.7.3" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ea37f355c05dde75b84bba2d767906ad522e97cd9e2eef2be7a4ab7fb442c06" +checksum = "a7d367024b3f3414d8e01f437f704f41a9f64ab36f9067fa73e526ad4c763c87" +dependencies = [ + "libc", + "windows-sys 0.42.0", +] [[package]] name = "ipconfig" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "723519edce41262b05d4143ceb95050e4c614f483e78e9fd9e39a8275a84ad98" +checksum = "bd302af1b90f2463a98fa5ad469fc212c8e3175a41c3068601bfa2727591c5be" dependencies = [ "socket2", "widestring", "winapi", - "winreg 0.7.0", + "winreg", ] [[package]] name = "ipnet" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" +checksum = "f88c5561171189e69df9d98bcf18fd5f9558300f7ea7b801eb8a0fd748bd8745" [[package]] name = "iroh-bitswap" -version = "0.1.0" -source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +version = "0.1.1" +source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" dependencies = [ - "ahash", + "ahash 0.8.2", + "anyhow", + "async-broadcast", + "async-channel", + "async-trait", + "asynchronous-codec", "bytes", "cid", + "deadqueue", + "derivative", "futures", - "git-version", "iroh-metrics", + "iroh-util", + "keyed_priority_queue", "libp2p", "multihash", "names", "num_enum", - "prost 0.11.0", - "prost-build 0.11.1", + "once_cell", + "prost 0.11.2", + "prost-build 0.11.2", + "rand 0.8.5", + "smallvec", "thiserror", "tokio", + "tokio-context", + "tokio-stream", "tracing", "unsigned-varint", + "wasm-timer", ] [[package]] name = "iroh-metrics" -version = "0.1.0" -source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +version = "0.1.1" +source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" dependencies = [ "async-trait", "config", "iroh-util", "lazy_static", "libp2p", - "metrics", - "metrics-exporter-prometheus", - "metrics-util", "names", "opentelemetry", "opentelemetry-otlp", + "paste", "prometheus-client", "reqwest", "serde", "tokio", "tracing", - "tracing-futures", "tracing-opentelemetry", "tracing-subscriber", ] [[package]] name = "iroh-p2p" -version = "0.1.0" -source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +version = "0.1.1" +source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" dependencies = [ - "ahash", + "ahash 0.8.2", "anyhow", "async-stream", "async-trait", "asynchronous-codec", "bytes", "cid", - "clap 3.2.22", + "clap 4.0.26", "config", - "dirs", "futures", "futures-util", "git-version", @@ -2622,7 +3092,7 @@ dependencies = [ "iroh-util", "lazy_static", "libp2p", - "multihash", + "lru", "names", "rand 0.8.5", "serde", @@ -2630,6 +3100,7 @@ dependencies = [ "ssh-key", "tempfile", "tokio", + "tokio-stream", "toml", "tracing", "tracing-subscriber", @@ -2638,13 +3109,15 @@ dependencies = [ [[package]] name = "iroh-resolver" -version = "0.1.0" -source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +version = "0.1.1" +source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" dependencies = [ "anyhow", + "async-channel", "async-recursion", "async-stream", "async-trait", + "base64 0.13.1", "bytes", "cid", "fastmurmur3", @@ -2653,20 +3126,27 @@ dependencies = [ "iroh-rpc-client", "iroh-util", "libipld", + "libp2p", + "multihash", "num_enum", "once_cell", - "prost 0.11.0", - "prost-build 0.11.1", - "tokio", - "tokio-util 0.7.4", - "tracing", - "trust-dns-resolver 0.21.2", + "prost 0.11.2", + "prost-build 0.11.2", + "rand 0.8.5", + "reqwest", + "serde", + "serde_json", + "tokio", + "tokio-util", + "tracing", + "trust-dns-resolver", + "unsigned-varint", ] [[package]] name = "iroh-rpc-client" -version = "0.1.0" -source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +version = "0.1.1" +source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" dependencies = [ "anyhow", "async-stream", @@ -2680,7 +3160,7 @@ dependencies = [ "iroh-util", "libp2p", "paste", - "prost 0.11.0", + "prost 0.11.2", "serde", "tokio", "toml", @@ -2689,31 +3169,32 @@ dependencies = [ [[package]] name = "iroh-rpc-types" -version = "0.1.0" -source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +version = "0.1.1" +source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" dependencies = [ "anyhow", "async-trait", + "futures", "iroh-metrics", "paste", - "prost 0.11.0", - "prost-build 0.11.1", - "prost-types 0.11.1", + "prost 0.11.2", + "prost-build 0.11.2", + "prost-types 0.11.2", "serde_with", "tokio", ] [[package]] name = "iroh-share" -version = "0.1.0" -source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +version = "0.1.1" +source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" dependencies = [ "anyhow", "async-trait", "bincode", "bytes", "cid", - "clap 3.2.22", + "clap 4.0.26", "futures", "iroh-metrics", "iroh-p2p", @@ -2735,15 +3216,16 @@ dependencies = [ [[package]] name = "iroh-store" -version = "0.1.0" -source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +version = "0.1.1" +source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" dependencies = [ + "ahash 0.8.2", "anyhow", "async-trait", "bytecheck", "bytes", "cid", - "clap 3.2.22", + "clap 4.0.26", "config", "ctrlc", "futures", @@ -2752,11 +3234,13 @@ dependencies = [ "iroh-rpc-client", "iroh-rpc-types", "iroh-util", + "multihash", "names", "opentelemetry", "rkyv", "rocksdb", "serde", + "smallvec", "tokio", "tracing", "tracing-opentelemetry", @@ -2765,8 +3249,8 @@ dependencies = [ [[package]] name = "iroh-util" -version = "0.1.0" -source = "git+https://github.com/n0-computer/iroh?branch=main#79273bd521a0727bc408e81c4cab10ba7671f2b6" +version = "0.1.1" +source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" dependencies = [ "anyhow", "cid", @@ -2774,18 +3258,21 @@ dependencies = [ "ctrlc", "dirs-next", "futures", + "humansize 2.1.2", "rlimit", "serde", + "sysinfo", "temp-env", + "thiserror", "toml", "tracing", ] [[package]] name = "itertools" -version = "0.10.4" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8bf247779e67a9082a4790b45e71ac7cfd1321331a5c856a74a9faebdab78d0" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] @@ -2798,15 +3285,15 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" +checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" [[package]] name = "jobserver" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" dependencies = [ "libc", ] @@ -2839,18 +3326,30 @@ dependencies = [ [[package]] name = "kamadak-exif" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70494964492bf8e491eb3951c5d70c9627eb7100ede6cc56d748b9a3f302cfb6" +checksum = "ef4fc70d0ab7e5b6bafa30216a6b48705ea964cdfc29c050f2412295eba58077" dependencies = [ "mutate_once", ] [[package]] name = "keccak" -version = "0.1.2" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keyed_priority_queue" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838" +checksum = "2d63b6407b66fc81fc539dccf3ddecb669f393c5101b6a2be3976c95099a06e8" +dependencies = [ + "indexmap", +] [[package]] name = "lazy_static" @@ -2893,15 +3392,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.132" +version = "0.2.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" +checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" [[package]] name = "libipld" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb2f6a99d838dcb1cc18361c79e827b76e91987227406e705d07cbef51ab7be" +checksum = "ac9c3aa309c260aa2f174bac968901eddc546e9d85950c28eae6a7bec402f926" dependencies = [ "async-trait", "cached", @@ -2920,9 +3419,9 @@ dependencies = [ [[package]] name = "libipld-cbor" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46b3bbc4f35b8f25eb140d183f33d4610a1eb6531b312f01161fa06693f8c28a" +checksum = "8dd1ab68c9d26f20c7d0dfea6eecbae8c00359875210001b33ca27d4a02f3d09" dependencies = [ "byteorder", "libipld-core", @@ -2931,9 +3430,9 @@ dependencies = [ [[package]] name = "libipld-cbor-derive" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6ec17d094f4f62e33e201ded63d911fd0bff3b12121ddc50d611e967f7e6824" +checksum = "69ec2f49393a1347a2d95ebcb248ff75d0d47235919b678036c010a8cd927375" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2944,9 +3443,9 @@ dependencies = [ [[package]] name = "libipld-core" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbdd758764f9680a818af33c31db733eb7c45224715d8816b9dcf0548c75f7c5" +checksum = "d44790246ec6b7314cba745992c23d479d018073e66d49ae40ae1b64e5dd8eb5" dependencies = [ "anyhow", "cid", @@ -2958,9 +3457,9 @@ dependencies = [ [[package]] name = "libipld-json" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "415427568962961e21009eb92fd6052de95174423cff9d3c583491858e060f4e" +checksum = "18aa481a87f084d98473dd9ece253a9569c762b75f6bbba8217d54e48c9d63b3" dependencies = [ "libipld-core", "multihash", @@ -2970,30 +3469,30 @@ dependencies = [ [[package]] name = "libipld-macro" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c4cb1056262ef4056ad9e5fb41f252c45f55009888e21b7837ac051f38814a" +checksum = "852c011562ae5059b67c3a917f9f5945af5a68df8e39ede4444fff33274d25e2" dependencies = [ "libipld-core", ] [[package]] name = "libipld-pb" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b851a08aeff23e1e8df42081ef22052a838e8e39b769fcb7867d2fadd834d2d" +checksum = "c003be513496578115256a1b4ac7b80d4ece2462c9869dfb736fd30d8bb1d1c0" dependencies = [ "libipld-core", - "prost 0.9.0", - "prost-build 0.9.0", + "prost 0.10.4", + "prost-build 0.10.4", "thiserror", ] [[package]] name = "libloading" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ "cfg-if", "winapi", @@ -3001,21 +3500,20 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "292a948cd991e376cf75541fe5b97a1081d713c618b4f1b9500f8844e49eb565" +checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" [[package]] name = "libp2p" -version = "0.48.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.50.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "bytes", "futures", "futures-timer", - "getrandom 0.2.7", + "getrandom 0.2.8", "instant", - "lazy_static", "libp2p-autonat", "libp2p-core", "libp2p-dcutr", @@ -3028,24 +3526,24 @@ dependencies = [ "libp2p-mplex", "libp2p-noise", "libp2p-ping", + "libp2p-quic", "libp2p-relay", "libp2p-request-response", "libp2p-swarm", - "libp2p-swarm-derive", "libp2p-tcp", + "libp2p-webrtc", "libp2p-websocket", "libp2p-yamux", "multiaddr", "parking_lot 0.12.1", "pin-project", - "rand 0.7.3", "smallvec", ] [[package]] name = "libp2p-autonat" -version = "0.7.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.9.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "async-trait", "futures", @@ -3055,15 +3553,15 @@ dependencies = [ "libp2p-request-response", "libp2p-swarm", "log", - "prost 0.11.0", - "prost-build 0.11.1", + "prost 0.11.2", + "prost-build 0.11.2", "rand 0.8.5", ] [[package]] name = "libp2p-core" -version = "0.35.1" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.38.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "asn1_der", "bs58", @@ -3073,15 +3571,15 @@ dependencies = [ "futures", "futures-timer", "instant", - "lazy_static", "log", "multiaddr", "multihash", "multistream-select", + "once_cell", "parking_lot 0.12.1", "pin-project", - "prost 0.11.0", - "prost-build 0.11.1", + "prost 0.11.2", + "prost-build 0.11.2", "rand 0.8.5", "ring", "rw-stream-sink", @@ -3096,8 +3594,8 @@ dependencies = [ [[package]] name = "libp2p-dcutr" -version = "0.6.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.8.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "asynchronous-codec", "bytes", @@ -3108,8 +3606,8 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "prost 0.11.0", - "prost-build 0.11.1", + "prost 0.11.2", + "prost-build 0.11.2", "prost-codec", "thiserror", "void", @@ -3117,24 +3615,24 @@ dependencies = [ [[package]] name = "libp2p-dns" -version = "0.35.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.38.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "futures", "libp2p-core", "log", "parking_lot 0.12.1", "smallvec", - "trust-dns-resolver 0.21.2", + "trust-dns-resolver", ] [[package]] name = "libp2p-gossipsub" -version = "0.41.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.43.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "asynchronous-codec", - "base64 0.13.0", + "base64 0.13.1", "byteorder", "bytes", "fnv", @@ -3145,21 +3643,23 @@ dependencies = [ "libp2p-swarm", "log", "prometheus-client", - "prost 0.11.0", - "prost-build 0.11.1", - "rand 0.7.3", + "prost 0.11.2", + "prost-build 0.11.2", + "prost-codec", + "rand 0.8.5", "regex", "serde", "sha2 0.10.6", "smallvec", + "thiserror", "unsigned-varint", "wasm-timer", ] [[package]] name = "libp2p-identify" -version = "0.39.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.41.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "asynchronous-codec", "futures", @@ -3168,8 +3668,8 @@ dependencies = [ "libp2p-swarm", "log", "lru", - "prost 0.11.0", - "prost-build 0.11.1", + "prost 0.11.2", + "prost-build 0.11.2", "prost-codec", "smallvec", "thiserror", @@ -3178,8 +3678,8 @@ dependencies = [ [[package]] name = "libp2p-kad" -version = "0.40.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.42.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "arrayvec", "asynchronous-codec", @@ -3192,9 +3692,9 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "prost 0.11.0", - "prost-build 0.11.1", - "rand 0.7.3", + "prost 0.11.2", + "prost-build 0.11.2", + "rand 0.8.5", "serde", "sha2 0.10.6", "smallvec", @@ -3206,28 +3706,27 @@ dependencies = [ [[package]] name = "libp2p-mdns" -version = "0.40.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.42.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ - "async-io", "data-encoding", - "dns-parser", "futures", "if-watch", - "lazy_static", "libp2p-core", "libp2p-swarm", "log", "rand 0.8.5", "smallvec", "socket2", + "tokio", + "trust-dns-proto", "void", ] [[package]] name = "libp2p-metrics" -version = "0.9.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.11.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "libp2p-core", "libp2p-dcutr", @@ -3242,8 +3741,8 @@ dependencies = [ [[package]] name = "libp2p-mplex" -version = "0.35.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.38.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "asynchronous-codec", "bytes", @@ -3252,36 +3751,36 @@ dependencies = [ "log", "nohash-hasher", "parking_lot 0.12.1", - "rand 0.7.3", + "rand 0.8.5", "smallvec", "unsigned-varint", ] [[package]] name = "libp2p-noise" -version = "0.38.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.41.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "bytes", "curve25519-dalek 3.2.0", "futures", - "lazy_static", "libp2p-core", "log", - "prost 0.11.0", - "prost-build 0.11.1", + "once_cell", + "prost 0.11.2", + "prost-build 0.11.2", "rand 0.8.5", "sha2 0.10.6", "snow", "static_assertions", - "x25519-dalek", + "x25519-dalek 1.1.1", "zeroize", ] [[package]] name = "libp2p-ping" -version = "0.39.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.41.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "futures", "futures-timer", @@ -3289,14 +3788,34 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "rand 0.7.3", + "rand 0.8.5", "void", ] +[[package]] +name = "libp2p-quic" +version = "0.7.0-alpha" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +dependencies = [ + "bytes", + "futures", + "futures-timer", + "if-watch", + "libp2p-core", + "libp2p-tls", + "log", + "parking_lot 0.12.1", + "quinn-proto", + "rand 0.8.5", + "rustls 0.20.7", + "thiserror", + "tokio", +] + [[package]] name = "libp2p-relay" -version = "0.12.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.14.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "asynchronous-codec", "bytes", @@ -3308,8 +3827,8 @@ dependencies = [ "libp2p-swarm", "log", "pin-project", - "prost 0.11.0", - "prost-build 0.11.1", + "prost 0.11.2", + "prost-build 0.11.2", "prost-codec", "rand 0.8.5", "smallvec", @@ -3320,8 +3839,8 @@ dependencies = [ [[package]] name = "libp2p-request-response" -version = "0.21.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.23.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "async-trait", "bytes", @@ -3330,15 +3849,15 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "rand 0.7.3", + "rand 0.8.5", "smallvec", "unsigned-varint", ] [[package]] name = "libp2p-swarm" -version = "0.39.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.41.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "either", "fnv", @@ -3346,33 +3865,34 @@ dependencies = [ "futures-timer", "instant", "libp2p-core", + "libp2p-swarm-derive", "log", "pin-project", - "rand 0.7.3", + "rand 0.8.5", "smallvec", "thiserror", + "tokio", "void", ] [[package]] name = "libp2p-swarm-derive" -version = "0.30.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.30.2" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ - "heck 0.4.0", + "heck", "quote", "syn", ] [[package]] name = "libp2p-tcp" -version = "0.35.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.38.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "futures", "futures-timer", - "if-addrs", - "ipnet", + "if-watch", "libc", "libp2p-core", "log", @@ -3380,10 +3900,57 @@ dependencies = [ "tokio", ] +[[package]] +name = "libp2p-tls" +version = "0.1.0-alpha" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +dependencies = [ + "futures", + "futures-rustls", + "libp2p-core", + "rcgen 0.10.0", + "ring", + "rustls 0.20.7", + "thiserror", + "webpki 0.22.0", + "x509-parser 0.14.0", + "yasna", +] + +[[package]] +name = "libp2p-webrtc" +version = "0.1.0-alpha" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +dependencies = [ + "async-trait", + "asynchronous-codec", + "bytes", + "futures", + "futures-timer", + "hex", + "if-watch", + "libp2p-core", + "libp2p-noise", + "log", + "multihash", + "prost 0.11.2", + "prost-build 0.11.2", + "prost-codec", + "rand 0.8.5", + "rcgen 0.9.3", + "serde", + "stun", + "thiserror", + "tinytemplate", + "tokio", + "tokio-util", + "webrtc", +] + [[package]] name = "libp2p-websocket" -version = "0.37.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.40.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "either", "futures", @@ -3400,11 +3967,12 @@ dependencies = [ [[package]] name = "libp2p-yamux" -version = "0.39.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.42.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "futures", "libp2p-core", + "log", "parking_lot 0.12.1", "thiserror", "yamux", @@ -3448,6 +4016,15 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "link-cplusplus" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" +dependencies = [ + "cc", +] + [[package]] name = "linked-hash-map" version = "0.5.6" @@ -3456,15 +4033,15 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.0.46" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854d" +checksum = "8f9f08d8963a6c613f4b1a78f4f4a4dbfadf8e6545b2d72861731e4858b8b47f" [[package]] name = "lock_api" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f80bf5aacaf25cbfc8210d1cfb718f2bf3b11c4c54e5afe36c236853a8ec390" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" dependencies = [ "autocfg", "scopeguard", @@ -3481,9 +4058,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.7.8" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909" dependencies = [ "hashbrown 0.12.3", ] @@ -3497,15 +4074,6 @@ dependencies = [ "linked-hash-map", ] -[[package]] -name = "mach" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" -dependencies = [ - "libc", -] - [[package]] name = "mailparse" version = "0.13.8" @@ -3550,7 +4118,7 @@ version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" dependencies = [ - "digest 0.10.5", + "digest 0.10.6", ] [[package]] @@ -3569,65 +4137,12 @@ dependencies = [ ] [[package]] -name = "metrics" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b9b8653cec6897f73b519a43fba5ee3d50f62fe9af80b428accdcc093b4a849" -dependencies = [ - "ahash", - "metrics-macros", - "portable-atomic", -] - -[[package]] -name = "metrics-exporter-prometheus" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8603921e1f54ef386189335f288441af761e0fc61bcb552168d9cedfe63ebc70" -dependencies = [ - "hyper", - "indexmap", - "ipnet", - "metrics", - "metrics-util", - "parking_lot 0.12.1", - "portable-atomic", - "quanta", - "thiserror", - "tokio", - "tracing", -] - -[[package]] -name = "metrics-macros" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "731f8ecebd9f3a4aa847dfe75455e4757a45da40a7793d2f0b1f9b6ed18b23f3" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "metrics-util" -version = "0.14.0" +name = "memoffset" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d24dc2dbae22bff6f1f9326ffce828c9f07ef9cc1e8002e5279f845432a30a" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" dependencies = [ - "aho-corasick", - "crossbeam-epoch", - "crossbeam-utils", - "hashbrown 0.12.3", - "indexmap", - "metrics", - "num_cpus", - "ordered-float", - "parking_lot 0.12.1", - "portable-atomic", - "quanta", - "radix_trie", - "sketches-ddsketch", + "autocfg", ] [[package]] @@ -3651,28 +4166,37 @@ dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + [[package]] name = "mio" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" +checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" dependencies = [ "libc", "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", + "windows-sys 0.42.0", ] [[package]] name = "multiaddr" -version = "0.14.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c580bfdd8803cce319b047d239559a22f809094aaea4ac13902a1fdcfcd4261" +checksum = "a4aebdb21e90f81d13ed01dc84123320838e53963c2ca94b60b305d3fa64f31e" dependencies = [ "arrayref", - "bs58", "byteorder", "data-encoding", + "multibase", "multihash", "percent-encoding", "serde", @@ -3702,7 +4226,7 @@ dependencies = [ "blake2s_simd", "blake3", "core2", - "digest 0.10.5", + "digest 0.10.6", "multihash-derive", "serde", "serde-big-array", @@ -3713,9 +4237,9 @@ dependencies = [ [[package]] name = "multihash-derive" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd" +checksum = "1d6d4752e6230d8ef7adf7bd5d8c4b1f6561c1014c5ba9a37445ccefe18aa1db" dependencies = [ "proc-macro-crate", "proc-macro-error", @@ -3733,8 +4257,8 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" [[package]] name = "multistream-select" -version = "0.11.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.12.1" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "bytes", "futures", @@ -3761,9 +4285,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" dependencies = [ "lazy_static", "libc", @@ -3836,11 +4360,11 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92b654097027250401127914afb37cb1f311df6610a9891ff07a757e94199027" dependencies = [ - "async-io", "bytes", "futures", "libc", "log", + "tokio", ] [[package]] @@ -3861,6 +4385,7 @@ dependencies = [ "bitflags", "cfg-if", "libc", + "memoffset 0.6.5", ] [[package]] @@ -3901,11 +4426,41 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "ntapi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc51db7b362b205941f71232e56c625156eb9a929f8cf74a428fd5bc094a4afc" +dependencies = [ + "winapi", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-bigint-dig" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566d173b2f9406afbc5510a90925d5a2cd80cae4605631f1212303df265de011" +checksum = "2399c9463abc5f909349d8aa9ba080e0b88b3ce2885389b60b993f39b1a56905" dependencies = [ "byteorder", "lazy_static", @@ -3974,9 +4529,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" dependencies = [ "hermit-abi", "libc", @@ -4003,15 +4558,6 @@ dependencies = [ "syn", ] -[[package]] -name = "num_threads" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" -dependencies = [ - "libc", -] - [[package]] name = "object" version = "0.29.0" @@ -4021,6 +4567,24 @@ dependencies = [ "memchr", ] +[[package]] +name = "oid-registry" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e20717fa0541f39bd146692035c37bedfa532b3e5071b35761082407546b2a" +dependencies = [ + "asn1-rs 0.3.1", +] + +[[package]] +name = "oid-registry" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d4bda43fd1b844cbc6e6e54b5444e2b1bc7838bce59ad205902cccbb26d6761" +dependencies = [ + "asn1-rs 0.5.1", +] + [[package]] name = "once_cell" version = "1.16.0" @@ -4041,9 +4605,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.41" +version = "0.10.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" +checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13" dependencies = [ "bitflags", "cfg-if", @@ -4073,18 +4637,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "111.22.0+1.1.1q" +version = "111.24.0+1.1.1s" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f31f0d509d1c1ae9cada2f9539ff8f37933831fd5098879e482aa687d659853" +checksum = "3498f259dab01178c6228c6b00dcef0ed2a2d5e20d648c017861227773ea4abd" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.75" +version = "0.9.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" +checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a" dependencies = [ "autocfg", "cc", @@ -4096,50 +4660,82 @@ dependencies = [ [[package]] name = "opentelemetry" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +checksum = "69d6c3d7288a106c0a363e4b0e8d308058d56902adefb16f4936f417ffef086e" dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand 0.8.5", - "thiserror", - "tokio", - "tokio-stream", + "opentelemetry_api", + "opentelemetry_sdk", ] [[package]] name = "opentelemetry-otlp" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1a6ca9de4c8b00aa7f1a153bd76cb263287155cec642680d79d98706f3d28a" +checksum = "d1c928609d087790fc936a1067bdc310ae702bdf3b090c3f281b713622c8bbde" dependencies = [ "async-trait", "futures", "futures-util", "http", "opentelemetry", - "prost 0.9.0", + "opentelemetry-proto", + "prost 0.11.2", "thiserror", "tokio", "tonic", +] + +[[package]] +name = "opentelemetry-proto" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61a2f56df5574508dd86aaca016c917489e589ece4141df1b5e349af8d66c28" +dependencies = [ + "futures", + "futures-util", + "opentelemetry", + "prost 0.11.2", + "tonic", "tonic-build", ] [[package]] -name = "ordered-float" -version = "2.10.0" +name = "opentelemetry_api" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87" +checksum = "c24f96e21e7acc813c7a8394ee94978929db2bcc46cf6b5014fc612bf7760c22" dependencies = [ - "num-traits", + "fnv", + "futures-channel", + "futures-util", + "indexmap", + "js-sys", + "once_cell", + "pin-project-lite 0.2.9", + "thiserror", +] + +[[package]] +name = "opentelemetry_sdk" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca41c4933371b61c2a2f214bf16931499af4ec90543604ec828f7a625c09113" +dependencies = [ + "async-trait", + "crossbeam-channel", + "dashmap", + "fnv", + "futures-channel", + "futures-executor", + "futures-util", + "once_cell", + "opentelemetry_api", + "percent-encoding", + "rand 0.8.5", + "thiserror", + "tokio", + "tokio-stream", ] [[package]] @@ -4154,15 +4750,15 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.3.0" +version = "6.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" +checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" [[package]] name = "os_type" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3df761f6470298359f84fcfb60d86db02acc22c251c37265c07a3d1057d2389" +checksum = "e24d44c0eea30167516ed8f6daca4b5e3eebcde1bde1e4e6e08b809fb02c7ba5" dependencies = [ "regex", ] @@ -4190,6 +4786,34 @@ dependencies = [ "syn", ] +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "p256" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" +dependencies = [ + "ecdsa", + "elliptic-curve", + "sha2 0.10.6", +] + +[[package]] +name = "p384" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc8c5bf642dde52bb9e87c0ecd8ca5a76faac2eeed98dedb7c717997e1080aa" +dependencies = [ + "ecdsa", + "elliptic-curve", + "sha2 0.10.6", +] + [[package]] name = "parking" version = "2.0.0" @@ -4214,7 +4838,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.3", + "parking_lot_core 0.9.4", ] [[package]] @@ -4233,15 +4857,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-sys", + "windows-sys 0.42.0", ] [[package]] @@ -4262,6 +4886,15 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" +[[package]] +name = "pem" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c64931a1a212348ec4f3b4362585eca7159d0d09cbdf4a7f74f02173596fd4" +dependencies = [ + "base64 0.13.1", +] + [[package]] name = "pem-rfc7468" version = "0.6.0" @@ -4279,9 +4912,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pest" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb779fcf4bb850fbbb0edc96ff6cf34fd90c4b1a112ce042653280d9a7364048" +checksum = "a528564cc62c19a7acac4d81e01f39e53e25e17b934878f4c6d25cc2836e62f8" dependencies = [ "thiserror", "ucd-trie", @@ -4289,9 +4922,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "502b62a6d0245378b04ffe0a7fb4f4419a4815fce813bd8a0ec89a56e07d67b1" +checksum = "d5fd9bc6500181952d34bd0b2b0163a54d794227b498be0b7afa7698d0a7b18f" dependencies = [ "pest", "pest_generator", @@ -4299,9 +4932,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451e629bf49b750254da26132f1a5a9d11fd8a95a3df51d15c4abd1ba154cb6c" +checksum = "d2610d5ac5156217b4ff8e46ddcef7cdf44b273da2ac5bca2ecbfa86a330e7c4" dependencies = [ "pest", "pest_meta", @@ -4312,9 +4945,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcec162c71c45e269dfc3fc2916eaeb97feab22993a21bcce4721d08cd7801a6" +checksum = "824749bf7e21dd66b36fbe26b3f45c713879cccd4a009a917ab8e045ca8246fe" dependencies = [ "once_cell", "pest", @@ -4338,9 +4971,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "991e3f098483f52c454c7cb16720adc010c2966a8845d3c34aad589cb86d3196" dependencies = [ "aes 0.8.2", - "base64 0.13.0", + "base64 0.13.1", "bitfield", - "block-padding", + "block-padding 0.3.2", "blowfish", "buf_redux", "byteorder", @@ -4351,7 +4984,7 @@ dependencies = [ "crc24", "derive_builder", "des", - "digest 0.10.5", + "digest 0.10.6", "ed25519-dalek", "flate2", "generic-array", @@ -4372,7 +5005,7 @@ dependencies = [ "smallvec", "thiserror", "twofish", - "x25519-dalek", + "x25519-dalek 1.1.1", "zeroize", ] @@ -4438,9 +5071,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" [[package]] name = "plotters" @@ -4472,21 +5105,21 @@ dependencies = [ [[package]] name = "png" -version = "0.17.6" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f0e7f4c94ec26ff209cee506314212639d6c91b80afb82984819fafce9df01c" +checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" dependencies = [ "bitflags", "crc32fast", "flate2", - "miniz_oxide", + "miniz_oxide 0.6.2", ] [[package]] name = "polling" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899b00b9c8ab553c743b3e11e87c5c7d423b2a2de229ba95b24a756344748011" +checksum = "ab4609a838d88b73d8238967b60dd115cc08d38e2bbaf51ee1e4b695f89122e2" dependencies = [ "autocfg", "cfg-if", @@ -4507,6 +5140,17 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "polyval" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" +dependencies = [ + "cpuid-bool", + "opaque-debug", + "universal-hash", +] + [[package]] name = "polyval" version = "0.5.3" @@ -4525,17 +5169,11 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6519412c9e0d4be579b9f0618364d19cb434b324fc6ddb1b27b1e682c7105ed" -[[package]] -name = "portable-atomic" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15eb2c6e362923af47e13c23ca5afb859e83d54452c55b0b9ac763b8f7c1ac16" - [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "pretty_env_logger" @@ -4547,13 +5185,22 @@ dependencies = [ "log", ] +[[package]] +name = "prettyplease" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c142c0e46b57171fe0c528bee8c5b7569e80f0c17e377cd0e30ea57dbc11bb51" +dependencies = [ + "proc-macro2", + "syn", +] + [[package]] name = "proc-macro-crate" -version = "1.2.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" dependencies = [ - "once_cell", "thiserror", "toml", ] @@ -4590,21 +5237,21 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" -version = "1.0.43" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" +checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" dependencies = [ "unicode-ident", ] [[package]] name = "prometheus-client" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c473049631c233933d6286c88bbb7be30e62ec534cf99a9ae0079211f7fa603" +checksum = "83cd1b99916654a69008fd66b4f9397fbe08e6e51dfe23d4417acf5d3b8cb87c" dependencies = [ "dtoa", - "itoa 1.0.3", + "itoa 1.0.4", "parking_lot 0.12.1", "prometheus-client-derive-text-encode", ] @@ -4639,39 +5286,41 @@ dependencies = [ [[package]] name = "prost" -version = "0.9.0" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" +checksum = "71adf41db68aa0daaefc69bb30bcd68ded9b9abaad5d1fbb6304c4fb390e083e" dependencies = [ "bytes", - "prost-derive 0.9.0", + "prost-derive 0.10.1", ] [[package]] name = "prost" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399c3c31cdec40583bb68f0b18403400d01ec4289c383aa047560439952c4dd7" +checksum = "a0841812012b2d4a6145fae9a6af1534873c32aa67fff26bd09f8fa42c83f95a" dependencies = [ "bytes", - "prost-derive 0.11.0", + "prost-derive 0.11.2", ] [[package]] name = "prost-build" -version = "0.9.0" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" +checksum = "8ae5a4388762d5815a9fc0dea33c56b021cdc8dde0c55e0c9ca57197254b0cab" dependencies = [ "bytes", - "heck 0.3.3", + "cfg-if", + "cmake", + "heck", "itertools", "lazy_static", "log", "multimap", "petgraph", - "prost 0.9.0", - "prost-types 0.9.0", + "prost 0.10.4", + "prost-types 0.10.1", "regex", "tempfile", "which", @@ -4679,41 +5328,43 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f835c582e6bd972ba8347313300219fed5bfa52caf175298d860b61ff6069bb" +checksum = "1d8b442418ea0822409d9e7d047cbf1e7e9e1760b172bf9982cf29d517c93511" dependencies = [ "bytes", - "heck 0.4.0", + "heck", "itertools", "lazy_static", "log", "multimap", "petgraph", - "prost 0.11.0", - "prost-types 0.11.1", + "prettyplease", + "prost 0.11.2", + "prost-types 0.11.2", "regex", + "syn", "tempfile", "which", ] [[package]] name = "prost-codec" -version = "0.2.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +version = "0.3.0" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "asynchronous-codec", "bytes", - "prost 0.11.0", + "prost 0.11.2", "thiserror", "unsigned-varint", ] [[package]] name = "prost-derive" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" +checksum = "7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7cc" dependencies = [ "anyhow", "itertools", @@ -4724,9 +5375,9 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7345d5f0e08c0536d7ac7229952590239e77abf0a0100a1b1d890add6ea96364" +checksum = "164ae68b6587001ca506d3bf7f1000bfa248d0e1217b618108fba4ec1d0cc306" dependencies = [ "anyhow", "itertools", @@ -4737,22 +5388,22 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" +checksum = "2d0a014229361011dc8e69c8a1ec6c2e8d0f2af7c91e3ea3f5b2170298461e68" dependencies = [ "bytes", - "prost 0.9.0", + "prost 0.10.4", ] [[package]] name = "prost-types" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dfaa718ad76a44b3415e6c4d53b17c8f99160dcb3a99b10470fce8ad43f6e3e" +checksum = "747761bc3dc48f9a34553bf65605cf6cb6288ba219f3450b4275dbd81539551a" dependencies = [ "bytes", - "prost 0.11.0", + "prost 0.11.2", ] [[package]] @@ -4781,22 +5432,6 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4339fc7a1021c9c1621d87f5e3505f2805c8c105420ba2f2a4df86814590c142" -[[package]] -name = "quanta" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e31331286705f455e56cca62e0e717158474ff02b7936c1fa596d983f4ae27" -dependencies = [ - "crossbeam-utils", - "libc", - "mach", - "once_cell", - "raw-cpuid", - "wasi 0.10.0+wasi-snapshot-preview1", - "web-sys", - "winapi", -] - [[package]] name = "quick-error" version = "1.2.3" @@ -4829,6 +5464,24 @@ dependencies = [ "pin-project-lite 0.1.12", ] +[[package]] +name = "quinn-proto" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57098b1a3d2159d13dc3a98c0e3a5f8ab91ac3dd2471e52b1d712ea0c1085555" +dependencies = [ + "bytes", + "rand 0.8.5", + "ring", + "rustc-hash", + "rustls 0.20.7", + "slab", + "thiserror", + "tinyvec", + "tracing", + "webpki 0.22.0", +] + [[package]] name = "quote" version = "1.0.21" @@ -4934,7 +5587,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.7", + "getrandom 0.2.8", ] [[package]] @@ -4955,22 +5608,12 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "raw-cpuid" -version = "10.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6823ea29436221176fe662da99998ad3b4db2c7f31e7b6f5fe43adccd6320bb" -dependencies = [ - "bitflags", -] - [[package]] name = "rayon" -version = "1.5.3" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +checksum = "1e060280438193c554f654141c9ea9417886713b7acd75974c85b18a69a88e0b" dependencies = [ - "autocfg", "crossbeam-deque", "either", "rayon-core", @@ -4978,9 +5621,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.3" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" +checksum = "cac410af5d00ab6884528b4ab69d1e8e146e8d471201800fa1b4524126de6ad3" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -4988,6 +5631,31 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "rcgen" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd" +dependencies = [ + "pem", + "ring", + "time 0.3.17", + "x509-parser 0.13.2", + "yasna", +] + +[[package]] +name = "rcgen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" +dependencies = [ + "pem", + "ring", + "time 0.3.17", + "yasna", +] + [[package]] name = "redox_syscall" version = "0.2.16" @@ -5003,16 +5671,16 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.7", + "getrandom 0.2.8", "redox_syscall", "thiserror", ] [[package]] name = "regex" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" dependencies = [ "aho-corasick", "memchr", @@ -5030,9 +5698,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.27" +version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "remove_dir_all" @@ -5058,7 +5726,7 @@ version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68cc60575865c7831548863cc02356512e3f1dc2f3f82cb837d7fc4cc8f3c97c" dependencies = [ - "base64 0.13.0", + "base64 0.13.1", "bytes", "encoding_rs", "futures-core", @@ -5077,7 +5745,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite 0.2.9", - "rustls", + "rustls 0.20.7", "rustls-pemfile", "serde", "serde_json", @@ -5091,7 +5759,7 @@ dependencies = [ "wasm-bindgen-futures", "web-sys", "webpki-roots", - "winreg 0.10.1", + "winreg", ] [[package]] @@ -5104,6 +5772,17 @@ dependencies = [ "quick-error 1.2.3", ] +[[package]] +name = "rfc6979" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" +dependencies = [ + "crypto-bigint", + "hmac 0.12.1", + "zeroize", +] + [[package]] name = "ring" version = "0.16.20" @@ -5125,7 +5804,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" dependencies = [ - "digest 0.10.5", + "digest 0.10.6", ] [[package]] @@ -5178,7 +5857,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a" dependencies = [ - "base64 0.13.0", + "base64 0.13.1", "bitflags", "serde", ] @@ -5190,7 +5869,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "094052d5470cbcef561cb848a7209968c9f12dfa6d668f4bca048ac5de51099c" dependencies = [ "byteorder", - "digest 0.10.5", + "digest 0.10.6", "num-bigint-dig", "num-integer", "num-iter", @@ -5204,19 +5883,44 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rtcp" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c11171e7e37998dcf54a9e9d4a6e2e1932c994424c7d39bc6349fed1424c45c3" +dependencies = [ + "bytes", + "thiserror", + "webrtc-util", +] + [[package]] name = "rtnetlink" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0" dependencies = [ - "async-global-executor", "futures", "log", "netlink-packet-route", "netlink-proto", "nix 0.24.2", "thiserror", + "tokio", +] + +[[package]] +name = "rtp" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2a095411ff00eed7b12e4c6a118ba984d113e1079582570d56a5ee723f11f80" +dependencies = [ + "async-trait", + "bytes", + "rand 0.8.5", + "serde", + "thiserror", + "webrtc-util", ] [[package]] @@ -5271,30 +5975,52 @@ dependencies = [ "semver", ] +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom 7.1.1", +] + [[package]] name = "rustix" -version = "0.35.9" +version = "0.36.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c825b8aa8010eb9ee99b75f05e10180b9278d161583034d7574c9d617aeada" +checksum = "0b1fbb4dfc4eb1d390c02df47760bb19a84bb80b301ecc947ab5406394d8223e" dependencies = [ "bitflags", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.42.0", +] + +[[package]] +name = "rustls" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" +dependencies = [ + "base64 0.13.1", + "log", + "ring", + "sct 0.6.1", + "webpki 0.21.4", ] [[package]] name = "rustls" -version = "0.20.6" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033" +checksum = "539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2c" dependencies = [ "log", "ring", - "sct", - "webpki", + "sct 0.7.0", + "webpki 0.22.0", ] [[package]] @@ -5303,7 +6029,7 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" dependencies = [ - "base64 0.13.0", + "base64 0.13.1", ] [[package]] @@ -5338,7 +6064,7 @@ dependencies = [ [[package]] name = "rw-stream-sink" version = "0.3.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh#9084ad776d310e6dba3a447e46cf45f4103291bd" +source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" dependencies = [ "futures", "pin-project", @@ -5383,7 +6109,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" dependencies = [ "lazy_static", - "windows-sys", + "windows-sys 0.36.1", ] [[package]] @@ -5401,22 +6127,64 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "scratch" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" + [[package]] name = "sct" -version = "0.7.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" dependencies = [ "ring", "untrusted", ] [[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "sdp" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d22a5ef407871893fd72b4562ee15e4742269b173959db4b8df6f538c414e13" +dependencies = [ + "rand 0.8.5", + "substring", + "thiserror", + "url", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +[[package]] +name = "sec1" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + [[package]] name = "security-framework" version = "2.7.0" @@ -5448,9 +6216,9 @@ checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" [[package]] name = "serde" -version = "1.0.144" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" +checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" dependencies = [ "serde_derive", ] @@ -5485,9 +6253,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.144" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" +checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" dependencies = [ "proc-macro2", "quote", @@ -5500,7 +6268,7 @@ version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" dependencies = [ - "itoa 1.0.3", + "itoa 1.0.4", "ryu", "serde", ] @@ -5512,34 +6280,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.3", + "itoa 1.0.4", "ryu", "serde", ] [[package]] name = "serde_with" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f2d60d049ea019a84dcd6687b0d1e0030fe663ae105039bdf967ed5e6a9a7" +checksum = "25bf4a5a814902cd1014dbccfa4d4560fb8432c779471e96e035602519f82eef" dependencies = [ - "base64 0.13.0", + "base64 0.13.1", "chrono", "hex", "indexmap", "serde", "serde_json", "serde_with_macros", - "time 0.3.14", + "time 0.3.17", ] [[package]] name = "serde_with_macros" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ccadfacf6cf10faad22bbadf55986bdd0856edfb5d9210aa1dcf1f516e84e93" +checksum = "e3452b4c0f6c1e357f73fdb87cd1efabaa12acf328c7a528e252893baeb3f4aa" dependencies = [ - "darling 0.14.1", + "darling 0.14.2", "proc-macro2", "quote", "syn", @@ -5566,7 +6334,7 @@ checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.5", + "digest 0.10.6", ] [[package]] @@ -5577,7 +6345,7 @@ checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.5", + "digest 0.10.6", ] [[package]] @@ -5601,16 +6369,16 @@ checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.5", + "digest 0.10.6", ] [[package]] name = "sha3" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2904bea16a1ae962b483322a1c7b81d976029203aea1f461e51cd7705db7ba9" +checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" dependencies = [ - "digest 0.10.5", + "digest 0.10.6", "keccak", ] @@ -5644,16 +6412,10 @@ version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" dependencies = [ - "digest 0.10.5", + "digest 0.10.6", "rand_core 0.6.4", ] -[[package]] -name = "sketches-ddsketch" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceb945e54128e09c43d8e4f1277851bd5044c6fc540bbaa2ad888f60b3da9ae7" - [[package]] name = "slab" version = "0.4.7" @@ -5665,9 +6427,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "smawk" @@ -5681,7 +6443,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "774d05a3edae07ce6d68ea6984f3c05e9bba8927e3dd591e3b479e5b03213d0d" dependencies = [ - "aes-gcm", + "aes-gcm 0.9.4", "blake2", "chacha20poly1305", "curve25519-dalek 4.0.0-pre.1", @@ -5708,7 +6470,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ - "base64 0.13.0", + "base64 0.13.1", "bytes", "flate2", "futures", @@ -5735,16 +6497,31 @@ dependencies = [ ] [[package]] -name = "ssh-key" -version = "0.4.2" +name = "ssh-encoding" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e09d8b0ff2fca365c89ad535055c17adbd9fb0a5daf338299049882e95b6931" +checksum = "19cfdc32e0199062113edf41f344fbf784b8205a94600233c84eb838f45191e1" dependencies = [ "base64ct", - "ed25519-dalek", "pem-rfc7468", + "sha2 0.10.6", +] + +[[package]] +name = "ssh-key" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "288d8f5562af5a3be4bda308dd374b2c807b940ac370b5efa1c99311da91d9a1" +dependencies = [ + "ed25519-dalek", + "p256", + "p384", "rand_core 0.6.4", + "rsa", + "sec1", + "sha2 0.10.6", "signature", + "ssh-encoding", "zeroize", ] @@ -5796,13 +6573,41 @@ version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ - "heck 0.4.0", + "heck", "proc-macro2", "quote", "rustversion", "syn", ] +[[package]] +name = "stun" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e94b1ec00bad60e6410e058b52f1c66de3dc5fe4d62d09b3e52bb7d3b73e25" +dependencies = [ + "base64 0.13.1", + "crc", + "lazy_static", + "md-5", + "rand 0.8.5", + "ring", + "subtle", + "thiserror", + "tokio", + "url", + "webrtc-util", +] + +[[package]] +name = "substring" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ee6433ecef213b2e72f587ef64a2f5943e7cd16fbd82dbe8bc07486c534c86" +dependencies = [ + "autocfg", +] + [[package]] name = "subtle" version = "2.4.1" @@ -5811,9 +6616,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.100" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52205623b1b0f064a4e71182c3b18ae902267282930c6d5462c91b859668426e" +checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" dependencies = [ "proc-macro2", "quote", @@ -5838,6 +6643,21 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "sysinfo" +version = "0.26.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c375d5fd899e32847b8566e10598d6e9f1d9b55ec6de3cdf9e7da4bdc51371bc" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "winapi", +] + [[package]] name = "system-configuration" version = "0.5.0" @@ -5867,9 +6687,9 @@ checksum = "77dd78fc7dd20ba3a13620ec231cef9e73ea5c7ba162f6c4e05b1d521e04b221" [[package]] name = "temp-env" -version = "0.2.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45107136c2ddf8c4b87453c02294fd0adf41751796e81e8ba3f7fd951977ab57" +checksum = "a30d48359f77fbb6af3d7b928cc2d092e1dc90b44f397e979ef08ae15733ed65" dependencies = [ "once_cell", ] @@ -5906,12 +6726,6 @@ dependencies = [ "unicode-width", ] -[[package]] -name = "textwrap" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" - [[package]] name = "textwrap" version = "0.16.0" @@ -5965,14 +6779,29 @@ dependencies = [ [[package]] name = "time" -version = "0.3.14" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3f9a28b618c3a6b9251b6908e9c99e04b9e5c02e6581ccbb67d59c34ef7f9b" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" dependencies = [ - "itoa 1.0.3", - "libc", - "num_threads", + "itoa 1.0.4", "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +dependencies = [ + "time-core", ] [[package]] @@ -6020,6 +6849,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "tokio-context" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf0b8394dd5ca9a1b726c629390154c19222dfd7467a4b56f1ced90adee3958" +dependencies = [ + "tokio", +] + [[package]] name = "tokio-io-timeout" version = "1.2.0" @@ -6057,9 +6895,9 @@ version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ - "rustls", + "rustls 0.20.7", "tokio", - "webpki", + "webpki 0.22.0", ] [[package]] @@ -6100,20 +6938,6 @@ dependencies = [ "tungstenite", ] -[[package]] -name = "tokio-util" -version = "0.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite 0.2.9", - "tokio", -] - [[package]] name = "tokio-util" version = "0.7.4" @@ -6122,6 +6946,7 @@ checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" dependencies = [ "bytes", "futures-core", + "futures-io", "futures-sink", "pin-project-lite 0.2.9", "tokio", @@ -6139,13 +6964,14 @@ dependencies = [ [[package]] name = "tonic" -version = "0.6.2" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a" +checksum = "55b9af819e54b8f33d453655bef9b9acc171568fb49523078d0cc4e7484200ec" dependencies = [ "async-stream", "async-trait", - "base64 0.13.0", + "axum", + "base64 0.13.1", "bytes", "futures-core", "futures-util", @@ -6156,11 +6982,11 @@ dependencies = [ "hyper-timeout", "percent-encoding", "pin-project", - "prost 0.9.0", - "prost-derive 0.9.0", + "prost 0.11.2", + "prost-derive 0.11.2", "tokio", "tokio-stream", - "tokio-util 0.6.10", + "tokio-util", "tower", "tower-layer", "tower-service", @@ -6170,12 +6996,13 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.6.2" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9403f1bafde247186684b230dc6f38b5cd514584e8bec1dd32514be4745fa757" +checksum = "48c6fd7c2581e36d63388a9e04c350c21beb7a8b059580b2e93993c526899ddc" dependencies = [ + "prettyplease", "proc-macro2", - "prost-build 0.9.0", + "prost-build 0.11.2", "quote", "syn", ] @@ -6194,7 +7021,7 @@ dependencies = [ "rand 0.8.5", "slab", "tokio", - "tokio-util 0.7.4", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -6221,9 +7048,9 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" [[package]] name = "tower-service" @@ -6233,9 +7060,9 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.36" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", "log", @@ -6246,9 +7073,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ "proc-macro2", "quote", @@ -6257,9 +7084,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.29" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" dependencies = [ "once_cell", "valuable", @@ -6288,9 +7115,9 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.17.4" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +checksum = "21ebb87a95ea13271332df069020513ab70bdb5637ca42d6e492dc3bbbad48de" dependencies = [ "once_cell", "opentelemetry", @@ -6302,12 +7129,12 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60db860322da191b40952ad9affe65ea23e7dd6a5c442c2c42865810c6ab8e6b" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" dependencies = [ - "ansi_term", "matchers", + "nu-ansi-term", "once_cell", "regex", "sharded-slab", @@ -6318,31 +7145,6 @@ dependencies = [ "tracing-log", ] -[[package]] -name = "trust-dns-proto" -version = "0.21.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d" -dependencies = [ - "async-trait", - "cfg-if", - "data-encoding", - "enum-as-inner 0.4.0", - "futures-channel", - "futures-io", - "futures-util", - "idna 0.2.3", - "ipnet", - "lazy_static", - "log", - "rand 0.8.5", - "smallvec", - "thiserror", - "tinyvec", - "tokio", - "url", -] - [[package]] name = "trust-dns-proto" version = "0.22.0" @@ -6352,7 +7154,7 @@ dependencies = [ "async-trait", "cfg-if", "data-encoding", - "enum-as-inner 0.5.1", + "enum-as-inner", "futures-channel", "futures-io", "futures-util", @@ -6361,6 +7163,7 @@ dependencies = [ "lazy_static", "rand 0.8.5", "smallvec", + "socket2", "thiserror", "tinyvec", "tokio", @@ -6368,26 +7171,6 @@ dependencies = [ "url", ] -[[package]] -name = "trust-dns-resolver" -version = "0.21.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558" -dependencies = [ - "cfg-if", - "futures-util", - "ipconfig", - "lazy_static", - "log", - "lru-cache", - "parking_lot 0.12.1", - "resolv-conf", - "smallvec", - "thiserror", - "tokio", - "trust-dns-proto 0.21.2", -] - [[package]] name = "trust-dns-resolver" version = "0.22.0" @@ -6405,7 +7188,7 @@ dependencies = [ "thiserror", "tokio", "tracing", - "trust-dns-proto 0.22.0", + "trust-dns-proto", ] [[package]] @@ -6420,7 +7203,7 @@ version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0" dependencies = [ - "base64 0.13.0", + "base64 0.13.1", "byteorder", "bytes", "http", @@ -6433,6 +7216,25 @@ dependencies = [ "utf-8", ] +[[package]] +name = "turn" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4712ee30d123ec7ae26d1e1b218395a16c87cdbaf4b3925d170d684af62ea5e8" +dependencies = [ + "async-trait", + "base64 0.13.1", + "futures", + "log", + "md-5", + "rand 0.8.5", + "ring", + "stun", + "thiserror", + "tokio", + "webrtc-util", +] + [[package]] name = "twofish" version = "0.7.1" @@ -6450,9 +7252,9 @@ checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "typescript-type-def" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1781793d51f116db5bb614f42b42aef2f3fdebe8b2f5f7d00254ed6bb14b0c69" +checksum = "947b91d2fe9ec02a6749b8b645541f16f527e2ea88a60b3f774eca26fd657325" dependencies = [ "serde_json", "typescript-type-def-derive", @@ -6460,9 +7262,9 @@ dependencies = [ [[package]] name = "typescript-type-def-derive" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ac1df09a36962cc2b9404e7fd78cc58c060ecb216c24d666de932e16ff6e539" +checksum = "e5c1bfe689e4067733530495b04959b00f05cd95f038bed59af4fc70b3e26240" dependencies = [ "darling 0.13.4", "ident_case", @@ -6480,9 +7282,9 @@ checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" [[package]] name = "uint" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f03af7ccf01dd611cc450a0d10dbc9b745770d096473e2faf0ca6e2d66d1e0" +checksum = "a45526d29728d135c2900b0d30573fe3ee79fceb12ef534c7bb30e810a91b601" dependencies = [ "byteorder", "crunchy", @@ -6498,9 +7300,9 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" +checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" [[package]] name = "unicode-linebreak" @@ -6596,16 +7398,16 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.7", + "getrandom 0.2.8", ] [[package]] name = "uuid" -version = "1.1.2" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f" +checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" dependencies = [ - "getrandom 0.2.7", + "getrandom 0.2.8", "serde", ] @@ -6639,6 +7441,15 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +[[package]] +name = "waitgroup" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1f50000a783467e6c0200f9d10642f4bc424e39efc1b770203e88b488f79292" +dependencies = [ + "atomic-waker", +] + [[package]] name = "waker-fn" version = "1.1.0" @@ -6775,6 +7586,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "webpki" version = "0.22.0" @@ -6787,11 +7608,223 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.22.4" +version = "0.22.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368bfe657969fb01238bb756d351dcade285e0f6fcbd36dcb23359a5169975be" +dependencies = [ + "webpki 0.22.0", +] + +[[package]] +name = "webrtc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3bc9049bdb2cea52f5fd4f6f728184225bdb867ed0dc2410eab6df5bdd67bb" +dependencies = [ + "arc-swap", + "async-trait", + "bytes", + "hex", + "interceptor", + "lazy_static", + "log", + "rand 0.8.5", + "rcgen 0.9.3", + "regex", + "ring", + "rtcp", + "rtp", + "rustls 0.19.1", + "sdp", + "serde", + "serde_json", + "sha2 0.10.6", + "stun", + "thiserror", + "time 0.3.17", + "tokio", + "turn", + "url", + "waitgroup", + "webrtc-data", + "webrtc-dtls", + "webrtc-ice", + "webrtc-mdns", + "webrtc-media", + "webrtc-sctp", + "webrtc-srtp", + "webrtc-util", +] + +[[package]] +name = "webrtc-data" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef36a4d12baa6e842582fe9ec16a57184ba35e1a09308307b67d43ec8883100" +dependencies = [ + "bytes", + "derive_builder", + "log", + "thiserror", + "tokio", + "webrtc-sctp", + "webrtc-util", +] + +[[package]] +name = "webrtc-dtls" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7021987ae0a2ed6c8cd33f68e98e49bb6e74ffe9543310267b48a1bbe3900e5f" +dependencies = [ + "aes 0.6.0", + "aes-gcm 0.8.0", + "async-trait", + "bincode", + "block-modes", + "byteorder", + "ccm", + "curve25519-dalek 3.2.0", + "der-parser 8.1.0", + "elliptic-curve", + "hkdf", + "hmac 0.10.1", + "log", + "oid-registry 0.6.0", + "p256", + "p384", + "rand 0.8.5", + "rand_core 0.6.4", + "rcgen 0.9.3", + "ring", + "rustls 0.19.1", + "sec1", + "serde", + "sha-1 0.9.8", + "sha2 0.9.9", + "signature", + "subtle", + "thiserror", + "tokio", + "webpki 0.21.4", + "webrtc-util", + "x25519-dalek 2.0.0-pre.1", + "x509-parser 0.13.2", +] + +[[package]] +name = "webrtc-ice" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494483fbb2f5492620871fdc78b084aed8807377f6e3fe88b2e49f0a9c9c41d7" +dependencies = [ + "arc-swap", + "async-trait", + "crc", + "log", + "rand 0.8.5", + "serde", + "serde_json", + "stun", + "thiserror", + "tokio", + "turn", + "url", + "uuid 1.2.2", + "waitgroup", + "webrtc-mdns", + "webrtc-util", +] + +[[package]] +name = "webrtc-mdns" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2548ae970afc2ae8e0b0dbfdacd9602d426d4f0ff6cda4602a45c0fd7ceaa82a" +dependencies = [ + "log", + "socket2", + "thiserror", + "tokio", + "webrtc-util", +] + +[[package]] +name = "webrtc-media" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee2a3c157a040324e5049bcbd644ffc9079e6738fa2cfab2bcff64e5cc4c00d7" +dependencies = [ + "byteorder", + "bytes", + "derive_builder", + "displaydoc", + "rand 0.8.5", + "rtp", + "thiserror", + "webrtc-util", +] + +[[package]] +name = "webrtc-sctp" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c760f0d366a6c24a02ed7816e23e691f5d92291f94d15e836006fd11b04daf" +checksum = "0d47adcd9427eb3ede33d5a7f3424038f63c965491beafcc20bc650a2f6679c0" dependencies = [ - "webpki", + "arc-swap", + "async-trait", + "bytes", + "crc", + "log", + "rand 0.8.5", + "thiserror", + "tokio", + "webrtc-util", +] + +[[package]] +name = "webrtc-srtp" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6183edc4c1c6c0175f8812eefdce84dfa0aea9c3ece71c2bf6ddd3c964de3da5" +dependencies = [ + "aead 0.4.3", + "aes 0.7.5", + "aes-gcm 0.9.4", + "async-trait", + "byteorder", + "bytes", + "ctr 0.8.0", + "hmac 0.11.0", + "log", + "rtcp", + "rtp", + "sha-1 0.9.8", + "subtle", + "thiserror", + "tokio", + "webrtc-util", +] + +[[package]] +name = "webrtc-util" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f1db1727772c05cf7a2cfece52c3aca8045ca1e176cd517d323489aa3c6d87" +dependencies = [ + "async-trait", + "bitflags", + "bytes", + "cc", + "ipnet", + "lazy_static", + "libc", + "log", + "nix 0.24.2", + "rand 0.8.5", + "thiserror", + "tokio", + "winapi", ] [[package]] @@ -6883,6 +7916,27 @@ dependencies = [ "windows_x86_64_msvc 0.36.1", ] +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.0", + "windows_i686_gnu 0.42.0", + "windows_i686_msvc 0.42.0", + "windows_x86_64_gnu 0.42.0", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" + [[package]] name = "windows_aarch64_msvc" version = "0.34.0" @@ -6895,6 +7949,12 @@ version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" + [[package]] name = "windows_i686_gnu" version = "0.34.0" @@ -6907,6 +7967,12 @@ version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" +[[package]] +name = "windows_i686_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" + [[package]] name = "windows_i686_msvc" version = "0.34.0" @@ -6919,6 +7985,12 @@ version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" +[[package]] +name = "windows_i686_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" + [[package]] name = "windows_x86_64_gnu" version = "0.34.0" @@ -6931,6 +8003,18 @@ version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" + [[package]] name = "windows_x86_64_msvc" version = "0.34.0" @@ -6944,13 +8028,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" [[package]] -name = "winreg" -version = "0.7.0" +name = "windows_x86_64_msvc" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" -dependencies = [ - "winapi", -] +checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" [[package]] name = "winreg" @@ -6972,6 +8053,54 @@ dependencies = [ "zeroize", ] +[[package]] +name = "x25519-dalek" +version = "2.0.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5da623d8af10a62342bcbbb230e33e58a63255a58012f8653c578e54bab48df" +dependencies = [ + "curve25519-dalek 3.2.0", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "x509-parser" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb9bace5b5589ffead1afb76e43e34cff39cd0f3ce7e170ae0c29e53b88eb1c" +dependencies = [ + "asn1-rs 0.3.1", + "base64 0.13.1", + "data-encoding", + "der-parser 7.0.0", + "lazy_static", + "nom 7.1.1", + "oid-registry 0.4.0", + "ring", + "rusticata-macros", + "thiserror", + "time 0.3.17", +] + +[[package]] +name = "x509-parser" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" +dependencies = [ + "asn1-rs 0.5.1", + "base64 0.13.1", + "data-encoding", + "der-parser 8.1.0", + "lazy_static", + "nom 7.1.1", + "oid-registry 0.6.0", + "rusticata-macros", + "thiserror", + "time 0.3.17", +] + [[package]] name = "xattr" version = "0.2.3" @@ -7004,6 +8133,15 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "yasna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346d34a236c9d3e5f3b9b74563f238f955bbd05fa0b8b4efa53c130c43982f4c" +dependencies = [ + "time 0.3.17", +] + [[package]] name = "yerpc" version = "0.3.1" @@ -7033,7 +8171,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e70f944ca6789bc55ddc86839478f6d49c9d2a66e130f69fd1f8d171b3108990" dependencies = [ "convert_case", - "darling 0.14.1", + "darling 0.14.2", "proc-macro2", "quote", "syn", @@ -7062,9 +8200,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.1+zstd.1.5.2" +version = "2.0.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b" +checksum = "24faa29d97c8ddca9b37b680e3bd2d5439d864a9cac3a0640d086b71c908bb83" dependencies = [ "cc", "libc", diff --git a/Cargo.toml b/Cargo.toml index e160d0adfb..a58956c5ce 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ version = "1.101.0" authors = ["Delta Chat Developers (ML) "] edition = "2021" license = "MPL-2.0" -rust-version = "1.57" +rust-version = "1.63" [profile.dev] debug = 0 @@ -83,8 +83,8 @@ futures-lite = "1.12.0" tokio-stream = { version = "0.1.11", features = ["fs"] } reqwest = { version = "0.11.12", features = ["json"] } async_zip = { version = "0.0.9", default-features = false, features = ["deflate"] } -iroh-share = { git = "https://github.com/n0-computer/iroh", branch = "main" } -iroh-resolver = { git = "https://github.com/n0-computer/iroh", branch = "main", default-features = false } +iroh-share = { git = "https://github.com/n0-computer/iroh", tag = "v0.1.1" } +iroh-resolver = { git = "https://github.com/n0-computer/iroh", tag = "v0.1.1", default-features = false } tempfile = "3" multibase = "0.9" port_check = "0.1.5" @@ -155,4 +155,4 @@ vendored = [ nightly = ["pgp/nightly"] [patch.crates-io] -libp2p = { git = "https://github.com/dignifiedquire/rust-libp2p", branch = "iroh" } +libp2p = { git = "https://github.com/dignifiedquire/rust-libp2p", branch = "iroh-0-50-1" } diff --git a/deltachat-ffi/Cargo.toml b/deltachat-ffi/Cargo.toml index b9934d2aeb..f949abf1ed 100644 --- a/deltachat-ffi/Cargo.toml +++ b/deltachat-ffi/Cargo.toml @@ -26,7 +26,7 @@ anyhow = "1" thiserror = "1" rand = "0.7" once_cell = "1.16.0" -iroh-share = { git = "https://github.com/n0-computer/iroh", branch = "main" } +iroh-share = { git = "https://github.com/n0-computer/iroh", tag = "v0.1.1" } multibase = "0.9" [features] diff --git a/rust-toolchain b/rust-toolchain index 91951fd8ad..af92bdd9f5 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -1.61.0 +1.63.0 diff --git a/scripts/coredeps/install-rust.sh b/scripts/coredeps/install-rust.sh index b2063da8c0..2b28637a04 100755 --- a/scripts/coredeps/install-rust.sh +++ b/scripts/coredeps/install-rust.sh @@ -7,7 +7,7 @@ set -euo pipefail # # Avoid using rustup here as it depends on reading /proc/self/exe and # has problems running under QEMU. -RUST_VERSION=1.61.0 +RUST_VERSION=1.63.0 ARCH="$(uname -m)" test -f "/lib/libc.musl-$ARCH.so.1" && LIBC=musl || LIBC=gnu diff --git a/src/imex.rs b/src/imex.rs index 6e4c7dedce..8beca9a67e 100644 --- a/src/imex.rs +++ b/src/imex.rs @@ -661,7 +661,8 @@ async fn import_backup( /// it can be renamed to dest_path. This guarantees that the backup is complete. fn get_next_backup_path(folder: &Path, backup_time: i64) -> Result<(PathBuf, PathBuf, PathBuf)> { let folder = PathBuf::from(folder); - let stem = chrono::NaiveDateTime::from_timestamp(backup_time, 0) + let stem = chrono::NaiveDateTime::from_timestamp_opt(backup_time, 0) + .unwrap() // Don't change this file name format, in `dc_imex_has_backup` we use string comparison to determine which backup is newer: .format("delta-chat-backup-%Y-%m-%d") .to_string(); diff --git a/src/location.rs b/src/location.rs index c3c8e59ac6..f99838d9e0 100644 --- a/src/location.rs +++ b/src/location.rs @@ -476,7 +476,8 @@ pub async fn get_kml(context: &Context, chat_id: ChatId) -> Result<(String, u32) fn get_kml_timestamp(utc: i64) -> String { // Returns a string formatted as YYYY-MM-DDTHH:MM:SSZ. The trailing `Z` indicates UTC. - chrono::NaiveDateTime::from_timestamp(utc, 0) + chrono::NaiveDateTime::from_timestamp_opt(utc, 0) + .unwrap() .format("%Y-%m-%dT%H:%M:%SZ") .to_string() } diff --git a/src/mimefactory.rs b/src/mimefactory.rs index 37900cbb9f..a53739d04a 100644 --- a/src/mimefactory.rs +++ b/src/mimefactory.rs @@ -531,7 +531,9 @@ impl<'a> MimeFactory<'a> { .push(Header::new("Subject".into(), encoded_subject)); let date = chrono::Utc - .from_local_datetime(&chrono::NaiveDateTime::from_timestamp(self.timestamp, 0)) + .from_local_datetime( + &chrono::NaiveDateTime::from_timestamp_opt(self.timestamp, 0).unwrap(), + ) .unwrap() .to_rfc2822(); headers.unprotected.push(Header::new("Date".into(), date)); @@ -1338,14 +1340,16 @@ async fn build_body_file( // etc. let filename_to_send: String = match msg.viewtype { Viewtype::Voice => chrono::Utc - .timestamp(msg.timestamp_sort, 0) + .timestamp_opt(msg.timestamp_sort, 0) + .unwrap() .format(&format!("voice-message_%Y-%m-%d_%H-%M-%S.{}", &suffix)) .to_string(), Viewtype::Image | Viewtype::Gif => format!( "{}.{}", if base_name.is_empty() { chrono::Utc - .timestamp(msg.timestamp_sort, 0) + .timestamp_opt(msg.timestamp_sort, 0) + .unwrap() .format("image_%Y-%m-%d_%H-%M-%S") .to_string() } else { @@ -1356,7 +1360,8 @@ async fn build_body_file( Viewtype::Video => format!( "video_{}.{}", chrono::Utc - .timestamp(msg.timestamp_sort, 0) + .timestamp_opt(msg.timestamp_sort, 0) + .unwrap() .format("%Y-%m-%d_%H-%M-%S"), &suffix ), diff --git a/src/provider.rs b/src/provider.rs index b8c0d70338..6df8d70be0 100644 --- a/src/provider.rs +++ b/src/provider.rs @@ -184,7 +184,9 @@ pub fn get_provider_by_id(id: &str) -> Option<&'static Provider> { // returns update timestamp in seconds, UTC, compatible for comparison with time() and database times pub fn get_provider_update_timestamp() -> i64 { - NaiveDateTime::new(*PROVIDER_UPDATED, NaiveTime::from_hms(0, 0, 0)).timestamp_millis() / 1_000 + NaiveDateTime::new(*PROVIDER_UPDATED, NaiveTime::from_hms_opt(0, 0, 0).unwrap()) + .timestamp_millis() + / 1_000 } #[cfg(test)] @@ -260,8 +262,8 @@ mod tests { #[test] fn test_get_provider_update_timestamp() { let timestamp_past = NaiveDateTime::new( - NaiveDate::from_ymd(2020, 9, 9), - NaiveTime::from_hms(0, 0, 0), + NaiveDate::from_ymd_opt(2020, 9, 9).unwrap(), + NaiveTime::from_hms_opt(0, 0, 0).unwrap(), ) .timestamp_millis() / 1_000; diff --git a/src/provider/data.rs b/src/provider/data.rs index 87e367fb5d..3b8b4b6424 100644 --- a/src/provider/data.rs +++ b/src/provider/data.rs @@ -1891,4 +1891,4 @@ pub(crate) static PROVIDER_IDS: Lazy> = }); pub static PROVIDER_UPDATED: Lazy = - Lazy::new(|| chrono::NaiveDate::from_ymd(2022, 7, 5)); + Lazy::new(|| chrono::NaiveDate::from_ymd_opt(2022, 7, 5).unwrap()); diff --git a/src/tools.rs b/src/tools.rs index a9c0a47eae..ee05e86eae 100644 --- a/src/tools.rs +++ b/src/tools.rs @@ -113,7 +113,7 @@ pub(crate) fn truncate_by_lines( ******************************************************************************/ pub fn timestamp_to_str(wanted: i64) -> String { - let ts = Local.timestamp(wanted, 0); + let ts = Local.timestamp_opt(wanted, 0).unwrap(); ts.format("%Y.%m.%d %H:%M:%S").to_string() } @@ -207,7 +207,8 @@ async fn maybe_warn_on_bad_time(context: &Context, now: i64, known_past_timestam stock_str::bad_time_msg_body( context, Local - .timestamp(now, 0) + .timestamp_opt(now, 0) + .unwrap() .format("%Y-%m-%d %H:%M:%S") .to_string(), ) @@ -218,7 +219,9 @@ async fn maybe_warn_on_bad_time(context: &Context, now: i64, known_past_timestam Some( format!( "bad-time-warning-{}", - chrono::NaiveDateTime::from_timestamp(now, 0).format("%Y-%m-%d") // repeat every day + chrono::NaiveDateTime::from_timestamp_opt(now, 0) + .unwrap() + .format("%Y-%m-%d") // repeat every day ) .as_str(), ), @@ -241,7 +244,9 @@ async fn maybe_warn_on_outdated(context: &Context, now: i64, approx_compile_time Some( format!( "outdated-warning-{}", - chrono::NaiveDateTime::from_timestamp(now, 0).format("%Y-%m") // repeat every month + chrono::NaiveDateTime::from_timestamp_opt(now, 0) + .unwrap() + .format("%Y-%m") // repeat every month ) .as_str(), ), @@ -648,9 +653,9 @@ pub(crate) fn parse_receive_header(header: &str) -> String { if let Ok(date) = dateparse(&header) { // In tests, use the UTC timezone so that the test is reproducible #[cfg(test)] - let date_obj = chrono::Utc.timestamp(date, 0); + let date_obj = chrono::Utc.timestamp_opt(date, 0).unwrap(); #[cfg(not(test))] - let date_obj = Local.timestamp(date, 0); + let date_obj = Local.timestamp_opt(date, 0).unwrap(); hop_info += &format!("Date: {}", date_obj.to_rfc2822()); }; @@ -1153,8 +1158,8 @@ DKIM Results: Passed=true, Works=true, Allow_Keychange=true"; let timestamp_now = time(); let timestamp_future = timestamp_now + 60 * 60 * 24 * 7; let timestamp_past = NaiveDateTime::new( - NaiveDate::from_ymd(2020, 9, 1), - NaiveTime::from_hms(0, 0, 0), + NaiveDate::from_ymd_opt(2020, 9, 1).unwrap(), + NaiveTime::from_hms_opt(0, 0, 0).unwrap(), ) .timestamp_millis() / 1_000; From 20564529a769a45c7a695bfd19b91ac5355ecb43 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Wed, 23 Nov 2022 16:54:02 +0100 Subject: [PATCH 27/28] update github workflows --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6cecd2eb2a..2ad8c0f864 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -87,19 +87,19 @@ jobs: include: # Currently used Rust version, same as in `rust-toolchain` file. - os: ubuntu-latest - rust: 1.61.0 + rust: 1.63.0 python: 3.9 - os: windows-latest - rust: 1.61.0 + rust: 1.63.0 python: false # Python bindings compilation on Windows is not supported. - # Minimum Supported Rust Version = 1.57.0 + # Minimum Supported Rust Version = 1.63.0 # # Minimum Supported Python Version = 3.7 # This is the minimum version for which manylinux Python wheels are # built. - os: ubuntu-latest - rust: 1.57.0 + rust: 1.63.0 python: 3.7 runs-on: ${{ matrix.os }} steps: From 94b50f6742cb45f3892d36264e5dca9a7bc45b3c Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Fri, 2 Dec 2022 16:56:52 +0100 Subject: [PATCH 28/28] update to released iroh version --- Cargo.lock | 369 +++++++++++++++++++-------------------- Cargo.toml | 7 +- deltachat-ffi/Cargo.toml | 2 +- src/imex.rs | 19 +- 4 files changed, 196 insertions(+), 201 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b4044597e5..8524290766 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -867,16 +867,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" -[[package]] -name = "cached" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af4dfac631a8e77b2f327f7852bb6172771f5279c4512efe79fad6067b37be3d" -dependencies = [ - "hashbrown 0.11.2", - "once_cell", -] - [[package]] name = "cast" version = "0.3.0" @@ -989,13 +979,13 @@ dependencies = [ [[package]] name = "cid" -version = "0.8.6" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ed9c8b2d17acb8110c46f1da5bf4a696d745e1474a16db0cd2b49cd0249bf2" +checksum = "b9b68e3193982cd54187d71afdb2a271ad4cf8af157858e9cb911b91321de143" dependencies = [ "core2", "multibase", - "multihash", + "multihash 0.17.0", "serde", "serde_bytes", "unsigned-varint", @@ -1099,15 +1089,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "cmake" -version = "0.1.49" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db34956e100b30725f2eb215f90d4871051239535632f84fea3bc92722c66b7c" -dependencies = [ - "cc", -] - [[package]] name = "color_quant" version = "1.1.0" @@ -2979,8 +2960,9 @@ checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" [[package]] name = "iroh-bitswap" -version = "0.1.1" -source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "932c7274911139f56767a96c9deb92e4da98ef92859a2ff7c96d1a2dca5f6084" dependencies = [ "ahash 0.8.2", "anyhow", @@ -2997,12 +2979,12 @@ dependencies = [ "iroh-util", "keyed_priority_queue", "libp2p", - "multihash", + "multihash 0.17.0", "names", "num_enum", "once_cell", - "prost 0.11.3", - "prost-build 0.11.3", + "prost", + "prost-build", "rand 0.8.5", "smallvec", "thiserror", @@ -3016,8 +2998,9 @@ dependencies = [ [[package]] name = "iroh-metrics" -version = "0.1.1" -source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48b830a4c9474e3a95e60a5f99ac7b7118bfaca5d3a002ad692ae2d34db0ccc6" dependencies = [ "async-trait", "config", @@ -3039,8 +3022,9 @@ dependencies = [ [[package]] name = "iroh-p2p" -version = "0.1.1" -source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e107e1c0928620d9e1d1d98d88570b9b01297292db6b68dd919a6ccc37ee48" dependencies = [ "ahash 0.8.2", "anyhow", @@ -3078,8 +3062,9 @@ dependencies = [ [[package]] name = "iroh-resolver" -version = "0.1.1" -source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d50f17fb5e372f709cfc3dac1da91b84168525f600e1cf4c6fd586b16424b2cd" dependencies = [ "anyhow", "async-channel", @@ -3090,17 +3075,18 @@ dependencies = [ "bytes", "cid", "fastmurmur3", + "fnv", "futures", "iroh-metrics", "iroh-rpc-client", "iroh-util", "libipld", "libp2p", - "multihash", + "multihash 0.16.3", "num_enum", "once_cell", - "prost 0.11.3", - "prost-build 0.11.3", + "prost", + "prost-build", "rand 0.8.5", "reqwest", "serde", @@ -3114,8 +3100,9 @@ dependencies = [ [[package]] name = "iroh-rpc-client" -version = "0.1.1" -source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d3ba36e6831ec47adfe78f50ddfa667756376208c4fe77fe8a27deb8a81ed08" dependencies = [ "anyhow", "async-stream", @@ -3129,7 +3116,7 @@ dependencies = [ "iroh-util", "libp2p", "paste", - "prost 0.11.3", + "prost", "serde", "tokio", "toml", @@ -3138,25 +3125,27 @@ dependencies = [ [[package]] name = "iroh-rpc-types" -version = "0.1.1" -source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff3acdaf9acc412490e66610ef859012eea5d72279535493fbace3e4c13e2b74" dependencies = [ "anyhow", "async-trait", "futures", "iroh-metrics", "paste", - "prost 0.11.3", - "prost-build 0.11.3", - "prost-types 0.11.2", + "prost", + "prost-build", + "prost-types", "serde_with", "tokio", ] [[package]] name = "iroh-share" -version = "0.1.1" -source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d04ef81e2c70e2d083c10b59cfd9ab771b18a990f2b11b6d41a6a82cacd2602f" dependencies = [ "anyhow", "async-trait", @@ -3185,8 +3174,9 @@ dependencies = [ [[package]] name = "iroh-store" -version = "0.1.1" -source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf2927efdf7c2d521f582e983dc7c47e7a54e9c160783475f3ab8f4bb810edc5" dependencies = [ "ahash 0.8.2", "anyhow", @@ -3203,7 +3193,7 @@ dependencies = [ "iroh-rpc-client", "iroh-rpc-types", "iroh-util", - "multihash", + "multihash 0.17.0", "names", "opentelemetry", "rkyv", @@ -3218,8 +3208,9 @@ dependencies = [ [[package]] name = "iroh-util" -version = "0.1.1" -source = "git+https://github.com/n0-computer/iroh?tag=v0.1.1#9c3faed7322207b95057a9734ab0ce2d7a16e193" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3fa64e0d5e312eb3947213a798e990792f3e61022e77b47dd2b217860c10ff7" dependencies = [ "anyhow", "cid", @@ -3376,12 +3367,10 @@ checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" [[package]] name = "libipld" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9c3aa309c260aa2f174bac968901eddc546e9d85950c28eae6a7bec402f926" +checksum = "a20e38e0ad9a2fd600476691fa0780421931a198279985e398a3a0851903e1b2" dependencies = [ - "async-trait", - "cached", "fnv", "libipld-cbor", "libipld-cbor-derive", @@ -3390,16 +3379,15 @@ dependencies = [ "libipld-macro", "libipld-pb", "log", - "multihash", - "parking_lot 0.12.1", + "multihash 0.17.0", "thiserror", ] [[package]] name = "libipld-cbor" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd1ab68c9d26f20c7d0dfea6eecbae8c00359875210001b33ca27d4a02f3d09" +checksum = "4b75370e27e0745910a9991c83f365cdae58027acf0502aa7987ac538a8a4744" dependencies = [ "byteorder", "libipld-core", @@ -3408,9 +3396,9 @@ dependencies = [ [[package]] name = "libipld-cbor-derive" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69ec2f49393a1347a2d95ebcb248ff75d0d47235919b678036c010a8cd927375" +checksum = "4515686b6bffd663a1fbdd87408ced5b612751910a9e309042e9efef9dbdb324" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -3421,48 +3409,47 @@ dependencies = [ [[package]] name = "libipld-core" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d44790246ec6b7314cba745992c23d479d018073e66d49ae40ae1b64e5dd8eb5" +checksum = "b7a704ba3b25dee9e7a2361fae2c7c19defae2a92e69ae96ffb203996705cd7c" dependencies = [ "anyhow", "cid", "core2", "multibase", - "multihash", + "multihash 0.17.0", "thiserror", ] [[package]] name = "libipld-json" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18aa481a87f084d98473dd9ece253a9569c762b75f6bbba8217d54e48c9d63b3" +checksum = "fc549d7c70f9a401031fcb6d3bf7eccfe91bcad938f7485f71ee8ba9f79c1e79" dependencies = [ "libipld-core", - "multihash", + "multihash 0.17.0", "serde", "serde_json", ] [[package]] name = "libipld-macro" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852c011562ae5059b67c3a917f9f5945af5a68df8e39ede4444fff33274d25e2" +checksum = "d4c7ccd89e54f2796cf3f99aabeea7a7751d418df504926544f28348d3c890c7" dependencies = [ "libipld-core", ] [[package]] name = "libipld-pb" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c003be513496578115256a1b4ac7b80d4ece2462c9869dfb736fd30d8bb1d1c0" +checksum = "dd84ee8b7e283c81b28ecf46e07c31a524a2cd35ec4e87833733a18218c17ccb" dependencies = [ "libipld-core", - "prost 0.10.4", - "prost-build 0.10.4", + "prost", "thiserror", ] @@ -3485,7 +3472,8 @@ checksum = "292a948cd991e376cf75541fe5b97a1081d713c618b4f1b9500f8844e49eb565" [[package]] name = "libp2p" version = "0.50.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e0a0d2f693675f49ded13c5d510c48b78069e23cbd9108d7ccd59f6dc568819" dependencies = [ "bytes", "futures", @@ -3521,7 +3509,8 @@ dependencies = [ [[package]] name = "libp2p-autonat" version = "0.9.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "544f2732f4bfaea2fe99934e45e52be282e94e2ebd57dffb81ea362d0aea0ced" dependencies = [ "async-trait", "futures", @@ -3531,15 +3520,16 @@ dependencies = [ "libp2p-request-response", "libp2p-swarm", "log", - "prost 0.11.3", - "prost-build 0.11.3", + "prost", + "prost-build", "rand 0.8.5", ] [[package]] name = "libp2p-core" version = "0.38.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6a8fcd392ff67af6cc3f03b1426c41f7f26b6b9aff2dc632c1c56dd649e571f" dependencies = [ "asn1_der", "bs58", @@ -3551,16 +3541,17 @@ dependencies = [ "instant", "log", "multiaddr", - "multihash", + "multihash 0.16.3", "multistream-select", "once_cell", "parking_lot 0.12.1", "pin-project", - "prost 0.11.3", - "prost-build 0.11.3", + "prost", + "prost-build", "rand 0.8.5", "ring", "rw-stream-sink", + "sec1", "serde", "sha2 0.10.6", "smallvec", @@ -3573,7 +3564,8 @@ dependencies = [ [[package]] name = "libp2p-dcutr" version = "0.8.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b047ae2856cb46adaed6344634d4bb93b9a917fc300358cd33284cdb4c8132c6" dependencies = [ "asynchronous-codec", "bytes", @@ -3584,8 +3576,8 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "prost 0.11.3", - "prost-build 0.11.3", + "prost", + "prost-build", "prost-codec", "thiserror", "void", @@ -3594,7 +3586,8 @@ dependencies = [ [[package]] name = "libp2p-dns" version = "0.38.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e42a271c1b49f789b92f7fc87749fa79ce5c7bdc88cbdfacb818a4bca47fec5" dependencies = [ "futures", "libp2p-core", @@ -3607,7 +3600,8 @@ dependencies = [ [[package]] name = "libp2p-gossipsub" version = "0.43.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a173171c71c29bb156f98886c7c4824596de3903dadf01e2e79d2ccdcf38cd9f" dependencies = [ "asynchronous-codec", "base64 0.13.1", @@ -3621,8 +3615,8 @@ dependencies = [ "libp2p-swarm", "log", "prometheus-client", - "prost 0.11.3", - "prost-build 0.11.3", + "prost", + "prost-build", "prost-codec", "rand 0.8.5", "regex", @@ -3637,7 +3631,8 @@ dependencies = [ [[package]] name = "libp2p-identify" version = "0.41.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "647d6a99f8d5b7366ee6bcc608ec186e2fb58b497cf914c8409b803bd0f594a2" dependencies = [ "asynchronous-codec", "futures", @@ -3646,8 +3641,8 @@ dependencies = [ "libp2p-swarm", "log", "lru", - "prost 0.11.3", - "prost-build 0.11.3", + "prost", + "prost-build", "prost-codec", "smallvec", "thiserror", @@ -3657,7 +3652,8 @@ dependencies = [ [[package]] name = "libp2p-kad" version = "0.42.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ee545eedf4f88502b2a4a2323405c3225d212d643212b0615856ca227fb9c3" dependencies = [ "arrayvec", "asynchronous-codec", @@ -3670,8 +3666,8 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "prost 0.11.3", - "prost-build 0.11.3", + "prost", + "prost-build", "rand 0.8.5", "serde", "sha2 0.10.6", @@ -3685,7 +3681,8 @@ dependencies = [ [[package]] name = "libp2p-mdns" version = "0.42.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04f378264aade9872d6ccd315c0accc18be3a35d15fc1b9c36e5b6f983b62b5b" dependencies = [ "data-encoding", "futures", @@ -3704,7 +3701,8 @@ dependencies = [ [[package]] name = "libp2p-metrics" version = "0.11.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ad8a64f29da86005c86a4d2728b8a0719e9b192f4092b609fd8790acb9dec55" dependencies = [ "libp2p-core", "libp2p-dcutr", @@ -3720,7 +3718,8 @@ dependencies = [ [[package]] name = "libp2p-mplex" version = "0.38.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03805b44107aa013e7cbbfa5627b31c36cbedfdfb00603c0311998882bc4bace" dependencies = [ "asynchronous-codec", "bytes", @@ -3737,7 +3736,8 @@ dependencies = [ [[package]] name = "libp2p-noise" version = "0.41.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a978cb57efe82e892ec6f348a536bfbd9fee677adbe5689d7a93ad3a9bffbf2e" dependencies = [ "bytes", "curve25519-dalek 3.2.0", @@ -3745,12 +3745,13 @@ dependencies = [ "libp2p-core", "log", "once_cell", - "prost 0.11.3", - "prost-build 0.11.3", + "prost", + "prost-build", "rand 0.8.5", "sha2 0.10.6", "snow", "static_assertions", + "thiserror", "x25519-dalek 1.1.1", "zeroize", ] @@ -3758,7 +3759,8 @@ dependencies = [ [[package]] name = "libp2p-ping" version = "0.41.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "929fcace45a112536e22b3dcfd4db538723ef9c3cb79f672b98be2cc8e25f37f" dependencies = [ "futures", "futures-timer", @@ -3773,7 +3775,8 @@ dependencies = [ [[package]] name = "libp2p-quic" version = "0.7.0-alpha" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e7c867e95c8130667b24409d236d37598270e6da69b3baf54213ba31ffca59" dependencies = [ "bytes", "futures", @@ -3793,7 +3796,8 @@ dependencies = [ [[package]] name = "libp2p-relay" version = "0.14.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dffb67f6b6cce19cfeab9b10b77fbff756a66a1c143cba7deb8c3f964fadcb59" dependencies = [ "asynchronous-codec", "bytes", @@ -3805,8 +3809,8 @@ dependencies = [ "libp2p-swarm", "log", "pin-project", - "prost 0.11.3", - "prost-build 0.11.3", + "prost", + "prost-build", "prost-codec", "rand 0.8.5", "smallvec", @@ -3818,7 +3822,8 @@ dependencies = [ [[package]] name = "libp2p-request-response" version = "0.23.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3236168796727bfcf4927f766393415361e2c644b08bedb6a6b13d957c9a4884" dependencies = [ "async-trait", "bytes", @@ -3834,8 +3839,9 @@ dependencies = [ [[package]] name = "libp2p-swarm" -version = "0.41.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +version = "0.41.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a35472fe3276b3855c00f1c032ea8413615e030256429ad5349cdf67c6e1a0" dependencies = [ "either", "fnv", @@ -3855,8 +3861,9 @@ dependencies = [ [[package]] name = "libp2p-swarm-derive" -version = "0.30.2" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d527d5827582abd44a6d80c07ff8b50b4ee238a8979e05998474179e79dc400" dependencies = [ "heck", "quote", @@ -3866,7 +3873,8 @@ dependencies = [ [[package]] name = "libp2p-tcp" version = "0.38.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4b257baf6df8f2df39678b86c578961d48cc8b68642a12f0f763f56c8e5858d" dependencies = [ "futures", "futures-timer", @@ -3881,7 +3889,8 @@ dependencies = [ [[package]] name = "libp2p-tls" version = "0.1.0-alpha" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7905ce0d040576634e8a3229a7587cc8beab83f79db6023800f1792895defa8" dependencies = [ "futures", "futures-rustls", @@ -3897,8 +3906,9 @@ dependencies = [ [[package]] name = "libp2p-webrtc" -version = "0.1.0-alpha" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +version = "0.4.0-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb6cd86dd68cba72308ea05de1cebf3ba0ae6e187c40548167955d4e3970f6a" dependencies = [ "async-trait", "asynchronous-codec", @@ -3910,9 +3920,9 @@ dependencies = [ "libp2p-core", "libp2p-noise", "log", - "multihash", - "prost 0.11.3", - "prost-build 0.11.3", + "multihash 0.16.3", + "prost", + "prost-build", "prost-codec", "rand 0.8.5", "rcgen 0.9.3", @@ -3928,7 +3938,8 @@ dependencies = [ [[package]] name = "libp2p-websocket" version = "0.40.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d705506030d5c0aaf2882437c70dab437605f21c5f9811978f694e6917a3b54" dependencies = [ "either", "futures", @@ -3946,7 +3957,8 @@ dependencies = [ [[package]] name = "libp2p-yamux" version = "0.42.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f63594a0aa818642d9d4915c791945053877253f08a3626f13416b5cd928a29" dependencies = [ "futures", "libp2p-core", @@ -4154,7 +4166,7 @@ dependencies = [ "byteorder", "data-encoding", "multibase", - "multihash", + "multihash 0.16.3", "percent-encoding", "serde", "static_assertions", @@ -4192,6 +4204,25 @@ dependencies = [ "unsigned-varint", ] +[[package]] +name = "multihash" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835d6ff01d610179fbce3de1694d007e500bf33a7f29689838941d6bf783ae40" +dependencies = [ + "blake2b_simd", + "blake2s_simd", + "blake3", + "core2", + "digest 0.10.5", + "multihash-derive", + "serde", + "serde-big-array", + "sha2 0.10.6", + "sha3", + "unsigned-varint", +] + [[package]] name = "multihash-derive" version = "0.8.1" @@ -4215,7 +4246,8 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" [[package]] name = "multistream-select" version = "0.12.1" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8552ab875c1313b97b8d20cb857b9fd63e2d1d6a0a1b53ce9821e575405f27a" dependencies = [ "bytes", "futures", @@ -4637,7 +4669,7 @@ dependencies = [ "http", "opentelemetry", "opentelemetry-proto", - "prost 0.11.3", + "prost", "thiserror", "tokio", "tonic", @@ -4652,7 +4684,7 @@ dependencies = [ "futures", "futures-util", "opentelemetry", - "prost 0.11.3", + "prost", "tonic", "tonic-build", ] @@ -5241,16 +5273,6 @@ dependencies = [ "regex-syntax", ] -[[package]] -name = "prost" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71adf41db68aa0daaefc69bb30bcd68ded9b9abaad5d1fbb6304c4fb390e083e" -dependencies = [ - "bytes", - "prost-derive 0.10.1", -] - [[package]] name = "prost" version = "0.11.3" @@ -5258,29 +5280,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0b18e655c21ff5ac2084a5ad0611e827b3f92badf79f4910b5a5c58f4d87ff0" dependencies = [ "bytes", - "prost-derive 0.11.2", -] - -[[package]] -name = "prost-build" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae5a4388762d5815a9fc0dea33c56b021cdc8dde0c55e0c9ca57197254b0cab" -dependencies = [ - "bytes", - "cfg-if", - "cmake", - "heck", - "itertools", - "lazy_static", - "log", - "multimap", - "petgraph", - "prost 0.10.4", - "prost-types 0.10.1", - "regex", - "tempfile", - "which", + "prost-derive", ] [[package]] @@ -5297,8 +5297,8 @@ dependencies = [ "multimap", "petgraph", "prettyplease", - "prost 0.11.3", - "prost-types 0.11.2", + "prost", + "prost-types", "regex", "syn", "tempfile", @@ -5308,28 +5308,16 @@ dependencies = [ [[package]] name = "prost-codec" version = "0.3.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc34979ff898b6e141106178981ce2596c387ea6e62533facfc61a37fc879c0" dependencies = [ "asynchronous-codec", "bytes", - "prost 0.11.3", + "prost", "thiserror", "unsigned-varint", ] -[[package]] -name = "prost-derive" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7cc" -dependencies = [ - "anyhow", - "itertools", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "prost-derive" version = "0.11.2" @@ -5343,16 +5331,6 @@ dependencies = [ "syn", ] -[[package]] -name = "prost-types" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d0a014229361011dc8e69c8a1ec6c2e8d0f2af7c91e3ea3f5b2170298461e68" -dependencies = [ - "bytes", - "prost 0.10.4", -] - [[package]] name = "prost-types" version = "0.11.2" @@ -5360,7 +5338,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "747761bc3dc48f9a34553bf65605cf6cb6288ba219f3450b4275dbd81539551a" dependencies = [ "bytes", - "prost 0.11.3", + "prost", ] [[package]] @@ -6036,7 +6014,8 @@ dependencies = [ [[package]] name = "rw-stream-sink" version = "0.3.0" -source = "git+https://github.com/dignifiedquire/rust-libp2p?branch=iroh-0-50-1#38f59b2d5c02b5695e61796e3a3e3e63bf0f3f66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04" dependencies = [ "futures", "pin-project", @@ -6948,8 +6927,8 @@ dependencies = [ "hyper-timeout", "percent-encoding", "pin-project", - "prost 0.11.3", - "prost-derive 0.11.2", + "prost", + "prost-derive", "tokio", "tokio-stream", "tokio-util", @@ -6968,7 +6947,7 @@ checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4" dependencies = [ "prettyplease", "proc-macro2", - "prost-build 0.11.3", + "prost-build", "quote", "syn", ] @@ -7118,23 +7097,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26" dependencies = [ "async-trait", + "bytes", "cfg-if", "data-encoding", "enum-as-inner", "futures-channel", "futures-io", "futures-util", + "h2", + "http", "idna 0.2.3", "ipnet", "lazy_static", "rand 0.8.5", + "rustls 0.20.7", + "rustls-pemfile", + "serde", "smallvec", "socket2", "thiserror", "tinyvec", "tokio", + "tokio-rustls", "tracing", "url", + "webpki 0.22.0", + "webpki-roots", ] [[package]] @@ -7150,11 +7138,15 @@ dependencies = [ "lru-cache", "parking_lot 0.12.1", "resolv-conf", + "rustls 0.20.7", + "serde", "smallvec", "thiserror", "tokio", + "tokio-rustls", "tracing", "trust-dns-proto", + "webpki-roots", ] [[package]] @@ -7344,6 +7336,7 @@ dependencies = [ "form_urlencoded", "idna 0.3.0", "percent-encoding", + "serde", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 10b30919a9..20270737a5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -83,8 +83,8 @@ futures-lite = "1.12.0" tokio-stream = { version = "0.1.11", features = ["fs"] } reqwest = { version = "0.11.13", features = ["json"] } async_zip = { version = "0.0.9", default-features = false, features = ["deflate"] } -iroh-share = { git = "https://github.com/n0-computer/iroh", tag = "v0.1.1" } -iroh-resolver = { git = "https://github.com/n0-computer/iroh", tag = "v0.1.1", default-features = false } +iroh-share = { version = "0.1.3" } +iroh-resolver = { version = "0.1.3", default-features = false } tempfile = "3" multibase = "0.9" port_check = "0.1.5" @@ -153,6 +153,3 @@ vendored = [ "reqwest/native-tls-vendored" ] nightly = ["pgp/nightly"] - -[patch.crates-io] -libp2p = { git = "https://github.com/dignifiedquire/rust-libp2p", branch = "iroh-0-50-1" } diff --git a/deltachat-ffi/Cargo.toml b/deltachat-ffi/Cargo.toml index 6347abaa4b..d761e7fea6 100644 --- a/deltachat-ffi/Cargo.toml +++ b/deltachat-ffi/Cargo.toml @@ -26,7 +26,7 @@ anyhow = "1" thiserror = "1" rand = "0.7" once_cell = "1.16.0" -iroh-share = { git = "https://github.com/n0-computer/iroh", tag = "v0.1.1" } +iroh-share = { version = "0.1.3" } multibase = "0.9" [features] diff --git a/src/imex.rs b/src/imex.rs index 8beca9a67e..fd6bd546fc 100644 --- a/src/imex.rs +++ b/src/imex.rs @@ -870,11 +870,14 @@ async fn export_backup_iroh_inner( ); { - let mut file = FileBuilder::new(); let db_content = tokio::fs::File::open(temp_db_path).await?; - file.name(DBFILE_BACKUP_NAME).content_reader(db_content); + let file = FileBuilder::new() + .name(DBFILE_BACKUP_NAME) + .content_reader(db_content) + .build() + .await?; - dir_builder.add_file(file.build().await?); + dir_builder.add_file(file); } let read_dir: Vec<_> = @@ -898,10 +901,12 @@ async fn export_backup_iroh_inner( let file_content = File::open(entry.path()).await?; { - let mut file = FileBuilder::new(); - file.name(name.to_string_lossy().to_owned()); - file.content_reader(file_content); - dir_builder.add_file(file.build().await?); + let file = FileBuilder::new() + .name(name.to_string_lossy().to_owned()) + .content_reader(file_content) + .build() + .await?; + dir_builder.add_file(file); } written_files += 1;