From df5de9dfd72f9dc3d57157d0496443732a517491 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Wed, 19 Feb 2014 07:05:15 -0500 Subject: [PATCH] Add use-ssh-substituter setting. It defaults to false and can be overridden by RemoteStore. Untested currently, just quickly put this together --- src/download-via-ssh/download-via-ssh.cc | 12 ++++++++++++ src/libstore/globals.cc | 2 ++ src/libstore/globals.hh | 3 +++ 3 files changed, 17 insertions(+) diff --git a/src/download-via-ssh/download-via-ssh.cc b/src/download-via-ssh/download-via-ssh.cc index 6361e71e99..b5350f9984 100644 --- a/src/download-via-ssh/download-via-ssh.cc +++ b/src/download-via-ssh/download-via-ssh.cc @@ -111,6 +111,18 @@ void run(Strings args) if (args.empty()) 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()) return; diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc index 40000c9db5..f9007775a1 100644 --- a/src/libstore/globals.cc +++ b/src/libstore/globals.cc @@ -41,6 +41,7 @@ Settings::Settings() syncBeforeRegistering = false; useSubstitutes = true; useChroot = false; + useSshSubstituter = false; dirsInChroot.insert("/dev"); dirsInChroot.insert("/dev/pts"); impersonateLinux26 = false; @@ -153,6 +154,7 @@ void Settings::update() get(autoOptimiseStore, "auto-optimise-store"); get(envKeepDerivations, "env-keep-derivations"); get(sshSubstituterHosts, "ssh-substituter-hosts"); + get(useSshSubstituter, "use-ssh-substituter"); } diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh index 31324478b6..711c365294 100644 --- a/src/libstore/globals.hh +++ b/src/libstore/globals.hh @@ -149,6 +149,9 @@ struct Settings { /* Set of ssh connection strings for the ssh substituter */ Strings sshSubstituterHosts; + /* Whether to use the ssh substituter at all */ + bool useSshSubstituter; + /* Whether to impersonate a Linux 2.6 machine on newer kernels. */ bool impersonateLinux26;