{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} 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 )