From 8786542ad68f214f049a416b4dfad86eb6dae938 Mon Sep 17 00:00:00 2001 From: decaffeinate Date: Wed, 19 May 2021 17:24:22 +0100 Subject: [PATCH 1/5] decaffeinate: Rename settings.defaults.coffee from .coffee to .js --- .../config/{settings.defaults.coffee => settings.defaults.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename services/filestore/config/{settings.defaults.coffee => settings.defaults.js} (100%) diff --git a/services/filestore/config/settings.defaults.coffee b/services/filestore/config/settings.defaults.js similarity index 100% rename from services/filestore/config/settings.defaults.coffee rename to services/filestore/config/settings.defaults.js From 3acf18324049c79e174104503e1729226713c520 Mon Sep 17 00:00:00 2001 From: decaffeinate Date: Wed, 19 May 2021 17:24:23 +0100 Subject: [PATCH 2/5] decaffeinate: Convert settings.defaults.coffee to JS --- .../filestore/config/settings.defaults.js | 161 ++++++++++-------- 1 file changed, 92 insertions(+), 69 deletions(-) diff --git a/services/filestore/config/settings.defaults.js b/services/filestore/config/settings.defaults.js index a53a4cf840..dfa373bcb0 100644 --- a/services/filestore/config/settings.defaults.js +++ b/services/filestore/config/settings.defaults.js @@ -1,95 +1,118 @@ -Path = require "path" +/* + * decaffeinate suggestions: + * DS207: Consider shorter variations of null checks + * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md + */ +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'] -if process.env['AWS_SECRET'] && !process.env['AWS_SECRET_ACCESS_KEY'] - process.env['AWS_SECRET_ACCESS_KEY'] = process.env['AWS_SECRET'] +// 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']; +} +if (process.env['AWS_SECRET'] && !process.env['AWS_SECRET_ACCESS_KEY']) { + process.env['AWS_SECRET_ACCESS_KEY'] = process.env['AWS_SECRET']; +} -# pre-backend setting, fall back to old behaviour -unless process.env['BACKEND']? - if process.env['AWS_ACCESS_KEY_ID']? or process.env['S3_BUCKET_CREDENTIALS']? - 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") +// 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"); + } +} -settings = - internal: - filestore: - port: 3009 - host: process.env['LISTEN_ADDRESS'] or "localhost" +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'] + filestore: { + // Which backend persistor to use. + // Choices are + // s3 - Amazon S3 + // fs - local filesystem + // gcs - Google Cloud Storage + backend: process.env['BACKEND'], - gcs: + gcs: { endpoint: - if process.env['GCS_API_ENDPOINT'] - apiEndpoint: process.env['GCS_API_ENDPOINT'] - apiScheme: process.env['GCS_API_SCHEME'] + process.env['GCS_API_ENDPOINT'] ?{ + apiEndpoint: process.env['GCS_API_ENDPOINT'], + apiScheme: process.env['GCS_API_SCHEME'], projectId: process.env['GCS_PROJECT_ID'] - 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 + } : 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: - if process.env['AWS_ACCESS_KEY_ID']? or process.env['S3_BUCKET_CREDENTIALS']? - 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'] or (100 * 1024 * 1024) - bucketCreds: JSON.parse process.env['S3_BUCKET_CREDENTIALS'] if process.env['S3_BUCKET_CREDENTIALS']? + (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. + // 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'] + 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: - if process.env['FALLBACK_BACKEND']? - 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' + (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: if process.env['ALLOW_REDIRECTS'] == 'true' then true else false + allowRedirects: process.env['ALLOW_REDIRECTS'] === 'true' ? true : false + }, - path: + 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"] + commands: { + // Any commands to wrap the convert utility in, for example ["nice"], or ["firejail", "--profile=/etc/firejail/convert.profile"] convertCommandPrefix: [] + }, - enableConversions: if process.env['ENABLE_CONVERSIONS'] == 'true' then true else false + enableConversions: process.env['ENABLE_CONVERSIONS'] === 'true' ? true : false, - sentry: + 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']? and process.env['HEALTH_CHECK_FILE_ID']? - settings.health_check = - project_id: process.env['HEALTH_CHECK_PROJECT_ID'] +// 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'] + }; +} -module.exports = settings +module.exports = settings; From 0b628280411b8772e9bde153574ea16451f79de3 Mon Sep 17 00:00:00 2001 From: decaffeinate Date: Wed, 19 May 2021 17:24:23 +0100 Subject: [PATCH 3/5] decaffeinate: Run post-processing cleanups on settings.defaults.coffee --- .../filestore/config/settings.defaults.js | 91 ++++++++++--------- 1 file changed, 48 insertions(+), 43 deletions(-) diff --git a/services/filestore/config/settings.defaults.js b/services/filestore/config/settings.defaults.js index dfa373bcb0..2327f50ea9 100644 --- a/services/filestore/config/settings.defaults.js +++ b/services/filestore/config/settings.defaults.js @@ -1,3 +1,8 @@ +/* eslint-disable + no-path-concat, +*/ +// TODO: This file was created by bulk-decaffeinate. +// Fix any style issues and re-enable lint. /* * decaffeinate suggestions: * DS207: Consider shorter variations of null checks @@ -7,25 +12,25 @@ 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']; +if (process.env.AWS_KEY && !process.env.AWS_ACCESS_KEY_ID) { + 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']; +if (process.env.AWS_SECRET && !process.env.AWS_SECRET_ACCESS_KEY) { + 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']; +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"); + 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"); } } @@ -33,7 +38,7 @@ const settings = { internal: { filestore: { port: 3009, - host: process.env['LISTEN_ADDRESS'] || "localhost" + host: process.env.LISTEN_ADDRESS || "localhost" } }, @@ -43,50 +48,50 @@ const settings = { // s3 - Amazon S3 // fs - local filesystem // gcs - Google Cloud Storage - backend: process.env['BACKEND'], + 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'] + 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) + 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) + (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'] + 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'], + (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' + buckets: JSON.parse(process.env.FALLBACK_BUCKET_MAPPING || '{}'), + copyOnMiss: process.env.COPY_ON_MISS === 'true' } : undefined, - allowRedirects: process.env['ALLOW_REDIRECTS'] === 'true' ? true : false + allowRedirects: process.env.ALLOW_REDIRECTS === 'true' }, path: { @@ -98,7 +103,7 @@ const settings = { convertCommandPrefix: [] }, - enableConversions: process.env['ENABLE_CONVERSIONS'] === 'true' ? true : false, + enableConversions: process.env.ENABLE_CONVERSIONS === 'true', sentry: { dsn: process.env.SENTRY_DSN @@ -108,10 +113,10 @@ const settings = { // 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)) { +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'] + project_id: process.env.HEALTH_CHECK_PROJECT_ID, + file_id: process.env.HEALTH_CHECK_FILE_ID }; } From b5b2bb3d22a2838077acff2f50b285c3835e8279 Mon Sep 17 00:00:00 2001 From: Alf Eaton Date: Tue, 25 May 2021 15:53:36 +0100 Subject: [PATCH 4/5] Run format:fix --- .../filestore/config/settings.defaults.js | 190 ++++++++++-------- 1 file changed, 107 insertions(+), 83 deletions(-) diff --git a/services/filestore/config/settings.defaults.js b/services/filestore/config/settings.defaults.js index 2327f50ea9..1d84cf529a 100644 --- a/services/filestore/config/settings.defaults.js +++ b/services/filestore/config/settings.defaults.js @@ -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" - } - }, + 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, + 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) - }, + 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, + 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. + // 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 - }, + 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, + 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' - }, + allowRedirects: process.env.ALLOW_REDIRECTS === 'true' + }, - path: { - uploadFolder: Path.resolve(__dirname + "/../uploads") - }, + 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: [] - }, + 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', + enableConversions: process.env.ENABLE_CONVERSIONS === 'true', - sentry: { - dsn: process.env.SENTRY_DSN - } -}; + 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 From 0649773c152daca7e2ee522c9f06de6ea7ce3a00 Mon Sep 17 00:00:00 2001 From: Alf Eaton Date: Tue, 25 May 2021 15:54:50 +0100 Subject: [PATCH 5/5] Manual tidying --- .../filestore/config/settings.defaults.js | 53 +++++++------------ 1 file changed, 19 insertions(+), 34 deletions(-) diff --git a/services/filestore/config/settings.defaults.js b/services/filestore/config/settings.defaults.js index 1d84cf529a..d10e17ac3b 100644 --- a/services/filestore/config/settings.defaults.js +++ b/services/filestore/config/settings.defaults.js @@ -1,13 +1,3 @@ -/* eslint-disable - no-path-concat, -*/ -// TODO: This file was created by bulk-decaffeinate. -// Fix any style issues and re-enable lint. -/* - * decaffeinate suggestions: - * DS207: Consider shorter variations of null checks - * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md - */ const Path = require('path') // environment variables renamed for consistency @@ -21,10 +11,7 @@ if (process.env.AWS_SECRET && !process.env.AWS_SECRET_ACCESS_KEY) { // 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 - ) { + if (process.env.AWS_ACCESS_KEY_ID || process.env.S3_BUCKET_CREDENTIALS) { process.env.BACKEND = 's3' process.env.USER_FILES_BUCKET_NAME = process.env.AWS_S3_USER_FILES_BUCKET_NAME @@ -35,12 +22,15 @@ if (process.env.BACKEND == null) { } else { process.env.BACKEND = 'fs' process.env.USER_FILES_BUCKET_NAME = Path.resolve( + // eslint-disable-next-line no-path-concat __dirname + '/../user_files' ) process.env.TEMPLATE_FILES_BUCKET_NAME = Path.resolve( + // eslint-disable-next-line no-path-concat __dirname + '/../template_files' ) process.env.PUBLIC_FILES_BUCKET_NAME = Path.resolve( + // eslint-disable-next-line no-path-concat __dirname + '/../public_files' ) } @@ -77,18 +67,16 @@ const settings = { }, s3: - process.env.AWS_ACCESS_KEY_ID != null || - process.env.S3_BUCKET_CREDENTIALS != null + process.env.AWS_ACCESS_KEY_ID || process.env.S3_BUCKET_CREDENTIALS ? { 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 + bucketCreds: process.env.S3_BUCKET_CREDENTIALS + ? JSON.parse(process.env.S3_BUCKET_CREDENTIALS) + : undefined } : undefined, @@ -101,21 +89,21 @@ const settings = { 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, + fallback: process.env.FALLBACK_BACKEND + ? { + 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: { + // eslint-disable-next-line no-path-concat uploadFolder: Path.resolve(__dirname + '/../uploads') }, @@ -134,10 +122,7 @@ const settings = { // 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 -) { +if (process.env.HEALTH_CHECK_PROJECT_ID && process.env.HEALTH_CHECK_FILE_ID) { settings.health_check = { project_id: process.env.HEALTH_CHECK_PROJECT_ID, file_id: process.env.HEALTH_CHECK_FILE_ID