Move to rust-tls

This commit is contained in:
Joshua Coles 2024-07-29 08:13:53 +01:00
parent d78d82f8fa
commit 166d0720dd
5 changed files with 136 additions and 14 deletions

127
Cargo.lock generated
View File

@ -927,11 +927,12 @@ dependencies = [
"http",
"hyper",
"hyper-util",
"rustls",
"rustls 0.23.11",
"rustls-pki-types",
"tokio",
"tokio-rustls",
"tower-service",
"webpki-roots 0.26.3",
]
[[package]]
@ -1534,6 +1535,52 @@ dependencies = [
"winapi",
]
[[package]]
name = "quinn"
version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad"
dependencies = [
"bytes",
"pin-project-lite",
"quinn-proto",
"quinn-udp",
"rustc-hash",
"rustls 0.23.11",
"thiserror",
"tokio",
"tracing",
]
[[package]]
name = "quinn-proto"
version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe"
dependencies = [
"bytes",
"rand",
"ring",
"rustc-hash",
"rustls 0.23.11",
"slab",
"thiserror",
"tinyvec",
"tracing",
]
[[package]]
name = "quinn-udp"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285"
dependencies = [
"libc",
"once_cell",
"socket2",
"windows-sys 0.52.0",
]
[[package]]
name = "quote"
version = "1.0.36"
@ -1636,7 +1683,10 @@ dependencies = [
"once_cell",
"percent-encoding",
"pin-project-lite",
"rustls-pemfile",
"quinn",
"rustls 0.23.11",
"rustls-pemfile 2.1.2",
"rustls-pki-types",
"serde",
"serde_json",
"serde_urlencoded",
@ -1644,11 +1694,13 @@ dependencies = [
"system-configuration",
"tokio",
"tokio-native-tls",
"tokio-rustls",
"tower-service",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
"webpki-roots 0.26.3",
"winreg",
]
@ -1751,6 +1803,12 @@ version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
[[package]]
name = "rustc-hash"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
[[package]]
name = "rustix"
version = "0.38.34"
@ -1764,6 +1822,17 @@ dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "rustls"
version = "0.21.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e"
dependencies = [
"ring",
"rustls-webpki 0.101.7",
"sct",
]
[[package]]
name = "rustls"
version = "0.23.11"
@ -1771,12 +1840,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4828ea528154ae444e5a642dbb7d5623354030dc9822b83fd9bb79683c7399d0"
dependencies = [
"once_cell",
"ring",
"rustls-pki-types",
"rustls-webpki",
"rustls-webpki 0.102.5",
"subtle",
"zeroize",
]
[[package]]
name = "rustls-pemfile"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
dependencies = [
"base64 0.21.7",
]
[[package]]
name = "rustls-pemfile"
version = "2.1.2"
@ -1793,6 +1872,16 @@ version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d"
[[package]]
name = "rustls-webpki"
version = "0.101.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
dependencies = [
"ring",
"untrusted",
]
[[package]]
name = "rustls-webpki"
version = "0.102.5"
@ -1831,6 +1920,16 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "sct"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
dependencies = [
"ring",
"untrusted",
]
[[package]]
name = "security-framework"
version = "2.11.1"
@ -2122,6 +2221,8 @@ dependencies = [
"once_cell",
"paste",
"percent-encoding",
"rustls 0.21.12",
"rustls-pemfile 1.0.4",
"serde",
"serde_json",
"sha2",
@ -2132,6 +2233,7 @@ dependencies = [
"tokio-stream",
"tracing",
"url",
"webpki-roots 0.25.4",
]
[[package]]
@ -2446,7 +2548,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "toggl-2"
name = "toggl-bridge"
version = "0.1.0"
dependencies = [
"axum",
@ -2520,7 +2622,7 @@ version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
dependencies = [
"rustls",
"rustls 0.23.11",
"rustls-pki-types",
"tokio",
]
@ -2845,6 +2947,21 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "webpki-roots"
version = "0.25.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1"
[[package]]
name = "webpki-roots"
version = "0.26.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd"
dependencies = [
"rustls-pki-types",
]
[[package]]
name = "whoami"
version = "1.5.1"

View File

@ -1,5 +1,5 @@
[package]
name = "toggl-2"
name = "toggl-bridge"
version = "0.1.0"
edition = "2021"
@ -7,7 +7,7 @@ edition = "2021"
axum = "0.7.5"
chrono = { version = "0.4.38", features = ["serde"] }
governor = "0.6.3"
reqwest = { version = "0.12.5", features = ["json"] }
reqwest = { version = "0.12.5", features = ["json", "rustls-tls"] }
reqwest-ratelimit = "0.2.0"
reqwest-middleware = { version = "0.3", features = ["json"] }
reqwest-retry = "0.6"
@ -19,7 +19,7 @@ serde_json = "1.0.120"
serde_json_path_to_error = "0.1.4"
url = "2.5.2"
serde_with = "3.9.0"
sqlx = { version = "0.7.4", features = ["postgres", "runtime-tokio", "macros", "chrono"] }
sqlx = { version = "0.7.4", features = ["postgres", "macros", "chrono", "runtime-tokio-rustls"] }
futures = "0.3.30"
tracing = "0.1.40"
tracing-subscriber = "0.3.18"

View File

@ -42,9 +42,9 @@ struct TableSummary {
tag_ids: Vec<u64>,
}
use chrono::TimeDelta;
use clap::{Parser, Subcommand};
use std::net::IpAddr;
use chrono::TimeDelta;
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
@ -77,7 +77,6 @@ enum Commands {
Sync,
}
#[tokio::main]
async fn main() {
dotenvy::dotenv().expect("Failed to load .env file");
@ -102,9 +101,13 @@ async fn main() {
let worker = Worker { db, toggl_api };
if let Commands::Server { ip, port } = cli.command {
server::serve(worker, ip, port).await.expect("Failed to start server");
server::serve(worker, ip, port)
.await
.expect("Failed to start server");
} else {
worker.update(TimeDelta::days(30))
.await.expect("Failed to update worker");
worker
.update(TimeDelta::days(30))
.await
.expect("Failed to update worker");
}
}

View File

@ -1,4 +1,3 @@
use std::net::IpAddr;
use axum::response::IntoResponse;
use axum::{
http::StatusCode,
@ -6,6 +5,7 @@ use axum::{
Extension, Json, Router,
};
use chrono::TimeDelta;
use std::net::IpAddr;
use crate::worker::Worker;
use crate::AppError;

View File

@ -111,6 +111,7 @@ impl Worker {
.iter()
.map(|entry| entry.workspace_id)
.filter(|workspace_id| !existing_ids.workspace_ids.contains(&workspace_id))
.unique()
.collect::<Vec<_>>();
let fetch_projects = time_entries
@ -184,6 +185,7 @@ impl Worker {
Ok(())
}
#[tracing::instrument(skip(self))]
async fn update_workspaces(&self, workspace_ids: &[u64]) -> Result<(), AppError> {
let workspaces = workspace_ids
.iter()