module HNormalise.Shorewall.Json where
import Control.Monad
import Data.Aeson
import Data.Monoid
import HNormalise.Common.Json
import HNormalise.Shorewall.Internal
instance ToJSON ShorewallProtocol where
toJSON TCP = String "TCP"
toJSON UDP = String "UDP"
toJSON ICMP = String "ICMP"
instance ToJSON Shorewall where
toEncoding (Shorewall fwrule fwtarget fwin fwout fwmac fwsrc fwdst fwproto fwspt fwdpt) =
pairs
( "fwrule" .= fwrule
<> "fwtarget" .= fwtarget
<> "fwin" .= fwin
<> case fwout of
Nothing -> mempty
Just f -> "fwout" .= f
<> case fwmac of
Nothing -> mempty
Just m -> "fwmac" .= m
<> "fwsrc" .= fwsrc
<> "fwdst" .= fwdst
<> "fwproto" .= fwproto
<> case fwspt of
Nothing -> mempty
Just p -> "fwspt" .= p
<> case fwdpt of
Nothing -> mempty
Just p -> "fwdst" .= p
)