Skip to content

Commit

Permalink
feat(tls): Optimize tls configuration process (#113)
Browse files Browse the repository at this point in the history
  • Loading branch information
0x676e67 authored Aug 12, 2024
1 parent 98c954c commit 87219ca
Show file tree
Hide file tree
Showing 47 changed files with 448 additions and 461 deletions.
7 changes: 4 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ full = [
"stream",
"cookies",
"socks",
"http2"
"http2",
]

http2 = ["h2", "hyper/http2"]
Expand Down Expand Up @@ -106,7 +106,7 @@ hyper = { package = "rhyper", version = "0.14", default-features = false, featur
"client",
"runtime",
] }
h2 = { package = "rh2", version = "0.3", optional = true}
h2 = { package = "rh2", version = "0.3", optional = true }
log = "0.4"
mime = "0.3.17"
percent-encoding = "2.3"
Expand Down Expand Up @@ -179,6 +179,7 @@ tokio = { version = "1.0", default-features = false, features = [
"macros",
"rt-multi-thread",
] }
futures = { version = "0.3.0", default-features = false }

[[example]]
name = "blocking"
Expand Down Expand Up @@ -266,4 +267,4 @@ required-features = ["deflate"]
[[test]]
name = "multipart"
path = "tests/multipart.rs"
required-features = ["multipart"]
required-features = ["multipart"]
2 changes: 1 addition & 1 deletion src/async_impl/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ impl ClientBuilder {
.http2_header_table_size(settings.http2.header_table_size)
.http2_enable_push(settings.http2.enable_push)
.http2_headers_priority(settings.http2.headers_priority)
.http2_headers_pseudo_order(settings.http2.headers_pseudo_header)
.http2_headers_pseudo_order(settings.http2.headers_pseudo_order)
.http2_settings_order(settings.http2.settings_order);
}

Expand Down
8 changes: 4 additions & 4 deletions src/tls/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ use boring::{
};
use connector::{HttpsConnector, HttpsLayer, HttpsLayerSettings};
pub(crate) use profile::tls_settings;
pub use profile::Impersonate;
use profile::TypedImpersonate;

pub use settings::{Http2Settings, SslBuilderSettings, SslContextSettings, SslSettings};
pub use profile::{Impersonate, TypedImpersonate};
pub use settings::{
Http2Settings, ImpersonateSettings, SslBuilderSettings, SslContextSettings, SslSettings,
};
use std::any::Any;
use std::fmt::{self, Debug};

Expand Down
12 changes: 6 additions & 6 deletions src/tls/profile/chrome/v100.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use super::CIPHER_LIST;
use crate::tls::extension::{ChromeExtension, Extension, SslExtension};
use crate::tls::{Http2Settings, SslBuilderSettings};
use crate::tls::{Impersonate, TlsResult};
use crate::tls::{ImpersonateSettings, TlsResult};
use http::{
header::{
ACCEPT, ACCEPT_ENCODING, ACCEPT_LANGUAGE, DNT, UPGRADE_INSECURE_REQUESTS, USER_AGENT,
Expand All @@ -10,23 +10,23 @@ use http::{
};

pub(crate) fn get_settings(
impersonate: Impersonate,
settings: ImpersonateSettings,
headers: &mut HeaderMap,
) -> TlsResult<SslBuilderSettings> {
init_headers(headers);
Ok(SslBuilderSettings {
ssl_builder: ChromeExtension::builder()?.configure_cipher_list(&CIPHER_LIST)?,
enable_psk: impersonate.psk_extension(),
enable_psk: settings.pre_share_key,
http2: Http2Settings {
initial_stream_window_size: Some(6291456),
initial_connection_window_size: Some(15728640),
max_concurrent_streams: Some(1000),
max_header_list_size: Some(262144),
header_table_size: Some(65536),
enable_push: None,
headers_priority: impersonate.headers_priority(),
headers_pseudo_header: impersonate.headers_pseudo_order(),
settings_order: impersonate.settings_order(),
headers_priority: settings.headers_priority,
headers_pseudo_order: settings.headers_pseudo_order,
settings_order: settings.settings_order,
},
})
}
Expand Down
12 changes: 6 additions & 6 deletions src/tls/profile/chrome/v101.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use super::CIPHER_LIST;
use crate::tls::extension::{ChromeExtension, Extension, SslExtension};
use crate::tls::{Http2Settings, SslBuilderSettings};
use crate::tls::{Impersonate, TlsResult};
use crate::tls::{ImpersonateSettings, TlsResult};
use http::{
header::{
ACCEPT, ACCEPT_ENCODING, ACCEPT_LANGUAGE, DNT, UPGRADE_INSECURE_REQUESTS, USER_AGENT,
Expand All @@ -10,23 +10,23 @@ use http::{
};

pub(crate) fn get_settings(
impersonate: Impersonate,
settings: ImpersonateSettings,
headers: &mut HeaderMap,
) -> TlsResult<SslBuilderSettings> {
init_headers(headers);
Ok(SslBuilderSettings {
ssl_builder: ChromeExtension::builder()?.configure_cipher_list(&CIPHER_LIST)?,
enable_psk: impersonate.psk_extension(),
enable_psk: settings.pre_share_key,
http2: Http2Settings {
initial_stream_window_size: Some(6291456),
initial_connection_window_size: Some(15728640),
max_concurrent_streams: Some(1000),
max_header_list_size: Some(262144),
header_table_size: Some(65536),
enable_push: None,
headers_priority: impersonate.headers_priority(),
headers_pseudo_header: impersonate.headers_pseudo_order(),
settings_order: impersonate.settings_order(),
headers_priority: settings.headers_priority,
headers_pseudo_order: settings.headers_pseudo_order,
settings_order: settings.settings_order,
},
})
}
Expand Down
12 changes: 6 additions & 6 deletions src/tls/profile/chrome/v104.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use super::CIPHER_LIST;
use crate::tls::extension::{ChromeExtension, Extension, SslExtension};
use crate::tls::{Http2Settings, SslBuilderSettings};
use crate::tls::{Impersonate, TlsResult};
use crate::tls::{ImpersonateSettings, TlsResult};
use http::{
header::{
ACCEPT, ACCEPT_ENCODING, ACCEPT_LANGUAGE, DNT, UPGRADE_INSECURE_REQUESTS, USER_AGENT,
Expand All @@ -10,23 +10,23 @@ use http::{
};

pub(crate) fn get_settings(
impersonate: Impersonate,
settings: ImpersonateSettings,
headers: &mut HeaderMap,
) -> TlsResult<SslBuilderSettings> {
init_headers(headers);
Ok(SslBuilderSettings {
ssl_builder: ChromeExtension::builder()?.configure_cipher_list(&CIPHER_LIST)?,
enable_psk: impersonate.psk_extension(),
enable_psk: settings.pre_share_key,
http2: Http2Settings {
initial_stream_window_size: Some(6291456),
initial_connection_window_size: Some(15728640),
max_concurrent_streams: Some(1000),
max_header_list_size: Some(262144),
header_table_size: Some(65536),
enable_push: None,
headers_priority: impersonate.headers_priority(),
headers_pseudo_header: impersonate.headers_pseudo_order(),
settings_order: impersonate.settings_order(),
headers_priority: settings.headers_priority,
headers_pseudo_order: settings.headers_pseudo_order,
settings_order: settings.settings_order,
},
})
}
Expand Down
12 changes: 6 additions & 6 deletions src/tls/profile/chrome/v105.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use super::CIPHER_LIST;
use crate::tls::extension::{ChromeExtension, Extension, SslExtension};
use crate::tls::{Http2Settings, SslBuilderSettings};
use crate::tls::{Impersonate, TlsResult};
use crate::tls::{ImpersonateSettings, TlsResult};
use http::{
header::{
ACCEPT, ACCEPT_ENCODING, ACCEPT_LANGUAGE, DNT, UPGRADE_INSECURE_REQUESTS, USER_AGENT,
Expand All @@ -10,23 +10,23 @@ use http::{
};

pub(crate) fn get_settings(
impersonate: Impersonate,
settings: ImpersonateSettings,
headers: &mut HeaderMap,
) -> TlsResult<SslBuilderSettings> {
init_headers(headers);
Ok(SslBuilderSettings {
ssl_builder: ChromeExtension::builder()?.configure_cipher_list(&CIPHER_LIST)?,
enable_psk: impersonate.psk_extension(),
enable_psk: settings.pre_share_key,
http2: Http2Settings {
initial_stream_window_size: Some(6291456),
initial_connection_window_size: Some(15728640),
max_concurrent_streams: Some(1000),
max_header_list_size: Some(262144),
header_table_size: Some(65536),
enable_push: None,
headers_priority: impersonate.headers_priority(),
headers_pseudo_header: impersonate.headers_pseudo_order(),
settings_order: impersonate.settings_order(),
headers_priority: settings.headers_priority,
headers_pseudo_order: settings.headers_pseudo_order,
settings_order: settings.settings_order,
},
})
}
Expand Down
12 changes: 6 additions & 6 deletions src/tls/profile/chrome/v106.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use super::CIPHER_LIST;
use crate::tls::extension::{ChromeExtension, Extension, SslExtension};
use crate::tls::{Http2Settings, SslBuilderSettings};
use crate::tls::{Impersonate, TlsResult};
use crate::tls::{ImpersonateSettings, TlsResult};
use http::{
header::{
ACCEPT, ACCEPT_ENCODING, ACCEPT_LANGUAGE, DNT, UPGRADE_INSECURE_REQUESTS, USER_AGENT,
Expand All @@ -10,23 +10,23 @@ use http::{
};

pub(crate) fn get_settings(
impersonate: Impersonate,
settings: ImpersonateSettings,
headers: &mut HeaderMap,
) -> TlsResult<SslBuilderSettings> {
init_headers(headers);
Ok(SslBuilderSettings {
ssl_builder: ChromeExtension::builder()?.configure_cipher_list(&CIPHER_LIST)?,
enable_psk: impersonate.psk_extension(),
enable_psk: settings.pre_share_key,
http2: Http2Settings {
initial_stream_window_size: Some(6291456),
initial_connection_window_size: Some(15728640),
max_concurrent_streams: Some(1000),
max_header_list_size: Some(262144),
header_table_size: Some(65536),
enable_push: Some(false),
headers_priority: impersonate.headers_priority(),
headers_pseudo_header: impersonate.headers_pseudo_order(),
settings_order: impersonate.settings_order(),
headers_priority: settings.headers_priority,
headers_pseudo_order: settings.headers_pseudo_order,
settings_order: settings.settings_order,
},
})
}
Expand Down
12 changes: 6 additions & 6 deletions src/tls/profile/chrome/v107.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use super::CIPHER_LIST;
use crate::tls::extension::{ChromeExtension, Extension, SslExtension};
use crate::tls::{Http2Settings, SslBuilderSettings};
use crate::tls::{Impersonate, TlsResult};
use crate::tls::{ImpersonateSettings, TlsResult};
use http::{
header::{
ACCEPT, ACCEPT_ENCODING, ACCEPT_LANGUAGE, DNT, UPGRADE_INSECURE_REQUESTS, USER_AGENT,
Expand All @@ -10,23 +10,23 @@ use http::{
};

pub(crate) fn get_settings(
impersonate: Impersonate,
settings: ImpersonateSettings,
headers: &mut HeaderMap,
) -> TlsResult<SslBuilderSettings> {
init_headers(headers);
Ok(SslBuilderSettings {
ssl_builder: ChromeExtension::builder()?.configure_cipher_list(&CIPHER_LIST)?,
enable_psk: impersonate.psk_extension(),
enable_psk: settings.pre_share_key,
http2: Http2Settings {
initial_stream_window_size: Some(6291456),
initial_connection_window_size: Some(15728640),
max_concurrent_streams: Some(1000),
max_header_list_size: Some(262144),
header_table_size: Some(65536),
enable_push: Some(false),
headers_priority: impersonate.headers_priority(),
headers_pseudo_header: impersonate.headers_pseudo_order(),
settings_order: impersonate.settings_order(),
headers_priority: settings.headers_priority,
headers_pseudo_order: settings.headers_pseudo_order,
settings_order: settings.settings_order,
},
})
}
Expand Down
12 changes: 6 additions & 6 deletions src/tls/profile/chrome/v108.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use super::CIPHER_LIST;
use crate::tls::extension::{ChromeExtension, Extension, SslExtension};
use crate::tls::{Http2Settings, SslBuilderSettings};
use crate::tls::{Impersonate, TlsResult};
use crate::tls::{ImpersonateSettings, TlsResult};
use http::{
header::{
ACCEPT, ACCEPT_ENCODING, ACCEPT_LANGUAGE, DNT, UPGRADE_INSECURE_REQUESTS, USER_AGENT,
Expand All @@ -10,23 +10,23 @@ use http::{
};

pub(crate) fn get_settings(
impersonate: Impersonate,
settings: ImpersonateSettings,
headers: &mut HeaderMap,
) -> TlsResult<SslBuilderSettings> {
init_headers(headers);
Ok(SslBuilderSettings {
ssl_builder: ChromeExtension::builder()?.configure_cipher_list(&CIPHER_LIST)?,
enable_psk: impersonate.psk_extension(),
enable_psk: settings.pre_share_key,
http2: Http2Settings {
initial_stream_window_size: Some(6291456),
initial_connection_window_size: Some(15728640),
max_concurrent_streams: Some(1000),
max_header_list_size: Some(262144),
header_table_size: Some(65536),
enable_push: Some(false),
headers_priority: impersonate.headers_priority(),
headers_pseudo_header: impersonate.headers_pseudo_order(),
settings_order: impersonate.settings_order(),
headers_priority: settings.headers_priority,
headers_pseudo_order: settings.headers_pseudo_order,
settings_order: settings.settings_order,
},
})
}
Expand Down
12 changes: 6 additions & 6 deletions src/tls/profile/chrome/v109.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use super::CIPHER_LIST;
use crate::tls::extension::{ChromeExtension, Extension, SslExtension};
use crate::tls::{Http2Settings, SslBuilderSettings};
use crate::tls::{Impersonate, TlsResult};
use crate::tls::{ImpersonateSettings, TlsResult};
use http::{
header::{
ACCEPT, ACCEPT_ENCODING, ACCEPT_LANGUAGE, DNT, UPGRADE_INSECURE_REQUESTS, USER_AGENT,
Expand All @@ -10,23 +10,23 @@ use http::{
};

pub(crate) fn get_settings(
impersonate: Impersonate,
settings: ImpersonateSettings,
headers: &mut HeaderMap,
) -> TlsResult<SslBuilderSettings> {
init_headers(headers);
Ok(SslBuilderSettings {
ssl_builder: ChromeExtension::builder()?.configure_cipher_list(&CIPHER_LIST)?,
enable_psk: impersonate.psk_extension(),
enable_psk: settings.pre_share_key,
http2: Http2Settings {
initial_stream_window_size: Some(6291456),
initial_connection_window_size: Some(15728640),
max_concurrent_streams: Some(1000),
max_header_list_size: Some(262144),
header_table_size: Some(65536),
enable_push: Some(false),
headers_priority: impersonate.headers_priority(),
headers_pseudo_header: impersonate.headers_pseudo_order(),
settings_order: impersonate.settings_order(),
headers_priority: settings.headers_priority,
headers_pseudo_order: settings.headers_pseudo_order,
settings_order: settings.settings_order,
},
})
}
Expand Down
12 changes: 6 additions & 6 deletions src/tls/profile/chrome/v114.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use super::CIPHER_LIST;
use crate::tls::extension::{ChromeExtension, Extension, SslExtension};
use crate::tls::{Http2Settings, SslBuilderSettings};
use crate::tls::{Impersonate, TlsResult};
use crate::tls::{ImpersonateSettings, TlsResult};
use http::{
header::{
ACCEPT, ACCEPT_ENCODING, ACCEPT_LANGUAGE, DNT, UPGRADE_INSECURE_REQUESTS, USER_AGENT,
Expand All @@ -10,23 +10,23 @@ use http::{
};

pub(crate) fn get_settings(
impersonate: Impersonate,
settings: ImpersonateSettings,
headers: &mut HeaderMap,
) -> TlsResult<SslBuilderSettings> {
init_headers(headers);
Ok(SslBuilderSettings {
ssl_builder: ChromeExtension::builder()?.configure_cipher_list(&CIPHER_LIST)?,
enable_psk: impersonate.psk_extension(),
enable_psk: settings.pre_share_key,
http2: Http2Settings {
initial_stream_window_size: Some(6291456),
initial_connection_window_size: Some(15728640),
max_concurrent_streams: Some(1000),
max_header_list_size: Some(262144),
header_table_size: Some(65536),
enable_push: Some(false),
headers_priority: impersonate.headers_priority(),
headers_pseudo_header: impersonate.headers_pseudo_order(),
settings_order: impersonate.settings_order(),
headers_priority: settings.headers_priority,
headers_pseudo_order: settings.headers_pseudo_order,
settings_order: settings.settings_order,
},
})
}
Expand Down
Loading

0 comments on commit 87219ca

Please sign in to comment.