🏗️ refactor config handling and implement TOML import functionality
This commit is contained in:
parent
7da8bf025b
commit
cd5122c6cf
@ -100,6 +100,12 @@ class ConfigController extends BaseController {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
importTomlConfig(req: ControllerParam) {
|
||||||
|
this._serverService.importTomlConfig().then(() => {
|
||||||
|
req.event.reply(req.channel, ResponseUtils.success());
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default ConfigController;
|
export default ConfigController;
|
||||||
|
@ -16,6 +16,10 @@ export const ipcRouters: IpcRouters = {
|
|||||||
exportConfig: {
|
exportConfig: {
|
||||||
path: "server/exportConfig",
|
path: "server/exportConfig",
|
||||||
controller: "configController.exportConfig"
|
controller: "configController.exportConfig"
|
||||||
|
},
|
||||||
|
importTomlConfig: {
|
||||||
|
path: "server/importTomlConfig",
|
||||||
|
controller: "configController.importTomlConfig"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
LOG: {
|
LOG: {
|
||||||
|
@ -79,7 +79,7 @@ class ServerService extends BaseService<OpenSourceFrpcDesktopServer> {
|
|||||||
const result = await dialog.showOpenDialog(win, {
|
const result = await dialog.showOpenDialog(win, {
|
||||||
properties: ["openFile"],
|
properties: ["openFile"],
|
||||||
filters: [
|
filters: [
|
||||||
{ name: "Frpc", extensions: ["tar.gz", "zip"] } // 允许选择的文件类型,分开后缀以确保可以选择
|
{ name: "Frpc Toml ConfigFile", extensions: ["toml"] }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
if (result.canceled) {
|
if (result.canceled) {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { defineComponent, onMounted, onUnmounted, reactive, ref } from "vue";
|
import { defineComponent, onMounted, onUnmounted, reactive, ref } from "vue";
|
||||||
import { ipcRenderer } from "electron";
|
|
||||||
import { ElMessage, ElMessageBox, FormInstance, FormRules } from "element-plus";
|
import { ElMessage, ElMessageBox, FormInstance, FormRules } from "element-plus";
|
||||||
import Breadcrumb from "@/layout/compoenets/Breadcrumb.vue";
|
import Breadcrumb from "@/layout/compoenets/Breadcrumb.vue";
|
||||||
import { useDebounceFn } from "@vueuse/core";
|
import { useDebounceFn } from "@vueuse/core";
|
||||||
@ -9,6 +8,7 @@ import IconifyIconOffline from "@/components/IconifyIcon/src/iconifyIconOffline"
|
|||||||
import { on, removeRouterListeners, send } from "@/utils/ipcUtils";
|
import { on, removeRouterListeners, send } from "@/utils/ipcUtils";
|
||||||
import { ipcRouters } from "../../../electron/core/IpcRouter";
|
import { ipcRouters } from "../../../electron/core/IpcRouter";
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
|
import confetti from "canvas-confetti/src/confetti.js";
|
||||||
|
|
||||||
defineComponent({
|
defineComponent({
|
||||||
name: "Config"
|
name: "Config"
|
||||||
@ -248,14 +248,14 @@ onMounted(() => {
|
|||||||
console.log("data", data);
|
console.log("data", data);
|
||||||
if (data) {
|
if (data) {
|
||||||
formData.value = data;
|
formData.value = data;
|
||||||
|
checkAndResetVersion();
|
||||||
}
|
}
|
||||||
loading.value--;
|
loading.value--;
|
||||||
});
|
});
|
||||||
|
|
||||||
on(ipcRouters.VERSION.getDownloadedVersions, data => {
|
on(ipcRouters.VERSION.getDownloadedVersions, data => {
|
||||||
console.log("versions", data);
|
|
||||||
versions.value = data;
|
versions.value = data;
|
||||||
// checkAndResetVersion();
|
checkAndResetVersion();
|
||||||
});
|
});
|
||||||
|
|
||||||
on(ipcRouters.SERVER.saveConfig, data => {
|
on(ipcRouters.SERVER.saveConfig, data => {
|
||||||
@ -280,7 +280,7 @@ onMounted(() => {
|
|||||||
// formData.value.tlsConfigTrustedCaFile = data as string;
|
// formData.value.tlsConfigTrustedCaFile = data as string;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
// ipcRenderer.on("Config.getConfig.hook", (event, args) => {
|
// ipcRenderer.on("Config.getConfig.hook", (event, args) => {
|
||||||
// const { err, data } = args;
|
// const { err, data } = args;
|
||||||
@ -379,25 +379,28 @@ onMounted(() => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
on(ipcRouters.SERVER.importTomlConfig, data => {
|
||||||
|
// 礼花
|
||||||
|
confetti({
|
||||||
|
zIndex: 12002,
|
||||||
|
particleCount: 200,
|
||||||
|
spread: 70,
|
||||||
|
origin: { y: 0.6 }
|
||||||
|
});
|
||||||
|
ElMessageBox.alert("🎉 恭喜你,导入成功 请重启软件", `提示`, {
|
||||||
|
closeOnClickModal: false,
|
||||||
|
showClose: false,
|
||||||
|
confirmButtonText: "立即重启"
|
||||||
|
}).then(() => {
|
||||||
|
send(ipcRouters.SYSTEM.relaunchApp);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
on(ipcRouters.SERVER.exportConfig, data => {
|
on(ipcRouters.SERVER.exportConfig, data => {
|
||||||
const { canceled, path } = data;
|
const { canceled, path } = data;
|
||||||
if (!canceled) {
|
if (!canceled) {
|
||||||
ElMessageBox.alert(`配置路径:${path}`, `🎉 导出成功`);
|
ElMessageBox.alert(`配置路径:${path}`, `🎉 导出成功`);
|
||||||
}
|
}
|
||||||
// // 礼花
|
|
||||||
// confetti({
|
|
||||||
// zIndex: 12002,
|
|
||||||
// particleCount: 200,
|
|
||||||
// spread: 70,
|
|
||||||
// origin: { y: 0.6 }
|
|
||||||
// });
|
|
||||||
// ElMessageBox.alert("🎉 恭喜你,导入成功 请重启软件", `提示`, {
|
|
||||||
// closeOnClickModal: false,
|
|
||||||
// showClose: false,
|
|
||||||
// confirmButtonText: "立即重启"
|
|
||||||
// }).then(() => {
|
|
||||||
// send(ipcRouters.SYSTEM.relaunchApp);
|
|
||||||
// });
|
|
||||||
});
|
});
|
||||||
// ElMessageBox.alert(data, `提示`);
|
// ElMessageBox.alert(data, `提示`);
|
||||||
on(ipcRouters.SYSTEM.openAppData, () => {
|
on(ipcRouters.SYSTEM.openAppData, () => {
|
||||||
@ -414,37 +417,18 @@ const handleSelectFile = (type: number, ext: string[]) => {
|
|||||||
name: "",
|
name: "",
|
||||||
extensions: ext
|
extensions: ext
|
||||||
});
|
});
|
||||||
// ipcRenderer.invoke("file.selectFile", ext).then(r => {
|
|
||||||
// switch (type) {
|
|
||||||
// case 1:
|
|
||||||
// formData.value.tlsConfigCertFile = r[0];
|
|
||||||
// break;
|
|
||||||
// case 2:
|
|
||||||
// formData.value.tlsConfigKeyFile = r[0];
|
|
||||||
// break;
|
|
||||||
// case 3:
|
|
||||||
// formData.value.tlsConfigTrustedCaFile = r[0];
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// console.log(r);
|
|
||||||
// });
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分享配置
|
* 分享配置
|
||||||
*/
|
*/
|
||||||
const handleCopyServerConfig2Base64 = useDebounceFn(() => {
|
const handleCopyServerConfig2Base64 = useDebounceFn(() => {
|
||||||
// const shareConfig: ShareLinkConfig = {
|
const { _id, frpcVersion, webServer, system, ...shareConfig } = _.cloneDeep(
|
||||||
// serverAddr: formData.value.serverAddr,
|
formData.value
|
||||||
// serverPort: formData.value.serverPort,
|
);
|
||||||
// authMethod: formData.value.authMethod,
|
shareConfig.transport.tls.certFile = "";
|
||||||
// authToken: formData.value.authToken,
|
shareConfig.transport.tls.keyFile = "";
|
||||||
// transportHeartbeatInterval: formData.value.transportHeartbeatInterval,
|
shareConfig.transport.tls.trustedCaFile = "";
|
||||||
// transportHeartbeatTimeout: formData.value.transportHeartbeatTimeout,
|
|
||||||
// user: formData.value.user,
|
|
||||||
// metaToken: formData.value.metaToken
|
|
||||||
// };
|
|
||||||
const { _id, frpcVersion, ...shareConfig } = formData.value;
|
|
||||||
const base64str = Base64.encode(JSON.stringify(shareConfig));
|
const base64str = Base64.encode(JSON.stringify(shareConfig));
|
||||||
copyServerConfigBase64.value = protocol.value + base64str;
|
copyServerConfigBase64.value = protocol.value + base64str;
|
||||||
visibles.copyServerConfig = true;
|
visibles.copyServerConfig = true;
|
||||||
@ -513,7 +497,7 @@ const handleExportConfig = useDebounceFn(() => {
|
|||||||
}, 300);
|
}, 300);
|
||||||
|
|
||||||
const handleImportConfig = () => {
|
const handleImportConfig = () => {
|
||||||
ipcRenderer.send("config.importConfig");
|
send(ipcRouters.SERVER.importTomlConfig);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleResetConfig = () => {
|
const handleResetConfig = () => {
|
||||||
@ -542,6 +526,7 @@ onUnmounted(() => {
|
|||||||
removeRouterListeners(ipcRouters.VERSION.getDownloadedVersions);
|
removeRouterListeners(ipcRouters.VERSION.getDownloadedVersions);
|
||||||
removeRouterListeners(ipcRouters.SERVER.exportConfig);
|
removeRouterListeners(ipcRouters.SERVER.exportConfig);
|
||||||
removeRouterListeners(ipcRouters.SYSTEM.openAppData);
|
removeRouterListeners(ipcRouters.SYSTEM.openAppData);
|
||||||
|
removeRouterListeners(ipcRouters.SERVER.importTomlConfig);
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
|
Loading…
Reference in New Issue
Block a user