summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess2014-03-30 00:38:16 -0400
committerJoey Hess2014-03-30 00:38:16 -0400
commitf8c8be2079873fefcb6e24f47e9573a08d207dc0 (patch)
tree8ae8388ff352a66345192d42a9da8464a2e20148
parent38e626da7fa0db62c16dee4eb783fff2ce952378 (diff)
tor bridge
-rw-r--r--HostProp.hs4
-rw-r--r--Property/Tor.hs21
2 files changed, 24 insertions, 1 deletions
diff --git a/HostProp.hs b/HostProp.hs
index 6bef0b25..1db3dcf9 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 00000000..bebf0763
--- /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"]