From 967a0d82dd84a2adfabe702d8ca030d30f8079b5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 12 Apr 2014 21:43:30 -0400 Subject: propellor spin --- Propellor/Property/Ssh.hs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'Propellor/Property/Ssh.hs') diff --git a/Propellor/Property/Ssh.hs b/Propellor/Property/Ssh.hs index 42809359..51649fd9 100644 --- a/Propellor/Property/Ssh.hs +++ b/Propellor/Property/Ssh.hs @@ -66,22 +66,24 @@ uniqueHostKeys = flagFile prop "/etc/ssh/.unique_host_keys" ["configure"] -- | Sets up a user with a ssh private key from the site's privdata. --- --- The ssh public key (.pub) is not installed. Ssh does not use it. keyImported :: SshKeyType -> UserName -> Property -keyImported keytype user = Property desc install +keyImported keytype user = propertyList desc + [ Property desc (install (SshPubKey keytype user) ".pub") + , Property desc (install (SshPrivKey keytype user) "") + ] where desc = user ++ " has ssh key" - install = do - f <- liftIO keyfile + install p ext = do + f <- liftIO $ keyfile ext ifM (liftIO $ doesFileExist f) ( noChange - , withPrivData (SshKey keytype user) $ \key -> makeChange $ + , withPrivData p $ \key -> makeChange $ writeFileProtected f key ) - keyfile = do + keyfile ext = do home <- homeDirectory <$> getUserEntryForName user - return $ home ".ssh" "id_" ++ - case keytype of + return $ home ".ssh" "id_" + ++ case keytype of SshRsa -> "rsa" SshDsa -> "dsa" + ++ ext -- cgit v1.2.3