summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/git-annex-S3v4.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/git-annex-S3v4.patch')
-rw-r--r--gnu/packages/patches/git-annex-S3v4.patch77
1 files changed, 77 insertions, 0 deletions
diff --git a/gnu/packages/patches/git-annex-S3v4.patch b/gnu/packages/patches/git-annex-S3v4.patch
new file mode 100644
index 0000000000..9f7cea329e
--- /dev/null
+++ b/gnu/packages/patches/git-annex-S3v4.patch
@@ -0,0 +1,77 @@
+From the upstream commit, with the changes to CHANGELOG and the docs
+folder removed.
+
+From 1532d67c3ecf452b8c86bcc5928525398755cd01 Mon Sep 17 00:00:00 2001
+From: Joey Hess <joeyh@joeyh.name>
+Date: Thu, 7 May 2020 13:18:11 -0400
+Subject: [PATCH] S3: Support signature=v4
+
+To use S3 Signature Version 4. Some S3 services seem to require v4, while
+others may only support v2, which remains the default.
+
+I'm also not sure if v4 works correctly in all cases, there is this
+upstream bug report: https://github.com/aristidb/aws/issues/262
+I've only tested it against the default S3 endpoint.
+---
+ CHANGELOG | 3 +++
+ Remote/S3.hs | 23 ++++++++++++++++++-
+ ..._3bbdf23c8a4a480f4f6b8e8a2f8ddecd._comment | 13 +++++++++++
+ ..._854390b9a781da82ecb85ad85eecad04._comment | 13 +++++++++++
+ doc/special_remotes/S3.mdwn | 4 ++++
+ ..._cf57e8dbd9fdc7c487565b61808b6bb2._comment | 10 ++++++++
+ 6 files changed, 65 insertions(+), 1 deletion(-)
+ create mode 100644 doc/bugs/S3_special_remote_support_for_DigitalOcean_Spaces/comment_2_3bbdf23c8a4a480f4f6b8e8a2f8ddecd._comment
+ create mode 100644 doc/forum/backblaze_s3/comment_1_854390b9a781da82ecb85ad85eecad04._comment
+ create mode 100644 doc/special_remotes/S3/comment_34_cf57e8dbd9fdc7c487565b61808b6bb2._comment
+
+diff --git a/Remote/S3.hs b/Remote/S3.hs
+index cb345d1f8..e3ea492f2 100644
+--- a/Remote/S3.hs
++++ b/Remote/S3.hs
+@@ -99,6 +99,8 @@ remote = specialRemoteType $ RemoteType
+ (FieldDesc "port to connect to")
+ , optionalStringParser requeststyleField
+ (FieldDesc "for path-style requests, set to \"path\"")
++ , signatureVersionParser signatureField
++ (FieldDesc "S3 signature version")
+ , optionalStringParser mungekeysField HiddenField
+ , optionalStringParser AWS.s3credsField HiddenField
+ ]
+@@ -148,6 +150,22 @@ protocolField = Accepted "protocol"
+ requeststyleField :: RemoteConfigField
+ requeststyleField = Accepted "requeststyle"
+
++signatureField :: RemoteConfigField
++signatureField = Accepted "signature"
++
++newtype SignatureVersion = SignatureVersion Int
++
++signatureVersionParser :: RemoteConfigField -> FieldDesc -> RemoteConfigFieldParser
++signatureVersionParser f fd =
++ genParser go f defver fd
++ (Just (ValueDesc "v2 or v4"))
++ where
++ go "v2" = Just (SignatureVersion 2)
++ go "v4" = Just (SignatureVersion 4)
++ go _ = Nothing
++
++ defver = SignatureVersion 2
++
+ portField :: RemoteConfigField
+ portField = Accepted "port"
+
+@@ -877,7 +895,10 @@ s3Configuration c = cfg
+ Nothing
+ | port == 443 -> AWS.HTTPS
+ | otherwise -> AWS.HTTP
+- cfg = S3.s3 proto endpoint False
++ cfg = case getRemoteConfigValue signatureField c of
++ Just (SignatureVersion 4) ->
++ S3.s3v4 proto endpoint False S3.SignWithEffort
++ _ -> S3.s3 proto endpoint False
+
+ data S3Info = S3Info
+ { bucket :: S3.Bucket
+--
+2.26.2
+