Skip to content

Commit ade1dc9

Browse files
zaniebcharliermarsh
andcommitted
Make --allow-insecure-host a global option (#8476)
Not verifying the certificates of certain hosts should be supported for all kinds of HTTPS connections, so we're making it a global option, just like native tls. This fixes the remaining places using a client but were not configuring allow insecure host. Fixes #6983 (i think) Closes #6983 --------- Co-authored-by: Charlie Marsh <[email protected]>
1 parent 2a3f124 commit ade1dc9

File tree

31 files changed

+709
-519
lines changed

31 files changed

+709
-519
lines changed

crates/uv-cli/src/lib.rs

Lines changed: 20 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,26 @@ pub struct GlobalArgs {
205205
#[arg(global = true, long, overrides_with("offline"), hide = true)]
206206
pub no_offline: bool,
207207

208+
/// Allow insecure connections to a host.
209+
///
210+
/// Can be provided multiple times.
211+
///
212+
/// Expects to receive either a hostname (e.g., `localhost`), a host-port pair (e.g.,
213+
/// `localhost:8080`), or a URL (e.g., `https://localhost`).
214+
///
215+
/// WARNING: Hosts included in this list will not be verified against the system's certificate
216+
/// store. Only use `--allow-insecure-host` in a secure network with verified sources, as it
217+
/// bypasses SSL verification and could expose you to MITM attacks.
218+
#[arg(
219+
global = true,
220+
long,
221+
alias = "trusted-host",
222+
env = EnvVars::UV_INSECURE_HOST,
223+
value_delimiter = ' ',
224+
value_parser = parse_insecure_host,
225+
)]
226+
pub allow_insecure_host: Option<Vec<Maybe<TrustedHost>>>,
227+
208228
/// Whether to enable experimental, preview features.
209229
///
210230
/// Preview features may change without warning.
@@ -1768,25 +1788,6 @@ pub struct PipUninstallArgs {
17681788
#[arg(long, value_enum, env = EnvVars::UV_KEYRING_PROVIDER)]
17691789
pub keyring_provider: Option<KeyringProviderType>,
17701790

1771-
/// Allow insecure connections to a host.
1772-
///
1773-
/// Can be provided multiple times.
1774-
///
1775-
/// Expects to receive either a hostname (e.g., `localhost`), a host-port pair (e.g.,
1776-
/// `localhost:8080`), or a URL (e.g., `https://localhost`).
1777-
///
1778-
/// WARNING: Hosts included in this list will not be verified against the system's certificate
1779-
/// store. Only use `--allow-insecure-host` in a secure network with verified sources, as it
1780-
/// bypasses SSL verification and could expose you to MITM attacks.
1781-
#[arg(
1782-
long,
1783-
alias = "trusted-host",
1784-
env = EnvVars::UV_INSECURE_HOST,
1785-
value_delimiter = ' ',
1786-
value_parser = parse_insecure_host,
1787-
)]
1788-
pub allow_insecure_host: Option<Vec<Maybe<TrustedHost>>>,
1789-
17901791
/// Use the system Python to uninstall packages.
17911792
///
17921793
/// By default, uv uninstalls from the virtual environment in the current working directory or
@@ -2360,25 +2361,6 @@ pub struct VenvArgs {
23602361
#[arg(long, value_enum, env = EnvVars::UV_KEYRING_PROVIDER)]
23612362
pub keyring_provider: Option<KeyringProviderType>,
23622363

2363-
/// Allow insecure connections to a host.
2364-
///
2365-
/// Can be provided multiple times.
2366-
///
2367-
/// Expects to receive either a hostname (e.g., `localhost`), a host-port pair (e.g.,
2368-
/// `localhost:8080`), or a URL (e.g., `https://localhost`).
2369-
///
2370-
/// WARNING: Hosts included in this list will not be verified against the system's certificate
2371-
/// store. Only use `--allow-insecure-host` in a secure network with verified sources, as it
2372-
/// bypasses SSL verification and could expose you to MITM attacks.
2373-
#[arg(
2374-
long,
2375-
alias = "trusted-host",
2376-
env = EnvVars::UV_INSECURE_HOST,
2377-
value_delimiter = ' ',
2378-
value_parser = parse_insecure_host,
2379-
)]
2380-
pub allow_insecure_host: Option<Vec<Maybe<TrustedHost>>>,
2381-
23822364
/// Limit candidate packages to those that were uploaded prior to the given date.
23832365
///
23842366
/// Accepts both RFC 3339 timestamps (e.g., `2006-12-02T02:07:43Z`) and local dates in the same
@@ -4266,26 +4248,6 @@ pub struct InstallerArgs {
42664248
)]
42674249
pub keyring_provider: Option<KeyringProviderType>,
42684250

4269-
/// Allow insecure connections to a host.
4270-
///
4271-
/// Can be provided multiple times.
4272-
///
4273-
/// Expects to receive either a hostname (e.g., `localhost`), a host-port pair (e.g.,
4274-
/// `localhost:8080`), or a URL (e.g., `https://localhost`).
4275-
///
4276-
/// WARNING: Hosts included in this list will not be verified against the system's certificate
4277-
/// store. Only use `--allow-insecure-host` in a secure network with verified sources, as it
4278-
/// bypasses SSL verification and could expose you to MITM attacks.
4279-
#[arg(
4280-
long,
4281-
alias = "trusted-host",
4282-
env = EnvVars::UV_INSECURE_HOST,
4283-
value_delimiter = ' ',
4284-
value_parser = parse_insecure_host,
4285-
help_heading = "Index options"
4286-
)]
4287-
pub allow_insecure_host: Option<Vec<Maybe<TrustedHost>>>,
4288-
42894251
/// Settings to pass to the PEP 517 build backend, specified as `KEY=VALUE` pairs.
42904252
#[arg(
42914253
long,
@@ -4428,26 +4390,6 @@ pub struct ResolverArgs {
44284390
)]
44294391
pub keyring_provider: Option<KeyringProviderType>,
44304392

4431-
/// Allow insecure connections to a host.
4432-
///
4433-
/// Can be provided multiple times.
4434-
///
4435-
/// Expects to receive either a hostname (e.g., `localhost`), a host-port pair (e.g.,
4436-
/// `localhost:8080`), or a URL (e.g., `https://localhost`).
4437-
///
4438-
/// WARNING: Hosts included in this list will not be verified against the system's certificate
4439-
/// store. Only use `--allow-insecure-host` in a secure network with verified sources, as it
4440-
/// bypasses SSL verification and could expose you to MITM attacks.
4441-
#[arg(
4442-
long,
4443-
alias = "trusted-host",
4444-
env = EnvVars::UV_INSECURE_HOST,
4445-
value_delimiter = ' ',
4446-
value_parser = parse_insecure_host,
4447-
help_heading = "Index options"
4448-
)]
4449-
pub allow_insecure_host: Option<Vec<Maybe<TrustedHost>>>,
4450-
44514393
/// The strategy to use when selecting between the different compatible versions for a given
44524394
/// package requirement.
44534395
///
@@ -4620,26 +4562,6 @@ pub struct ResolverInstallerArgs {
46204562
)]
46214563
pub keyring_provider: Option<KeyringProviderType>,
46224564

4623-
/// Allow insecure connections to a host.
4624-
///
4625-
/// Can be provided multiple times.
4626-
///
4627-
/// Expects to receive either a hostname (e.g., `localhost`), a host-port pair (e.g.,
4628-
/// `localhost:8080`), or a URL (e.g., `https://localhost`).
4629-
///
4630-
/// WARNING: Hosts included in this list will not be verified against the system's certificate
4631-
/// store. Only use `--allow-insecure-host` in a secure network with verified sources, as it
4632-
/// bypasses SSL verification and could expose you to MITM attacks.
4633-
#[arg(
4634-
long,
4635-
alias = "trusted-host",
4636-
env = EnvVars::UV_INSECURE_HOST,
4637-
value_delimiter = ' ',
4638-
value_parser = parse_insecure_host,
4639-
help_heading = "Index options"
4640-
)]
4641-
pub allow_insecure_host: Option<Vec<Maybe<TrustedHost>>>,
4642-
46434565
/// The strategy to use when selecting between the different compatible versions for a given
46444566
/// package requirement.
46454567
///
@@ -4842,25 +4764,6 @@ pub struct PublishArgs {
48424764
#[arg(long, value_enum, env = EnvVars::UV_KEYRING_PROVIDER)]
48434765
pub keyring_provider: Option<KeyringProviderType>,
48444766

4845-
/// Allow insecure connections to a host.
4846-
///
4847-
/// Can be provided multiple times.
4848-
///
4849-
/// Expects to receive either a hostname (e.g., `localhost`), a host-port pair (e.g.,
4850-
/// `localhost:8080`), or a URL (e.g., `https://localhost`).
4851-
///
4852-
/// WARNING: Hosts included in this list will not be verified against the system's certificate
4853-
/// store. Only use `--allow-insecure-host` in a secure network with verified sources, as it
4854-
/// bypasses SSL verification and could expose you to MITM attacks.
4855-
#[arg(
4856-
long,
4857-
alias = "trusted-host",
4858-
env = EnvVars::UV_INSECURE_HOST,
4859-
value_delimiter = ' ',
4860-
value_parser = parse_insecure_host,
4861-
)]
4862-
pub allow_insecure_host: Option<Vec<Maybe<TrustedHost>>>,
4863-
48644767
/// Check an index URL for existing files to skip duplicate uploads.
48654768
///
48664769
/// This option allows retrying publishing that failed after only some, but not all files have

crates/uv-cli/src/options.rs

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ impl From<ResolverArgs> for PipOptions {
4040
upgrade_package,
4141
index_strategy,
4242
keyring_provider,
43-
allow_insecure_host,
4443
resolution,
4544
prerelease,
4645
pre,
@@ -58,12 +57,6 @@ impl From<ResolverArgs> for PipOptions {
5857
upgrade_package: Some(upgrade_package),
5958
index_strategy,
6059
keyring_provider,
61-
allow_insecure_host: allow_insecure_host.map(|allow_insecure_host| {
62-
allow_insecure_host
63-
.into_iter()
64-
.filter_map(Maybe::into_option)
65-
.collect()
66-
}),
6760
resolution,
6861
prerelease: if pre {
6962
Some(PrereleaseMode::Allow)
@@ -91,7 +84,6 @@ impl From<InstallerArgs> for PipOptions {
9184
reinstall_package,
9285
index_strategy,
9386
keyring_provider,
94-
allow_insecure_host,
9587
config_setting,
9688
no_build_isolation,
9789
build_isolation,
@@ -107,12 +99,6 @@ impl From<InstallerArgs> for PipOptions {
10799
reinstall_package: Some(reinstall_package),
108100
index_strategy,
109101
keyring_provider,
110-
allow_insecure_host: allow_insecure_host.map(|allow_insecure_host| {
111-
allow_insecure_host
112-
.into_iter()
113-
.filter_map(Maybe::into_option)
114-
.collect()
115-
}),
116102
config_settings: config_setting
117103
.map(|config_settings| config_settings.into_iter().collect::<ConfigSettings>()),
118104
no_build_isolation: flag(no_build_isolation, build_isolation),
@@ -137,7 +123,6 @@ impl From<ResolverInstallerArgs> for PipOptions {
137123
reinstall_package,
138124
index_strategy,
139125
keyring_provider,
140-
allow_insecure_host,
141126
resolution,
142127
prerelease,
143128
pre,
@@ -159,12 +144,6 @@ impl From<ResolverInstallerArgs> for PipOptions {
159144
reinstall_package: Some(reinstall_package),
160145
index_strategy,
161146
keyring_provider,
162-
allow_insecure_host: allow_insecure_host.map(|allow_insecure_host| {
163-
allow_insecure_host
164-
.into_iter()
165-
.filter_map(Maybe::into_option)
166-
.collect()
167-
}),
168147
resolution,
169148
prerelease: if pre {
170149
Some(PrereleaseMode::Allow)
@@ -235,7 +214,6 @@ pub fn resolver_options(
235214
upgrade_package,
236215
index_strategy,
237216
keyring_provider,
238-
allow_insecure_host,
239217
resolution,
240218
prerelease,
241219
pre,
@@ -289,12 +267,6 @@ pub fn resolver_options(
289267
upgrade_package: Some(upgrade_package),
290268
index_strategy,
291269
keyring_provider,
292-
allow_insecure_host: allow_insecure_host.map(|allow_insecure_host| {
293-
allow_insecure_host
294-
.into_iter()
295-
.filter_map(Maybe::into_option)
296-
.collect()
297-
}),
298270
resolution,
299271
prerelease: if pre {
300272
Some(PrereleaseMode::Allow)
@@ -331,7 +303,6 @@ pub fn resolver_installer_options(
331303
reinstall_package,
332304
index_strategy,
333305
keyring_provider,
334-
allow_insecure_host,
335306
resolution,
336307
prerelease,
337308
pre,
@@ -397,12 +368,6 @@ pub fn resolver_installer_options(
397368
},
398369
index_strategy,
399370
keyring_provider,
400-
allow_insecure_host: allow_insecure_host.map(|allow_insecure_host| {
401-
allow_insecure_host
402-
.into_iter()
403-
.filter_map(Maybe::into_option)
404-
.collect()
405-
}),
406371
resolution,
407372
prerelease: if pre {
408373
Some(PrereleaseMode::Allow)

0 commit comments

Comments
 (0)