summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2020-03-14 11:33:19 +0900
committerGitHub <noreply@github.com>2020-03-14 11:33:19 +0900
commita2d3d22b6e9e8bdcc8eab295b7d020540bb1e413 (patch)
treeeffe79dc7a8c54ffe8494aa8d713cf33bfb10067
parentfix gif badge (#6153) (diff)
downloadsharkey-a2d3d22b6e9e8bdcc8eab295b7d020540bb1e413.tar.gz
sharkey-a2d3d22b6e9e8bdcc8eab295b7d020540bb1e413.tar.bz2
sharkey-a2d3d22b6e9e8bdcc8eab295b7d020540bb1e413.zip
オブジェクトストレージでS3のvirtual-host形式のサポートなど (#6148)
* オブジェクトストレージでS3のvirtual-host形式のサポートなど * 表記揺れ * more simply * S3ならばs3ForcePathStyleしない
-rw-r--r--locales/ja-JP.yml12
-rw-r--r--src/client/pages/instance/settings.vue13
-rw-r--r--src/remote/activitypub/request.ts4
-rw-r--r--src/services/drive/add-file.ts3
-rw-r--r--src/services/drive/s3.ts10
5 files changed, 27 insertions, 15 deletions
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 27609ef527..3f70c8dbbf 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -423,6 +423,18 @@ hideThisNote: "このノートを非表示"
showFeaturedNotesInTimeline: "タイムラインにおすすめのノートを表示する"
objectStorage: "オブジェクトストレージ"
useObjectStorage: "オブジェクトストレージを使用"
+objectStorageBaseUrl: "Base URL"
+objectStorageBaseUrlDesc: "参照に使用するURL。CDNやProxyを使用している場合はそのURL、S3: 'https://<bucket>.s3.amazonaws.com'、GCS等: 'https://storage.googleapis.com/<bucket>'。"
+objectStorageBucket: "Bucket"
+objectStorageBucketDesc: "使用サービスのbucket名を指定してください。"
+objectStoragePrefix: "Prefix"
+objectStoragePrefixDesc: "このprefixのディレクトリ下に格納されます。"
+objectStorageEndpoint: "Endpoint"
+objectStorageEndpointDesc: "S3の場合は空、それ以外の場合は各サービスのendpointを指定してください。'<host>'または'<host>:<port>'のように指定します。"
+objectStorageRegion: "Region"
+objectStorageRegionDesc: "'xx-east-1'のようなregionを指定してください。使用サービスにregionの概念がない場合は、空または'us-east-1'にしてください。"
+objectStorageUseSSL: "SSLを使用する"
+objectStorageUseSSLDesc: "API接続にhttpsを使用しない場合はオフにしてください"
serverLogs: "サーバーログ"
deleteAll: "全て削除"
showFixedPostForm: "タイムライン上部に投稿フォームを表示する"
diff --git a/src/client/pages/instance/settings.vue b/src/client/pages/instance/settings.vue
index 7572108718..d11f840d8f 100644
--- a/src/client/pages/instance/settings.vue
+++ b/src/client/pages/instance/settings.vue
@@ -102,21 +102,20 @@
<div class="_content">
<mk-switch v-model="useObjectStorage">{{ $t('useObjectStorage') }}</mk-switch>
<template v-if="useObjectStorage">
- <mk-input v-model="objectStorageBaseUrl" :disabled="!useObjectStorage">URL</mk-input>
+ <mk-input v-model="objectStorageBaseUrl" :disabled="!useObjectStorage">{{ $t('objectStorageBaseUrl') }}<template #desc>{{ $t('objectStorageBaseUrlDesc') }}</template></mk-input>
<div class="_inputs">
- <mk-input v-model="objectStorageBucket" :disabled="!useObjectStorage">Bucket</mk-input>
- <mk-input v-model="objectStoragePrefix" :disabled="!useObjectStorage">Prefix</mk-input>
+ <mk-input v-model="objectStorageBucket" :disabled="!useObjectStorage">{{ $t('objectStorageBucket') }}<template #desc>{{ $t('objectStorageBucketDesc') }}</template></mk-input>
+ <mk-input v-model="objectStoragePrefix" :disabled="!useObjectStorage">{{ $t('objectStoragePrefix') }}<template #desc>{{ $t('objectStoragePrefixDesc') }}</template></mk-input>
</div>
- <mk-input v-model="objectStorageEndpoint" :disabled="!useObjectStorage">Endpoint</mk-input>
+ <mk-input v-model="objectStorageEndpoint" :disabled="!useObjectStorage">{{ $t('objectStorageEndpoint') }}<template #desc>{{ $t('objectStorageEndpointDesc') }}</template></mk-input>
<div class="_inputs">
- <mk-input v-model="objectStorageRegion" :disabled="!useObjectStorage">Region</mk-input>
- <mk-input v-model="objectStoragePort" type="number" :disabled="!useObjectStorage">Port</mk-input>
+ <mk-input v-model="objectStorageRegion" :disabled="!useObjectStorage">{{ $t('objectStorageRegion') }}<template #desc>{{ $t('objectStorageRegionDesc') }}</template></mk-input>
</div>
<div class="_inputs">
<mk-input v-model="objectStorageAccessKey" :disabled="!useObjectStorage"><template #icon><fa :icon="faKey"/></template>Access key</mk-input>
<mk-input v-model="objectStorageSecretKey" :disabled="!useObjectStorage"><template #icon><fa :icon="faKey"/></template>Secret key</mk-input>
</div>
- <mk-switch v-model="objectStorageUseSSL" :disabled="!useObjectStorage">SSL</mk-switch>
+ <mk-switch v-model="objectStorageUseSSL" :disabled="!useObjectStorage">{{ $t('objectStorageUseSSL') }}<template #desc>{{ $t('objectStorageUseSSLDesc') }}</template></mk-switch>
</template>
</div>
<div class="_footer">
diff --git a/src/remote/activitypub/request.ts b/src/remote/activitypub/request.ts
index dc777a3c5d..0f87381a44 100644
--- a/src/remote/activitypub/request.ts
+++ b/src/remote/activitypub/request.ts
@@ -7,10 +7,10 @@ import config from '../../config';
import { ILocalUser } from '../../models/entities/user';
import { UserKeypairs } from '../../models';
import { ensure } from '../../prelude/ensure';
-import * as httpsProxyAgent from 'https-proxy-agent';
+import { HttpsProxyAgent } from 'https-proxy-agent';
const agent = config.proxy
- ? new httpsProxyAgent(config.proxy)
+ ? new HttpsProxyAgent(config.proxy)
: new https.Agent({
lookup: cache.lookup,
});
diff --git a/src/services/drive/add-file.ts b/src/services/drive/add-file.ts
index 2931de6dc0..cf0951ebad 100644
--- a/src/services/drive/add-file.ts
+++ b/src/services/drive/add-file.ts
@@ -217,7 +217,8 @@ async function upload(key: string, stream: fs.ReadStream | Buffer, type: string,
const upload = s3.upload(params);
- await upload.promise();
+ const result = await upload.promise();
+ if (result) logger.debug(`Uploaded: ${result.Bucket}/${result.Key} => ${result.Location}`);
}
async function deleteOldFile(user: IRemoteUser) {
diff --git a/src/services/drive/s3.ts b/src/services/drive/s3.ts
index 95243d5901..d136bb2694 100644
--- a/src/services/drive/s3.ts
+++ b/src/services/drive/s3.ts
@@ -1,23 +1,23 @@
import * as S3 from 'aws-sdk/clients/s3';
import config from '../../config';
import { Meta } from '../../models/entities/meta';
-import * as httpsProxyAgent from 'https-proxy-agent';
+import { HttpsProxyAgent } from 'https-proxy-agent';
import * as agentkeepalive from 'agentkeepalive';
const httpsAgent = config.proxy
- ? new httpsProxyAgent(config.proxy)
+ ? new HttpsProxyAgent(config.proxy)
: new agentkeepalive.HttpsAgent({
freeSocketTimeout: 30 * 1000
});
export function getS3(meta: Meta) {
const conf = {
- endpoint: meta.objectStorageEndpoint,
+ endpoint: meta.objectStorageEndpoint || undefined,
accessKeyId: meta.objectStorageAccessKey,
secretAccessKey: meta.objectStorageSecretKey,
- region: meta.objectStorageRegion,
+ region: meta.objectStorageRegion || undefined,
sslEnabled: meta.objectStorageUseSSL,
- s3ForcePathStyle: true,
+ s3ForcePathStyle: !!meta.objectStorageEndpoint,
httpOptions: {
}
} as S3.ClientConfiguration;