assistant: Fix ~/.ssh/git-annex-shell wrapper to work when the ssh key does not force a command.
Without a forced command, SSH_ORIGINAL_COMMAND is not set. So instead, in this case, run $@
This commit is contained in:
parent
e5f812c4c3
commit
796f1d806f
3 changed files with 19 additions and 7 deletions
|
@ -15,6 +15,7 @@ import Assistant.Ssh
|
|||
import Locations.UserConfig
|
||||
import Utility.FileMode
|
||||
import Utility.Shell
|
||||
import Utility.TempFile
|
||||
|
||||
#ifdef darwin_HOST_OS
|
||||
import Utility.OSX
|
||||
|
@ -53,21 +54,25 @@ ensureInstalled = go =<< standaloneAppBase
|
|||
installAutoStart program autostartfile
|
||||
|
||||
{- This shim is only updated if it doesn't
|
||||
- already exist with the right content. This
|
||||
- ensures that there's no race where it would have
|
||||
- worked, but is unavailable due to being updated. -}
|
||||
- already exist with the right content. -}
|
||||
sshdir <- sshDir
|
||||
let shim = sshdir </> "git-annex-shell"
|
||||
let runshell var = "exec " ++ base </> "runshell" ++
|
||||
" git-annex-shell -c \"" ++ var ++ "\""
|
||||
let content = unlines
|
||||
[ shebang
|
||||
, "set -e"
|
||||
, "exec", base </> "runshell" ++
|
||||
" git-annex-shell -c \"$SSH_ORIGINAL_COMMAND\""
|
||||
, "if [ \"x$SSH_ORIGINAL_COMMAND\" != \"x\" ]; then"
|
||||
, runshell "$SSH_ORIGINAL_COMMAND"
|
||||
, "else"
|
||||
, runshell "$@"
|
||||
, "fi"
|
||||
]
|
||||
|
||||
curr <- catchDefaultIO "" $ readFileStrict shim
|
||||
when (curr /= content) $ do
|
||||
createDirectoryIfMissing True (parentDir shim)
|
||||
writeFile shim content
|
||||
viaTmp writeFile shim content
|
||||
modifyFileMode shim $ addModes [ownerExecuteMode]
|
||||
|
||||
{- Returns a cleaned up environment that lacks settings used to make the
|
||||
|
|
|
@ -127,8 +127,13 @@ addAuthorizedKeysCommand rsynconly dir pubkey = join "&&"
|
|||
script =
|
||||
[ shebang
|
||||
, "set -e"
|
||||
, "exec git-annex-shell -c \"$SSH_ORIGINAL_COMMAND\""
|
||||
, "if [ \"x$SSH_ORIGINAL_COMMAND\" != \"x\" ]; then"
|
||||
, runshell "$SSH_ORIGINAL_COMMAND"
|
||||
, "else"
|
||||
, runshell "$@"
|
||||
, "fi"
|
||||
]
|
||||
runshell var = "exec git-annex-shell -c \"" ++ var ++ "\""
|
||||
|
||||
authorizedKeysLine :: Bool -> FilePath -> SshPubKey -> String
|
||||
authorizedKeysLine rsynconly dir pubkey
|
||||
|
|
2
debian/changelog
vendored
2
debian/changelog
vendored
|
@ -55,6 +55,8 @@ git-annex (4.20130228) UNRELEASED; urgency=low
|
|||
* assistant: Detects most renames, including directory renames, and
|
||||
combines all their changes into a single commit.
|
||||
* addurl: Add --relaxed option.
|
||||
* assistant: Fix ~/.ssh/git-annex-shell wrapper to work when the
|
||||
ssh key does not force a command.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Wed, 27 Feb 2013 23:20:40 -0400
|
||||
|
||||
|
|
Loading…
Reference in a new issue