2014-03-30 03:10:52 +00:00
|
|
|
import Property
|
2014-03-30 04:08:02 +00:00
|
|
|
import HostName
|
2014-03-30 03:10:52 +00:00
|
|
|
import qualified Property.Apt as Apt
|
|
|
|
import qualified Property.Ssh as Ssh
|
|
|
|
import qualified Property.User as User
|
2014-03-30 03:45:48 +00:00
|
|
|
import qualified Property.Hostname as Hostname
|
2014-03-30 03:10:52 +00:00
|
|
|
import qualified Property.GitHome as GitHome
|
2014-03-30 03:24:40 +00:00
|
|
|
import qualified Property.Reboot as Reboot
|
2014-03-30 03:10:52 +00:00
|
|
|
|
2014-03-30 04:08:02 +00:00
|
|
|
main :: IO ()
|
|
|
|
main = ensureProperties . getProperties =<< getHostName
|
|
|
|
|
|
|
|
{- This is where the system's HostName, either as returned by uname
|
|
|
|
- or one specified on the command line is converted into a list of
|
|
|
|
- Properties for that system. -}
|
|
|
|
getProperties :: HostName -> [Property]
|
|
|
|
getProperties "clam" =
|
2014-03-30 03:10:52 +00:00
|
|
|
[ Apt.stdSourcesList Apt.Unstable `onChange` Apt.upgrade
|
|
|
|
, Apt.installed ["etckeeper"]
|
2014-03-30 03:45:48 +00:00
|
|
|
, Hostname.set "clam.kitenet.net"
|
2014-03-30 03:10:52 +00:00
|
|
|
, Apt.installed ["ssh"]
|
2014-03-30 03:45:48 +00:00
|
|
|
, Ssh.uniqueHostKeys
|
2014-03-30 03:10:52 +00:00
|
|
|
, Apt.installed ["git", "myrepos"]
|
2014-03-30 03:24:40 +00:00
|
|
|
, GitHome.installedFor "root"
|
2014-03-30 03:10:52 +00:00
|
|
|
, check (Ssh.hasAuthorizedKeys "root") $
|
|
|
|
Ssh.passwordAuthentication False
|
2014-03-30 04:17:44 +00:00
|
|
|
, check (Ssh.hasAuthorizedKeys "root") $
|
|
|
|
User.lockedPassword "root"
|
2014-03-30 03:10:52 +00:00
|
|
|
, User.nonsystem "joey"
|
2014-03-30 04:17:44 +00:00
|
|
|
, User.nuked "user"
|
2014-03-30 03:24:40 +00:00
|
|
|
, Apt.installed ["sudo"]
|
2014-03-30 03:10:52 +00:00
|
|
|
, fileHasContent "/etc/sudoers" ["joey ALL=(ALL:ALL) ALL"]
|
2014-03-30 03:24:40 +00:00
|
|
|
, GitHome.installedFor "joey"
|
2014-03-30 03:10:52 +00:00
|
|
|
, Apt.removed ["exim4"] `onChange` Apt.autoRemove
|
|
|
|
, Apt.installed ["tor"]
|
2014-03-30 03:24:40 +00:00
|
|
|
, Apt.installed ["systemd-sysv"] `onChange` Reboot.scheduled "+10"
|
2014-03-30 03:10:52 +00:00
|
|
|
]
|
2014-03-30 04:08:02 +00:00
|
|
|
-- add more hosts here...
|
|
|
|
--getProperties "foo" =
|
|
|
|
getProperties h = error $ "Unknown host: " ++ h ++ " (perhaps you should specify the real hostname on the command line?)"
|