mirror of
https://github.com/coaidev/coai.git
synced 2025-05-19 13:00:14 +09:00
155 lines
2.9 KiB
TypeScript
155 lines
2.9 KiB
TypeScript
import { CommonResponse } from "@/admin/utils.ts";
|
|
import { getErrorMessage } from "@/utils/base.ts";
|
|
import axios from "axios";
|
|
|
|
export type whiteList = {
|
|
enabled: boolean;
|
|
custom: string;
|
|
white_list: string[];
|
|
};
|
|
|
|
export type GeneralState = {
|
|
title: string;
|
|
logo: string;
|
|
backend: string;
|
|
docs: string;
|
|
file: string;
|
|
};
|
|
|
|
export type MailState = {
|
|
host: string;
|
|
port: number;
|
|
username: string;
|
|
password: string;
|
|
from: string;
|
|
white_list: whiteList;
|
|
};
|
|
|
|
export type SearchState = {
|
|
endpoint: string;
|
|
query: number;
|
|
};
|
|
|
|
export type SiteState = {
|
|
close_register: boolean;
|
|
relay_plan: boolean;
|
|
quota: number;
|
|
buy_link: string;
|
|
announcement: string;
|
|
contact: string;
|
|
footer: string;
|
|
auth_footer: boolean;
|
|
};
|
|
|
|
export type CommonState = {
|
|
cache: string[];
|
|
expire: number;
|
|
size: number;
|
|
|
|
article: string[];
|
|
generation: string[];
|
|
};
|
|
|
|
export type SystemProps = {
|
|
general: GeneralState;
|
|
site: SiteState;
|
|
mail: MailState;
|
|
search: SearchState;
|
|
common: CommonState;
|
|
};
|
|
|
|
export type SystemResponse = CommonResponse & {
|
|
data?: SystemProps;
|
|
};
|
|
|
|
export async function getConfig(): Promise<SystemResponse> {
|
|
try {
|
|
const response = await axios.get("/admin/config/view");
|
|
const data = response.data as SystemResponse;
|
|
if (data.status) {
|
|
data.data &&
|
|
(data.data.mail.white_list.white_list =
|
|
data.data.mail.white_list.white_list || commonWhiteList);
|
|
}
|
|
|
|
return data;
|
|
} catch (e) {
|
|
return { status: false, error: getErrorMessage(e) };
|
|
}
|
|
}
|
|
|
|
export async function setConfig(config: SystemProps): Promise<CommonResponse> {
|
|
try {
|
|
const response = await axios.post(`/admin/config/update`, config);
|
|
return response.data as CommonResponse;
|
|
} catch (e) {
|
|
return { status: false, error: getErrorMessage(e) };
|
|
}
|
|
}
|
|
|
|
export async function updateRootPassword(
|
|
password: string,
|
|
): Promise<CommonResponse> {
|
|
try {
|
|
const response = await axios.post(`/admin/user/root`, { password });
|
|
return response.data as CommonResponse;
|
|
} catch (e) {
|
|
return { status: false, error: getErrorMessage(e) };
|
|
}
|
|
}
|
|
|
|
export const commonWhiteList: string[] = [
|
|
"gmail.com",
|
|
"outlook.com",
|
|
"yahoo.com",
|
|
"hotmail.com",
|
|
"foxmail.com",
|
|
"icloud.com",
|
|
"qq.com",
|
|
"163.com",
|
|
"126.com",
|
|
];
|
|
|
|
export const initialSystemState: SystemProps = {
|
|
general: {
|
|
logo: "",
|
|
title: "",
|
|
backend: "",
|
|
docs: "",
|
|
file: "",
|
|
},
|
|
site: {
|
|
relay_plan: false,
|
|
close_register: false,
|
|
quota: 0,
|
|
buy_link: "",
|
|
announcement: "",
|
|
contact: "",
|
|
footer: "",
|
|
auth_footer: false,
|
|
},
|
|
mail: {
|
|
host: "",
|
|
port: 465,
|
|
username: "",
|
|
password: "",
|
|
from: "",
|
|
white_list: {
|
|
enabled: false,
|
|
custom: "",
|
|
white_list: [],
|
|
},
|
|
},
|
|
search: {
|
|
endpoint: "https://duckduckgo-api.vercel.app",
|
|
query: 5,
|
|
},
|
|
common: {
|
|
article: [],
|
|
generation: [],
|
|
cache: [],
|
|
expire: 3600,
|
|
size: 1,
|
|
},
|
|
};
|