iptadmin-1.0.0: src/IptAdmin/EditForm/Utils.hs
module IptAdmin.EditForm.Utils where
import Control.Monad.Error
import IptAdmin.EditForm.Class
import IptAdmin.EditForm.Types
import IptAdmin.System
import IptAdmin.Types
import Iptables.Types
import Iptables
nullSelForm :: String -- ^ Table name
-> String -- ^ Chain name
-> IptAdmin PackedEditForm
nullSelForm tableName chainName =
case (tableName, chainName) of
("filter", "INPUT") -> return $ PackedEditForm (nullForm :: FiltInpForm)
("filter", "FORWARD") -> return $ PackedEditForm (nullForm :: FiltForwForm)
("filter", "OUTPUT") -> return $ PackedEditForm (nullForm :: FiltOutForm)
("nat", "PREROUTING") -> return $ PackedEditForm (nullForm :: NatPrerForm)
("nat", "POSTROUTING") -> return $ PackedEditForm (nullForm :: NatPostrForm)
("nat", "OUTPUT") -> return $ PackedEditForm (nullForm :: NatOutForm)
("mangle", "PREROUTING") -> undefined
("mangle", "INPUT") -> undefined
("mangle", "FORWARD") -> undefined
("mangle", "OUTPUT") -> undefined
("mangle", "POSTROUTING") -> undefined
("filter", _) -> return $ PackedEditForm (nullForm :: FiltForwForm)
("nat", a) -> do
iptables <- getIptables
let chainType = guessNatChainType a $ tNat iptables
case chainType of
NatUnknownChain -> return $ PackedEditForm (nullForm :: NatUserForm)
NatInvalidChain -> return $ PackedEditForm (nullForm :: NatUserForm)
NatDNatChain -> return $ PackedEditForm (nullForm :: NatPrerForm)
NatSNatChain -> return $ PackedEditForm (nullForm :: NatPostrForm)
("mangle", a) -> undefined a
(a,_) -> throwError $ "unknown table " ++ a
httpInputToSelForm :: String -- ^ Table name
-> String -- ^ Chain name
-> IptAdmin PackedEditForm
httpInputToSelForm tableName chainName =
case (tableName, chainName) of
("filter", "INPUT") -> fmap PackedEditForm (httpInputToForm :: IptAdmin FiltInpForm)
("filter", "FORWARD") -> fmap PackedEditForm (httpInputToForm :: IptAdmin FiltForwForm)
("filter", "OUTPUT") -> fmap PackedEditForm (httpInputToForm :: IptAdmin FiltOutForm)
("nat", "PREROUTING") -> fmap PackedEditForm (httpInputToForm :: IptAdmin NatPrerForm)
("nat", "POSTROUTING") -> fmap PackedEditForm (httpInputToForm :: IptAdmin NatPostrForm)
("nat", "OUTPUT") -> fmap PackedEditForm (httpInputToForm :: IptAdmin NatOutForm)
("mangle", "PREROUTING") -> undefined
("mangle", "INPUT") -> undefined
("mangle", "FORWARD") -> undefined
("mangle", "OUTPUT") -> undefined
("mangle", "POSTROUTING") -> undefined
("filter", _) -> fmap PackedEditForm (httpInputToForm :: IptAdmin FiltForwForm)
("nat", a) -> do
iptables <- getIptables
let chainType = guessNatChainType a $ tNat iptables
case chainType of
NatUnknownChain -> fmap PackedEditForm (httpInputToForm :: IptAdmin NatUserForm)
NatInvalidChain -> fmap PackedEditForm (httpInputToForm :: IptAdmin NatUserForm)
NatDNatChain -> fmap PackedEditForm (httpInputToForm :: IptAdmin NatPrerForm)
NatSNatChain -> fmap PackedEditForm (httpInputToForm :: IptAdmin NatPostrForm)
("mangle", a) -> undefined a
(a,_) -> throwError $ "unknown table " ++ a
ruleToSelForm :: Rule -- ^ Rule to convert
-> String -- ^ Table name
-> String -- ^ Chain name
-> IptAdmin PackedEditForm
ruleToSelForm rule tableName chainName =
case (tableName, chainName) of
("filter", "INPUT") -> fmap PackedEditForm (ruleToFormParams rule :: IptAdmin FiltInpForm)
("filter", "FORWARD") -> fmap PackedEditForm (ruleToFormParams rule :: IptAdmin FiltForwForm)
("filter", "OUTPUT") -> fmap PackedEditForm (ruleToFormParams rule :: IptAdmin FiltOutForm)
("nat", "PREROUTING") -> fmap PackedEditForm (ruleToFormParams rule :: IptAdmin NatPrerForm)
("nat", "POSTROUTING") -> fmap PackedEditForm (ruleToFormParams rule :: IptAdmin NatPostrForm)
("nat", "OUTPUT") -> fmap PackedEditForm (ruleToFormParams rule :: IptAdmin NatOutForm)
("mangle", "PREROUTING") -> undefined
("mangle", "INPUT") -> undefined
("mangle", "FORWARD") -> undefined
("mangle", "OUTPUT") -> undefined
("mangle", "POSTROUTING") -> undefined
("filter", _) -> fmap PackedEditForm (ruleToFormParams rule :: IptAdmin FiltForwForm)
("nat", a) -> do
iptables <- getIptables
let chainType = guessNatChainType a $ tNat iptables
case chainType of
NatUnknownChain -> fmap PackedEditForm (ruleToFormParams rule :: IptAdmin NatUserForm)
NatInvalidChain -> fmap PackedEditForm (ruleToFormParams rule :: IptAdmin NatUserForm)
NatDNatChain -> fmap PackedEditForm (ruleToFormParams rule :: IptAdmin NatPrerForm)
NatSNatChain -> fmap PackedEditForm (ruleToFormParams rule :: IptAdmin NatPostrForm)
("mangle", a) -> undefined a
(a,_) -> throwError $ "unknown table " ++ a