add pointer to annex.security.allowed-url-schemes
Sponsored-by: Kevin Mueller on Patreon
This commit is contained in:
parent
5f0cc72303
commit
9905ec19a7
2 changed files with 9 additions and 5 deletions
|
@ -73,6 +73,7 @@ getUrlOptions = Annex.getState Annex.urloptions >>= \case
|
||||||
<*> pure urldownloader
|
<*> pure urldownloader
|
||||||
<*> pure manager
|
<*> pure manager
|
||||||
<*> (annexAllowedUrlSchemes <$> Annex.getGitConfig)
|
<*> (annexAllowedUrlSchemes <$> Annex.getGitConfig)
|
||||||
|
<*> pure (Just (\u -> "Configuration of annex.security.allowed-url-schemes does not allow accessing " ++ show u))
|
||||||
<*> pure U.noBasicAuth
|
<*> pure U.noBasicAuth
|
||||||
|
|
||||||
headers = annexHttpHeadersCommand <$> Annex.getGitConfig >>= \case
|
headers = annexHttpHeadersCommand <$> Annex.getGitConfig >>= \case
|
||||||
|
|
|
@ -97,6 +97,7 @@ data UrlOptions = UrlOptions
|
||||||
, applyRequest :: Request -> Request
|
, applyRequest :: Request -> Request
|
||||||
, httpManager :: Manager
|
, httpManager :: Manager
|
||||||
, allowedSchemes :: S.Set Scheme
|
, allowedSchemes :: S.Set Scheme
|
||||||
|
, disallowedSchemeMessage :: Maybe (URI -> String)
|
||||||
, getBasicAuth :: GetBasicAuth
|
, getBasicAuth :: GetBasicAuth
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,11 +116,12 @@ defUrlOptions = UrlOptions
|
||||||
<*> pure id
|
<*> pure id
|
||||||
<*> newManager tlsManagerSettings
|
<*> newManager tlsManagerSettings
|
||||||
<*> pure (S.fromList $ map mkScheme ["http", "https", "ftp"])
|
<*> pure (S.fromList $ map mkScheme ["http", "https", "ftp"])
|
||||||
|
<*> pure Nothing
|
||||||
<*> pure noBasicAuth
|
<*> pure noBasicAuth
|
||||||
|
|
||||||
mkUrlOptions :: Maybe UserAgent -> Headers -> UrlDownloader -> Manager -> S.Set Scheme -> GetBasicAuth -> UrlOptions
|
mkUrlOptions :: Maybe UserAgent -> Headers -> UrlDownloader -> Manager -> S.Set Scheme -> Maybe (URI -> String) -> GetBasicAuth -> UrlOptions
|
||||||
mkUrlOptions defuseragent reqheaders urldownloader manager getbasicauth =
|
mkUrlOptions defuseragent reqheaders urldownloader =
|
||||||
UrlOptions useragent reqheaders urldownloader applyrequest manager getbasicauth
|
UrlOptions useragent reqheaders urldownloader applyrequest
|
||||||
where
|
where
|
||||||
applyrequest = \r -> r { requestHeaders = requestHeaders r ++ addedheaders }
|
applyrequest = \r -> r { requestHeaders = requestHeaders r ++ addedheaders }
|
||||||
addedheaders = uaheader ++ otherheaders
|
addedheaders = uaheader ++ otherheaders
|
||||||
|
@ -156,8 +158,9 @@ curlParams uo ps = ps ++ uaparams ++ headerparams ++ addedparams ++ schemeparams
|
||||||
checkPolicy :: UrlOptions -> URI -> IO (Either String a) -> IO (Either String a)
|
checkPolicy :: UrlOptions -> URI -> IO (Either String a) -> IO (Either String a)
|
||||||
checkPolicy uo u a
|
checkPolicy uo u a
|
||||||
| allowedScheme uo u = a
|
| allowedScheme uo u = a
|
||||||
| otherwise = return $ Left $
|
| otherwise = return $ Left $ case disallowedSchemeMessage uo of
|
||||||
"Configuration does not allow accessing " ++ show u
|
Nothing -> "Configuration does not allow accessing" ++ show u
|
||||||
|
Just f -> f u
|
||||||
|
|
||||||
unsupportedUrlScheme :: URI -> String
|
unsupportedUrlScheme :: URI -> String
|
||||||
unsupportedUrlScheme u = "Unsupported url scheme " ++ show u
|
unsupportedUrlScheme u = "Unsupported url scheme " ++ show u
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue