diff --git a/electron/controller/ConfigController.ts b/electron/controller/ConfigController.ts index 4c40a72..c638945 100644 --- a/electron/controller/ConfigController.ts +++ b/electron/controller/ConfigController.ts @@ -1,11 +1,11 @@ import BaseController from "./BaseController"; import ServerService from "../service/ServerService"; -import { success } from "../utils/response"; import PathUtils from "../utils/PathUtils"; import fs from "fs"; import FrpcProcessService from "../service/FrpcProcessService"; import SystemService from "../service/SystemService"; import moment from "moment"; +import ResponseUtils from "../utils/ResponseUtils"; class ConfigController extends BaseController { private readonly _serverService: ServerService; @@ -25,19 +25,19 @@ class ConfigController extends BaseController { saveConfig(req: ControllerParam) { this._serverService.saveServerConfig(req.args).then(() => { - req.event.reply(req.channel, success()); + req.event.reply(req.channel, ResponseUtils.success()); }); } getServerConfig(req: ControllerParam) { this._serverService.getServerConfig().then(data => { - req.event.reply(req.channel, success(data)); + req.event.reply(req.channel, ResponseUtils.success(data)); }); } openAppData(req: ControllerParam) { this._systemService.openLocalPath(PathUtils.getAppData()).then(data => { - req.event.reply(req.channel, success(data)); + req.event.reply(req.channel, ResponseUtils.success(data)); }); } @@ -66,7 +66,7 @@ class ConfigController extends BaseController { force: true }); - req.event.reply(req.channel, success()); + req.event.reply(req.channel, ResponseUtils.success()); } exportConfig(req: ControllerParam) { @@ -75,7 +75,7 @@ class ConfigController extends BaseController { "YYYYMMDDhhmmss" )}.toml`; this._serverService.genTomlConfig(path).then(() => { - req.event.reply(req.channel, success(path)); + req.event.reply(req.channel, ResponseUtils.success(path)); }); }); } diff --git a/electron/controller/LaunchController.ts b/electron/controller/LaunchController.ts index a79cd2c..e08d761 100644 --- a/electron/controller/LaunchController.ts +++ b/electron/controller/LaunchController.ts @@ -1,6 +1,6 @@ import BaseController from "./BaseController"; import FrpcProcessService from "../service/FrpcProcessService"; -import { success } from "../utils/response"; +import ResponseUtils from "../utils/ResponseUtils"; class LaunchController extends BaseController { private readonly _frpcProcessService: FrpcProcessService; @@ -14,7 +14,7 @@ class LaunchController extends BaseController { this._frpcProcessService .startFrpcProcess() .then(r => { - req.event.reply(req.channel, success()); + req.event.reply(req.channel, ResponseUtils.success()); }) .catch(err => { console.log(err, "1"); @@ -23,13 +23,13 @@ class LaunchController extends BaseController { terminate(req: ControllerParam) { this._frpcProcessService.stopFrpcProcess().then(r => { - req.event.reply(req.channel, success()); + req.event.reply(req.channel, ResponseUtils.success()); }); } getStatus(req: ControllerParam) { const running = this._frpcProcessService.isRunning(); - req.event.reply(req.channel, success(running)); + req.event.reply(req.channel, ResponseUtils.success(running)); } } diff --git a/electron/controller/LogController.ts b/electron/controller/LogController.ts index c2ad38d..f8b2d3c 100644 --- a/electron/controller/LogController.ts +++ b/electron/controller/LogController.ts @@ -1,6 +1,6 @@ import BaseController from "./BaseController"; import LogService from "../service/LogService"; -import { fail, success } from "../utils/response"; +import ResponseUtils from "../utils/ResponseUtils"; class LogController extends BaseController { private readonly _logService: LogService; @@ -12,23 +12,23 @@ class LogController extends BaseController { getFrpLogContent(req: ControllerParam) { this._logService.getFrpLogContent().then(data => { - req.event.reply(req.channel, success(data)); + req.event.reply(req.channel, ResponseUtils.success(data)); }); } // watchFrpcLogContent(req: ControllerRequest) { // this._logService.watchFrpcLog().then(data => { // console.log('reply watch', data); - // req.event.reply(req.reply, this.success(data)); + // req.event.reply(req.reply, this.ResponseUtils.success(data)); // }); // } openFrpcLogFile(req: ControllerParam) { this._logService.openFrpcLogFile().then(data => { if (data) { - success(null); + ResponseUtils.success(null); } else { - fail(); + ResponseUtils.fail(); } }); } diff --git a/electron/controller/ProxyController.ts b/electron/controller/ProxyController.ts index 53ec86d..dc67a48 100644 --- a/electron/controller/ProxyController.ts +++ b/electron/controller/ProxyController.ts @@ -1,6 +1,6 @@ import BaseController from "./BaseController"; import ProxyService from "../service/ProxyService"; -import { success } from "../utils/response"; +import ResponseUtils from "../utils/ResponseUtils"; import ProxyRepository from "../repository/ProxyRepository"; class ProxyController extends BaseController { @@ -15,37 +15,37 @@ class ProxyController extends BaseController { createProxy(req: ControllerParam) { this._proxyService.insertProxy(req.args).then(data => { - req.event.reply(req.channel, success(data)); + req.event.reply(req.channel, ResponseUtils.success(data)); }); } modifyProxy(req: ControllerParam) { this._proxyService.updateProxy(req.args).then(data => { - req.event.reply(req.channel, success(data)); + req.event.reply(req.channel, ResponseUtils.success(data)); }); } getAllProxies(req: ControllerParam) { this._proxyDao.findAll().then(data => { - req.event.reply(req.channel, success(data)); + req.event.reply(req.channel, ResponseUtils.success(data)); }); } deleteProxy(req: ControllerParam) { this._proxyService.deleteProxy(req.args).then(data => { - req.event.reply(req.channel, success(data)); + req.event.reply(req.channel, ResponseUtils.success(data)); }); } modifyProxyStatus(req: ControllerParam) { this._proxyDao.updateProxyStatus(req.args.id, req.args.status).then(() => { - req.event.reply(req.channel, success()); + req.event.reply(req.channel, ResponseUtils.success()); }); } getLocalPorts(req: ControllerParam) { this._proxyService.getLocalPorts().then(data => { - req.event.reply(req.channel, success(data)); + req.event.reply(req.channel, ResponseUtils.success(data)); }); } } diff --git a/electron/controller/SystemController.ts b/electron/controller/SystemController.ts index ae37162..1721ee9 100644 --- a/electron/controller/SystemController.ts +++ b/electron/controller/SystemController.ts @@ -1,5 +1,5 @@ import SystemService from "../service/SystemService"; -import { fail, success } from "../utils/response"; +import ResponseUtils from "../utils/ResponseUtils"; import PathUtils from "../utils/PathUtils"; class SystemController { @@ -13,22 +13,22 @@ class SystemController { this._systemService .openUrl(req.args.url) .then(() => { - req.event.reply(req.channel, success()); + req.event.reply(req.channel, ResponseUtils.success()); }) .catch(err => { - req.event.reply(req.channel, fail()); + req.event.reply(req.channel, ResponseUtils.fail()); }); } relaunchApp(req: ControllerParam) { this._systemService.relaunch().then(() => { - req.event.reply(req.channel, success()); + req.event.reply(req.channel, ResponseUtils.success()); }); } openAppData(req: ControllerParam) { this._systemService.openLocalPath(PathUtils.getAppData()).then(() => { - req.event.reply(req.channel, success()); + req.event.reply(req.channel, ResponseUtils.success()); }); } } diff --git a/electron/controller/VersionController.ts b/electron/controller/VersionController.ts index 6904228..74c1c5b 100644 --- a/electron/controller/VersionController.ts +++ b/electron/controller/VersionController.ts @@ -1,6 +1,6 @@ import BaseController from "./BaseController"; import VersionService from "../service/VersionService"; -import { fail, success } from "../utils/response"; +import ResponseUtils from "../utils/ResponseUtils"; import VersionRepository from "../repository/VersionRepository"; class VersionController extends BaseController { @@ -17,18 +17,18 @@ class VersionController extends BaseController { this._versionService .getFrpVersionsByGitHub() .then(data => { - req.event.reply(req.channel, success(data)); + req.event.reply(req.channel, ResponseUtils.success(data)); }) .catch(() => { this._versionService.getFrpVersionByLocalJson().then(localData => { - req.event.reply(req.channel, success(localData)); + req.event.reply(req.channel, ResponseUtils.success(localData)); }); }); } getDownloadedVersions(req: ControllerParam) { this._versionDao.findAll().then(data => { - req.event.reply(req.channel, success(data)); + req.event.reply(req.channel, ResponseUtils.success(data)); }); } @@ -37,7 +37,7 @@ class VersionController extends BaseController { .downloadFrpVersion(req.args.githubReleaseId, progress => { req.event.reply( req.channel, - success({ + ResponseUtils.success({ percent: progress.percent, githubReleaseId: req.args.githubReleaseId, completed: progress.percent >= 1 @@ -56,22 +56,22 @@ class VersionController extends BaseController { this._versionService .deleteFrpVersion(req.args.githubReleaseId) .then(() => { - req.event.reply(req.channel, success()); + req.event.reply(req.channel, ResponseUtils.success()); }) .catch(err => { - req.event.reply(req.channel, fail()); + req.event.reply(req.channel, ResponseUtils.fail()); }); } importLocalFrpcVersion(req: ControllerParam) { - this._versionService - .importLocalFrpcVersion(req.win) - .then(data => { - req.event.reply(req.channel, success()); - }) - .catch(err => { - req.event.reply(req.channel, fail()); - }); + // this._versionService + // .importLocalFrpcVersion(req.win) + // .then(data => { + // req.event.reply(req.channel, ResponseUtils.success()); + // }) + // .catch(err => { + // req.event.reply(req.channel, ResponseUtils.fail()); + // }); } } diff --git a/electron/service/FrpcProcessService.ts b/electron/service/FrpcProcessService.ts index 14e135e..93f3bc0 100644 --- a/electron/service/FrpcProcessService.ts +++ b/electron/service/FrpcProcessService.ts @@ -3,7 +3,7 @@ import VersionRepository from "../repository/VersionRepository"; import PathUtils from "../utils/PathUtils"; import GlobalConstant from "../core/GlobalConstant"; import { app, BrowserWindow, Notification } from "electron"; -import { success } from "../utils/response"; +import { success } from "../utils/ResponseUtils"; import treeKill from "tree-kill"; import BeanFactory from "../core/BeanFactory"; @@ -94,7 +94,7 @@ class FrpcProcessService { const win: BrowserWindow = BeanFactory.getBean("win"); win.webContents.send( listenerParam.channel, - success(running) + ResponseUtils.success(running) ); }, GlobalConstant.FRPC_PROCESS_STATUS_CHECK_INTERVAL); } diff --git a/electron/service/LogService.ts b/electron/service/LogService.ts index ec64b5f..96153bd 100644 --- a/electron/service/LogService.ts +++ b/electron/service/LogService.ts @@ -1,5 +1,5 @@ import fs from "fs"; -import { success } from "../utils/response"; +import { success } from "../utils/ResponseUtils"; import PathUtils from "../utils/PathUtils"; import SystemService from "./SystemService"; import BeanFactory from "../core/BeanFactory"; @@ -40,7 +40,7 @@ class LogService { const win: BrowserWindow = BeanFactory.getBean("win"); win.webContents.send( listenerParam.channel, - success(true) + ResponseUtils.success(true) ); } else { } diff --git a/electron/storage/config.ts b/electron/storage/config.ts deleted file mode 100644 index eceba82..0000000 --- a/electron/storage/config.ts +++ /dev/null @@ -1,90 +0,0 @@ -import Datastore from "nedb"; -import path from "path"; -import { app } from "electron"; - -import { logInfo, logError, LogModule, logDebug } from "../utils/log"; -import { maskSensitiveData } from "../utils/desensitize"; - -const configDB = new Datastore({ - autoload: true, - filename: path.join(app.getPath("userData"), "config.db") -}); -/** - * 保存 - */ -export const saveConfig = ( - document: FrpConfig, - cb?: (err: Error | null, numberOfUpdated: number, upsert: boolean) => void -) => { - document["_id"] = "1"; - logDebug( - LogModule.DB, - `Saving configuration to the database. ${JSON.stringify( - maskSensitiveData(document, [ - "serverAddr", - "serverPort", - "authToken", - "user", - "metaToken" - ]) - )}` - ); - configDB.update( - { _id: "1" }, - document, - { upsert: true }, - (err, numberOfUpdated, upsert) => { - if (err) { - logError( - LogModule.DB, - `Error saving configuration: ${err.message}` - ); - } else { - logInfo( - LogModule.DB, - `Configuration saved successfully. Updated: ${numberOfUpdated}, Upsert: ${upsert}` - ); // 添加成功日志 - } - if (cb) cb(err, numberOfUpdated, upsert); - } - ); -}; - -/** - * 查找 - * @param cb - */ -export const getConfig = ( - cb: (err: Error | null, document: FrpConfig) => void -) => { - logInfo(LogModule.DB, "Retrieving configuration from the database."); // 添加信息日志 - configDB.findOne({ _id: "1" }, (err, document) => { - if (err) { - logError( - LogModule.DB, - `Error retrieving configuration: ${err.message}` - ); // 添加错误日志 - } else { - logInfo(LogModule.DB, "Configuration retrieved successfully."); // 添加成功日志 - } - cb(err, document); - }); -}; - -export const clearConfig = (cb?: (err: Error | null, n: number) => void) => { - logInfo(LogModule.DB, "Clearing all configurations from the database."); // 添加信息日志 - configDB.remove({}, { multi: true }, (err, n) => { - if (err) { - logError( - LogModule.DB, - `Error clearing configurations: ${err.message}` - ); // 添加错误日志 - } else { - logInfo( - LogModule.DB, - `Successfully cleared configurations. Number of documents removed: ${n}` - ); // 添加成功日志 - } - if (cb) cb(err, n); - }); -}; diff --git a/electron/storage/proxy.ts b/electron/storage/proxy.ts deleted file mode 100644 index 6020d2a..0000000 --- a/electron/storage/proxy.ts +++ /dev/null @@ -1,143 +0,0 @@ -import Datastore from "nedb"; -import path from "path"; -import { app } from "electron"; - -import { logInfo, logError, LogModule, logDebug } from "../utils/log"; - -const proxyDB = new Datastore({ - autoload: true, - filename: path.join(app.getPath("userData"), "proxy.db") -}); - -export const insertProxy = ( - proxy: Proxy, - cb?: (err: Error | null, document: Proxy) => void -) => { - logInfo(LogModule.DB, `Inserting proxy: ${JSON.stringify(proxy)}`); - proxyDB.insert(proxy, (err, document) => { - if (err) { - logError(LogModule.DB, `Error inserting proxy: ${err.message}`); - } else { - logInfo( - LogModule.DB, - `Proxy inserted successfully: ${JSON.stringify(document)}` - ); - } - if (cb) cb(err, document); - }); -}; - -export const deleteProxyById = ( - _id: string, - cb?: (err: Error | null, n: number) => void -) => { - logInfo(LogModule.DB, `Deleting proxy with ID: ${_id}`); - proxyDB.remove({ _id: _id }, (err, n) => { - if (err) { - logError(LogModule.DB, `Error deleting proxy: ${err.message}`); - } else { - logInfo( - LogModule.DB, - `Proxy deleted successfully. Number of documents removed: ${n}` - ); - } - if (cb) cb(err, n); - }); -}; - -export const updateProxyById = ( - proxy: Proxy, - cb?: (err: Error | null, numberOfUpdated: number, upsert: boolean) => void -) => { - logInfo(LogModule.DB, `Updating proxy: ${JSON.stringify(proxy)}`); - proxyDB.update( - { _id: proxy._id }, - proxy, - {}, - (err, numberOfUpdated, upsert) => { - if (err) { - logError(LogModule.DB, `Error updating proxy: ${err.message}`); - } else { - logInfo( - LogModule.DB, - `Proxy updated successfully. Updated: ${numberOfUpdated}, Upsert: ${upsert}` - ); - } - if (cb) cb(err, numberOfUpdated, upsert); - } - ); -}; - -export const listProxy = ( - callback: (err: Error | null, documents: Proxy[]) => void -) => { - logInfo(LogModule.DB, `Listing all proxies`); - proxyDB.find({}, (err, documents) => { - if (err) { - logError(LogModule.DB, `Error listing proxies: ${err.message}`); - } else { - logInfo( - LogModule.DB, - `Proxies listed successfully. Count: ${documents.length}` - ); - } - callback(err, documents); - }); -}; - -export const getProxyById = ( - id: string, - callback: (err: Error | null, document: Proxy) => void -) => { - logInfo(LogModule.DB, `Getting proxy by ID: ${id}`); - proxyDB.findOne({ _id: id }, (err, document) => { - if (err) { - logError(LogModule.DB, `Error getting proxy by ID: ${err.message}`); - } else { - logInfo( - LogModule.DB, - `Proxy retrieved successfully: ${JSON.stringify(document)}` - ); - } - callback(err, document); - }); -}; - -export const clearProxy = (cb?: (err: Error | null, n: number) => void) => { - logInfo(LogModule.DB, `Clearing all proxies`); - proxyDB.remove({}, { multi: true }, (err, n) => { - if (err) { - logError(LogModule.DB, `Error clearing proxies: ${err.message}`); - } else { - logInfo( - LogModule.DB, - `Proxies cleared successfully. Number of documents removed: ${n}` - ); - } - if (cb) cb(err, n); - }); -}; - -export const updateProxyStatus = ( - id: string, - st: boolean, - cb?: (err: Error | null, numberOfUpdated: number, upsert: boolean) => void -) => { - logInfo(LogModule.DB, `Updating proxy status for ID: ${id} to ${st}`); - proxyDB.update( - { _id: id }, - { $set: { status: st } }, - {}, - (err, numberOfUpdated, upsert) => { - if (err) { - logError(LogModule.DB, `Error updating proxy status: ${err.message}`); - } else { - logInfo( - LogModule.DB, - `Proxy status updated successfully. Updated: ${numberOfUpdated}, Upsert: ${upsert}` - ); - } - if (cb) cb(err, numberOfUpdated, upsert); - } - ); -}; diff --git a/electron/storage/version.ts b/electron/storage/version.ts deleted file mode 100644 index 10b2c53..0000000 --- a/electron/storage/version.ts +++ /dev/null @@ -1,90 +0,0 @@ -import Datastore from "nedb"; -import path from "path"; -import { app } from "electron"; - -import { logInfo, logError, LogModule, logDebug } from "../utils/log"; - -const versionDB = new Datastore({ - autoload: true, - filename: path.join(app.getPath("userData"), "version.db") -}); - -/** - * Insert version - * @param version - * @param cb - */ -export const insertVersion = ( - version: FrpVersion, - cb?: (err: Error | null, document: any) => void -) => { - logInfo(LogModule.DB, `Inserting version: ${JSON.stringify(version)}`); - versionDB.insert(version, (err, document) => { - if (err) { - logError(LogModule.DB, `Error inserting version: ${err.message}`); - } else { - logInfo(LogModule.DB, `Version inserted successfully: ${JSON.stringify(document)}`); - } - if (cb) cb(err, document); - }); -}; - -/** - * List versions - * @param cb - */ -export const listVersion = ( - callback: (err: Error | null, documents: FrpVersion[]) => void -) => { - logInfo(LogModule.DB, "Listing all versions."); - versionDB.find({}, (err, documents) => { - if (err) { - logError(LogModule.DB, `Error listing versions: ${err.message}`); - } else { - logInfo(LogModule.DB, `Successfully listed versions: ${documents.length} found.`); - } - callback(err, documents); - }); -}; - -export const getVersionById = ( - id: number, - callback: (err: Error | null, document: FrpVersion) => void -) => { - logInfo(LogModule.DB, `Retrieving version by ID: ${id}`); - versionDB.findOne({ id: id }, (err, document) => { - if (err) { - logError(LogModule.DB, `Error retrieving version by ID: ${err.message}`); - } else { - logInfo(LogModule.DB, `Version retrieved successfully: ${JSON.stringify(document)}`); - } - callback(err, document); - }); -}; - -export const deleteVersionById = ( - id: string, - callback: (err: Error | null, document: any) => void -) => { - logInfo(LogModule.DB, `Deleting version: ${id}`); - versionDB.remove({ id: id }, (err, document) => { - if (err) { - logError(LogModule.DB, `Error deleting version: ${err.message}`); - } else { - logInfo(LogModule.DB, `Version deleted successfully: ${id}`); - } - callback(err, document); - }); -}; - -export const clearVersion = (cb?: (err: Error | null, n: number) => void) => { - logInfo(LogModule.DB, "Clearing all versions from the database."); - versionDB.remove({}, { multi: true }, (err, n) => { - if (err) { - logError(LogModule.DB, `Error clearing versions: ${err.message}`); - } else { - logInfo(LogModule.DB, `Successfully cleared versions. Number of documents removed: ${n}`); - } - if (cb) cb(err, n); - }); -}; diff --git a/electron/utils/ResponseUtils.ts b/electron/utils/ResponseUtils.ts new file mode 100644 index 0000000..db3c70c --- /dev/null +++ b/electron/utils/ResponseUtils.ts @@ -0,0 +1,21 @@ +class ResponseUtils { + public static success(data?: any, message?: string) { + const resp: ApiResponse = { + success: true, + data: data, + message: message || "successful." + }; + return resp; + } + + public static fail(message?: string) { + const resp: ApiResponse = { + success: false, + data: null, + message: message || "internal error." + }; + return resp; + } +} + +export default ResponseUtils; diff --git a/electron/utils/desensitize.ts b/electron/utils/desensitize.ts deleted file mode 100644 index ffe579b..0000000 --- a/electron/utils/desensitize.ts +++ /dev/null @@ -1,12 +0,0 @@ -export const maskSensitiveData = ( - obj: Record, - keysToMask: string[] -) => { - const maskedObj = JSON.parse(JSON.stringify(obj)); - keysToMask.forEach(key => { - if (maskedObj.hasOwnProperty(key)) { - maskedObj[key] = "***"; - } - }); - return maskedObj; -}; diff --git a/electron/utils/log.ts b/electron/utils/log.ts deleted file mode 100644 index 9fbd786..0000000 --- a/electron/utils/log.ts +++ /dev/null @@ -1,30 +0,0 @@ -import log from "electron-log"; -// 定义模块枚举 -export enum LogModule { - APP = "app", - FRP_CLIENT = "frpc client", - GITHUB = "github", - DB = "db" -} - -export const initLog = () => { - log.transports.file.level = "debug"; - log.transports.console.level = "debug"; -}; - -// 自定义日志输出函数,记录到指定业务模块 -export const logInfo = (module: LogModule, message: string) => { - log.info(`[${module}] ${message}`); -}; - -export const logError = (module: LogModule, message: string) => { - log.error(`[${module}] ${message}`); -}; - -export const logDebug = (module: LogModule, message: string) => { - log.debug(`[${module}] ${message}`); -}; - -export const logWarn = (module: LogModule, message: string) => { - log.warn(`[${module}] ${message}`); -}; diff --git a/electron/utils/response.ts b/electron/utils/response.ts deleted file mode 100644 index c099b9f..0000000 --- a/electron/utils/response.ts +++ /dev/null @@ -1,26 +0,0 @@ -export function success(data?: any, message?: string) { - const resp: ApiResponse = { - success: true, - data: data, - message: message || "successful." - }; - return resp; -} - -// export function success(message?: string) { -// const resp: ApiResponse = { -// success: true, -// data: null, -// message: message || "successful." -// }; -// return resp; -// } - -export function fail(message?: string) { - const resp: ApiResponse = { - success: false, - data: null, - message: message || "internal error." - }; - return resp; -}