This commit is contained in:
voidlizard 2024-10-17 07:01:59 +03:00
parent 9af541b3fc
commit a79aa0030d
2 changed files with 23 additions and 6 deletions

View File

@ -6,6 +6,7 @@ import HBS2.CLI.Run.Internal
import HBS2.Net.Auth.GroupKeySymm
import HBS2.Peer.Proto.Mailbox
import HBS2.Peer.Proto.Mailbox.Policy.Basic
import HBS2.Data.Types.Refs
import HBS2.Hash
@ -102,3 +103,19 @@ mailboxEntries = do
_ -> throwIO (BadFormException @c nil)
entry $ bindMatch "hbs2:mailbox:policy:basic:create:file" $ nil_ \case
[StringLike fn] -> lift do
what <- liftIO (readFile fn)
<&> parseTop
>>= either (error.show) pure
>>= parseBasicPolicy
>>= orThrowUser "invalid policy"
let s = getAsSyntax @C what
liftIO $ print $ vcat (fmap pretty s)
_ -> throwIO (BadFormException @c nil)

View File

@ -29,10 +29,10 @@ data BasicPolicyAction =
data BasicPolicy s =
BasicPolicy
{ bpDefaulPeerAction :: BasicPolicyAction
, bpDefaultSenderAction :: BasicPolicyAction
, bpPeers :: HashMap (PubKey 'Sign s) BasicPolicyAction
, bpSenders :: HashMap (Sender s) BasicPolicyAction
{ bpDefaultPeerAction :: BasicPolicyAction
, bpDefaultSenderAction :: BasicPolicyAction
, bpPeers :: HashMap (PubKey 'Sign s) BasicPolicyAction
, bpSenders :: HashMap (Sender s) BasicPolicyAction
}
deriving stock (Generic)
@ -54,8 +54,8 @@ getAsSyntax BasicPolicy{..} =
, defSenderAction
] <> peerActions <> senderActions
where
defPeerAction = mkList [mkSym "peer", action bpDefaulPeerAction, mkSym "all"]
defSenderAction = mkList [mkSym "sender", action bpDefaulPeerAction, mkSym "all"]
defPeerAction = mkList [mkSym "peer", action bpDefaultPeerAction, mkSym "all"]
defSenderAction = mkList [mkSym "sender", action bpDefaultSenderAction, mkSym "all"]
peerActions = [ mkList [mkSym "peer", action a, mkSym (show $ pretty (AsBase58 who))]
| (who, a) <- HM.toList bpPeers ]