firefish/packages/backend/src/server/api/endpoints/admin/accounts/hosted.ts
ThatOneCalculator 7c2dabd047
no more eslint
2023-01-12 20:54:33 -08:00

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;
});