mirror of
https://github.com/NixOS/nix.git
synced 2025-11-08 19:46:02 +01:00
* It is tough to contribute to a project that doesn't use a formatter, * It is extra hard to contribute to a project which has configured the formatter, but ignores it for some files * Code formatting makes it harder to hide obscure / weird bugs by accident or on purpose, Let's rip the bandaid off? Note that PRs currently in flight should be able to be merged relatively easily by applying `clang-format` to their tip prior to merge.
50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
#include "nix/cmd/network-proxy.hh"
|
|
|
|
#include <algorithm>
|
|
|
|
#include "nix/util/environment-variables.hh"
|
|
|
|
namespace nix {
|
|
|
|
static const StringSet lowercaseVariables{"http_proxy", "https_proxy", "ftp_proxy", "all_proxy", "no_proxy"};
|
|
|
|
static StringSet getAllVariables()
|
|
{
|
|
StringSet variables = lowercaseVariables;
|
|
for (const auto & variable : lowercaseVariables) {
|
|
std::string upperVariable;
|
|
std::transform(
|
|
variable.begin(), variable.end(), upperVariable.begin(), [](unsigned char c) { return std::toupper(c); });
|
|
variables.insert(std::move(upperVariable));
|
|
}
|
|
return variables;
|
|
}
|
|
|
|
const StringSet networkProxyVariables = getAllVariables();
|
|
|
|
static StringSet getExcludingNoProxyVariables()
|
|
{
|
|
static const StringSet excludeVariables{"no_proxy", "NO_PROXY"};
|
|
StringSet variables;
|
|
std::set_difference(
|
|
networkProxyVariables.begin(),
|
|
networkProxyVariables.end(),
|
|
excludeVariables.begin(),
|
|
excludeVariables.end(),
|
|
std::inserter(variables, variables.begin()));
|
|
return variables;
|
|
}
|
|
|
|
static const StringSet excludingNoProxyVariables = getExcludingNoProxyVariables();
|
|
|
|
bool haveNetworkProxyConnection()
|
|
{
|
|
for (const auto & variable : excludingNoProxyVariables) {
|
|
if (getEnv(variable).has_value()) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
} // namespace nix
|