diff options
-rw-r--r-- | CmdLine/GitRemoteTorAnnex.hs | 6 | ||||
-rw-r--r-- | P2P/Auth.hs | 15 | ||||
-rw-r--r-- | Remote/Helper/Tor.hs | 18 | ||||
-rw-r--r-- | doc/git-remote-tor-annex.mdwn | 2 |
4 files changed, 18 insertions, 23 deletions
diff --git a/CmdLine/GitRemoteTorAnnex.hs b/CmdLine/GitRemoteTorAnnex.hs index 3b2dcc050..ea4532ae6 100644 --- a/CmdLine/GitRemoteTorAnnex.hs +++ b/CmdLine/GitRemoteTorAnnex.hs @@ -16,6 +16,8 @@ import Remote.Helper.Tor import Utility.Tor import Utility.AuthToken import Annex.UUID +import P2P.Address +import P2P.Auth run :: [String] -> IO () run (_remotename:address:[]) = forever $ do @@ -54,7 +56,7 @@ connectService address port service = do state <- Annex.new =<< Git.CurrentRepo.get Annex.eval state $ do authtoken <- fromMaybe nullAuthToken - <$> getTorAuthTokenFor address + <$> loadP2PRemoteAuthToken (TorAnnex address port) myuuid <- getUUID g <- Annex.gitRepo h <- liftIO $ torHandle =<< connectHiddenService address port @@ -62,4 +64,4 @@ connectService address port service = do v <- auth myuuid authtoken case v of Just _theiruuid -> connect service stdin stdout - Nothing -> giveup $ "authentication failed, perhaps you need to set " ++ torAuthTokenEnv + Nothing -> giveup $ "authentication failed, perhaps you need to set " ++ p2pAuthTokenEnv diff --git a/P2P/Auth.hs b/P2P/Auth.hs index 2c8465900..0025957c7 100644 --- a/P2P/Auth.hs +++ b/P2P/Auth.hs @@ -12,6 +12,7 @@ import Creds import P2P.Address import Utility.AuthToken import Utility.Tor +import Utility.Env import qualified Data.Text as T @@ -38,9 +39,19 @@ p2pAuthCredsFile :: FilePath p2pAuthCredsFile = "p2pauth" -- | Loads the AuthToken to use when connecting with a given P2P address. +-- +-- It's loaded from the first line of the creds file, but +-- GIT_ANNEX_P2P_AUTHTOKEN overrides. loadP2PRemoteAuthToken :: P2PAddress -> Annex (Maybe AuthToken) -loadP2PRemoteAuthToken addr = maybe Nothing (toAuthToken . T.pack) - <$> readCacheCreds (addressCredsFile addr) +loadP2PRemoteAuthToken addr = maybe Nothing mk <$> getM id + [ liftIO $ getEnv "GIT_ANNEX_P2P_AUTHTOKEN" + , readCacheCreds (addressCredsFile addr) + ] + where + mk = toAuthToken . T.pack . takeWhile (/= '\n') + +p2pAuthTokenEnv :: String +p2pAuthTokenEnv = "GIT_ANNEX_P2P_AUTHTOKEN" -- | Stores the AuthToken o use when connecting with a given P2P address. storeP2PRemoteAuthToken :: P2PAddress -> AuthToken -> Annex () diff --git a/Remote/Helper/Tor.hs b/Remote/Helper/Tor.hs index 25d192023..b5a819c3b 100644 --- a/Remote/Helper/Tor.hs +++ b/Remote/Helper/Tor.hs @@ -8,26 +8,8 @@ module Remote.Helper.Tor where import Annex.Common -import Utility.AuthToken -import Creds -import Utility.Tor -import Utility.Env import Network.Socket -import qualified Data.Text as T - --- Read the first line of the creds file. Environment variable overrides. -getTorAuthTokenFor :: OnionAddress -> Annex (Maybe AuthToken) -getTorAuthTokenFor (OnionAddress onionaddress) = - maybe Nothing mk <$> getM id - [ liftIO $ getEnv torAuthTokenEnv - , readCacheCreds onionaddress - ] - where - mk = toAuthToken . T.pack . takeWhile (/= '\n') - -torAuthTokenEnv :: String -torAuthTokenEnv = "GIT_ANNEX_TOR_AUTHTOKEN" torHandle :: Socket -> IO Handle torHandle s = do diff --git a/doc/git-remote-tor-annex.mdwn b/doc/git-remote-tor-annex.mdwn index 63b459ed8..4e41de877 100644 --- a/doc/git-remote-tor-annex.mdwn +++ b/doc/git-remote-tor-annex.mdwn @@ -15,7 +15,7 @@ over tor(1), communicating with a tor hidden service. The tor hidden service probably requires an authtoken to use it. The authtoken can be provided in the environment variable -`GIT_ANNEX_TOR_AUTHTOKEN`. Or, if there is a file in +`GIT_ANNEX_P2P_AUTHTOKEN`. Or, if there is a file in `.git/annex/creds/` matching the onion address of the hidden service, its first line is used as the authtoken. |