From 01c15153208afc08092fd7c708ab2da85588e0de Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Sat, 22 Jun 2019 19:04:04 -0400 Subject: alter strongswan configured hostname --- lib/Kiki.hs | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'lib') diff --git a/lib/Kiki.hs b/lib/Kiki.hs index c1dd587..2198fb7 100644 --- a/lib/Kiki.hs +++ b/lib/Kiki.hs @@ -510,14 +510,9 @@ refreshCache rt rootdir = do let warn' x = warn x >> return Char8.empty flip (either warn') (pemFromPacket k :: Either String String) $ \pem -> do write (mkpath cpath) pem - case take 1 sshs of - [sshkey] -> do - (_,(sout,serr)) <- runExternal "(f=$(mktemp); cat > \"$f\"; ssh-keygen -l -f \"$f\" | (read _ hash _; echo -n $hash.ssh.cryptonomic.net) | tr -d ':')" - (Just $ sshblobFromPacket sshkey) - -- ssh-keygen -l -f /dev/stdin - -- putStrLn $ "wtf="++show(sout,serr, sshblobFromPacket sshkey) - return $ strongswanForContact addr contactname (Char8.fromChunks [sout]) - [] -> error "fuck." + case sshs of + (sshkey:_) -> strongswanForContact addr contactname <$> sshKeyToHostname sshkey + _ -> error "fuck." return $ Char8.concat bss known_hosts = L.concat $ map getssh onionkeys @@ -558,9 +553,18 @@ refreshCache rt rootdir = do ] ++ filter (not . Char8.null) cons commit +sshKeyToHostname :: Packet -> IO Char8.ByteString +sshKeyToHostname sshkey = do + (_, (sout, _serr)) <- runExternal shellScript (Just $ sshblobFromPacket sshkey) + return $ Char8.fromChunks [sout] + where + shellScript = + "f=$(mktemp) && cat > \"$f\" && ssh-keygen -r _ -f \"$f\" | (read _ _ _ _ _ hash _ && echo -n $hash.ssh.cryptonomic.net)" + +strongswanForContact :: SockAddr -> Char8.ByteString -> Char8.ByteString -> Char8.ByteString strongswanForContact addr oname rightip = Char8.unlines [ "conn " <> oname - , " right=lan." <> rightip + , " right=" <> rightip , " rightsubnet=" <> p (showA addr) <> "/128" , " rightauth=pubkey" , " rightid=" <> p (showA addr) -- cgit v1.2.3