summaryrefslogtreecommitdiff
path: root/src/Propellor/Property/Firewall.hs
diff options
context:
space:
mode:
authorFĂ©lix Sipma2016-02-25 17:55:26 +0100
committerJoey Hess2016-02-25 17:20:19 -0400
commit3fd1c61d1c526bf68b5e52b638bf68a1af95bc2b (patch)
tree6099a3f8cef96f75dbdf76ac71bf35e179d4742d /src/Propellor/Property/Firewall.hs
parenta447ac06b17beb444c922136c0124c1781f3f63a (diff)
add FromTarget class
(cherry picked from commit 226bf3e8230037ad2de38760c962033ab6c64d9f)
Diffstat (limited to 'src/Propellor/Property/Firewall.hs')
-rw-r--r--src/Propellor/Property/Firewall.hs67
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)