propellor spin

This commit is contained in:
Joey Hess 2015-01-22 16:10:22 -04:00
parent 4d34b837d2
commit bbac845900
Failed to extract signature
1 changed files with 20 additions and 16 deletions

View File

@ -3,28 +3,32 @@ module Propellor.Property.Network where
import Propellor
import Propellor.Property.File
type Interface = String
interfaces :: FilePath
interfaces = "/etc/network/interfaces"
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"
-- | 6to4 ipv6 connection, should work anywhere
ipv6to4 :: Property
ipv6to4 = fileProperty "ipv6to4" go interfaces
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
`onChange` ifUp "sit0"
where
go ls
| all (`elem` ls) stanza = ls
| otherwise = ls ++ stanza
stanza =
[ "# Automatically added by propeller"
, "iface sit0 inet6 static"
, "\taddress 2002:5044:5531::1"
, "\tnetmask 64"
, "\tgateway ::192.88.99.1"
, "auto sit0"
, "# End automatically added by propeller"
]
type Interface = String
ifUp :: Interface -> Property
ifUp iface = cmdProperty "ifup" [iface]