Remove un-needed tokio-tungstenite features, prepare for fixing reqwest to use our root certs

This commit is contained in:
Travis Burtrum 2022-07-17 16:00:20 -04:00
parent fd7920d551
commit 27887c2e82
3 changed files with 12 additions and 14 deletions

6
Cargo.lock generated
View File

@ -1194,12 +1194,8 @@ checksum = "06cda1232a49558c46f8a504d5b93101d42c0bf7f911f12a105ba48168f821ae"
dependencies = [
"futures-util",
"log",
"rustls",
"rustls-native-certs",
"tokio",
"tokio-rustls",
"tungstenite",
"webpki",
]
[[package]]
@ -1327,12 +1323,10 @@ dependencies = [
"httparse",
"log",
"rand",
"rustls",
"sha-1",
"thiserror",
"url",
"utf-8",
"webpki",
]
[[package]]

View File

@ -57,9 +57,7 @@ rustls = { version = "0.20.2", optional = true }
rustls-pemfile = { version = "1.0.0", optional = true }
# websocket deps
# todo: fix up the situation with these roots
#tokio-tungstenite = { version = "0.17", optional = true, features = ["rustls-tls-webpki-roots"] }
tokio-tungstenite = { version = "0.17", optional = true, features = ["rustls-tls-native-roots"] }
tokio-tungstenite = { version = "0.17", optional = true, default-features = false }
futures-util = { version = "0.3", default-features = false, features = ["async-await", "sink", "std"], optional = true }
[features]

View File

@ -13,6 +13,7 @@ use crate::{
use anyhow::{bail, Result};
use data_encoding::BASE64;
use log::{debug, error, trace};
use reqwest::Client;
use ring::digest::{Algorithm, Context as DigestContext, SHA256, SHA512};
use serde::Deserialize;
use std::{
@ -31,6 +32,7 @@ use trust_dns_resolver::{
lazy_static::lazy_static! {
static ref RESOLVER: TokioAsyncResolver = make_resolver();
static ref HTTPS_CLIENT: Client = make_https_client();
}
fn make_resolver() -> TokioAsyncResolver {
@ -39,6 +41,15 @@ fn make_resolver() -> TokioAsyncResolver {
TokioAsyncResolver::tokio(config, options).unwrap()
}
fn make_https_client() -> Client {
// todo: configure our root certs here
Client::builder().https_only(true).build().expect("failed to make https client?")
}
async fn https_get<T: reqwest::IntoUrl>(url: T) -> reqwest::Result<reqwest::Response> {
HTTPS_CLIENT.get(url).send().await
}
#[derive(Clone, Debug, PartialEq, Eq)]
enum XmppConnectionType {
#[cfg(feature = "tls")]
@ -706,11 +717,6 @@ async fn collect_host_meta_xml(ret: &mut Vec<XmppConnection>, domain: &str, is_c
}
}
async fn https_get<T: reqwest::IntoUrl>(url: T) -> reqwest::Result<reqwest::Response> {
// todo: resolve URL with our resolver
reqwest::Client::builder().https_only(true).build()?.get(url).send().await
}
// https://datatracker.ietf.org/doc/html/rfc7711
// https://www.iana.org/assignments/posh-service-names/posh-service-names.xhtml
async fn collect_posh(domain: &str) -> Result<Posh> {