summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess2014-11-10 16:22:49 -0400
committerJoey Hess2014-11-10 16:22:49 -0400
commit3145346fb85ba654d11ef1fa9b616c0c1053c0a8 (patch)
tree2efe5cff83d687728a0f557b61f8eb781eb717f4
parente0a47a59d965c06be9f5985db8b9234b5544ca33 (diff)
parent929d26d556a4fbeb58723e451c7bf1e3887bb9d6 (diff)
Merge branch 'joeyconfig'
-rw-r--r--debian/changelog1
-rw-r--r--src/Propellor/Property/Tor.hs23
2 files changed, 24 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index f53888b6..c87ec6e1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
propellor (0.9.3) UNRELEASED; urgency=medium
* Added prosody module, contributed by Félix Sipma.
+ * Can be used to configure tor hidden services. Thanks, Félix Sipma.
-- Joey Hess <joeyh@debian.org> Mon, 10 Nov 2014 11:15:27 -0400
diff --git a/src/Propellor/Property/Tor.hs b/src/Propellor/Property/Tor.hs
index 409bb63e..47cd83a2 100644
--- a/src/Propellor/Property/Tor.hs
+++ b/src/Propellor/Property/Tor.hs
@@ -16,5 +16,28 @@ isBridge = setup `requires` Apt.installed ["tor"]
, "Exitpolicy reject *:*"
] `onChange` restarted
+hiddenServiceAvailable :: FilePath -> Int -> Property
+hiddenServiceAvailable dir port = hiddenServiceHostName prop
+ where
+ prop = "/etc/tor/torrc" `File.containsLines`
+ [ "HiddenServiceDir " ++ dir
+ , "HiddenServicePort " ++ show port ++ " 127.0.0.1:" ++ show port
+ ]
+ `describe` "hidden service available"
+ `onChange` Service.reloaded "tor"
+ hiddenServiceHostName p = adjustProperty p $ \satisfy -> do
+ r <- satisfy
+ h <- liftIO $ readFile (dir </> "hostname")
+ warningMessage $ unlines ["hidden service hostname:", h]
+ return r
+
+hiddenService :: FilePath -> Int -> Property
+hiddenService dir port = "/etc/tor/torrc" `File.containsLines`
+ [ "HiddenServiceDir " ++ dir
+ , "HiddenServicePort " ++ show port ++ " 127.0.0.1:" ++ show port
+ ]
+ `describe` ("hidden service (" ++ dir ++ " " ++ show port ++ ") available")
+ `onChange` Service.reloaded "tor"
+
restarted :: Property
restarted = Service.restarted "tor"