|
|
@@ -8,116 +8,140 @@
|
|
|
* DS207: Consider shorter variations of null checks
|
|
|
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
|
*/
|
|
|
-const Path = require("path");
|
|
|
+const Path = require('path')
|
|
|
|
|
|
// environment variables renamed for consistency
|
|
|
// use AWS_ACCESS_KEY_ID-style going forward
|
|
|
if (process.env.AWS_KEY && !process.env.AWS_ACCESS_KEY_ID) {
|
|
|
- process.env.AWS_ACCESS_KEY_ID = process.env.AWS_KEY;
|
|
|
+ process.env.AWS_ACCESS_KEY_ID = process.env.AWS_KEY
|
|
|
}
|
|
|
if (process.env.AWS_SECRET && !process.env.AWS_SECRET_ACCESS_KEY) {
|
|
|
- process.env.AWS_SECRET_ACCESS_KEY = process.env.AWS_SECRET;
|
|
|
+ process.env.AWS_SECRET_ACCESS_KEY = process.env.AWS_SECRET
|
|
|
}
|
|
|
|
|
|
// pre-backend setting, fall back to old behaviour
|
|
|
if (process.env.BACKEND == null) {
|
|
|
- if ((process.env.AWS_ACCESS_KEY_ID != null) || (process.env.S3_BUCKET_CREDENTIALS != null)) {
|
|
|
- process.env.BACKEND = "s3";
|
|
|
- process.env.USER_FILES_BUCKET_NAME = process.env.AWS_S3_USER_FILES_BUCKET_NAME;
|
|
|
- process.env.TEMPLATE_FILES_BUCKET_NAME = process.env.AWS_S3_TEMPLATE_FILES_BUCKET_NAME;
|
|
|
- process.env.PUBLIC_FILES_BUCKET_NAME = process.env.AWS_S3_PUBLIC_FILES_BUCKET_NAME;
|
|
|
- } else {
|
|
|
- process.env.BACKEND = "fs";
|
|
|
- process.env.USER_FILES_BUCKET_NAME = Path.resolve(__dirname + "/../user_files");
|
|
|
- process.env.TEMPLATE_FILES_BUCKET_NAME = Path.resolve(__dirname + "/../template_files");
|
|
|
- process.env.PUBLIC_FILES_BUCKET_NAME = Path.resolve(__dirname + "/../public_files");
|
|
|
- }
|
|
|
+ if (
|
|
|
+ process.env.AWS_ACCESS_KEY_ID != null ||
|
|
|
+ process.env.S3_BUCKET_CREDENTIALS != null
|
|
|
+ ) {
|
|
|
+ process.env.BACKEND = 's3'
|
|
|
+ process.env.USER_FILES_BUCKET_NAME =
|
|
|
+ process.env.AWS_S3_USER_FILES_BUCKET_NAME
|
|
|
+ process.env.TEMPLATE_FILES_BUCKET_NAME =
|
|
|
+ process.env.AWS_S3_TEMPLATE_FILES_BUCKET_NAME
|
|
|
+ process.env.PUBLIC_FILES_BUCKET_NAME =
|
|
|
+ process.env.AWS_S3_PUBLIC_FILES_BUCKET_NAME
|
|
|
+ } else {
|
|
|
+ process.env.BACKEND = 'fs'
|
|
|
+ process.env.USER_FILES_BUCKET_NAME = Path.resolve(
|
|
|
+ __dirname + '/../user_files'
|
|
|
+ )
|
|
|
+ process.env.TEMPLATE_FILES_BUCKET_NAME = Path.resolve(
|
|
|
+ __dirname + '/../template_files'
|
|
|
+ )
|
|
|
+ process.env.PUBLIC_FILES_BUCKET_NAME = Path.resolve(
|
|
|
+ __dirname + '/../public_files'
|
|
|
+ )
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
const settings = {
|
|
|
- internal: {
|
|
|
- filestore: {
|
|
|
- port: 3009,
|
|
|
- host: process.env.LISTEN_ADDRESS || "localhost"
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- filestore: {
|
|
|
- // Which backend persistor to use.
|
|
|
- // Choices are
|
|
|
- // s3 - Amazon S3
|
|
|
- // fs - local filesystem
|
|
|
- // gcs - Google Cloud Storage
|
|
|
- backend: process.env.BACKEND,
|
|
|
-
|
|
|
- gcs: {
|
|
|
- endpoint:
|
|
|
- process.env.GCS_API_ENDPOINT ?{
|
|
|
- apiEndpoint: process.env.GCS_API_ENDPOINT,
|
|
|
- apiScheme: process.env.GCS_API_SCHEME,
|
|
|
- projectId: process.env.GCS_PROJECT_ID
|
|
|
- } : undefined,
|
|
|
- unlockBeforeDelete: process.env.GCS_UNLOCK_BEFORE_DELETE === "true", // unlock an event-based hold before deleting. default false
|
|
|
- deletedBucketSuffix: process.env.GCS_DELETED_BUCKET_SUFFIX, // if present, copy file to another bucket on delete. default null
|
|
|
- deleteConcurrency: parseInt(process.env.GCS_DELETE_CONCURRENCY) || 50,
|
|
|
- signedUrlExpiryInMs: parseInt(process.env.LINK_EXPIRY_TIMEOUT || 60000)
|
|
|
- },
|
|
|
-
|
|
|
- s3:
|
|
|
- (process.env.AWS_ACCESS_KEY_ID != null) || (process.env.S3_BUCKET_CREDENTIALS != null) ?{
|
|
|
- key: process.env.AWS_ACCESS_KEY_ID,
|
|
|
- secret: process.env.AWS_SECRET_ACCESS_KEY,
|
|
|
- endpoint: process.env.AWS_S3_ENDPOINT,
|
|
|
- pathStyle: process.env.AWS_S3_PATH_STYLE,
|
|
|
- partSize: process.env.AWS_S3_PARTSIZE || (100 * 1024 * 1024),
|
|
|
- bucketCreds: ((process.env.S3_BUCKET_CREDENTIALS != null) ? JSON.parse(process.env.S3_BUCKET_CREDENTIALS) : undefined)
|
|
|
- } : undefined,
|
|
|
-
|
|
|
- // GCS should be configured by the service account on the kubernetes pod. See GOOGLE_APPLICATION_CREDENTIALS,
|
|
|
- // which will be picked up automatically.
|
|
|
-
|
|
|
- stores: {
|
|
|
- user_files: process.env.USER_FILES_BUCKET_NAME,
|
|
|
- template_files: process.env.TEMPLATE_FILES_BUCKET_NAME,
|
|
|
- public_files: process.env.PUBLIC_FILES_BUCKET_NAME
|
|
|
- },
|
|
|
-
|
|
|
- fallback:
|
|
|
- (process.env.FALLBACK_BACKEND != null) ?{
|
|
|
- backend: process.env.FALLBACK_BACKEND,
|
|
|
- // mapping of bucket names on the fallback, to bucket names on the primary.
|
|
|
- // e.g. { myS3UserFilesBucketName: 'myGoogleUserFilesBucketName' }
|
|
|
- buckets: JSON.parse(process.env.FALLBACK_BUCKET_MAPPING || '{}'),
|
|
|
- copyOnMiss: process.env.COPY_ON_MISS === 'true'
|
|
|
- } : undefined,
|
|
|
-
|
|
|
- allowRedirects: process.env.ALLOW_REDIRECTS === 'true'
|
|
|
- },
|
|
|
-
|
|
|
- path: {
|
|
|
- uploadFolder: Path.resolve(__dirname + "/../uploads")
|
|
|
- },
|
|
|
-
|
|
|
- commands: {
|
|
|
- // Any commands to wrap the convert utility in, for example ["nice"], or ["firejail", "--profile=/etc/firejail/convert.profile"]
|
|
|
- convertCommandPrefix: []
|
|
|
- },
|
|
|
-
|
|
|
- enableConversions: process.env.ENABLE_CONVERSIONS === 'true',
|
|
|
-
|
|
|
- sentry: {
|
|
|
- dsn: process.env.SENTRY_DSN
|
|
|
- }
|
|
|
-};
|
|
|
+ internal: {
|
|
|
+ filestore: {
|
|
|
+ port: 3009,
|
|
|
+ host: process.env.LISTEN_ADDRESS || 'localhost'
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ filestore: {
|
|
|
+ // Which backend persistor to use.
|
|
|
+ // Choices are
|
|
|
+ // s3 - Amazon S3
|
|
|
+ // fs - local filesystem
|
|
|
+ // gcs - Google Cloud Storage
|
|
|
+ backend: process.env.BACKEND,
|
|
|
+
|
|
|
+ gcs: {
|
|
|
+ endpoint: process.env.GCS_API_ENDPOINT
|
|
|
+ ? {
|
|
|
+ apiEndpoint: process.env.GCS_API_ENDPOINT,
|
|
|
+ apiScheme: process.env.GCS_API_SCHEME,
|
|
|
+ projectId: process.env.GCS_PROJECT_ID
|
|
|
+ }
|
|
|
+ : undefined,
|
|
|
+ unlockBeforeDelete: process.env.GCS_UNLOCK_BEFORE_DELETE === 'true', // unlock an event-based hold before deleting. default false
|
|
|
+ deletedBucketSuffix: process.env.GCS_DELETED_BUCKET_SUFFIX, // if present, copy file to another bucket on delete. default null
|
|
|
+ deleteConcurrency: parseInt(process.env.GCS_DELETE_CONCURRENCY) || 50,
|
|
|
+ signedUrlExpiryInMs: parseInt(process.env.LINK_EXPIRY_TIMEOUT || 60000)
|
|
|
+ },
|
|
|
+
|
|
|
+ s3:
|
|
|
+ process.env.AWS_ACCESS_KEY_ID != null ||
|
|
|
+ process.env.S3_BUCKET_CREDENTIALS != null
|
|
|
+ ? {
|
|
|
+ key: process.env.AWS_ACCESS_KEY_ID,
|
|
|
+ secret: process.env.AWS_SECRET_ACCESS_KEY,
|
|
|
+ endpoint: process.env.AWS_S3_ENDPOINT,
|
|
|
+ pathStyle: process.env.AWS_S3_PATH_STYLE,
|
|
|
+ partSize: process.env.AWS_S3_PARTSIZE || 100 * 1024 * 1024,
|
|
|
+ bucketCreds:
|
|
|
+ process.env.S3_BUCKET_CREDENTIALS != null
|
|
|
+ ? JSON.parse(process.env.S3_BUCKET_CREDENTIALS)
|
|
|
+ : undefined
|
|
|
+ }
|
|
|
+ : undefined,
|
|
|
+
|
|
|
+ // GCS should be configured by the service account on the kubernetes pod. See GOOGLE_APPLICATION_CREDENTIALS,
|
|
|
+ // which will be picked up automatically.
|
|
|
+
|
|
|
+ stores: {
|
|
|
+ user_files: process.env.USER_FILES_BUCKET_NAME,
|
|
|
+ template_files: process.env.TEMPLATE_FILES_BUCKET_NAME,
|
|
|
+ public_files: process.env.PUBLIC_FILES_BUCKET_NAME
|
|
|
+ },
|
|
|
+
|
|
|
+ fallback:
|
|
|
+ process.env.FALLBACK_BACKEND != null
|
|
|
+ ? {
|
|
|
+ backend: process.env.FALLBACK_BACKEND,
|
|
|
+ // mapping of bucket names on the fallback, to bucket names on the primary.
|
|
|
+ // e.g. { myS3UserFilesBucketName: 'myGoogleUserFilesBucketName' }
|
|
|
+ buckets: JSON.parse(process.env.FALLBACK_BUCKET_MAPPING || '{}'),
|
|
|
+ copyOnMiss: process.env.COPY_ON_MISS === 'true'
|
|
|
+ }
|
|
|
+ : undefined,
|
|
|
+
|
|
|
+ allowRedirects: process.env.ALLOW_REDIRECTS === 'true'
|
|
|
+ },
|
|
|
+
|
|
|
+ path: {
|
|
|
+ uploadFolder: Path.resolve(__dirname + '/../uploads')
|
|
|
+ },
|
|
|
+
|
|
|
+ commands: {
|
|
|
+ // Any commands to wrap the convert utility in, for example ["nice"], or ["firejail", "--profile=/etc/firejail/convert.profile"]
|
|
|
+ convertCommandPrefix: []
|
|
|
+ },
|
|
|
+
|
|
|
+ enableConversions: process.env.ENABLE_CONVERSIONS === 'true',
|
|
|
+
|
|
|
+ sentry: {
|
|
|
+ dsn: process.env.SENTRY_DSN
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
// Filestore health check
|
|
|
// ----------------------
|
|
|
// Project and file details to check in persistor when calling /health_check
|
|
|
-if ((process.env.HEALTH_CHECK_PROJECT_ID != null) && (process.env.HEALTH_CHECK_FILE_ID != null)) {
|
|
|
- settings.health_check = {
|
|
|
- project_id: process.env.HEALTH_CHECK_PROJECT_ID,
|
|
|
- file_id: process.env.HEALTH_CHECK_FILE_ID
|
|
|
- };
|
|
|
+if (
|
|
|
+ process.env.HEALTH_CHECK_PROJECT_ID != null &&
|
|
|
+ process.env.HEALTH_CHECK_FILE_ID != null
|
|
|
+) {
|
|
|
+ settings.health_check = {
|
|
|
+ project_id: process.env.HEALTH_CHECK_PROJECT_ID,
|
|
|
+ file_id: process.env.HEALTH_CHECK_FILE_ID
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-module.exports = settings;
|
|
|
+module.exports = settings
|