summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-05-16 01:18:06 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-05-16 01:18:06 +0900
commit7d70126072437369a813850db956f4e5e0104483 (patch)
treec7c7805ea223ba1c2161c5c256d0c2648731ccfa /src/server
parentMerge branch 'develop' (diff)
parent11.14.0 (diff)
downloadmisskey-7d70126072437369a813850db956f4e5e0104483.tar.gz
misskey-7d70126072437369a813850db956f4e5e0104483.tar.bz2
misskey-7d70126072437369a813850db956f4e5e0104483.zip
Merge branch 'develop'
Diffstat (limited to 'src/server')
-rw-r--r--src/server/api/endpoints/admin/delete-all-files-of-a-user.ts32
-rw-r--r--src/server/api/endpoints/admin/logs.ts22
-rw-r--r--src/server/api/endpoints/admin/update-meta.ts82
-rw-r--r--src/server/api/endpoints/meta.ts12
-rw-r--r--src/server/proxy/proxy-media.ts6
5 files changed, 139 insertions, 15 deletions
diff --git a/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts b/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
new file mode 100644
index 0000000000..84e9c363e1
--- /dev/null
+++ b/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
@@ -0,0 +1,32 @@
+import $ from 'cafy';
+import define from '../../define';
+import del from '../../../../services/drive/delete-file';
+import { DriveFiles } from '../../../../models';
+import { ID } from '../../../../misc/cafy-id';
+
+export const meta = {
+ tags: ['admin'],
+
+ requireCredential: true,
+ requireModerator: true,
+
+ params: {
+ userId: {
+ validator: $.type(ID),
+ desc: {
+ 'ja-JP': '対象のユーザーID',
+ 'en-US': 'The user ID which you want to suspend'
+ }
+ },
+ }
+};
+
+export default define(meta, async (ps, me) => {
+ const files = await DriveFiles.find({
+ userId: ps.userId
+ });
+
+ for (const file of files) {
+ del(file);
+ }
+});
diff --git a/src/server/api/endpoints/admin/logs.ts b/src/server/api/endpoints/admin/logs.ts
index 86e99730c5..060df09adf 100644
--- a/src/server/api/endpoints/admin/logs.ts
+++ b/src/server/api/endpoints/admin/logs.ts
@@ -53,16 +53,18 @@ export default define(meta, async (ps) => {
if (blackDomains.length > 0) {
query.andWhere(new Brackets(qb => {
for (const blackDomain of blackDomains) {
- const subDomains = blackDomain.split('.');
- let i = 0;
- for (const subDomain of subDomains) {
- const p = `blackSubDomain_${subDomain}_${i}`;
- // 全体で否定できないのでド・モルガンの法則で
- // !(P && Q) を !P || !Q で表す
- // SQL is 1 based, so we need '+ 1'
- qb.orWhere(`log.domain[${i + 1}] != :${p}`, { [p]: subDomain });
- i++;
- }
+ qb.andWhere(new Brackets(qb => {
+ const subDomains = blackDomain.split('.');
+ let i = 0;
+ for (const subDomain of subDomains) {
+ const p = `blackSubDomain_${subDomain}_${i}`;
+ // 全体で否定できないのでド・モルガンの法則で
+ // !(P && Q) を !P || !Q で表す
+ // SQL is 1 based, so we need '+ 1'
+ qb.orWhere(`log.domain[${i + 1}] != :${p}`, { [p]: subDomain });
+ i++;
+ }
+ }));
}
}));
}
diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts
index e4f2e86aaa..8e98d203ff 100644
--- a/src/server/api/endpoints/admin/update-meta.ts
+++ b/src/server/api/endpoints/admin/update-meta.ts
@@ -357,7 +357,47 @@ export const meta = {
desc: {
'ja-JP': 'フィードバックのURL'
}
- }
+ },
+
+ useObjectStorage: {
+ validator: $.optional.bool
+ },
+
+ objectStorageBaseUrl: {
+ validator: $.optional.nullable.str
+ },
+
+ objectStorageBucket: {
+ validator: $.optional.nullable.str
+ },
+
+ objectStoragePrefix: {
+ validator: $.optional.nullable.str
+ },
+
+ objectStorageEndpoint: {
+ validator: $.optional.nullable.str
+ },
+
+ objectStorageRegion: {
+ validator: $.optional.nullable.str
+ },
+
+ objectStoragePort: {
+ validator: $.optional.nullable.num
+ },
+
+ objectStorageAccessKey: {
+ validator: $.optional.nullable.str
+ },
+
+ objectStorageSecretKey: {
+ validator: $.optional.nullable.str
+ },
+
+ objectStorageUseSSL: {
+ validator: $.optional.bool
+ },
}
};
@@ -560,6 +600,46 @@ export default define(meta, async (ps) => {
set.feedbackUrl = ps.feedbackUrl;
}
+ if (ps.useObjectStorage !== undefined) {
+ set.useObjectStorage = ps.useObjectStorage;
+ }
+
+ if (ps.objectStorageBaseUrl !== undefined) {
+ set.objectStorageBaseUrl = ps.objectStorageBaseUrl;
+ }
+
+ if (ps.objectStorageBucket !== undefined) {
+ set.objectStorageBucket = ps.objectStorageBucket;
+ }
+
+ if (ps.objectStoragePrefix !== undefined) {
+ set.objectStoragePrefix = ps.objectStoragePrefix;
+ }
+
+ if (ps.objectStorageEndpoint !== undefined) {
+ set.objectStorageEndpoint = ps.objectStorageEndpoint;
+ }
+
+ if (ps.objectStorageRegion !== undefined) {
+ set.objectStorageRegion = ps.objectStorageRegion;
+ }
+
+ if (ps.objectStoragePort !== undefined) {
+ set.objectStoragePort = ps.objectStoragePort;
+ }
+
+ if (ps.objectStorageAccessKey !== undefined) {
+ set.objectStorageAccessKey = ps.objectStorageAccessKey;
+ }
+
+ if (ps.objectStorageSecretKey !== undefined) {
+ set.objectStorageSecretKey = ps.objectStorageSecretKey;
+ }
+
+ if (ps.objectStorageUseSSL !== undefined) {
+ set.objectStorageUseSSL = ps.objectStorageUseSSL;
+ }
+
await getConnection().transaction(async transactionalEntityManager => {
const meta = await transactionalEntityManager.findOne(Meta, {
order: {
diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts
index 1bd88a1e6d..4f418c63c1 100644
--- a/src/server/api/endpoints/meta.ts
+++ b/src/server/api/endpoints/meta.ts
@@ -153,7 +153,7 @@ export default define(meta, async (ps, me) => {
globalTimeLine: !instance.disableGlobalTimeline,
elasticsearch: config.elasticsearch ? true : false,
recaptcha: instance.enableRecaptcha,
- objectStorage: config.drive && config.drive.storage === 'minio',
+ objectStorage: instance.useObjectStorage,
twitter: instance.enableTwitterIntegration,
github: instance.enableGithubIntegration,
discord: instance.enableDiscordIntegration,
@@ -182,6 +182,16 @@ export default define(meta, async (ps, me) => {
response.smtpUser = instance.smtpUser;
response.smtpPass = instance.smtpPass;
response.swPrivateKey = instance.swPrivateKey;
+ response.useObjectStorage = instance.useObjectStorage;
+ response.objectStorageBaseUrl = instance.objectStorageBaseUrl;
+ response.objectStorageBucket = instance.objectStorageBucket;
+ response.objectStoragePrefix = instance.objectStoragePrefix;
+ response.objectStorageEndpoint = instance.objectStorageEndpoint;
+ response.objectStorageRegion = instance.objectStorageRegion;
+ response.objectStoragePort = instance.objectStoragePort;
+ response.objectStorageAccessKey = instance.objectStorageAccessKey;
+ response.objectStorageSecretKey = instance.objectStorageSecretKey;
+ response.objectStorageUseSSL = instance.objectStorageUseSSL;
}
return response;
diff --git a/src/server/proxy/proxy-media.ts b/src/server/proxy/proxy-media.ts
index 357715bb92..e16665f6cd 100644
--- a/src/server/proxy/proxy-media.ts
+++ b/src/server/proxy/proxy-media.ts
@@ -1,7 +1,7 @@
import * as fs from 'fs';
import * as Koa from 'koa';
import { serverLogger } from '..';
-import { IImage, ConvertToPng, ConvertToJpeg } from '../../services/drive/image-processor';
+import { IImage, convertToPng, convertToJpeg } from '../../services/drive/image-processor';
import { createTemp } from '../../misc/create-temp';
import { downloadUrl } from '../../misc/donwload-url';
import { detectMine } from '../../misc/detect-mine';
@@ -20,9 +20,9 @@ export async function proxyMedia(ctx: Koa.BaseContext) {
let image: IImage;
if ('static' in ctx.query && ['image/png', 'image/gif'].includes(type)) {
- image = await ConvertToPng(path, 498, 280);
+ image = await convertToPng(path, 498, 280);
} else if ('preview' in ctx.query && ['image/jpeg', 'image/png', 'image/gif'].includes(type)) {
- image = await ConvertToJpeg(path, 200, 200);
+ image = await convertToJpeg(path, 200, 200);
} else {
image = {
data: fs.readFileSync(path),