From 3368bdd0a18a58f10fbec8880562ad63b85bcfd5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 30 Mar 2014 00:28:56 -0400 Subject: [PATCH] improvements --- HostProp.hs | 18 ++++++++++++------ Property.hs | 4 +--- Property/Hostname.hs | 6 +++++- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/HostProp.hs b/HostProp.hs index 5eb060b..6bef0b2 100644 --- a/HostProp.hs +++ b/HostProp.hs @@ -15,24 +15,30 @@ main = ensureProperties . getProperties =<< getHostName - Properties for that system. -} getProperties :: HostName -> [Property] getProperties "clam" = - [ Apt.stdSourcesList Apt.Unstable `onChange` Apt.upgrade - , Apt.installed ["etckeeper"] + -- Clean up the system as installed by cloudatcost.com + [ User.nuked "user" + , Apt.removed ["exim4"] `onChange` Apt.autoRemove , Hostname.set "clam.kitenet.net" - , Apt.installed ["ssh"] , Ssh.uniqueHostKeys + -- This is my standard system setup + , Apt.stdSourcesList Apt.Unstable `onChange` Apt.upgrade + , Apt.installed ["etckeeper"] + , Apt.installed ["ssh"] , Apt.installed ["git", "myrepos"] , GitHome.installedFor "root" + -- Harden the system, but only once root's authorized_keys + -- is safely in place. , check (Ssh.hasAuthorizedKeys "root") $ Ssh.passwordAuthentication False , check (Ssh.hasAuthorizedKeys "root") $ User.lockedPassword "root" , User.nonsystem "joey" - , User.nuked "user" , Apt.installed ["sudo"] - , lineInfFile "/etc/sudoers" "joey ALL=(ALL:ALL) ALL" + , lineInFile "/etc/sudoers" "joey ALL=(ALL:ALL) ALL" , GitHome.installedFor "joey" - , Apt.removed ["exim4"] `onChange` Apt.autoRemove + -- Clam is a tor bridge. , Apt.installed ["tor"] + -- Should come last as it reboots. , Apt.installed ["systemd-sysv"] `onChange` Reboot.scheduled "+10" ] -- add more hosts here... diff --git a/Property.hs b/Property.hs index ded40c4..3243d27 100644 --- a/Property.hs +++ b/Property.hs @@ -5,7 +5,6 @@ import Control.Applicative import Control.Monad import System.Console.ANSI import System.Exit -import System.IO import Utility.Tmp import Utility.Exception @@ -75,9 +74,8 @@ ensureProperties ps = do where ensure [] rs = return rs ensure (l:ls) rs = do - putStr $ propertyDesc l ++ "... " - hFlush stdout r <- ensureProperty l + putStr $ propertyDesc l ++ "... " case r of FailedChange -> do setSGR [SetColor Foreground Vivid Red] diff --git a/Property/Hostname.hs b/Property/Hostname.hs index 03293eb..0529d21 100644 --- a/Property/Hostname.hs +++ b/Property/Hostname.hs @@ -1,8 +1,12 @@ module Property.Hostname where import Property +import Utility.SafeCommand type HostName = String set :: HostName -> Property -set hostname = fileHasContent "/etc/hostname" [hostname] +set hostname = combineProperties ("hostname " ++ hostname) + [ fileHasContent "/etc/hostname" [hostname] + , cmdProperty "hostname" [Param hostname] + ]