From 3e1b3917eeda5367c6065d3046fdd9fb7ad9d79a Mon Sep 17 00:00:00 2001 From: Dmitry Zuikov Date: Mon, 17 Jul 2023 13:51:29 +0300 Subject: [PATCH] wip, receiving accept message --- hbs2-core/lib/HBS2/Net/Proto/RefChan.hs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/hbs2-core/lib/HBS2/Net/Proto/RefChan.hs b/hbs2-core/lib/HBS2/Net/Proto/RefChan.hs index 3c9e743d..f40016ca 100644 --- a/hbs2-core/lib/HBS2/Net/Proto/RefChan.hs +++ b/hbs2-core/lib/HBS2/Net/Proto/RefChan.hs @@ -250,6 +250,9 @@ refChanUpdateProto self pc adapter msg = do sto <- getStorage + let pk = view peerSignPk pc + let sk = view peerSignSk pc + void $ runMaybeT do guard (auth || self) @@ -309,7 +312,6 @@ refChanUpdateProto self pc adapter msg = do -- теперь достаём голову headBlock <- MaybeT $ getActualRefChanHead @e refchanKey - let pips = view refChanHeadPeers headBlock let aus = view refChanHeadAuthors headBlock @@ -325,10 +327,16 @@ refChanUpdateProto self pc adapter msg = do lift $ gossip msg - let tran = AcceptTran headRef (HashRef hash) + -- FIXME: check-if-we-authorized + -- проверить, что мы вообще авторизованы + -- рассылать ACCEPT - let pk = view peerSignPk pc - let sk = view peerSignSk pc + guard ( pk `HashMap.member` pips ) + + -- если нет - то и всё, просто перешлём + -- по госсипу исходную транзу + + let tran = AcceptTran headRef (HashRef hash) -- -- генерируем Accept let accept = Accept chan (makeSignedBox @e pk sk tran) @@ -344,6 +352,13 @@ refChanUpdateProto self pc adapter msg = do guard =<< lift (refChanHeadSubscribed adapter chan) debug "RefChanUpdate/ACCEPT" + -- TODO: implement-accept + -- проверяем подпись пира + -- смотрим, что такая транза у нас вообще есть + -- смотрим, что она валидна (голова совпадает, права совпадают) + -- если да и всё ок - то считаем, сколько у нас accept-ов + -- получено (где? в базе? в сессии?) + where proto = Proxy @(RefChanUpdate e)