summaryrefslogtreecommitdiff
path: root/Remote/Helper/Tor.hs
blob: e910833621a09f2f8980589558d8132afc565b85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{- Helpers for tor remotes.
 -
 - Copyright 2016 Joey Hess <id@joeyh.name>
 -
 - Licensed under the GNU GPL version 3 or higher.
 -}

module Remote.Helper.Tor where

import Annex.Common
import Remote.Helper.P2P (mkAuthToken, AuthToken)
import Creds
import Utility.Tor
import Utility.Env

import Network.Socket

getTorAuthToken :: OnionAddress -> Annex (Maybe AuthToken)
getTorAuthToken (OnionAddress onionaddress) =
	maybe Nothing mkAuthToken <$> getM id 
		[ liftIO $ getEnv torAuthTokenEnv
		, readCacheCreds onionaddress
		]

torAuthTokenEnv :: String
torAuthTokenEnv = "GIT_ANNEX_TOR_AUTHTOKEN"

torHandle :: Socket -> IO Handle
torHandle s = do
	h <- socketToHandle s ReadWriteMode
	hSetBuffering h LineBuffering
	hSetBinaryMode h False
	fileEncoding h
	return h