propellor/src/Propellor/Property/Network.hs

35 lines
880 B
Haskell
Raw Normal View History

2014-03-31 03:37:54 +00:00
module Propellor.Property.Network where
2014-03-31 02:53:52 +00:00
2014-03-31 03:55:59 +00:00
import Propellor
2014-03-31 03:37:54 +00:00
import Propellor.Property.File
2014-03-31 02:53:52 +00:00
2015-01-22 20:10:22 +00:00
type Interface = String
2014-03-31 02:53:52 +00:00
interfaces :: FilePath
interfaces = "/etc/network/interfaces"
2015-01-22 20:10:22 +00:00
interfaceFile :: Interface -> FilePath
interfaceFile iface = "/etc/network/interfaces.d" </> iface
-- | Enable source-directory interfaces.d
interfacesD :: Property
interfacesD = containsLine interfaces "source-directory interfaces.d"
`describe` "interfaces.d directory enabled"
2014-03-31 03:37:54 +00:00
-- | 6to4 ipv6 connection, should work anywhere
2014-03-31 02:53:52 +00:00
ipv6to4 :: Property
2015-01-22 20:10:22 +00:00
ipv6to4 = hasContent (interfaceFile "sit0")
[ "# Automatically added by propeller"
, "iface sit0 inet6 static"
, "\taddress 2002:5044:5531::1"
, "\tnetmask 64"
, "\tgateway ::192.88.99.1"
, "auto sit0"
]
`describe` "ipv6to4"
`requires` interfacesD
2014-03-31 02:53:52 +00:00
`onChange` ifUp "sit0"
2014-04-03 06:27:17 +00:00
ifUp :: Interface -> Property
2014-03-31 03:55:59 +00:00
ifUp iface = cmdProperty "ifup" [iface]