|
3 | 3 |
|
4 | 4 | //! Process management and signal handling. |
5 | 5 |
|
| 6 | +use crate::child_env; |
6 | 7 | use crate::policy::{NetworkMode, SandboxPolicy}; |
7 | 8 | use crate::sandbox; |
8 | 9 | #[cfg(target_os = "linux")] |
@@ -135,29 +136,22 @@ impl ProcessHandle { |
135 | 136 | let proxy_url = format!("http://10.200.0.1:{port}"); |
136 | 137 | // Both uppercase and lowercase variants: curl/wget use uppercase, |
137 | 138 | // gRPC C-core (libgrpc) checks lowercase http_proxy/https_proxy. |
138 | | - cmd.env("ALL_PROXY", &proxy_url) |
139 | | - .env("HTTP_PROXY", &proxy_url) |
140 | | - .env("HTTPS_PROXY", &proxy_url) |
141 | | - .env("http_proxy", &proxy_url) |
142 | | - .env("https_proxy", &proxy_url) |
143 | | - .env("grpc_proxy", &proxy_url); |
| 139 | + for (key, value) in child_env::proxy_env_vars(&proxy_url) { |
| 140 | + cmd.env(key, value); |
| 141 | + } |
144 | 142 | } else if let Some(http_addr) = proxy.http_addr { |
145 | 143 | let proxy_url = format!("http://{http_addr}"); |
146 | | - cmd.env("ALL_PROXY", &proxy_url) |
147 | | - .env("HTTP_PROXY", &proxy_url) |
148 | | - .env("HTTPS_PROXY", &proxy_url) |
149 | | - .env("http_proxy", &proxy_url) |
150 | | - .env("https_proxy", &proxy_url) |
151 | | - .env("grpc_proxy", &proxy_url); |
| 144 | + for (key, value) in child_env::proxy_env_vars(&proxy_url) { |
| 145 | + cmd.env(key, value); |
| 146 | + } |
152 | 147 | } |
153 | 148 | } |
154 | 149 |
|
155 | 150 | // Set TLS trust store env vars so sandbox processes trust the ephemeral CA |
156 | 151 | if let Some((ca_cert_path, combined_bundle_path)) = ca_paths { |
157 | | - cmd.env("NODE_EXTRA_CA_CERTS", ca_cert_path) // Node.js (additive) |
158 | | - .env("SSL_CERT_FILE", combined_bundle_path) // OpenSSL/Python/Go |
159 | | - .env("REQUESTS_CA_BUNDLE", combined_bundle_path) // Python requests |
160 | | - .env("CURL_CA_BUNDLE", combined_bundle_path); // curl/libcurl |
| 152 | + for (key, value) in child_env::tls_env_vars(ca_cert_path, combined_bundle_path) { |
| 153 | + cmd.env(key, value); |
| 154 | + } |
161 | 155 | } |
162 | 156 |
|
163 | 157 | // Set up process group for signal handling (non-interactive mode only). |
@@ -240,18 +234,17 @@ impl ProcessHandle { |
240 | 234 | })?; |
241 | 235 | if let Some(http_addr) = proxy.http_addr { |
242 | 236 | let proxy_url = format!("http://{http_addr}"); |
243 | | - cmd.env("ALL_PROXY", &proxy_url) |
244 | | - .env("HTTP_PROXY", &proxy_url) |
245 | | - .env("HTTPS_PROXY", &proxy_url); |
| 237 | + for (key, value) in child_env::proxy_env_vars(&proxy_url) { |
| 238 | + cmd.env(key, value); |
| 239 | + } |
246 | 240 | } |
247 | 241 | } |
248 | 242 |
|
249 | 243 | // Set TLS trust store env vars so sandbox processes trust the ephemeral CA |
250 | 244 | if let Some((ca_cert_path, combined_bundle_path)) = ca_paths { |
251 | | - cmd.env("NODE_EXTRA_CA_CERTS", ca_cert_path) |
252 | | - .env("SSL_CERT_FILE", combined_bundle_path) |
253 | | - .env("REQUESTS_CA_BUNDLE", combined_bundle_path) |
254 | | - .env("CURL_CA_BUNDLE", combined_bundle_path); |
| 245 | + for (key, value) in child_env::tls_env_vars(ca_cert_path, combined_bundle_path) { |
| 246 | + cmd.env(key, value); |
| 247 | + } |
255 | 248 | } |
256 | 249 |
|
257 | 250 | // Set up process group for signal handling (non-interactive mode only). |
|
0 commit comments