Allow configuring hostnames which should not go through the proxy.
*(["--tools-tree", str(config.tools_tree)] if config.tools_tree else []),
*([f"--extra-search-path={p}" for p in config.extra_search_paths]),
*(["--proxy-url", config.proxy_url] if config.proxy_url else []),
+ *([f"--proxy-exclude={host}" for host in config.proxy_exclude]),
*(["--proxy-peer-certificate", str(p)] if (p := config.proxy_peer_certificate) else []),
*(["--proxy-client-certificate", str(p)] if (p := config.proxy_client_certificate) else []),
*(["--proxy-client-key", str(p)] if (p := config.proxy_client_key) else []),
*([f"--environment={k}='{v}'" for k, v in config.environment.items()]),
*([f"--extra-search-path={p}" for p in config.extra_search_paths]),
*(["--proxy-url", config.proxy_url] if config.proxy_url else []),
+ *([f"--proxy-exclude={host}" for host in config.proxy_exclude]),
*(["--proxy-peer-certificate", str(p)] if (p := config.proxy_peer_certificate) else []),
*(["--proxy-client-certificate", str(p)] if (p := config.proxy_client_certificate) else []),
*(["--proxy-client-key", str(p)] if (p := config.proxy_client_key) else []),
key: Optional[str]
proxy_url: Optional[str]
+ proxy_exclude: list[str]
proxy_peer_certificate: Optional[Path]
proxy_client_certificate: Optional[Path]
proxy_client_key: Optional[Path]
metavar="URL",
help="Set the proxy to use",
),
+ ConfigSetting(
+ dest="proxy_exclude",
+ section="Host",
+ metavar="HOST",
+ parse=config_make_list_parser(delimiter=","),
+ help="Don't use the configured proxy for the specified host(s)",
+ ),
ConfigSetting(
dest="proxy_peer_certificate",
section="Host",
for e in ("http_proxy", "https_proxy"):
env[e] = args.proxy_url
env[e.upper()] = args.proxy_url
+ if args.proxy_exclude:
+ env["no_proxy"] = ",".join(args.proxy_exclude)
+ env["NO_PROXY"] = ",".join(args.proxy_exclude)
if args.proxy_peer_certificate:
env["GIT_PROXY_SSL_CAINFO"] = "/proxy.cacert"
if args.proxy_client_certificate:
"--no-progress-meter",
"--fail",
*(["--proxy", context.config.proxy_url] if context.config.proxy_url else []),
+ *(["--noproxy", ",".join(context.config.proxy_exclude)] if context.config.proxy_exclude else []),
*(["--proxy-capath", "/proxy.cacert"] if context.config.proxy_peer_certificate else []),
*(["--proxy-cert", "/proxy.clientcert"] if context.config.proxy_client_certificate else []),
*(["--proxy-key", "/proxy.clientkey"] if context.config.proxy_client_key else []),
well-known environment variables to specify the proxy to use for any
programs it invokes that may need internet access.
+`ProxyExclude=`, `--proxy-exclude=`
+
+: Configure hostnames for which requests should not go through the
+ proxy. Takes a comma separated list of hostnames.
+
`ProxyPeerCertificate=`, `--proxy-peer-certificate=`
: Configure a file containing certificates used to verify the proxy.
"Profile": "profile",
"ProxyClientCertificate": "/my/client/cert",
"ProxyClientKey": "/my/client/key",
+ "ProxyExclude": [
+ "www.example.com"
+ ],
"ProxyPeerCertificate": "/my/peer/cert",
"ProxyUrl": "https://my/proxy",
"QemuArgs": [],
profile = "profile",
proxy_client_certificate = Path("/my/client/cert"),
proxy_client_key = Path("/my/client/key"),
+ proxy_exclude = ["www.example.com"],
proxy_peer_certificate = Path("/my/peer/cert"),
proxy_url = "https://my/proxy",
qemu_args = [],