From 1f328755f5a0f91390a4c7cc0157b4e1fabcb5d9 Mon Sep 17 00:00:00 2001 From: Félix Sipma Date: Tue, 11 Nov 2014 10:42:29 +0100 Subject: Tor: mainConfig, varPath, hidden service by hostname Signed-off-by: Félix Sipma --- src/Propellor/Property/Tor.hs | 32 +++++++++++++++++++------------- 1 file 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" -- cgit v1.2.3