unified AuthToken type between webapp and tor
This commit is contained in:
parent
57a9484fbc
commit
af4d919793
10 changed files with 120 additions and 45 deletions
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue