unified AuthToken type between webapp and tor

This commit is contained in:
Joey Hess 2016-11-22 14:18:34 -04:00
parent 57a9484fbc
commit af4d919793
No known key found for this signature in database
GPG key ID: C910D9222512E3C7
10 changed files with 120 additions and 45 deletions

View file

@ -12,6 +12,7 @@ module Remote.Helper.P2P where
import qualified Utility.SimpleProtocol as Proto
import Types.Key
import Types.UUID
import Utility.AuthToken
import Utility.Applicative
import Utility.PartialPrelude
@ -23,15 +24,6 @@ import System.Exit (ExitCode(..))
import System.IO
import qualified Data.ByteString.Lazy as L
newtype AuthToken = AuthToken String
deriving (Show)
mkAuthToken :: String -> Maybe AuthToken
mkAuthToken = fmap AuthToken . headMaybe . lines
nullAuthToken :: AuthToken
nullAuthToken = AuthToken ""
newtype Offset = Offset Integer
deriving (Show)
@ -111,10 +103,6 @@ instance Proto.Serializable Len where
serialize (Len n) = show n
deserialize = Len <$$> readish
instance Proto.Serializable AuthToken where
serialize (AuthToken s) = s
deserialize = Just . AuthToken
instance Proto.Serializable Service where
serialize UploadPack = "git-upload-pack"
serialize ReceivePack = "git-receive-pack"

View file

@ -8,19 +8,23 @@
module Remote.Helper.Tor where
import Annex.Common
import Remote.Helper.P2P (mkAuthToken, AuthToken)
import Utility.AuthToken
import Creds
import Utility.Tor
import Utility.Env
import Network.Socket
import qualified Data.Text as T
getTorAuthToken :: OnionAddress -> Annex (Maybe AuthToken)
getTorAuthToken (OnionAddress onionaddress) =
maybe Nothing mkAuthToken <$> getM id
-- 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"