diff options
| author | Félix Sipma <felix.sipma@no-log.org> | 2016-02-25 17:55:26 +0100 |
|---|---|---|
| committer | Joey Hess <joeyh@joeyh.name> | 2016-02-25 17:20:19 -0400 |
| commit | 3fd1c61d1c526bf68b5e52b638bf68a1af95bc2b (patch) | |
| tree | 6099a3f8cef96f75dbdf76ac71bf35e179d4742d | |
| parent | a447ac06b17beb444c922136c0124c1781f3f63a (diff) | |
add FromTarget class
(cherry picked from commit 226bf3e8230037ad2de38760c962033ab6c64d9f)
| -rw-r--r-- | src/Propellor/Property/Firewall.hs | 67 |
1 files changed, 35 insertions, 32 deletions
diff --git a/src/Propellor/Property/Firewall.hs b/src/Propellor/Property/Firewall.hs index d7a2d9bc..eefc8342 100644 --- a/src/Propellor/Property/Firewall.hs +++ b/src/Propellor/Property/Firewall.hs @@ -94,11 +94,11 @@ toIpTableTable f = ["-t", table, "-j", target] (table, target) = toIpTableTable' f toIpTableTable' :: Table -> (String, String) -toIpTableTable' (Filter target) = ("filter", fromTargetFilter target) -toIpTableTable' (Nat target) = ("nat", fromTargetNat target) -toIpTableTable' (Mangle target) = ("mangle", fromTargetMangle target) -toIpTableTable' (Raw target) = ("raw", fromTargetRaw target) -toIpTableTable' (Security target) = ("security", fromTargetSecurity target) +toIpTableTable' (Filter target) = ("filter", fromTarget target) +toIpTableTable' (Nat target) = ("nat", fromTarget target) +toIpTableTable' (Mangle target) = ("mangle", fromTarget target) +toIpTableTable' (Raw target) = ("raw", fromTarget target) +toIpTableTable' (Security target) = ("security", fromTarget target) data Chain = INPUT | OUTPUT | FORWARD deriving (Eq, Show) @@ -106,49 +106,52 @@ data Chain = INPUT | OUTPUT | FORWARD data TargetFilter = ACCEPT | REJECT | DROP | LOG | FilterCustom String deriving (Eq, Show) -fromTargetFilter :: TargetFilter -> String -fromTargetFilter ACCEPT = "ACCEPT" -fromTargetFilter REJECT = "REJECT" -fromTargetFilter DROP = "DROP" -fromTargetFilter LOG = "LOG" -fromTargetFilter (FilterCustom f) = f +class FromTarget a where + fromTarget :: a -> String + +instance FromTarget TargetFilter where + fromTarget ACCEPT = "ACCEPT" + fromTarget REJECT = "REJECT" + fromTarget DROP = "DROP" + fromTarget LOG = "LOG" + fromTarget (FilterCustom f) = f data TargetNat = NatPREROUTING | NatOUTPUT | NatPOSTROUTING | NatCustom String deriving (Eq, Show) -fromTargetNat :: TargetNat -> String -fromTargetNat NatPREROUTING = "PREROUTING" -fromTargetNat NatOUTPUT = "OUTPUT" -fromTargetNat NatPOSTROUTING = "POSTROUTING" -fromTargetNat (NatCustom f) = f +instance FromTarget TargetNat where + fromTarget NatPREROUTING = "PREROUTING" + fromTarget NatOUTPUT = "OUTPUT" + fromTarget NatPOSTROUTING = "POSTROUTING" + fromTarget (NatCustom f) = f data TargetMangle = ManglePREROUTING | MangleOUTPUT | MangleINPUT | MangleFORWARD | ManglePOSTROUTING | MangleCustom String deriving (Eq, Show) -fromTargetMangle :: TargetMangle -> String -fromTargetMangle ManglePREROUTING = "PREROUTING" -fromTargetMangle MangleOUTPUT = "OUTPUT" -fromTargetMangle MangleINPUT = "INPUT" -fromTargetMangle MangleFORWARD = "FORWARD" -fromTargetMangle ManglePOSTROUTING = "POSTROUTING" -fromTargetMangle (MangleCustom f) = f +instance FromTarget TargetMangle where + fromTarget ManglePREROUTING = "PREROUTING" + fromTarget MangleOUTPUT = "OUTPUT" + fromTarget MangleINPUT = "INPUT" + fromTarget MangleFORWARD = "FORWARD" + fromTarget ManglePOSTROUTING = "POSTROUTING" + fromTarget (MangleCustom f) = f data TargetRaw = RawPREROUTING | RawOUTPUT | RawCustom String deriving (Eq, Show) -fromTargetRaw :: TargetRaw -> String -fromTargetRaw RawPREROUTING = "PREROUTING" -fromTargetRaw RawOUTPUT = "OUTPUT" -fromTargetRaw (RawCustom f) = f +instance FromTarget TargetRaw where + fromTarget RawPREROUTING = "PREROUTING" + fromTarget RawOUTPUT = "OUTPUT" + fromTarget (RawCustom f) = f data TargetSecurity = SecurityINPUT | SecurityOUTPUT | SecurityFORWARD | SecurityCustom String deriving (Eq, Show) -fromTargetSecurity :: TargetSecurity -> String -fromTargetSecurity SecurityINPUT = "INPUT" -fromTargetSecurity SecurityOUTPUT = "OUTPUT" -fromTargetSecurity SecurityFORWARD = "FORWARD" -fromTargetSecurity (SecurityCustom f) = f +instance FromTarget TargetSecurity where + fromTarget SecurityINPUT = "INPUT" + fromTarget SecurityOUTPUT = "OUTPUT" + fromTarget SecurityFORWARD = "FORWARD" + fromTarget (SecurityCustom f) = f data Proto = TCP | UDP | ICMP deriving (Eq, Show) |
