Add use-ssh-substituter setting.

It defaults to false and can be overridden by RemoteStore.

Untested currently, just quickly put this together
This commit is contained in:
Shea Levy 2014-02-19 07:05:15 -05:00 committed by Eelco Dolstra
parent 36b90e72d7
commit df5de9dfd7
3 changed files with 17 additions and 0 deletions

View File

@ -111,6 +111,18 @@ void run(Strings args)
if (args.empty()) if (args.empty())
throw UsageError("download-via-ssh requires an argument"); throw UsageError("download-via-ssh requires an argument");
Settings::SettingsMap overrides = settings.getOverrides();
Settings::SettingsMap::iterator use = overrides.find("untrusted-use-ssh-substituter");
if (use != overrides.end()) {
if (use->second == "true") settings.useSshSubstituter = true;
else if (use->second == "false") settings.useSshSubstituter = false;
else throw Error(format("configuration option `use-ssh-substituter' should be either `true' or `false', not `%1%'")
% use->second);
}
if (!settings.useSshSubstituter)
return;
if (settings.sshSubstituterHosts.empty()) if (settings.sshSubstituterHosts.empty())
return; return;

View File

@ -41,6 +41,7 @@ Settings::Settings()
syncBeforeRegistering = false; syncBeforeRegistering = false;
useSubstitutes = true; useSubstitutes = true;
useChroot = false; useChroot = false;
useSshSubstituter = false;
dirsInChroot.insert("/dev"); dirsInChroot.insert("/dev");
dirsInChroot.insert("/dev/pts"); dirsInChroot.insert("/dev/pts");
impersonateLinux26 = false; impersonateLinux26 = false;
@ -153,6 +154,7 @@ void Settings::update()
get(autoOptimiseStore, "auto-optimise-store"); get(autoOptimiseStore, "auto-optimise-store");
get(envKeepDerivations, "env-keep-derivations"); get(envKeepDerivations, "env-keep-derivations");
get(sshSubstituterHosts, "ssh-substituter-hosts"); get(sshSubstituterHosts, "ssh-substituter-hosts");
get(useSshSubstituter, "use-ssh-substituter");
} }

View File

@ -149,6 +149,9 @@ struct Settings {
/* Set of ssh connection strings for the ssh substituter */ /* Set of ssh connection strings for the ssh substituter */
Strings sshSubstituterHosts; Strings sshSubstituterHosts;
/* Whether to use the ssh substituter at all */
bool useSshSubstituter;
/* Whether to impersonate a Linux 2.6 machine on newer kernels. */ /* Whether to impersonate a Linux 2.6 machine on newer kernels. */
bool impersonateLinux26; bool impersonateLinux26;