diff --git a/src/main/core/Nginx.js b/src/main/core/Nginx.js index 51dae93f..7d7ad066 100644 --- a/src/main/core/Nginx.js +++ b/src/main/core/Nginx.js @@ -135,16 +135,21 @@ export default class Nginx { } } - - - static async websiteExists(serverName, port) { + static async websiteExists(serverName, port = null) { const vhostsPath = GetPath.getNginxVhostsDir() const files = await DirUtil.GetFiles(vhostsPath) - const filterArr = await files.filterAsync(async (path) => { - let confText = await FileUtil.ReadAll(path) + const filterFn = async (path) => { + const confText = await FileUtil.ReadAll(path) const serverNames = this.getAllServerName(confText) - return serverNames.includes(serverName) && this.getPortByConfPath(path) === port - }) + if (serverNames.includes(serverName)) { + if (port != null) { + return this.getPortByConfPath(path) === port + } + return true + } + return false + } + const filterArr = await files.filterAsync(filterFn) return filterArr.length > 0 } diff --git a/src/main/core/website/Website.js b/src/main/core/website/Website.js index 23ec4aa5..e06fe82e 100644 --- a/src/main/core/website/Website.js +++ b/src/main/core/website/Website.js @@ -9,7 +9,7 @@ export default class Website { * @param websiteInfo {WebsiteItem} */ static async add(websiteInfo) { - if (await Nginx.websiteExists(websiteInfo.serverName, websiteInfo.port)) { + if (await this.exists(websiteInfo.serverName, websiteInfo.port)) { throw new Error(`${websiteInfo.serverName}:${websiteInfo.port}\n已经存在,不能重复!`) } @@ -19,6 +19,10 @@ export default class Website { await Nginx.addWebsite(websiteInfo); } + static async exists(serverName, port = null) { + return await Nginx.websiteExists(serverName, port) + } + static async delete(confName) { await Nginx.delWebsite(confName); } diff --git a/src/renderer/components/WebSite/EditWebSite/BasicSetting.vue b/src/renderer/components/WebSite/EditWebSite/BasicSetting.vue index ee984d24..1a5ea45a 100644 --- a/src/renderer/components/WebSite/EditWebSite/BasicSetting.vue +++ b/src/renderer/components/WebSite/EditWebSite/BasicSetting.vue @@ -1,131 +1,135 @@ - - - - - + + + + + diff --git a/src/renderer/views/Website.vue b/src/renderer/views/Website.vue index 5bdb5f7c..009c10f5 100644 --- a/src/renderer/views/Website.vue +++ b/src/renderer/views/Website.vue @@ -159,34 +159,40 @@ search(); const del = async (item) => { try { let options = { - content:t('areYouSure'), + content:t('Delete')+` ${item.serverName}:${item.port} ?`, okText:t('Confirm'), cancelText:t('Cancel'), }; if (await MessageBox.confirm(options)) { await Website.delete(item.confName); } - } catch (error) { + } catch (error) { MessageBox.error(error.message ?? error, '删除出错!'); return; } - //// 会删除所有port的ServerName,需要优化 - // if (item.syncHosts) { - // try { - // await Hosts.delete(item.serverName); - // //删除第二域名时,删除对应的hosts文件配置 - // if (item.extraServerName) { - // await Hosts.delete(item.extraServerName); - // } - // } catch (error) { - // MessageBox.error(error.message ?? error, t('errorOccurredDuring', [mt('sync', 'ws') + 'hosts'])) - // } - // } + if (item.syncHosts) { + const { serverName, extraServerName } = item + syncHosts(serverName, extraServerName) + } search(); } +async function syncHosts(serverName, extraServerName) { + try { + if (!await Website.exists(serverName)) { + await Hosts.delete(serverName); + } + + if (extraServerName && !await Website.exists(extraServerName)) { + await Hosts.delete(extraServerName); + } + } catch { + /* empty */ + } +} + const showAdd = () => { addModalVisible.value = true; }; @@ -222,12 +228,11 @@ const openRootPath = (item) => { .web-header { display: flex; justify-content: space-between; - //padding: 15px 15px; } :deep(td) { height: 57px; } :deep(.ant-table-pagination) { - margin: 6px 0!important; + margin: 6px 10px !important; }