From b908967ac4de7ea2d25ccb0646c4f9638a6b3fd2 Mon Sep 17 00:00:00 2001 From: Aaron Greenspan Date: Thu, 14 Jan 2021 17:23:00 -0700 Subject: [PATCH] agent: fetches server ack for v0 response --- agent/src/Handler/Types/V0/Base.hs | 2 ++ agent/src/Handler/V0.hs | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/agent/src/Handler/Types/V0/Base.hs b/agent/src/Handler/Types/V0/Base.hs index d4fda857a..5e84d8c55 100644 --- a/agent/src/Handler/Types/V0/Base.hs +++ b/agent/src/Handler/Types/V0/Base.hs @@ -36,6 +36,7 @@ data ServerRes = ServerRes , serverSsh :: [SshKeyFingerprint] , serverAlternativeRegistryUrl :: Maybe Text , serverSpecs :: SpecsRes + , serverWelcomeAck :: Bool } deriving (Eq, Show) @@ -57,6 +58,7 @@ instance ToJSON ServerRes where , "ssh" .= serverSsh , "alternativeRegistryUrl" .= serverAlternativeRegistryUrl , "specs" .= serverSpecs + , "welcomeAck" .= serverWelcomeAck ] instance ToTypedContent ServerRes where toTypedContent = toTypedContent . toJSON diff --git a/agent/src/Handler/V0.hs b/agent/src/Handler/V0.hs index abb72feec..aab2da4da 100644 --- a/agent/src/Handler/V0.hs +++ b/agent/src/Handler/V0.hs @@ -8,7 +8,7 @@ import Control.Carrier.Lift ( runM ) import Data.Aeson import Data.IORef import qualified Data.Text as T -import Database.Persist +import Database.Persist as Persist import Yesod.Core.Handler import Yesod.Persist.Core import Yesod.Core.Json @@ -56,6 +56,8 @@ getServerR = handleS9ErrT $ do ssh <- readFromPath settings sshKeysFilePath >>= parseSshKeys wifi <- WpaSupplicant.runWlan0 $ liftA2 WifiList WpaSupplicant.getCurrentNetwork WpaSupplicant.listNetworks specs <- getSpecs settings + welcomeAck <- fmap isJust . lift . runDB . Persist.get $ WelcomeAckKey agentVersion + let sid = T.drop 7 $ specsNetworkId specs jsonEncode ServerRes { serverId = specsNetworkId specs @@ -68,6 +70,7 @@ getServerR = handleS9ErrT $ do , serverSsh = ssh , serverAlternativeRegistryUrl = alternativeRegistryUrl , serverSpecs = specs + , serverWelcomeAck = welcomeAck } where parseSshKeys :: Text -> S9ErrT Handler [SshKeyFingerprint]