summaryrefslogtreecommitdiff
path: root/src/Propellor/Property/Tor.hs
diff options
context:
space:
mode:
authorFélix Sipma2014-11-11 10:42:29 +0100
committerJoey Hess2014-11-11 11:57:38 -0400
commit1f328755f5a0f91390a4c7cc0157b4e1fabcb5d9 (patch)
treef2996e00e3c3c39f52079735387af9737e81d6a2 /src/Propellor/Property/Tor.hs
parent8e974f5641c031b3962bbb5b654f5a6996bc8027 (diff)
Tor: mainConfig, varPath, hidden service by hostname
Signed-off-by: Félix Sipma <felix.sipma@no-log.org>
Diffstat (limited to 'src/Propellor/Property/Tor.hs')
-rw-r--r--src/Propellor/Property/Tor.hs32
1 files changed, 19 insertions, 13 deletions
diff --git a/src/Propellor/Property/Tor.hs b/src/Propellor/Property/Tor.hs
index 3623e9c3..57fbc715 100644
--- a/src/Propellor/Property/Tor.hs
+++ b/src/Propellor/Property/Tor.hs
@@ -9,35 +9,41 @@ isBridge :: Property
isBridge = setup `requires` Apt.installed ["tor"]
`describe` "tor bridge"
where
- setup = "/etc/tor/torrc" `File.hasContent`
+ setup = mainConfig `File.hasContent`
[ "SocksPort 0"
, "ORPort 443"
, "BridgeRelay 1"
, "Exitpolicy reject *:*"
] `onChange` restarted
-hiddenServiceAvailable :: FilePath -> Int -> Property
-hiddenServiceAvailable dir port = hiddenServiceHostName prop
+hiddenServiceAvailable :: HostName -> Int -> Property
+hiddenServiceAvailable hn port = hiddenServiceHostName prop
where
- prop = "/etc/tor/torrc" `File.containsLines`
- [ "HiddenServiceDir " ++ dir
- , "HiddenServicePort " ++ show port ++ " 127.0.0.1:" ++ show port
+ prop = mainConfig `File.containsLines`
+ [ unlines ["HiddenServiceDir", varPath </> hn]
+ , unlines ["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")
+ h <- liftIO $ readFile (varPath </> hn </> "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
+hiddenService :: HostName -> Int -> Property
+hiddenService hn port = mainConfig `File.containsLines`
+ [ unlines ["HiddenServiceDir", varPath </> hn]
+ , unlines ["HiddenServicePort", show port, "127.0.0.1:" ++ show port]
]
- `describe` ("hidden service (" ++ dir ++ " " ++ show port ++ ") available")
- `onChange` Service.reloaded "tor"
+ `describe` unlines ["hidden service available:", hn, show port]
+ `onChange` restarted
restarted :: Property
restarted = Service.restarted "tor"
+
+mainConfig :: FilePath
+mainConfig = "/etc/tor/torrc"
+
+varPath :: FilePath
+varPath = "/var/lib/tor"