forked from mirrors/firefish
118 lines
3.6 KiB
TypeScript
118 lines
3.6 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;
|
|
|
|
|
|
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;
|
|
});
|