diff --git a/HostProp.hs b/HostProp.hs index 6bef0b2..1db3dcf 100644 --- a/HostProp.hs +++ b/HostProp.hs @@ -4,8 +4,9 @@ import qualified Property.Apt as Apt import qualified Property.Ssh as Ssh import qualified Property.User as User import qualified Property.Hostname as Hostname -import qualified Property.GitHome as GitHome import qualified Property.Reboot as Reboot +import qualified Property.Tor as Tor +import qualified Property.GitHome as GitHome main :: IO () main = ensureProperties . getProperties =<< getHostName @@ -38,6 +39,7 @@ getProperties "clam" = , GitHome.installedFor "joey" -- Clam is a tor bridge. , Apt.installed ["tor"] + , Tor.isBridge -- Should come last as it reboots. , Apt.installed ["systemd-sysv"] `onChange` Reboot.scheduled "+10" ] diff --git a/Property/Tor.hs b/Property/Tor.hs new file mode 100644 index 0000000..bebf076 --- /dev/null +++ b/Property/Tor.hs @@ -0,0 +1,21 @@ +module Property.Tor where + +import Control.Applicative +import Control.Monad +import System.FilePath + +import Property +import Property.User +import Utility.SafeCommand +import Utility.Exception + +isBridge :: Property +isBridge = fileHasContent "/etc/tor/torrc" + [ "SocksPort 0" + , "ORPort 443" + , "BridgeRelay 1" + , "Exitpolicy reject *:*" + ] `onChange` restartTor + +restartTor :: Property +restartTor = cmdProperty "service" [Param "tor", Param "restart"]