summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.jgit.lfs.server/resources/org/eclipse/jgit/lfs/server/internal/LfsServerText.properties1
-rw-r--r--org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/internal/LfsServerText.java1
-rw-r--r--org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Config.java49
-rw-r--r--org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Repository.java6
4 files changed, 53 insertions, 4 deletions
diff --git a/org.eclipse.jgit.lfs.server/resources/org/eclipse/jgit/lfs/server/internal/LfsServerText.properties b/org.eclipse.jgit.lfs.server/resources/org/eclipse/jgit/lfs/server/internal/LfsServerText.properties
index 659714528c..911cdcf125 100644
--- a/org.eclipse.jgit.lfs.server/resources/org/eclipse/jgit/lfs/server/internal/LfsServerText.properties
+++ b/org.eclipse.jgit.lfs.server/resources/org/eclipse/jgit/lfs/server/internal/LfsServerText.properties
@@ -4,6 +4,7 @@ objectNotFound=Object ''{0}'' not found
undefinedS3AccessKey=S3 configuration: 'accessKey' is undefined
undefinedS3Bucket=S3 configuration: 'bucket' is undefined
undefinedS3Region=S3 configuration: 'region' is undefined
+undefinedS3Hostname=S3 configuration: 'hostname' is undefined
undefinedS3SecretKey=S3 configuration: 'secretKey' is undefined
undefinedS3StorageClass=S3 configuration: 'storageClass' is undefined
unparsableEndpoint=Unable to parse service endpoint: {0}
diff --git a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/internal/LfsServerText.java b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/internal/LfsServerText.java
index bed485f605..56d59bb540 100644
--- a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/internal/LfsServerText.java
+++ b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/internal/LfsServerText.java
@@ -33,6 +33,7 @@ public class LfsServerText extends TranslationBundle {
/***/ public String undefinedS3AccessKey;
/***/ public String undefinedS3Bucket;
/***/ public String undefinedS3Region;
+ /***/ public String undefinedS3Hostname;
/***/ public String undefinedS3SecretKey;
/***/ public String undefinedS3StorageClass;
/***/ public String unparsableEndpoint;
diff --git a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Config.java b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Config.java
index f3dd2781c8..3942e22a8e 100644
--- a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Config.java
+++ b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Config.java
@@ -16,6 +16,7 @@ package org.eclipse.jgit.lfs.server.s3;
* @since 4.3
*/
public class S3Config {
+ private final String hostname;
private final String region;
private final String bucket;
private final String storageClass;
@@ -25,8 +26,12 @@ public class S3Config {
private final boolean disableSslVerify;
/**
- * <p>Constructor for S3Config.</p>
+ * <p>
+ * Constructor for S3Config.
+ * </p>
*
+ * @param hostname
+ * S3 API host
* @param region
* AWS region
* @param bucket
@@ -43,10 +48,12 @@ public class S3Config {
* @param disableSslVerify
* if {@code true} disable Amazon server certificate and hostname
* verification
+ * @since 5.8
*/
- public S3Config(String region, String bucket, String storageClass,
+ public S3Config(String hostname, String region, String bucket, String storageClass,
String accessKey, String secretKey, int expirationSeconds,
boolean disableSslVerify) {
+ this.hostname = hostname;
this.region = region;
this.bucket = bucket;
this.storageClass = storageClass;
@@ -57,6 +64,44 @@ public class S3Config {
}
/**
+ * <p>Constructor for S3Config.</p>
+ *
+ * @param region
+ * AWS region
+ * @param bucket
+ * S3 storage bucket
+ * @param storageClass
+ * S3 storage class
+ * @param accessKey
+ * access key for authenticating to AWS
+ * @param secretKey
+ * secret key for authenticating to AWS
+ * @param expirationSeconds
+ * period in seconds after which requests signed for this bucket
+ * will expire
+ * @param disableSslVerify
+ * if {@code true} disable Amazon server certificate and hostname
+ * verification
+ */
+ public S3Config(String region, String bucket, String storageClass,
+ String accessKey, String secretKey, int expirationSeconds,
+ boolean disableSslVerify) {
+ this(String.format("s3-%s.amazonaws.com", region), region, bucket, //$NON-NLS-1$
+ storageClass, accessKey, secretKey, expirationSeconds,
+ disableSslVerify);
+ }
+
+ /**
+ * Get the <code>hostname</code>.
+ *
+ * @return Get the S3 API host
+ * @since 5.8
+ */
+ public String getHostname() {
+ return hostname;
+ }
+
+ /**
* Get the <code>region</code>.
*
* @return Get name of AWS region this bucket resides in
diff --git a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Repository.java b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Repository.java
index bd1705b827..c7c7a7146b 100644
--- a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Repository.java
+++ b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/s3/S3Repository.java
@@ -159,6 +159,8 @@ public class S3Repository implements LargeFileRepository {
config.getBucket());
assertNotEmpty(LfsServerText.get().undefinedS3Region,
config.getRegion());
+ assertNotEmpty(LfsServerText.get().undefinedS3Hostname,
+ config.getHostname());
assertNotEmpty(LfsServerText.get().undefinedS3SecretKey,
config.getSecretKey());
assertNotEmpty(LfsServerText.get().undefinedS3StorageClass,
@@ -173,8 +175,8 @@ public class S3Repository implements LargeFileRepository {
private URL getObjectUrl(AnyLongObjectId oid) {
try {
- return new URL(String.format("https://s3-%s.amazonaws.com/%s/%s", //$NON-NLS-1$
- s3Config.getRegion(), s3Config.getBucket(),
+ return new URL(String.format("https://%s/%s/%s", //$NON-NLS-1$
+ s3Config.getHostname(), s3Config.getBucket(),
getPath(oid)));
} catch (MalformedURLException e) {
throw new IllegalArgumentException(MessageFormat.format(