aboutsummaryrefslogtreecommitdiff
path: root/RemoteDaemon/Transport/Tor.hs
diff options
context:
space:
mode:
Diffstat (limited to 'RemoteDaemon/Transport/Tor.hs')
-rw-r--r--RemoteDaemon/Transport/Tor.hs19
1 files changed, 18 insertions, 1 deletions
diff --git a/RemoteDaemon/Transport/Tor.hs b/RemoteDaemon/Transport/Tor.hs
index b0fa3c189..623ff03e3 100644
--- a/RemoteDaemon/Transport/Tor.hs
+++ b/RemoteDaemon/Transport/Tor.hs
@@ -5,7 +5,9 @@
- Licensed under the GNU GPL version 3 or higher.
-}
-module RemoteDaemon.Transport.Tor (server, transport) where
+{-# LANGUAGE CPP #-}
+
+module RemoteDaemon.Transport.Tor (server, transport, torSocketFile) where
import Common
import qualified Annex
@@ -14,6 +16,7 @@ import Annex.ChangedRefs
import RemoteDaemon.Types
import RemoteDaemon.Common
import Utility.AuthToken
+import Utility.Tor
import P2P.Protocol as P2P
import P2P.IO
import P2P.Annex
@@ -30,6 +33,9 @@ import System.Log.Logger (debugM)
import Control.Concurrent.STM
import Control.Concurrent.STM.TBMQueue
import Control.Concurrent.Async
+#ifndef mingw32_HOST_OS
+import System.Posix.User
+#endif
-- Run tor hidden service.
server :: Server
@@ -178,3 +184,14 @@ transport (RemoteRepo r gc) url@(RemoteURI uri) th ichan ochan =
ok <- inLocalRepo th $
runBool [Param "fetch", Param $ Git.repoDescribe r]
send (DONESYNCING url ok)
+
+torSocketFile :: Annex.Annex (Maybe FilePath)
+torSocketFile = do
+ u <- getUUID
+ let ident = fromUUID u
+#ifndef mingw32_HOST_OS
+ uid <- liftIO getRealUserID
+#else
+ let uid = 0
+#endif
+ liftIO $ getHiddenServiceSocketFile torAppName uid ident