113 lines
3.7 KiB
TypeScript
113 lines
3.7 KiB
TypeScript
|
import config from '@/config/index.js';
|
||
|
import { Meta } from '@/models/entities/meta.js';
|
||
|
import { insertModerationLog } from '@/services/insert-moderation-log.js';
|
||
|
import { db } from '@/db/postgre.js';
|
||
|
import define from '../../../define.js';
|
||
|
|
||
|
export const meta = {
|
||
|
tags: ['admin'],
|
||
|
|
||
|
requireCredential: true,
|
||
|
requireAdmin: true,
|
||
|
} as const;
|
||
|
|
||
|
export const paramDef = {
|
||
|
type: 'object',
|
||
|
properties: {},
|
||
|
required: [],
|
||
|
} as const;
|
||
|
|
||
|
// eslint-disable-next-line import/no-default-export
|
||
|
export default define(meta, paramDef, async (ps, me) => {
|
||
|
const hostedConfig = config.isManagedHosting;
|
||
|
const hosted = (hostedConfig != null && hostedConfig === true);
|
||
|
if (hosted) {
|
||
|
const set = {} as Partial<Meta>;
|
||
|
if (config.deepl.managed != null && config.deepl.managed === true) {
|
||
|
if (typeof config.deepl.authKey === 'boolean') {
|
||
|
set.deeplAuthKey = config.deepl.authKey;
|
||
|
}
|
||
|
if (typeof config.deepl.isPro === 'boolean') {
|
||
|
set.deeplIsPro = config.deepl.isPro;
|
||
|
}
|
||
|
}
|
||
|
if (config.email.managed != null && config.email.managed === true) {
|
||
|
set.enableEmail = true;
|
||
|
if (typeof config.email.address === 'string') {
|
||
|
set.email = config.email.address;
|
||
|
}
|
||
|
if (typeof config.email.host === 'string') {
|
||
|
set.smtpHost = config.email.host;
|
||
|
}
|
||
|
if (typeof config.email.port === 'number') {
|
||
|
set.smtpPort = config.email.port;
|
||
|
}
|
||
|
if (typeof config.email.user === 'string') {
|
||
|
set.smtpUser = config.email.user;
|
||
|
}
|
||
|
if (typeof config.email.pass === 'string') {
|
||
|
set.smtpPass = config.email.pass;
|
||
|
}
|
||
|
if (typeof config.email.useImplicitSslTls === 'boolean') {
|
||
|
set.smtpSecure = config.email.useImplicitSslTls;
|
||
|
}
|
||
|
}
|
||
|
if (config.objectStorage.managed != null && config.objectStorage.managed === true) {
|
||
|
set.useObjectStorage = true;
|
||
|
if (typeof config.objectStorage.baseUrl === 'string') {
|
||
|
set.objectStorageBaseUrl = config.objectStorage.baseUrl;
|
||
|
}
|
||
|
if (typeof config.objectStorage.bucket === 'string') {
|
||
|
set.objectStorageBucket = config.objectStorage.bucket;
|
||
|
}
|
||
|
if (typeof config.objectStorage.prefix === 'string') {
|
||
|
set.objectStoragePrefix = config.objectStorage.prefix;
|
||
|
}
|
||
|
if (typeof config.objectStorage.endpoint === 'string') {
|
||
|
set.objectStorageEndpoint = config.objectStorage.endpoint;
|
||
|
}
|
||
|
if (typeof config.objectStorage.region === 'string') {
|
||
|
set.objectStorageRegion = config.objectStorage.region;
|
||
|
}
|
||
|
if (typeof config.objectStorage.accessKey === 'string') {
|
||
|
set.objectStorageAccessKey = config.objectStorage.accessKey;
|
||
|
}
|
||
|
if (typeof config.objectStorage.secretKey === 'string') {
|
||
|
set.objectStorageSecretKey = config.objectStorage.secretKey;
|
||
|
}
|
||
|
if (typeof config.objectStorage.useSsl === 'boolean') {
|
||
|
set.objectStorageUseSSL = config.objectStorage.useSsl;
|
||
|
}
|
||
|
if (typeof config.objectStorage.connnectOverProxy === 'boolean') {
|
||
|
set.objectStorageUseProxy = config.objectStorage.connnectOverProxy;
|
||
|
}
|
||
|
if (typeof config.objectStorage.setPublicReadOnUpload === 'boolean') {
|
||
|
set.objectStorageSetPublicRead = config.objectStorage.setPublicReadOnUpload;
|
||
|
}
|
||
|
if (typeof config.objectStorage.s3ForcePathStyle === 'boolean') {
|
||
|
set.objectStorageS3ForcePathStyle = config.objectStorage.s3ForcePathStyle;
|
||
|
}
|
||
|
}
|
||
|
if (config.summalyProxyUrl !== undefined) {
|
||
|
set.summalyProxy = config.summalyProxyUrl;
|
||
|
}
|
||
|
await db.transaction(async transactionalEntityManager => {
|
||
|
const metas = await transactionalEntityManager.find(Meta, {
|
||
|
order: {
|
||
|
id: 'DESC',
|
||
|
},
|
||
|
});
|
||
|
|
||
|
const meta = metas[0];
|
||
|
|
||
|
if (meta) {
|
||
|
await transactionalEntityManager.update(Meta, meta.id, set);
|
||
|
} else {
|
||
|
await transactionalEntityManager.save(Meta, set);
|
||
|
}
|
||
|
});
|
||
|
insertModerationLog(me, 'updateMeta');
|
||
|
}
|
||
|
return hosted;
|
||
|
});
|