propellor spin
This commit is contained in:
parent
4d34b837d2
commit
bbac845900
|
@ -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]
|
||||
|
|
Loading…
Reference in New Issue