feat: Add support for managing path style in S3 compatible service (#3031)

Co-authored-by: use-tusk[bot] <144006087+use-tusk[bot]@users.noreply.github.com>
This commit is contained in:
use-tusk[bot]
2024-08-20 12:16:48 +02:00
committed by GitHub
parent 6835e585b0
commit 30e6316e16
6 changed files with 14 additions and 3 deletions

View File

@@ -70,6 +70,8 @@ S3_BUCKET_NAME=
# Configure a third party S3 compatible storage service endpoint like StorJ leave empty if you use Amazon S3
# e.g., https://gateway.storjshare.io
S3_ENDPOINT_URL=
# Force path style for S3 compatible storage (0 for disabled, 1 for enabled)
S3_FORCE_PATH_STYLE=0
#####################
# Disable Features #

View File

@@ -84,6 +84,9 @@ x-environment: &environment
# Set a third party S3 compatible storage service endpoint like StorJ leave empty if you use Amazon S3
# S3_ENDPOINT_URL=
# Force path style for S3 compatible storage (0 for disabled, 1 for enabled)
S3_FORCE_PATH_STYLE: 0
############################################# OPTIONAL (OAUTH CONFIGURATION) #############################################
# Set the below from GitHub if you want to enable GitHub OAuth

View File

@@ -88,6 +88,7 @@ export const S3_SECRET_KEY = env.S3_SECRET_KEY;
export const S3_REGION = env.S3_REGION;
export const S3_ENDPOINT_URL = env.S3_ENDPOINT_URL;
export const S3_BUCKET_NAME = env.S3_BUCKET_NAME;
export const S3_FORCE_PATH_STYLE = env.S3_FORCE_PATH_STYLE === "1";
export const UPLOADS_DIR = env.UPLOADS_DIR || "./uploads";
export const MAX_SIZES = {
standard: 1024 * 1024 * 10, // 10MB

View File

@@ -64,6 +64,7 @@ export const env = createEnv({
S3_REGION: z.string().optional(),
S3_SECRET_KEY: z.string().optional(),
S3_ENDPOINT_URL: z.string().optional(),
S3_FORCE_PATH_STYLE: z.enum(["1", "0"]).optional(),
SHORT_URL_BASE: z.string().url().optional().or(z.string().length(0)),
SIGNUP_DISABLED: z.enum(["1", "0"]).optional(),
SLACK_CLIENT_ID: z.string().optional(),
@@ -167,6 +168,7 @@ export const env = createEnv({
S3_REGION: process.env.S3_REGION,
S3_SECRET_KEY: process.env.S3_SECRET_KEY,
S3_ENDPOINT_URL: process.env.S3_ENDPOINT_URL,
S3_FORCE_PATH_STYLE: process.env.S3_FORCE_PATH_STYLE,
SHORT_URL_BASE: process.env.SHORT_URL_BASE,
SIGNUP_DISABLED: process.env.SIGNUP_DISABLED,
SLACK_CLIENT_ID: process.env.SLACK_CLIENT_ID,

View File

@@ -25,6 +25,7 @@ import {
UPLOADS_DIR,
WEBAPP_URL,
isS3Configured,
S3_FORCE_PATH_STYLE,
} from "../constants";
import { generateLocalSignedUrl } from "../crypto";
import { env } from "../env";
@@ -43,6 +44,7 @@ export const getS3Client = () => {
credentials,
region: S3_REGION,
...(S3_ENDPOINT_URL && { endpoint: S3_ENDPOINT_URL }),
forcePathStyle: S3_FORCE_PATH_STYLE,
});
}

View File

@@ -114,13 +114,14 @@
"PLAYWRIGHT_CI",
"PRIVACY_URL",
"RATE_LIMITING_DISABLED",
"REDIS_URL",
"REDIS_HTTP_URL",
"REDIS_URL",
"S3_ACCESS_KEY",
"S3_SECRET_KEY",
"S3_REGION",
"S3_BUCKET_NAME",
"S3_ENDPOINT_URL",
"S3_FORCE_PATH_STYLE",
"S3_REGION",
"S3_SECRET_KEY",
"SENTRY_DSN",
"SHORT_URL_BASE",
"SIGNUP_DISABLED",