summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-12-30 12:31:17 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-12-30 12:31:17 -0400
commitc532deba4a8020a8e777eaa6e205133c8c169c4a (patch)
tree610568e8eb5fb5661a5c2638d309d1fa13aff746
parent7cea120676d0315d8cf318f54aa64bfa621e0d5a (diff)
refactor
-rw-r--r--Command/EnableTor.hs7
-rw-r--r--P2P/Annex.hs16
-rw-r--r--RemoteDaemon/Transport/Tor.hs6
3 files changed, 19 insertions, 10 deletions
diff --git a/Command/EnableTor.hs b/Command/EnableTor.hs
index 27e57d649..7af627725 100644
--- a/Command/EnableTor.hs
+++ b/Command/EnableTor.hs
@@ -12,6 +12,7 @@ module Command.EnableTor where
import Command
import qualified Annex
import P2P.Address
+import P2P.Annex
import Utility.Tor
import Annex.UUID
import Config.Files
@@ -105,10 +106,8 @@ checkHiddenService = bracket setup cleanup go
startlistener = do
r <- Annex.gitRepo
u <- getUUID
- uid <- liftIO getRealUserID
- let ident = fromUUID u
- v <- liftIO $ getHiddenServiceSocketFile torAppName uid ident
- case v of
+ msock <- torSocketFile
+ case msock of
Just sockfile -> ifM (liftIO $ haslistener sockfile)
( liftIO $ async $ return ()
, liftIO $ async $ runlistener sockfile u r
diff --git a/P2P/Annex.hs b/P2P/Annex.hs
index 9971762f5..b7372fd4d 100644
--- a/P2P/Annex.hs
+++ b/P2P/Annex.hs
@@ -5,25 +5,32 @@
- Licensed under the GNU GPL version 3 or higher.
-}
-{-# LANGUAGE RankNTypes, FlexibleContexts #-}
+{-# LANGUAGE RankNTypes, FlexibleContexts, CPP #-}
module P2P.Annex
( RunMode(..)
, P2PConnection(..)
, runFullProto
+ , torSocketFile
) where
import Annex.Common
import Annex.Content
import Annex.Transfer
import Annex.ChangedRefs
+import P2P.Address
import P2P.Protocol
import P2P.IO
import Logs.Location
import Types.NumCopies
import Utility.Metered
+import Utility.Tor
+import Annex.UUID
import Control.Monad.Free
+#ifndef mingw32_HOST_OS
+import System.Posix.User
+#endif
data RunMode
= Serving UUID (Maybe ChangedRefsHandle)
@@ -152,3 +159,10 @@ runLocal runmode runner a = case a of
liftIO $ hSeek h AbsoluteSeek o
b <- liftIO $ hGetContentsMetered h p'
runner (sender b)
+
+torSocketFile :: Annex (Maybe FilePath)
+torSocketFile = do
+ u <- getUUID
+ uid <- liftIO getRealUserID
+ let ident = fromUUID u
+ liftIO $ getHiddenServiceSocketFile torAppName uid ident
diff --git a/RemoteDaemon/Transport/Tor.hs b/RemoteDaemon/Transport/Tor.hs
index 2a2ceccca..afa249b33 100644
--- a/RemoteDaemon/Transport/Tor.hs
+++ b/RemoteDaemon/Transport/Tor.hs
@@ -13,7 +13,6 @@ import Annex.Concurrent
import Annex.ChangedRefs
import RemoteDaemon.Types
import RemoteDaemon.Common
-import Utility.Tor
import Utility.AuthToken
import P2P.Protocol as P2P
import P2P.IO
@@ -26,7 +25,6 @@ import Messages
import Git
import Git.Command
-import System.PosixCompat.User
import Control.Concurrent
import System.Log.Logger (debugM)
import Control.Concurrent.STM
@@ -41,9 +39,7 @@ server ichan th@(TransportHandle (LocalRepo r) _) = go
checkstartservice = do
u <- liftAnnex th getUUID
- uid <- getRealUserID
- let ident = fromUUID u
- msock <- getHiddenServiceSocketFile torAppName uid ident
+ msock <- liftAnnex th torSocketFile
case msock of
Nothing -> do
debugM "remotedaemon" "Tor hidden service not enabled"