From 4b517285f011ce28a4f8b57d4462f2b9f0735da2 Mon Sep 17 00:00:00 2001 From: notte <54543761+ikxin@users.noreply.github.com> Date: Mon, 23 Mar 2026 17:46:15 +0800 Subject: [PATCH 1/2] =?UTF-8?q?chore:=20=E5=88=A0=E9=99=A4=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E9=81=97=E7=95=99=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/mcp.json | 15 - app/assets/css/main.css | 50 - app/components/AppFooter.vue | 32 +- app/components/AppHeader.vue | 114 +-- app/components/CommonActivate.vue | 129 +-- app/components/CommonTips.vue | 44 +- app/composables/useMotionPresets.ts | 111 -- app/layouts/default.vue | 46 +- app/pages/activate.vue | 126 +-- app/pages/activate/office.vue | 22 +- app/pages/activate/windows-server.vue | 22 +- app/pages/activate/windows.vue | 22 +- app/pages/check/index.vue | 133 +-- app/pages/index.vue | 182 +--- app/pages/monitor.vue | 26 +- node-vlmcs/src/index.ts | 10 +- nuxt.config.ts | 1 - package.json | 3 +- pnpm-lock.yaml | 1074 ++++++++++---------- src/App.vue | 7 - src/assets/fonts/AlimamaFangYuanTiVF.woff2 | Bin 2935452 -> 0 bytes src/assets/fonts/moonbridge.woff | Bin 1765656 -> 0 bytes src/assets/icons/logos/arco.svg | 17 - src/assets/icons/logos/bun.svg | 49 - src/assets/icons/logos/drizzle.svg | 15 - src/assets/icons/logos/elysia.svg | 83 -- src/assets/icons/logos/markdown.svg | 37 - src/assets/icons/logos/pinia.svg | 61 -- src/assets/icons/logos/typescript.svg | 10 - src/assets/icons/logos/unjs.svg | 25 - src/assets/icons/logos/unocss.svg | 15 - src/assets/icons/logos/vite.svg | 21 - src/assets/icons/logos/vue-i18n.svg | 124 --- src/assets/icons/logos/vue-router.svg | 5 - src/assets/icons/logos/vue.svg | 5 - src/assets/icons/logos/vueuse.svg | 10 - src/assets/images/activate.png | Bin 264283 -> 0 bytes src/assets/images/check.png | Bin 233366 -> 0 bytes src/assets/images/monitor.png | Bin 310755 -> 0 bytes src/assets/images/preview.png | Bin 733031 -> 0 bytes src/assets/images/readme-logo.svg | 171 ---- src/assets/images/v0.1.5.png | Bin 310647 -> 0 bytes src/assets/images/v1.0.0.png | Bin 292557 -> 0 bytes src/assets/images/v1.2.0.png | Bin 296734 -> 0 bytes src/components/common-activate.vue | 139 --- src/components/common-tips.vue | 83 -- src/components/custom-footer.vue | 30 - src/components/custom-header.vue | 173 ---- src/composables/useScript.ts | 28 - src/main.ts | 20 - src/router/index.ts | 13 - src/store/app.ts | 29 - src/store/monitor.ts | 19 - src/styles/custom.less | 22 - src/styles/style.css | 19 - src/utils/fetch.ts | 16 - src/utils/formatter.ts | 19 - src/views/activate/office.vue | 35 - src/views/activate/windows-server.vue | 34 - src/views/activate/windows.vue | 30 - src/views/download/index.vue | 3 - src/views/guide/index.vue | 3 - src/views/index.vue | 79 -- src/views/monitor.vue | 99 -- 64 files changed, 848 insertions(+), 2862 deletions(-) delete mode 100644 .vscode/mcp.json delete mode 100644 app/composables/useMotionPresets.ts delete mode 100644 src/App.vue delete mode 100644 src/assets/fonts/AlimamaFangYuanTiVF.woff2 delete mode 100644 src/assets/fonts/moonbridge.woff delete mode 100644 src/assets/icons/logos/arco.svg delete mode 100644 src/assets/icons/logos/bun.svg delete mode 100644 src/assets/icons/logos/drizzle.svg delete mode 100644 src/assets/icons/logos/elysia.svg delete mode 100644 src/assets/icons/logos/markdown.svg delete mode 100644 src/assets/icons/logos/pinia.svg delete mode 100644 src/assets/icons/logos/typescript.svg delete mode 100644 src/assets/icons/logos/unjs.svg delete mode 100644 src/assets/icons/logos/unocss.svg delete mode 100644 src/assets/icons/logos/vite.svg delete mode 100644 src/assets/icons/logos/vue-i18n.svg delete mode 100644 src/assets/icons/logos/vue-router.svg delete mode 100644 src/assets/icons/logos/vue.svg delete mode 100644 src/assets/icons/logos/vueuse.svg delete mode 100644 src/assets/images/activate.png delete mode 100644 src/assets/images/check.png delete mode 100644 src/assets/images/monitor.png delete mode 100644 src/assets/images/preview.png delete mode 100644 src/assets/images/readme-logo.svg delete mode 100644 src/assets/images/v0.1.5.png delete mode 100644 src/assets/images/v1.0.0.png delete mode 100644 src/assets/images/v1.2.0.png delete mode 100644 src/components/common-activate.vue delete mode 100644 src/components/common-tips.vue delete mode 100644 src/components/custom-footer.vue delete mode 100644 src/components/custom-header.vue delete mode 100644 src/composables/useScript.ts delete mode 100644 src/main.ts delete mode 100644 src/router/index.ts delete mode 100644 src/store/app.ts delete mode 100644 src/store/monitor.ts delete mode 100644 src/styles/custom.less delete mode 100644 src/styles/style.css delete mode 100644 src/utils/fetch.ts delete mode 100644 src/utils/formatter.ts delete mode 100644 src/views/activate/office.vue delete mode 100644 src/views/activate/windows-server.vue delete mode 100644 src/views/activate/windows.vue delete mode 100644 src/views/download/index.vue delete mode 100644 src/views/guide/index.vue delete mode 100644 src/views/index.vue delete mode 100644 src/views/monitor.vue diff --git a/.vscode/mcp.json b/.vscode/mcp.json deleted file mode 100644 index ec9c34a8..00000000 --- a/.vscode/mcp.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "servers": { - "nuxt": { - "type": "http", - "url": "https://nuxt.com/mcp" - }, - "motion": { - "command": "npx", - "args": [ - "-y", - "https://api.motion.dev/registry.tgz?package=motion-studio-mcp&version=latest" - ] - } - } -} diff --git a/app/assets/css/main.css b/app/assets/css/main.css index 930153ef..7ad8d294 100644 --- a/app/assets/css/main.css +++ b/app/assets/css/main.css @@ -1,23 +1,5 @@ body { - background: - radial-gradient( - circle at top left, - rgba(232, 83, 73, 0.08), - transparent 28% - ), - radial-gradient( - circle at top right, - rgba(48, 111, 255, 0.08), - transparent 32% - ), - linear-gradient( - 180deg, - var(--color-bg-1) 0%, - var(--color-neutral-2) 46%, - var(--color-bg-1) 100% - ); background-color: var(--color-neutral-2); - background-attachment: fixed; color: var(--color-text-2); --border-radius-small: 4px; --border-radius-medium: 6px; @@ -28,38 +10,6 @@ body { @apply flex min-h-screen flex-col gap-4; } -a, -button, -.arco-btn, -.arco-card, -.arco-menu-item, -.arco-link { - transition: - transform 0.25s ease, - box-shadow 0.25s ease, - border-color 0.25s ease, - background-color 0.25s ease, - color 0.25s ease; -} - -/* .arco-card, -.arco-collapse, -.arco-collapse-item, -.arco-collapse-item-header, -.arco-collapse-item-content, -.arco-menu, -.arco-menu-inner, -.arco-menu-light, -.arco-layout-sider, -.arco-layout-sider-light, -.arco-layout-sider-children, -.arco-menu-inline-header, -.arco-menu-inline-content, -.arco-menu-item, -.arco-menu-item-inner { - background-color: transparent !important; -} */ - .arco-drawer-body { padding: 0; } diff --git a/app/components/AppFooter.vue b/app/components/AppFooter.vue index 130e3c9f..58fe4e41 100644 --- a/app/components/AppFooter.vue +++ b/app/components/AppFooter.vue @@ -1,9 +1,5 @@ @@ -12,40 +8,24 @@ const { hidden, hoverLift, press, viewport, visible } = useMotionPresets() class="mx-auto flex min-h-14 max-w-full flex-col items-center justify-center gap-1 py-3 text-center text-sm md:flex-row md:gap-0 md:py-0" > - + Copyright © {{ new Date().getFullYear() }} KMS Tools - - + + Running on AsiaYun - - + + Code with by {{ t('label.author') }} - + diff --git a/app/components/AppHeader.vue b/app/components/AppHeader.vue index 9c3b3c13..77ceb5e3 100644 --- a/app/components/AppHeader.vue +++ b/app/components/AppHeader.vue @@ -1,19 +1,12 @@ - - - - + + - + {{ title }} - + - - + @@ -109,23 +90,19 @@ const { copy, copied } = useClipboard({ - - - + - - - {{ t('label.x64') }} - {{ t('label.x86') }} - - - - - + + {{ t('label.x64') }} + {{ t('label.x86') }} + + + - - - - - - - - - - - - - - - - - - - - - - - - - {{ t('label.download') }} - - - - - - - {{ copied ? t('label.copy-success') : t('label.copy') }} + + + + + + + + + + + + + + + + + + {{ t('label.download') }} - - - - + + + + {{ copied ? t('label.copy-success') : t('label.copy') }} + + + - - - + + diff --git a/app/components/CommonTips.vue b/app/components/CommonTips.vue index 4e6acc25..548dbab9 100644 --- a/app/components/CommonTips.vue +++ b/app/components/CommonTips.vue @@ -1,10 +1,6 @@ - - - - - - {{ t('title.tips') }} - - - - - - - - - + + + + + {{ t('title.tips') }} + + + + + + + + diff --git a/app/composables/useMotionPresets.ts b/app/composables/useMotionPresets.ts deleted file mode 100644 index a1ea7e39..00000000 --- a/app/composables/useMotionPresets.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { useReducedMotion } from 'motion-v' - -const easeOut = [0.22, 1, 0.36, 1] as const - -const springTransition = { - type: 'spring', - stiffness: 120, - damping: 20, - mass: 1, -} as const - -export function useMotionPresets() { - const reduceMotion = useReducedMotion() - - const viewport = { - once: true, - amount: 0.2, - } as const - - const hidden = (y = 16, scale = 1) => { - if (reduceMotion.value) { - return { opacity: 1, y: 0, scale: 1, filter: 'blur(0px)' } - } - - return { - opacity: 0, - y, - scale, - filter: 'blur(6px)', - } - } - - const visible = (delay = 0) => { - if (reduceMotion.value) { - return { opacity: 1, y: 0, scale: 1, filter: 'blur(0px)' } - } - - return { - opacity: 1, - y: 0, - scale: 1, - filter: 'blur(0px)', - transition: { - ...springTransition, - delay, - }, - } - } - - const softExit = (y = -10) => { - if (reduceMotion.value) { - return { opacity: 1 } - } - - return { - opacity: 0, - y, - filter: 'blur(4px)', - transition: { - duration: 0.2, - ease: 'easeInOut', - }, - } - } - - const hoverLift = (distance = 5, scale = 1.01) => { - if (reduceMotion.value) { - return {} - } - - return { - y: -distance, - scale, - transition: { - duration: 0.22, - ease: easeOut, - }, - } - } - - const press = reduceMotion.value ? { scale: 1 } : { scale: 0.985 } - - const float = (distance = 8, duration = 9) => { - if (reduceMotion.value) { - return {} - } - - return { - y: [0, -distance, 0], - rotate: [0, 0.6, 0], - transition: { - duration, - ease: 'easeInOut' as const, - repeat: Infinity, - }, - } - } - - return { - easeOut, - float, - hidden, - hoverLift, - press, - reduceMotion, - softExit, - springTransition, - viewport, - visible, - } -} diff --git a/app/layouts/default.vue b/app/layouts/default.vue index abd11c9e..64ab5107 100644 --- a/app/layouts/default.vue +++ b/app/layouts/default.vue @@ -1,12 +1,8 @@ - - - - - - - - + + diff --git a/app/pages/activate/windows-server.vue b/app/pages/activate/windows-server.vue index 5c3cb247..a30b5256 100644 --- a/app/pages/activate/windows-server.vue +++ b/app/pages/activate/windows-server.vue @@ -1,12 +1,8 @@ - - - - - - - - + + diff --git a/app/pages/activate/windows.vue b/app/pages/activate/windows.vue index 20921f25..8be71327 100644 --- a/app/pages/activate/windows.vue +++ b/app/pages/activate/windows.vue @@ -1,12 +1,8 @@ - - - - - - - - + + diff --git a/app/pages/check/index.vue b/app/pages/check/index.vue index d6a106d5..209b9855 100644 --- a/app/pages/check/index.vue +++ b/app/pages/check/index.vue @@ -1,6 +1,5 @@ - - - - - - {{ t('title.kms-check') }} - - - - - - - - - - - - - - - - - - - - - - - - - V6 Protocol - V5 Protocol - V4 Protocol - - - - - - - - {{ t('label.submit') }} - - - - - - - - - - {{ resultInfo.message }} - - - - - - + + + + + {{ t('title.kms-check') }} + + + + + + + + + + + + + + + + + + V6 Protocol + V5 Protocol + V4 Protocol + + + + + {{ t('label.submit') }} + + + + + {{ resultInfo.message }} + + + diff --git a/app/pages/index.vue b/app/pages/index.vue index d1c116d1..d111d982 100644 --- a/app/pages/index.vue +++ b/app/pages/index.vue @@ -1,19 +1,7 @@ - - - - - - - - {{ title }} - - - - - - - - - - - - - - - - - {{ t('label.x64') }} - {{ t('label.x86') }} - - - - - - - - {{ item.host }} - - {{ `${(item.rate * 100).toFixed(2)} %` }} - - - {{ `${item.delay.toFixed(2)} ms` }} - - - - - - - - - - - - - - - - - {{ t('label.download') }} - - - - {{ copied ? t('label.copy-success') : t('label.copy') }} - - - - - - - diff --git a/src/components/common-tips.vue b/src/components/common-tips.vue deleted file mode 100644 index f41c0dce..00000000 --- a/src/components/common-tips.vue +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - {{ t('title.tips') }} - - - - - - - - - diff --git a/src/components/custom-footer.vue b/src/components/custom-footer.vue deleted file mode 100644 index 2092f1b6..00000000 --- a/src/components/custom-footer.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - Copyright © {{ currentYear }} - - KMS Tools - - - - Code with by - - {{ t('label.author') }} - - - - - - diff --git a/src/components/custom-header.vue b/src/components/custom-header.vue deleted file mode 100644 index 40431503..00000000 --- a/src/components/custom-header.vue +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - {{ item.label }} - - - - - - - - - - - {{ item.lable }} - - - - - - - - - - - {{ locale.lable }} - - - - - - - - - - - - diff --git a/src/composables/useScript.ts b/src/composables/useScript.ts deleted file mode 100644 index 9703c35c..00000000 --- a/src/composables/useScript.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Message } from '@arco-design/web-vue' - -export function useScript() { - const { t } = useI18n() - - const useScriptCopy = async (script: string) => { - const { copy, copied } = useClipboard() - await copy(script) - copied.value ? Message.success(t('activate.message.success')) : Message.error(t('activate.message.error')) - } - - const useScriptDownload = (script, fileName) => { - const file = new File([script], fileName, { type: 'application/txt' }) - const url = URL.createObjectURL(file) - const link = document.createElement('a') - link.href = url - link.download = file.name - document.body.appendChild(link) - link.click() - document.body.removeChild(link) - URL.revokeObjectURL(url) - } - - return { - useScriptCopy, - useScriptDownload - } -} diff --git a/src/main.ts b/src/main.ts deleted file mode 100644 index e941a258..00000000 --- a/src/main.ts +++ /dev/null @@ -1,20 +0,0 @@ -import App from '@/App.vue' -import { router } from '@/router' -import { createI18n } from 'vue-i18n' -import messages from '@intlify/unplugin-vue-i18n/messages' -import { useMonitorStore } from '@/store/monitor' - -import '@/styles/custom.less' -import 'virtual:uno.css' -import '@/styles/style.css' - -const app = createApp(App) -const pinia = createPinia() -const i18n = createI18n({ locale: 'zh-cn', messages }) - -app.use(pinia) -app.use(router) -app.use(i18n) -app.mount('#app') - -useMonitorStore().getMonitors() diff --git a/src/router/index.ts b/src/router/index.ts deleted file mode 100644 index 7474655a..00000000 --- a/src/router/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { createWebHistory, createRouter } from 'vue-router' -import { routes } from 'vue-router/auto-routes' - -for (const route of routes) { - if (route.name === '/activate') { - route.redirect = '/activate/windows' - } -} - -export const router = createRouter({ - history: createWebHistory(), - routes, -}) diff --git a/src/store/app.ts b/src/store/app.ts deleted file mode 100644 index 0cf874ee..00000000 --- a/src/store/app.ts +++ /dev/null @@ -1,29 +0,0 @@ -export const useAppStore = defineStore('app', () => { - const theme = useColorMode({ - attribute: 'arco-theme', - emitAuto: true, - selector: 'body', - storageKey: 'theme', - }) - - const { locale: _locale } = useI18n() - - const { language } = useNavigatorLanguage() - - const locale = useStorage( - 'locale', - language.value?.toLocaleLowerCase() || 'zh-cn', - ) - - function setLocale(val: LocaleValue) { - locale.value = val - } - - watchEffect(() => (_locale.value = locale.value)) - - return { - locale, - theme, - setLocale, - } -}) diff --git a/src/store/monitor.ts b/src/store/monitor.ts deleted file mode 100644 index 71446262..00000000 --- a/src/store/monitor.ts +++ /dev/null @@ -1,19 +0,0 @@ -import fetch from '@/utils/fetch' - -export const useMonitorStore = defineStore('monitor', () => { - const monitors = useStorage('monitors', []) - - const getMonitors = async () => { - try { - const { data } = await fetch('/api/server') - data.sort((prev: { rate: number }, next: { rate: number }) => { - return next.rate - prev.rate - }) - monitors.value = data - } catch (err) { - console.log(err) - } - } - - return { getMonitors, monitors } -}) diff --git a/src/styles/custom.less b/src/styles/custom.less deleted file mode 100644 index e83dad50..00000000 --- a/src/styles/custom.less +++ /dev/null @@ -1,22 +0,0 @@ -@import '@arco-design/web-vue/dist/arco.less'; - -@primary-6: #1890ff; - -@border-radius-small: 4px; - -// body { -// font-family: 'AlimamaFangYuanTiVF'; -// } - -// @font-face { -// font-family: 'AlimamaFangYuanTiVF'; -// src: url(@/assets/fonts/AlimamaFangYuanTiVF.woff2); -// } - -.arco-menu { - .arco-menu-inline { - .arco-menu-icon { - margin-right: 12px; - } - } -} diff --git a/src/styles/style.css b/src/styles/style.css deleted file mode 100644 index 879fe388..00000000 --- a/src/styles/style.css +++ /dev/null @@ -1,19 +0,0 @@ -body { - overflow-x: hidden; -} - -#app { - @apply flex flex-col gap-4 min-h-screen bg-[--color-neutral-2] text-[--color-text-2] select-none; -} - -.arco-layout-header span > i { - font-size: 1rem; -} - -.arco-select-dropdown-list-wrapper { - max-height: 400px; -} - -.arco-select-option-content { - width: 100%; -} diff --git a/src/utils/fetch.ts b/src/utils/fetch.ts deleted file mode 100644 index 58d7a802..00000000 --- a/src/utils/fetch.ts +++ /dev/null @@ -1,16 +0,0 @@ -import axios, { AxiosResponse } from 'axios' -import { Notification } from '@arco-design/web-vue' - -const fetch = axios.create({ - baseURL: import.meta.env.VITE_BASE_URL || 'https://kms.ikxin.com', - timeout: 10 * 1000, -}) - -fetch.interceptors.response.use( - (res: AxiosResponse) => res, - (err: Error) => { - Notification.error({ title: 'Error', content: String(err).trim() }) - }, -) - -export default fetch diff --git a/src/utils/formatter.ts b/src/utils/formatter.ts deleted file mode 100644 index 79d6b602..00000000 --- a/src/utils/formatter.ts +++ /dev/null @@ -1,19 +0,0 @@ -export const rateColor = (value: number) => { - if (value >= 1) { - return 'green' - } else if (value >= 0.9) { - return 'orange' - } else { - return 'red' - } -} - -export const delayColor = (value: number) => { - if (value <= 500) { - return 'green' - } else if (value <= 1000) { - return 'orange' - } else { - return 'red' - } -} diff --git a/src/views/activate/office.vue b/src/views/activate/office.vue deleted file mode 100644 index 03b34ee3..00000000 --- a/src/views/activate/office.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - diff --git a/src/views/activate/windows-server.vue b/src/views/activate/windows-server.vue deleted file mode 100644 index 9932def1..00000000 --- a/src/views/activate/windows-server.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - diff --git a/src/views/activate/windows.vue b/src/views/activate/windows.vue deleted file mode 100644 index 63b09700..00000000 --- a/src/views/activate/windows.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/src/views/download/index.vue b/src/views/download/index.vue deleted file mode 100644 index 35a96c75..00000000 --- a/src/views/download/index.vue +++ /dev/null @@ -1,3 +0,0 @@ - - download - diff --git a/src/views/guide/index.vue b/src/views/guide/index.vue deleted file mode 100644 index b1243892..00000000 --- a/src/views/guide/index.vue +++ /dev/null @@ -1,3 +0,0 @@ - - guide - diff --git a/src/views/index.vue b/src/views/index.vue deleted file mode 100644 index 4704d01f..00000000 --- a/src/views/index.vue +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - diff --git a/src/views/monitor.vue b/src/views/monitor.vue deleted file mode 100644 index c79dd337..00000000 --- a/src/views/monitor.vue +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - From 881f8dfad7f79040becc5ee30e0b5029df808b35 Mon Sep 17 00:00:00 2001 From: notte <54543761+ikxin@users.noreply.github.com> Date: Mon, 23 Mar 2026 18:04:58 +0800 Subject: [PATCH 2/2] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E9=97=B4=E9=9A=94=E5=92=8C=E9=BB=98=E8=AE=A4=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nuxt.config.ts | 4 ++-- server/utils/kms.ts | 28 ++++++++++++++++++---------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/nuxt.config.ts b/nuxt.config.ts index 6ddb1be1..ee61c9a2 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -2,7 +2,7 @@ const getMonitorCron = () => { const raw = parseInt( - process.env.NUXT_MONITOR_INTERVAL || process.env.MONITOR_INTERVAL || '10', + process.env.NUXT_MONITOR_INTERVAL || process.env.MONITOR_INTERVAL || '30', 60, ) const seconds = isNaN(raw) || raw <= 0 ? 10 : raw @@ -45,7 +45,7 @@ export default defineNuxtConfig({ }, runtimeConfig: { monitorList: '', - monitorInterval: '10', + monitorInterval: '5', public: { apiUrl: '', i18n: { diff --git a/server/utils/kms.ts b/server/utils/kms.ts index 6c9f4ece..0ed6dcf9 100644 --- a/server/utils/kms.ts +++ b/server/utils/kms.ts @@ -1,24 +1,32 @@ import { runVlmcs as runNodeVlmcs } from 'node-vlmcs' const defaultMonitorList = [ + 'kms.03k.org', + 'kms.343.re', 'kms.8b5.cn', - 'kms.org.cn', - 'win.freekms.cn', 'kms.akams.cn', 'kms.bige0.com', - 'win.kms.pub', - 'windows.kms.app', - 'kms.zhi.fun', - 'kms.03k.org', - 'kms.chs.ink', + 'kms.catqu.com', 'kms.cgtsoft.com', - 'kms.loli.best', + 'kms.ddddg.cn', + 'kms.jihuowin.com', + 'kms.kuretru.com', 'kms.litbear.cn', - 'kms.343.re', + 'kms.loli.beer', + 'kms.loli.best', + 'kms.lolico.moe', + 'kms.mc06.net', + 'kms.micaesoft.com', + 'kms.moeclub.org', + 'kms.moerats.com', + 'kms.mrxn.net', + 'kms.qkeke.com', 'kms.sixyin.com', 'kms.vmem.top', 'kms.wxlost.com', - 'kms.digiboy.ir', + 'kms.zhi.fun', + 'win.kms.pub', + 'windows.kms.app', ] export const getMonitorList = (() => {