summary refs log tree commit diff
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
+