0xJacky 2 месяцев назад
Родитель
Сommit
3111adfb44
8 измененных файлов с 693 добавлено и 720 удалено
  1. 1 8
      api/cluster/node.go
  2. 82 82
      app/auto-imports.d.ts
  3. 139 1
      app/components.d.ts
  4. 16 16
      app/package.json
  5. 67 67
      go.mod
  6. 146 308
      go.sum
  7. 15 15
      internal/geolite/geolite.go
  8. 227 223
      pnpm-lock.yaml

+ 1 - 8
api/cluster/node.go

@@ -45,14 +45,7 @@ func GetNodeList(c *gin.Context) {
 		return analytic.GetNode(m)
 		return analytic.GetNode(m)
 	})
 	})
 
 
-	data, ok := core.ListAllData()
-	if !ok {
-		return
-	}
-
-	c.JSON(http.StatusOK, model.DataList{
-		Data: data,
-	})
+	core.List()
 }
 }
 
 
 func AddNode(c *gin.Context) {
 func AddNode(c *gin.Context) {

+ 82 - 82
app/auto-imports.d.ts

@@ -6,94 +6,94 @@
 // biome-ignore lint: disable
 // biome-ignore lint: disable
 export {}
 export {}
 declare global {
 declare global {
-  const $gettext: typeof import('@/gettext')['$gettext']
-  const $ngettext: typeof import('@/gettext')['$ngettext']
-  const $npgettext: typeof import('@/gettext')['$npgettext']
-  const $pgettext: typeof import('@/gettext')['$pgettext']
-  const App: typeof import('ant-design-vue')['App']
-  const EffectScope: typeof import('vue')['EffectScope']
-  const T: typeof import('@/language')['T']
-  const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
-  const computed: typeof import('vue')['computed']
-  const createApp: typeof import('vue')['createApp']
-  const createPinia: typeof import('pinia')['createPinia']
-  const customRef: typeof import('vue')['customRef']
-  const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
-  const defineComponent: typeof import('vue')['defineComponent']
-  const defineStore: typeof import('pinia')['defineStore']
-  const effectScope: typeof import('vue')['effectScope']
-  const getActivePinia: typeof import('pinia')['getActivePinia']
-  const getCurrentInstance: typeof import('vue')['getCurrentInstance']
-  const getCurrentScope: typeof import('vue')['getCurrentScope']
-  const getCurrentWatcher: typeof import('vue')['getCurrentWatcher']
-  const h: typeof import('vue')['h']
-  const inject: typeof import('vue')['inject']
-  const isProxy: typeof import('vue')['isProxy']
-  const isReactive: typeof import('vue')['isReactive']
-  const isReadonly: typeof import('vue')['isReadonly']
-  const isRef: typeof import('vue')['isRef']
-  const isShallow: typeof import('vue')['isShallow']
-  const mapActions: typeof import('pinia')['mapActions']
-  const mapGetters: typeof import('pinia')['mapGetters']
-  const mapState: typeof import('pinia')['mapState']
-  const mapStores: typeof import('pinia')['mapStores']
-  const mapWritableState: typeof import('pinia')['mapWritableState']
-  const markRaw: typeof import('vue')['markRaw']
+  const $gettext: typeof import('@/gettext').$gettext
+  const $ngettext: typeof import('@/gettext').$ngettext
+  const $npgettext: typeof import('@/gettext').$npgettext
+  const $pgettext: typeof import('@/gettext').$pgettext
+  const App: typeof import('ant-design-vue').App
+  const EffectScope: typeof import('vue').EffectScope
+  const T: typeof import('@/language').T
+  const acceptHMRUpdate: typeof import('pinia').acceptHMRUpdate
+  const computed: typeof import('vue').computed
+  const createApp: typeof import('vue').createApp
+  const createPinia: typeof import('pinia').createPinia
+  const customRef: typeof import('vue').customRef
+  const defineAsyncComponent: typeof import('vue').defineAsyncComponent
+  const defineComponent: typeof import('vue').defineComponent
+  const defineStore: typeof import('pinia').defineStore
+  const effectScope: typeof import('vue').effectScope
+  const getActivePinia: typeof import('pinia').getActivePinia
+  const getCurrentInstance: typeof import('vue').getCurrentInstance
+  const getCurrentScope: typeof import('vue').getCurrentScope
+  const getCurrentWatcher: typeof import('vue').getCurrentWatcher
+  const h: typeof import('vue').h
+  const inject: typeof import('vue').inject
+  const isProxy: typeof import('vue').isProxy
+  const isReactive: typeof import('vue').isReactive
+  const isReadonly: typeof import('vue').isReadonly
+  const isRef: typeof import('vue').isRef
+  const isShallow: typeof import('vue').isShallow
+  const mapActions: typeof import('pinia').mapActions
+  const mapGetters: typeof import('pinia').mapGetters
+  const mapState: typeof import('pinia').mapState
+  const mapStores: typeof import('pinia').mapStores
+  const mapWritableState: typeof import('pinia').mapWritableState
+  const markRaw: typeof import('vue').markRaw
   const message: typeof import('@/useAntApp')['message']
   const message: typeof import('@/useAntApp')['message']
   const modal: typeof import('@/useAntApp')['modal']
   const modal: typeof import('@/useAntApp')['modal']
-  const nextTick: typeof import('vue')['nextTick']
+  const nextTick: typeof import('vue').nextTick
   const notification: typeof import('@/useAntApp')['notification']
   const notification: typeof import('@/useAntApp')['notification']
-  const onActivated: typeof import('vue')['onActivated']
-  const onBeforeMount: typeof import('vue')['onBeforeMount']
-  const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
-  const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
-  const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
-  const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
-  const onDeactivated: typeof import('vue')['onDeactivated']
-  const onErrorCaptured: typeof import('vue')['onErrorCaptured']
-  const onMounted: typeof import('vue')['onMounted']
-  const onRenderTracked: typeof import('vue')['onRenderTracked']
-  const onRenderTriggered: typeof import('vue')['onRenderTriggered']
-  const onScopeDispose: typeof import('vue')['onScopeDispose']
-  const onServerPrefetch: typeof import('vue')['onServerPrefetch']
-  const onUnmounted: typeof import('vue')['onUnmounted']
-  const onUpdated: typeof import('vue')['onUpdated']
-  const onWatcherCleanup: typeof import('vue')['onWatcherCleanup']
-  const provide: typeof import('vue')['provide']
-  const reactive: typeof import('vue')['reactive']
-  const readonly: typeof import('vue')['readonly']
-  const ref: typeof import('vue')['ref']
-  const resolveComponent: typeof import('vue')['resolveComponent']
-  const setActivePinia: typeof import('pinia')['setActivePinia']
-  const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix']
-  const shallowReactive: typeof import('vue')['shallowReactive']
-  const shallowReadonly: typeof import('vue')['shallowReadonly']
-  const shallowRef: typeof import('vue')['shallowRef']
-  const storeToRefs: typeof import('pinia')['storeToRefs']
-  const toRaw: typeof import('vue')['toRaw']
-  const toRef: typeof import('vue')['toRef']
-  const toRefs: typeof import('vue')['toRefs']
-  const toValue: typeof import('vue')['toValue']
-  const triggerRef: typeof import('vue')['triggerRef']
-  const unref: typeof import('vue')['unref']
+  const onActivated: typeof import('vue').onActivated
+  const onBeforeMount: typeof import('vue').onBeforeMount
+  const onBeforeRouteLeave: typeof import('vue-router').onBeforeRouteLeave
+  const onBeforeRouteUpdate: typeof import('vue-router').onBeforeRouteUpdate
+  const onBeforeUnmount: typeof import('vue').onBeforeUnmount
+  const onBeforeUpdate: typeof import('vue').onBeforeUpdate
+  const onDeactivated: typeof import('vue').onDeactivated
+  const onErrorCaptured: typeof import('vue').onErrorCaptured
+  const onMounted: typeof import('vue').onMounted
+  const onRenderTracked: typeof import('vue').onRenderTracked
+  const onRenderTriggered: typeof import('vue').onRenderTriggered
+  const onScopeDispose: typeof import('vue').onScopeDispose
+  const onServerPrefetch: typeof import('vue').onServerPrefetch
+  const onUnmounted: typeof import('vue').onUnmounted
+  const onUpdated: typeof import('vue').onUpdated
+  const onWatcherCleanup: typeof import('vue').onWatcherCleanup
+  const provide: typeof import('vue').provide
+  const reactive: typeof import('vue').reactive
+  const readonly: typeof import('vue').readonly
+  const ref: typeof import('vue').ref
+  const resolveComponent: typeof import('vue').resolveComponent
+  const setActivePinia: typeof import('pinia').setActivePinia
+  const setMapStoreSuffix: typeof import('pinia').setMapStoreSuffix
+  const shallowReactive: typeof import('vue').shallowReactive
+  const shallowReadonly: typeof import('vue').shallowReadonly
+  const shallowRef: typeof import('vue').shallowRef
+  const storeToRefs: typeof import('pinia').storeToRefs
+  const toRaw: typeof import('vue').toRaw
+  const toRef: typeof import('vue').toRef
+  const toRefs: typeof import('vue').toRefs
+  const toValue: typeof import('vue').toValue
+  const triggerRef: typeof import('vue').triggerRef
+  const unref: typeof import('vue').unref
   const useAntAppStore: typeof import('@/pinia')['useAntAppStore']
   const useAntAppStore: typeof import('@/pinia')['useAntAppStore']
   const useApp: typeof import('ant-design-vue')['App.useApp']
   const useApp: typeof import('ant-design-vue')['App.useApp']
   const useAppUtils: typeof import('@/useAntApp')['useAppUtils']
   const useAppUtils: typeof import('@/useAntApp')['useAppUtils']
-  const useAttrs: typeof import('vue')['useAttrs']
-  const useCssModule: typeof import('vue')['useCssModule']
-  const useCssVars: typeof import('vue')['useCssVars']
-  const useGlobalApp: typeof import('@/composables/useGlobalApp')['useGlobalApp']
-  const useId: typeof import('vue')['useId']
-  const useLink: typeof import('vue-router')['useLink']
-  const useModel: typeof import('vue')['useModel']
-  const useRoute: typeof import('vue-router')['useRoute']
-  const useRouter: typeof import('vue-router')['useRouter']
-  const useSlots: typeof import('vue')['useSlots']
-  const useTemplateRef: typeof import('vue')['useTemplateRef']
-  const watch: typeof import('vue')['watch']
-  const watchEffect: typeof import('vue')['watchEffect']
-  const watchPostEffect: typeof import('vue')['watchPostEffect']
-  const watchSyncEffect: typeof import('vue')['watchSyncEffect']
+  const useAttrs: typeof import('vue').useAttrs
+  const useCssModule: typeof import('vue').useCssModule
+  const useCssVars: typeof import('vue').useCssVars
+  const useGlobalApp: typeof import('@/composables/useGlobalApp').useGlobalApp
+  const useId: typeof import('vue').useId
+  const useLink: typeof import('vue-router').useLink
+  const useModel: typeof import('vue').useModel
+  const useRoute: typeof import('vue-router').useRoute
+  const useRouter: typeof import('vue-router').useRouter
+  const useSlots: typeof import('vue').useSlots
+  const useTemplateRef: typeof import('vue').useTemplateRef
+  const watch: typeof import('vue').watch
+  const watchEffect: typeof import('vue').watchEffect
+  const watchPostEffect: typeof import('vue').watchPostEffect
+  const watchSyncEffect: typeof import('vue').watchSyncEffect
 }
 }
 // for type re-export
 // for type re-export
 declare global {
 declare global {

+ 139 - 1
app/components.d.ts

@@ -1,8 +1,12 @@
 /* eslint-disable */
 /* eslint-disable */
 // @ts-nocheck
 // @ts-nocheck
+// biome-ignore lint: disable
+// oxlint-disable
+// ------
 // Generated by unplugin-vue-components
 // Generated by unplugin-vue-components
 // Read more: https://github.com/vuejs/core/pull/3399
 // Read more: https://github.com/vuejs/core/pull/3399
-// biome-ignore lint: disable
+import { GlobalComponents } from 'vue'
+
 export {}
 export {}
 
 
 /* prettier-ignore */
 /* prettier-ignore */
@@ -140,3 +144,137 @@ declare module 'vue' {
     VPSwitchVPSwitch: typeof import('./src/components/VPSwitch/VPSwitch.vue')['default']
     VPSwitchVPSwitch: typeof import('./src/components/VPSwitch/VPSwitch.vue')['default']
   }
   }
 }
 }
+
+// For TSX support
+declare global {
+  const AAlert: typeof import('ant-design-vue/es')['Alert']
+  const AApp: typeof import('ant-design-vue/es')['App']
+  const AAutoComplete: typeof import('ant-design-vue/es')['AutoComplete']
+  const AAvatar: typeof import('ant-design-vue/es')['Avatar']
+  const ABadge: typeof import('ant-design-vue/es')['Badge']
+  const ABreadcrumb: typeof import('ant-design-vue/es')['Breadcrumb']
+  const ABreadcrumbItem: typeof import('ant-design-vue/es')['BreadcrumbItem']
+  const AButton: typeof import('ant-design-vue/es')['Button']
+  const ACard: typeof import('ant-design-vue/es')['Card']
+  const ACheckbox: typeof import('ant-design-vue/es')['Checkbox']
+  const ACheckboxGroup: typeof import('ant-design-vue/es')['CheckboxGroup']
+  const ACol: typeof import('ant-design-vue/es')['Col']
+  const ACollapse: typeof import('ant-design-vue/es')['Collapse']
+  const ACollapsePanel: typeof import('ant-design-vue/es')['CollapsePanel']
+  const AComment: typeof import('ant-design-vue/es')['Comment']
+  const AConfigProvider: typeof import('ant-design-vue/es')['ConfigProvider']
+  const ADivider: typeof import('ant-design-vue/es')['Divider']
+  const ADrawer: typeof import('ant-design-vue/es')['Drawer']
+  const ADropdown: typeof import('ant-design-vue/es')['Dropdown']
+  const AEmpty: typeof import('ant-design-vue/es')['Empty']
+  const AForm: typeof import('ant-design-vue/es')['Form']
+  const AFormItem: typeof import('ant-design-vue/es')['FormItem']
+  const AInput: typeof import('ant-design-vue/es')['Input']
+  const AInputGroup: typeof import('ant-design-vue/es')['InputGroup']
+  const AInputNumber: typeof import('ant-design-vue/es')['InputNumber']
+  const AInputPassword: typeof import('ant-design-vue/es')['InputPassword']
+  const ALayout: typeof import('ant-design-vue/es')['Layout']
+  const ALayoutContent: typeof import('ant-design-vue/es')['LayoutContent']
+  const ALayoutFooter: typeof import('ant-design-vue/es')['LayoutFooter']
+  const ALayoutHeader: typeof import('ant-design-vue/es')['LayoutHeader']
+  const ALayoutSider: typeof import('ant-design-vue/es')['LayoutSider']
+  const AList: typeof import('ant-design-vue/es')['List']
+  const AListItem: typeof import('ant-design-vue/es')['ListItem']
+  const AListItemMeta: typeof import('ant-design-vue/es')['ListItemMeta']
+  const AMenu: typeof import('ant-design-vue/es')['Menu']
+  const AMenuDivider: typeof import('ant-design-vue/es')['MenuDivider']
+  const AMenuItem: typeof import('ant-design-vue/es')['MenuItem']
+  const AModal: typeof import('ant-design-vue/es')['Modal']
+  const APopconfirm: typeof import('ant-design-vue/es')['Popconfirm']
+  const APopover: typeof import('ant-design-vue/es')['Popover']
+  const AppProviderAppProvider: typeof import('./src/components/AppProvider/AppProvider.vue')['default']
+  const AProgress: typeof import('ant-design-vue/es')['Progress']
+  const AQrcode: typeof import('ant-design-vue/es')['QRCode']
+  const ARadio: typeof import('ant-design-vue/es')['Radio']
+  const ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup']
+  const ARangePicker: typeof import('ant-design-vue/es')['RangePicker']
+  const AResult: typeof import('ant-design-vue/es')['Result']
+  const ARow: typeof import('ant-design-vue/es')['Row']
+  const ASegmented: typeof import('ant-design-vue/es')['Segmented']
+  const ASelect: typeof import('ant-design-vue/es')['Select']
+  const ASelectOption: typeof import('ant-design-vue/es')['SelectOption']
+  const ASpace: typeof import('ant-design-vue/es')['Space']
+  const ASpin: typeof import('ant-design-vue/es')['Spin']
+  const AStatistic: typeof import('ant-design-vue/es')['Statistic']
+  const AStep: typeof import('ant-design-vue/es')['Step']
+  const ASteps: typeof import('ant-design-vue/es')['Steps']
+  const ASubMenu: typeof import('ant-design-vue/es')['SubMenu']
+  const ASwitch: typeof import('ant-design-vue/es')['Switch']
+  const ATable: typeof import('ant-design-vue/es')['Table']
+  const ATabPane: typeof import('ant-design-vue/es')['TabPane']
+  const ATabs: typeof import('ant-design-vue/es')['Tabs']
+  const ATag: typeof import('ant-design-vue/es')['Tag']
+  const ATextarea: typeof import('ant-design-vue/es')['Textarea']
+  const ATooltip: typeof import('ant-design-vue/es')['Tooltip']
+  const ATypographyParagraph: typeof import('ant-design-vue/es')['TypographyParagraph']
+  const ATypographyText: typeof import('ant-design-vue/es')['TypographyText']
+  const ATypographyTitle: typeof import('ant-design-vue/es')['TypographyTitle']
+  const AUploadDragger: typeof import('ant-design-vue/es')['UploadDragger']
+  const AutoCertFormAutoCertForm: typeof import('./src/components/AutoCertForm/AutoCertForm.vue')['default']
+  const AutoCertFormDNSChallenge: typeof import('./src/components/AutoCertForm/DNSChallenge.vue')['default']
+  const BaseEditorBaseEditor: typeof import('./src/components/BaseEditor/BaseEditor.vue')['default']
+  const BreadcrumbBreadcrumb: typeof import('./src/components/Breadcrumb/Breadcrumb.vue')['default']
+  const CertInfoCertInfo: typeof import('./src/components/CertInfo/CertInfo.vue')['default']
+  const ChartAreaChart: typeof import('./src/components/Chart/AreaChart.vue')['default']
+  const ChartRadialBarChart: typeof import('./src/components/Chart/RadialBarChart.vue')['default']
+  const ChartUsageProgressLine: typeof import('./src/components/Chart/UsageProgressLine.vue')['default']
+  const CodeEditorCodeEditor: typeof import('./src/components/CodeEditor/CodeEditor.vue')['default']
+  const ConfigHistoryConfigHistory: typeof import('./src/components/ConfigHistory/ConfigHistory.vue')['default']
+  const ConfigHistoryDiffViewer: typeof import('./src/components/ConfigHistory/DiffViewer.vue')['default']
+  const DevDebugPanelDevDebugPanel: typeof import('./src/components/DevDebugPanel/DevDebugPanel.vue')['default']
+  const FooterToolbarFooterToolBar: typeof import('./src/components/FooterToolbar/FooterToolBar.vue')['default']
+  const GeoLiteDownloadGeoLiteDownload: typeof import('./src/components/GeoLiteDownload/GeoLiteDownload.vue')['default']
+  const ICPICP: typeof import('./src/components/ICP/ICP.vue')['default']
+  const InspectConfigInspectConfig: typeof import('./src/components/InspectConfig/InspectConfig.vue')['default']
+  const LLMChatMessage: typeof import('./src/components/LLM/ChatMessage.vue')['default']
+  const LLMChatMessageInput: typeof import('./src/components/LLM/ChatMessageInput.vue')['default']
+  const LLMChatMessageList: typeof import('./src/components/LLM/ChatMessageList.vue')['default']
+  const LLMLLM: typeof import('./src/components/LLM/LLM.vue')['default']
+  const LLMLLMSessionTabs: typeof import('./src/components/LLM/LLMSessionTabs.vue')['default']
+  const LogoLogo: typeof import('./src/components/Logo/Logo.vue')['default']
+  const NamespaceRenderNamespaceRender: typeof import('./src/components/NamespaceRender/NamespaceRender.vue')['default']
+  const NamespaceTabsNamespaceTabs: typeof import('./src/components/NamespaceTabs/NamespaceTabs.vue')['default']
+  const NginxControlNginxControl: typeof import('./src/components/NginxControl/NginxControl.vue')['default']
+  const NgxConfigEditorDirectiveDirectiveAdd: typeof import('./src/components/NgxConfigEditor/directive/DirectiveAdd.vue')['default']
+  const NgxConfigEditorDirectiveDirectiveDocuments: typeof import('./src/components/NgxConfigEditor/directive/DirectiveDocuments.vue')['default']
+  const NgxConfigEditorDirectiveDirectiveEditor: typeof import('./src/components/NgxConfigEditor/directive/DirectiveEditor.vue')['default']
+  const NgxConfigEditorDirectiveDirectiveEditorItem: typeof import('./src/components/NgxConfigEditor/directive/DirectiveEditorItem.vue')['default']
+  const NgxConfigEditorLocationEditor: typeof import('./src/components/NgxConfigEditor/LocationEditor.vue')['default']
+  const NgxConfigEditorLogEntry: typeof import('./src/components/NgxConfigEditor/LogEntry.vue')['default']
+  const NgxConfigEditorNginxStatusAlert: typeof import('./src/components/NgxConfigEditor/NginxStatusAlert.vue')['default']
+  const NgxConfigEditorNgxConfigEditor: typeof import('./src/components/NgxConfigEditor/NgxConfigEditor.vue')['default']
+  const NgxConfigEditorNgxServer: typeof import('./src/components/NgxConfigEditor/NgxServer.vue')['default']
+  const NgxConfigEditorNgxUpstream: typeof import('./src/components/NgxConfigEditor/NgxUpstream.vue')['default']
+  const NodeCardNodeCard: typeof import('./src/components/NodeCard/NodeCard.vue')['default']
+  const NodeIndicatorNodeIndicator: typeof import('./src/components/NodeIndicator/NodeIndicator.vue')['default']
+  const NodeSelectorNodeSelector: typeof import('./src/components/NodeSelector/NodeSelector.vue')['default']
+  const NotificationNotification: typeof import('./src/components/Notification/Notification.vue')['default']
+  const OTPInputOTPInput: typeof import('./src/components/OTPInput/OTPInput.vue')['default']
+  const PageHeaderPageHeader: typeof import('./src/components/PageHeader/PageHeader.vue')['default']
+  const PortScannerPortScannerCompact: typeof import('./src/components/PortScanner/PortScannerCompact.vue')['default']
+  const ProcessingStatusProcessingStatus: typeof import('./src/components/ProcessingStatus/ProcessingStatus.vue')['default']
+  const ProxyTargetsProxyTargets: typeof import('./src/components/ProxyTargets/ProxyTargets.vue')['default']
+  const ReactiveFromNowReactiveFromNow: typeof import('./src/components/ReactiveFromNow/ReactiveFromNow.vue')['default']
+  const RouterLink: typeof import('vue-router')['RouterLink']
+  const RouterView: typeof import('vue-router')['RouterView']
+  const SelfCheckAsyncErrorDisplay: typeof import('./src/components/SelfCheck/AsyncErrorDisplay.vue')['default']
+  const SelfCheckSelfCheck: typeof import('./src/components/SelfCheck/SelfCheck.vue')['default']
+  const SelfCheckSelfCheckHeaderBanner: typeof import('./src/components/SelfCheck/SelfCheckHeaderBanner.vue')['default']
+  const SensitiveStringSensitiveString: typeof import('./src/components/SensitiveString/SensitiveString.vue')['default']
+  const SetLanguageSetLanguage: typeof import('./src/components/SetLanguage/SetLanguage.vue')['default']
+  const SwitchAppearanceIconsVPIconMoon: typeof import('./src/components/SwitchAppearance/icons/VPIconMoon.vue')['default']
+  const SwitchAppearanceIconsVPIconSun: typeof import('./src/components/SwitchAppearance/icons/VPIconSun.vue')['default']
+  const SwitchAppearanceSwitchAppearance: typeof import('./src/components/SwitchAppearance/SwitchAppearance.vue')['default']
+  const SyncNodesPreviewSyncNodesPreview: typeof import('./src/components/SyncNodesPreview/SyncNodesPreview.vue')['default']
+  const SystemRestoreSystemRestoreContent: typeof import('./src/components/SystemRestore/SystemRestoreContent.vue')['default']
+  const TabFilterTabFilter: typeof import('./src/components/TabFilter/TabFilter.vue')['default']
+  const TwoFAAuthorization: typeof import('./src/components/TwoFA/Authorization.vue')['default']
+  const UpstreamCardsUpstreamCards: typeof import('./src/components/UpstreamCards/UpstreamCards.vue')['default']
+  const UpstreamDetailModalUpstreamDetailModal: typeof import('./src/components/UpstreamDetailModal/UpstreamDetailModal.vue')['default']
+  const VPSwitchVPSwitch: typeof import('./src/components/VPSwitch/VPSwitch.vue')['default']
+}

+ 16 - 16
app/package.json

@@ -18,10 +18,10 @@
     "@fingerprintjs/fingerprintjs": "^5.0.1",
     "@fingerprintjs/fingerprintjs": "^5.0.1",
     "@formkit/auto-animate": "^0.9.0",
     "@formkit/auto-animate": "^0.9.0",
     "@simplewebauthn/browser": "^13.2.2",
     "@simplewebauthn/browser": "^13.2.2",
-    "@uozi-admin/curd": "^4.18.0",
+    "@uozi-admin/curd": "^4.18.5",
     "@uozi-admin/request": "^2.9.1",
     "@uozi-admin/request": "^2.9.1",
-    "@vue/reactivity": "^3.5.22",
-    "@vue/shared": "^3.5.22",
+    "@vue/reactivity": "^3.5.24",
+    "@vue/shared": "^3.5.24",
     "@vueuse/components": "^14.0.0",
     "@vueuse/components": "^14.0.0",
     "@vueuse/core": "^14.0.0",
     "@vueuse/core": "^14.0.0",
     "@vueuse/integrations": "^14.0.0",
     "@vueuse/integrations": "^14.0.0",
@@ -30,19 +30,19 @@
     "@xterm/addon-fit": "^0.10.0",
     "@xterm/addon-fit": "^0.10.0",
     "@xterm/xterm": "^5.5.0",
     "@xterm/xterm": "^5.5.0",
     "ant-design-vue": "^4.2.6",
     "ant-design-vue": "^4.2.6",
-    "apexcharts": "^5.3.5",
-    "axios": "^1.12.2",
-    "dayjs": "^1.11.18",
+    "apexcharts": "^5.3.6",
+    "axios": "^1.13.2",
+    "dayjs": "^1.11.19",
     "echarts": "^6.0.0",
     "echarts": "^6.0.0",
     "highlight.js": "^11.11.1",
     "highlight.js": "^11.11.1",
     "i18n-iso-countries": "^7.14.0",
     "i18n-iso-countries": "^7.14.0",
     "jsencrypt": "^3.5.4",
     "jsencrypt": "^3.5.4",
     "lodash": "^4.17.21",
     "lodash": "^4.17.21",
-    "marked": "^16.4.1",
-    "marked-highlight": "^2.2.2",
+    "marked": "^16.4.2",
+    "marked-highlight": "^2.2.3",
     "nprogress": "^0.2.0",
     "nprogress": "^0.2.0",
-    "pinia": "^3.0.3",
-    "pinia-plugin-persistedstate": "^4.5.0",
+    "pinia": "^3.0.4",
+    "pinia-plugin-persistedstate": "^4.7.1",
     "reconnecting-websocket": "^4.4.0",
     "reconnecting-websocket": "^4.4.0",
     "sortablejs": "^1.15.6",
     "sortablejs": "^1.15.6",
     "splitpanes": "^4.0.4",
     "splitpanes": "^4.0.4",
@@ -51,7 +51,7 @@
     "unocss": "^66.5.4",
     "unocss": "^66.5.4",
     "uuid": "^13.0.0",
     "uuid": "^13.0.0",
     "vite-plugin-build-id": "0.5.0",
     "vite-plugin-build-id": "0.5.0",
-    "vue": "^3.5.22",
+    "vue": "^3.5.24",
     "vue-dompurify-html": "^5.3.0",
     "vue-dompurify-html": "^5.3.0",
     "vue-echarts": "^8.0.1",
     "vue-echarts": "^8.0.1",
     "vue-router": "^4.6.3",
     "vue-router": "^4.6.3",
@@ -62,7 +62,7 @@
     "vuedraggable": "^4.1.0"
     "vuedraggable": "^4.1.0"
   },
   },
   "devDependencies": {
   "devDependencies": {
-    "@antfu/eslint-config": "^6.0.0",
+    "@antfu/eslint-config": "^6.2.0",
     "@iconify-json/fa": "1.2.2",
     "@iconify-json/fa": "1.2.2",
     "@iconify-json/tabler": "^1.2.23",
     "@iconify-json/tabler": "^1.2.23",
     "@iconify/tools": "^4.1.4",
     "@iconify/tools": "^4.1.4",
@@ -75,11 +75,11 @@
     "@vitejs/plugin-legacy": "^7.2.1",
     "@vitejs/plugin-legacy": "^7.2.1",
     "@vitejs/plugin-vue": "^6.0.1",
     "@vitejs/plugin-vue": "^6.0.1",
     "@vitejs/plugin-vue-jsx": "^5.1.1",
     "@vitejs/plugin-vue-jsx": "^5.1.1",
-    "@vue/compiler-sfc": "^3.5.22",
+    "@vue/compiler-sfc": "^3.5.24",
     "@vue/tsconfig": "^0.8.1",
     "@vue/tsconfig": "^0.8.1",
     "ace-builds": "^1.43.4",
     "ace-builds": "^1.43.4",
     "autoprefixer": "^10.4.21",
     "autoprefixer": "^10.4.21",
-    "eslint": "^9.38.0",
+    "eslint": "^9.39.1",
     "eslint-plugin-sonarjs": "^3.0.5",
     "eslint-plugin-sonarjs": "^3.0.5",
     "less": "^4.4.2",
     "less": "^4.4.2",
     "postcss": "^8.5.6",
     "postcss": "^8.5.6",
@@ -87,9 +87,9 @@
     "unplugin-auto-import": "^20.2.0",
     "unplugin-auto-import": "^20.2.0",
     "unplugin-vue-components": "^30.0.0",
     "unplugin-vue-components": "^30.0.0",
     "unplugin-vue-define-options": "^3.1.1",
     "unplugin-vue-define-options": "^3.1.1",
-    "vite": "^7.1.12",
+    "vite": "^7.2.2",
     "vite-plugin-inspect": "^11.3.3",
     "vite-plugin-inspect": "^11.3.3",
     "vite-svg-loader": "^5.1.0",
     "vite-svg-loader": "^5.1.0",
-    "vue-tsc": "^3.1.2"
+    "vue-tsc": "^3.1.3"
   }
   }
 }
 }

+ 67 - 67
go.mod

@@ -8,19 +8,19 @@ require (
 	github.com/BurntSushi/toml v1.5.0
 	github.com/BurntSushi/toml v1.5.0
 	github.com/blevesearch/bleve/v2 v2.5.4
 	github.com/blevesearch/bleve/v2 v2.5.4
 	github.com/caarlos0/env/v11 v11.3.1
 	github.com/caarlos0/env/v11 v11.3.1
-	github.com/casdoor/casdoor-go-sdk v1.27.0
+	github.com/casdoor/casdoor-go-sdk v1.29.0
 	github.com/creack/pty v1.1.24
 	github.com/creack/pty v1.1.24
 	github.com/dgraph-io/ristretto/v2 v2.3.0
 	github.com/dgraph-io/ristretto/v2 v2.3.0
-	github.com/docker/docker v28.5.1+incompatible
+	github.com/docker/docker v28.5.2+incompatible
 	github.com/dustin/go-humanize v1.0.1
 	github.com/dustin/go-humanize v1.0.1
 	github.com/elliotchance/orderedmap/v3 v3.1.0
 	github.com/elliotchance/orderedmap/v3 v3.1.0
 	github.com/fsnotify/fsnotify v1.9.0
 	github.com/fsnotify/fsnotify v1.9.0
-	github.com/gabriel-vasile/mimetype v1.4.10
+	github.com/gabriel-vasile/mimetype v1.4.11
 	github.com/gin-contrib/cors v1.7.6
 	github.com/gin-contrib/cors v1.7.6
 	github.com/gin-contrib/static v1.1.5
 	github.com/gin-contrib/static v1.1.5
 	github.com/gin-gonic/gin v1.11.0
 	github.com/gin-gonic/gin v1.11.0
-	github.com/go-acme/lego/v4 v4.27.0
-	github.com/go-co-op/gocron/v2 v2.17.0
+	github.com/go-acme/lego/v4 v4.28.1
+	github.com/go-co-op/gocron/v2 v2.18.0
 	github.com/go-gormigrate/gormigrate/v2 v2.1.5
 	github.com/go-gormigrate/gormigrate/v2 v2.1.5
 	github.com/go-playground/validator/v10 v10.28.0
 	github.com/go-playground/validator/v10 v10.28.0
 	github.com/go-resty/resty/v2 v2.16.5
 	github.com/go-resty/resty/v2 v2.16.5
@@ -29,8 +29,8 @@ require (
 	github.com/golang-jwt/jwt/v5 v5.3.0
 	github.com/golang-jwt/jwt/v5 v5.3.0
 	github.com/google/uuid v1.6.0
 	github.com/google/uuid v1.6.0
 	github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674
 	github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674
-	github.com/mark3labs/mcp-go v0.42.0
-	github.com/minio/minio-go/v7 v7.0.95
+	github.com/mark3labs/mcp-go v0.43.0
+	github.com/minio/minio-go/v7 v7.0.97
 	github.com/minio/selfupdate v0.6.0
 	github.com/minio/selfupdate v0.6.0
 	github.com/nikoksr/notify v1.3.0
 	github.com/nikoksr/notify v1.3.0
 	github.com/nxadm/tail v1.4.11
 	github.com/nxadm/tail v1.4.11
@@ -40,13 +40,13 @@ require (
 	github.com/pretty66/websocketproxy v0.0.0-20220507015215-930b3a686308
 	github.com/pretty66/websocketproxy v0.0.0-20220507015215-930b3a686308
 	github.com/samber/lo v1.52.0
 	github.com/samber/lo v1.52.0
 	github.com/sashabaranov/go-openai v1.41.2
 	github.com/sashabaranov/go-openai v1.41.2
-	github.com/shirou/gopsutil/v4 v4.25.9
+	github.com/shirou/gopsutil/v4 v4.25.10
 	github.com/spf13/afero v1.15.0
 	github.com/spf13/afero v1.15.0
 	github.com/spf13/cast v1.10.0
 	github.com/spf13/cast v1.10.0
 	github.com/stretchr/testify v1.11.1
 	github.com/stretchr/testify v1.11.1
 	github.com/tufanbarisyildirim/gonginx v0.0.0-20250620092546-c3e307e36701
 	github.com/tufanbarisyildirim/gonginx v0.0.0-20250620092546-c3e307e36701
 	github.com/ulikunitz/xz v0.5.15
 	github.com/ulikunitz/xz v0.5.15
-	github.com/uozi-tech/cosy v1.26.19
+	github.com/uozi-tech/cosy v1.27.2
 	github.com/uozi-tech/cosy-driver-sqlite v0.2.1
 	github.com/uozi-tech/cosy-driver-sqlite v0.2.1
 	github.com/urfave/cli/v3 v3.5.0
 	github.com/urfave/cli/v3 v3.5.0
 	golang.org/x/crypto v0.43.0
 	golang.org/x/crypto v0.43.0
@@ -55,7 +55,7 @@ require (
 	gopkg.in/ini.v1 v1.67.0
 	gopkg.in/ini.v1 v1.67.0
 	gorm.io/driver/sqlite v1.6.0
 	gorm.io/driver/sqlite v1.6.0
 	gorm.io/gen v0.3.27
 	gorm.io/gen v0.3.27
-	gorm.io/gorm v1.31.0
+	gorm.io/gorm v1.31.1
 	gorm.io/plugin/dbresolver v1.6.2
 	gorm.io/plugin/dbresolver v1.6.2
 )
 )
 
 
@@ -67,7 +67,7 @@ require (
 	filippo.io/edwards25519 v1.1.0 // indirect
 	filippo.io/edwards25519 v1.1.0 // indirect
 	github.com/AdamSLevy/jsonrpc2/v14 v14.1.0 // indirect
 	github.com/AdamSLevy/jsonrpc2/v14 v14.1.0 // indirect
 	github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect
 	github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect
-	github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1 // indirect
+	github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0 // indirect
 	github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.0 // indirect
 	github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.0 // indirect
 	github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect
 	github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect
 	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0 // indirect
 	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0 // indirect
@@ -82,10 +82,9 @@ require (
 	github.com/Azure/go-autorest/autorest/to v0.4.1 // indirect
 	github.com/Azure/go-autorest/autorest/to v0.4.1 // indirect
 	github.com/Azure/go-autorest/logger v0.2.2 // indirect
 	github.com/Azure/go-autorest/logger v0.2.2 // indirect
 	github.com/Azure/go-autorest/tracing v0.6.1 // indirect
 	github.com/Azure/go-autorest/tracing v0.6.1 // indirect
-	github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 // indirect
+	github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 // indirect
 	github.com/Microsoft/go-winio v0.6.2 // indirect
 	github.com/Microsoft/go-winio v0.6.2 // indirect
-	github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87 // indirect
-	github.com/RoaringBitmap/roaring/v2 v2.10.0 // indirect
+	github.com/RoaringBitmap/roaring/v2 v2.14.0 // indirect
 	github.com/akamai/AkamaiOPEN-edgegrid-golang/v11 v11.1.0 // indirect
 	github.com/akamai/AkamaiOPEN-edgegrid-golang/v11 v11.1.0 // indirect
 	github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 // indirect
 	github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 // indirect
 	github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.13 // indirect
 	github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.13 // indirect
@@ -93,29 +92,29 @@ require (
 	github.com/alibabacloud-go/endpoint-util v1.1.1 // indirect
 	github.com/alibabacloud-go/endpoint-util v1.1.1 // indirect
 	github.com/alibabacloud-go/tea v1.3.13 // indirect
 	github.com/alibabacloud-go/tea v1.3.13 // indirect
 	github.com/alibabacloud-go/tea-utils/v2 v2.0.7 // indirect
 	github.com/alibabacloud-go/tea-utils/v2 v2.0.7 // indirect
-	github.com/aliyun/aliyun-log-go-sdk v0.1.109 // indirect
-	github.com/aliyun/credentials-go v1.4.7 // indirect
-	github.com/aws/aws-sdk-go-v2 v1.39.3 // indirect
-	github.com/aws/aws-sdk-go-v2/config v1.31.13 // indirect
-	github.com/aws/aws-sdk-go-v2/credentials v1.18.17 // indirect
-	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.10 // indirect
-	github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.10 // indirect
-	github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.10 // indirect
+	github.com/aliyun/aliyun-log-go-sdk v0.1.111 // indirect
+	github.com/aliyun/credentials-go v1.4.8 // indirect
+	github.com/aws/aws-sdk-go-v2 v1.39.6 // indirect
+	github.com/aws/aws-sdk-go-v2/config v1.31.17 // indirect
+	github.com/aws/aws-sdk-go-v2/credentials v1.18.21 // indirect
+	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 // indirect
+	github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 // indirect
+	github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 // indirect
 	github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect
 	github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect
-	github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.2 // indirect
-	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.10 // indirect
-	github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.1 // indirect
-	github.com/aws/aws-sdk-go-v2/service/route53 v1.58.5 // indirect
-	github.com/aws/aws-sdk-go-v2/service/sso v1.29.7 // indirect
-	github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.2 // indirect
-	github.com/aws/aws-sdk-go-v2/service/sts v1.38.7 // indirect
-	github.com/aws/smithy-go v1.23.1 // indirect
+	github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 // indirect
+	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 // indirect
+	github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.4 // indirect
+	github.com/aws/aws-sdk-go-v2/service/route53 v1.59.3 // indirect
+	github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 // indirect
+	github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 // indirect
+	github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 // indirect
+	github.com/aws/smithy-go v1.23.2 // indirect
 	github.com/aziontech/azionapi-go-sdk v0.143.0 // indirect
 	github.com/aziontech/azionapi-go-sdk v0.143.0 // indirect
 	github.com/bahlo/generic-list-go v0.2.0 // indirect
 	github.com/bahlo/generic-list-go v0.2.0 // indirect
-	github.com/baidubce/bce-sdk-go v0.9.248 // indirect
+	github.com/baidubce/bce-sdk-go v0.9.251 // indirect
 	github.com/benbjohnson/clock v1.3.5 // indirect
 	github.com/benbjohnson/clock v1.3.5 // indirect
 	github.com/beorn7/perks v1.0.1 // indirect
 	github.com/beorn7/perks v1.0.1 // indirect
-	github.com/bits-and-blooms/bitset v1.24.1 // indirect
+	github.com/bits-and-blooms/bitset v1.24.3 // indirect
 	github.com/blevesearch/bleve_index_api v1.2.10 // indirect
 	github.com/blevesearch/bleve_index_api v1.2.10 // indirect
 	github.com/blevesearch/geo v0.2.4 // indirect
 	github.com/blevesearch/geo v0.2.4 // indirect
 	github.com/blevesearch/go-faiss v1.0.25 // indirect
 	github.com/blevesearch/go-faiss v1.0.25 // indirect
@@ -138,8 +137,8 @@ require (
 	github.com/bsm/redislock v0.9.4 // indirect
 	github.com/bsm/redislock v0.9.4 // indirect
 	github.com/buger/jsonparser v1.1.1 // indirect
 	github.com/buger/jsonparser v1.1.1 // indirect
 	github.com/bytedance/gopkg v0.1.3 // indirect
 	github.com/bytedance/gopkg v0.1.3 // indirect
-	github.com/bytedance/sonic v1.14.1 // indirect
-	github.com/bytedance/sonic/loader v0.3.0 // indirect
+	github.com/bytedance/sonic v1.14.2 // indirect
+	github.com/bytedance/sonic/loader v0.4.0 // indirect
 	github.com/cenkalti/backoff v2.2.1+incompatible // indirect
 	github.com/cenkalti/backoff v2.2.1+incompatible // indirect
 	github.com/cenkalti/backoff/v4 v4.3.0 // indirect
 	github.com/cenkalti/backoff/v4 v4.3.0 // indirect
 	github.com/cenkalti/backoff/v5 v5.0.3 // indirect
 	github.com/cenkalti/backoff/v5 v5.0.3 // indirect
@@ -156,8 +155,8 @@ require (
 	github.com/dnsimple/dnsimple-go/v4 v4.0.0 // indirect
 	github.com/dnsimple/dnsimple-go/v4 v4.0.0 // indirect
 	github.com/docker/go-connections v0.6.0 // indirect
 	github.com/docker/go-connections v0.6.0 // indirect
 	github.com/docker/go-units v0.5.0 // indirect
 	github.com/docker/go-units v0.5.0 // indirect
-	github.com/ebitengine/purego v0.9.0 // indirect
-	github.com/exoscale/egoscale/v3 v3.1.27 // indirect
+	github.com/ebitengine/purego v0.9.1 // indirect
+	github.com/exoscale/egoscale/v3 v3.1.28 // indirect
 	github.com/fatih/color v1.18.0 // indirect
 	github.com/fatih/color v1.18.0 // indirect
 	github.com/fatih/structs v1.1.0 // indirect
 	github.com/fatih/structs v1.1.0 // indirect
 	github.com/felixge/httpsnoop v1.0.4 // indirect
 	github.com/felixge/httpsnoop v1.0.4 // indirect
@@ -166,8 +165,8 @@ require (
 	github.com/gin-contrib/pprof v1.5.3 // indirect
 	github.com/gin-contrib/pprof v1.5.3 // indirect
 	github.com/gin-contrib/sse v1.1.0 // indirect
 	github.com/gin-contrib/sse v1.1.0 // indirect
 	github.com/go-acme/alidns-20150109/v4 v4.6.1 // indirect
 	github.com/go-acme/alidns-20150109/v4 v4.6.1 // indirect
-	github.com/go-acme/tencentclouddnspod v1.1.10 // indirect
-	github.com/go-acme/tencentedgdeone v1.1.19 // indirect
+	github.com/go-acme/tencentclouddnspod v1.1.25 // indirect
+	github.com/go-acme/tencentedgdeone v1.1.48 // indirect
 	github.com/go-errors/errors v1.5.1 // indirect
 	github.com/go-errors/errors v1.5.1 // indirect
 	github.com/go-ini/ini v1.67.0 // indirect
 	github.com/go-ini/ini v1.67.0 // indirect
 	github.com/go-jose/go-jose/v4 v4.1.3 // indirect
 	github.com/go-jose/go-jose/v4 v4.1.3 // indirect
@@ -195,7 +194,7 @@ require (
 	github.com/google/go-tpm v0.9.6 // indirect
 	github.com/google/go-tpm v0.9.6 // indirect
 	github.com/google/pprof v0.0.0-20251007162407-5df77e3f7d1d // indirect
 	github.com/google/pprof v0.0.0-20251007162407-5df77e3f7d1d // indirect
 	github.com/google/s2a-go v0.1.9 // indirect
 	github.com/google/s2a-go v0.1.9 // indirect
-	github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect
+	github.com/googleapis/enterprise-certificate-proxy v0.3.7 // indirect
 	github.com/googleapis/gax-go/v2 v2.15.0 // indirect
 	github.com/googleapis/gax-go/v2 v2.15.0 // indirect
 	github.com/gophercloud/gophercloud v1.14.1 // indirect
 	github.com/gophercloud/gophercloud v1.14.1 // indirect
 	github.com/gophercloud/utils v0.0.0-20231010081019-80377eca5d56 // indirect
 	github.com/gophercloud/utils v0.0.0-20231010081019-80377eca5d56 // indirect
@@ -204,10 +203,10 @@ require (
 	github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
 	github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
 	github.com/hashicorp/go-retryablehttp v0.7.8 // indirect
 	github.com/hashicorp/go-retryablehttp v0.7.8 // indirect
 	github.com/hashicorp/go-uuid v1.0.3 // indirect
 	github.com/hashicorp/go-uuid v1.0.3 // indirect
-	github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.172 // indirect
+	github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.175 // indirect
 	github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df // indirect
 	github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df // indirect
 	github.com/imega/luaformatter v0.0.0-20211025140405-86b0a68d6bef // indirect
 	github.com/imega/luaformatter v0.0.0-20211025140405-86b0a68d6bef // indirect
-	github.com/infobloxopen/infoblox-go-client/v2 v2.10.0 // indirect
+	github.com/infobloxopen/infoblox-go-client/v2 v2.11.0 // indirect
 	github.com/invopop/jsonschema v0.13.0 // indirect
 	github.com/invopop/jsonschema v0.13.0 // indirect
 	github.com/itchyny/timefmt-go v0.1.7 // indirect
 	github.com/itchyny/timefmt-go v0.1.7 // indirect
 	github.com/jackc/pgio v1.0.0 // indirect
 	github.com/jackc/pgio v1.0.0 // indirect
@@ -217,8 +216,9 @@ require (
 	github.com/jonboulle/clockwork v0.5.0 // indirect
 	github.com/jonboulle/clockwork v0.5.0 // indirect
 	github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12 // indirect
 	github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12 // indirect
 	github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 // indirect
 	github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 // indirect
-	github.com/klauspost/compress v1.18.0 // indirect
+	github.com/klauspost/compress v1.18.1 // indirect
 	github.com/klauspost/cpuid/v2 v2.3.0 // indirect
 	github.com/klauspost/cpuid/v2 v2.3.0 // indirect
+	github.com/klauspost/crc32 v1.3.0 // indirect
 	github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect
 	github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect
 	github.com/kylelemons/godebug v1.1.0 // indirect
 	github.com/kylelemons/godebug v1.1.0 // indirect
 	github.com/labbsr0x/bindman-dns-webhook v1.0.2 // indirect
 	github.com/labbsr0x/bindman-dns-webhook v1.0.2 // indirect
@@ -248,22 +248,25 @@ require (
 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
 	github.com/namedotcom/go/v4 v4.0.2 // indirect
 	github.com/namedotcom/go/v4 v4.0.2 // indirect
 	github.com/nrdcg/auroradns v1.1.0 // indirect
 	github.com/nrdcg/auroradns v1.1.0 // indirect
-	github.com/nrdcg/bunny-go v0.0.0-20250327222614-988a091fc7ea // indirect
-	github.com/nrdcg/desec v0.11.0 // indirect
+	github.com/nrdcg/bunny-go v0.1.0 // indirect
+	github.com/nrdcg/desec v0.11.1 // indirect
 	github.com/nrdcg/dnspod-go v0.4.0 // indirect
 	github.com/nrdcg/dnspod-go v0.4.0 // indirect
 	github.com/nrdcg/freemyip v0.3.0 // indirect
 	github.com/nrdcg/freemyip v0.3.0 // indirect
 	github.com/nrdcg/goacmedns v0.2.0 // indirect
 	github.com/nrdcg/goacmedns v0.2.0 // indirect
 	github.com/nrdcg/goinwx v0.11.0 // indirect
 	github.com/nrdcg/goinwx v0.11.0 // indirect
-	github.com/nrdcg/mailinabox v0.2.0 // indirect
+	github.com/nrdcg/mailinabox v0.3.0 // indirect
 	github.com/nrdcg/namesilo v0.5.0 // indirect
 	github.com/nrdcg/namesilo v0.5.0 // indirect
 	github.com/nrdcg/nodion v0.1.0 // indirect
 	github.com/nrdcg/nodion v0.1.0 // indirect
-	github.com/nrdcg/oci-go-sdk/common/v1065 v1065.102.0 // indirect
-	github.com/nrdcg/oci-go-sdk/dns/v1065 v1065.102.0 // indirect
+	github.com/nrdcg/oci-go-sdk/common/v1065 v1065.104.0 // indirect
+	github.com/nrdcg/oci-go-sdk/dns/v1065 v1065.104.0 // indirect
 	github.com/nrdcg/porkbun v0.4.0 // indirect
 	github.com/nrdcg/porkbun v0.4.0 // indirect
+	github.com/nrdcg/vegadns v0.3.0 // indirect
 	github.com/nzdjb/go-metaname v1.0.0 // indirect
 	github.com/nzdjb/go-metaname v1.0.0 // indirect
 	github.com/opencontainers/go-digest v1.0.0 // indirect
 	github.com/opencontainers/go-digest v1.0.0 // indirect
 	github.com/opencontainers/image-spec v1.1.1 // indirect
 	github.com/opencontainers/image-spec v1.1.1 // indirect
+	github.com/oschwald/geoip2-golang/v2 v2.0.0 // indirect
 	github.com/oschwald/maxminddb-golang v1.13.1 // indirect
 	github.com/oschwald/maxminddb-golang v1.13.1 // indirect
+	github.com/oschwald/maxminddb-golang/v2 v2.1.0 // indirect
 	github.com/ovh/go-ovh v1.9.0 // indirect
 	github.com/ovh/go-ovh v1.9.0 // indirect
 	github.com/pelletier/go-toml/v2 v2.2.4 // indirect
 	github.com/pelletier/go-toml/v2 v2.2.4 // indirect
 	github.com/peterhellberg/link v1.2.0 // indirect
 	github.com/peterhellberg/link v1.2.0 // indirect
@@ -275,18 +278,18 @@ require (
 	github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
 	github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
 	github.com/prometheus/client_golang v1.23.2 // indirect
 	github.com/prometheus/client_golang v1.23.2 // indirect
 	github.com/prometheus/client_model v0.6.2 // indirect
 	github.com/prometheus/client_model v0.6.2 // indirect
-	github.com/prometheus/common v0.67.1 // indirect
-	github.com/prometheus/procfs v0.17.0 // indirect
-	github.com/prometheus/prometheus v0.307.1 // indirect
+	github.com/prometheus/common v0.67.2 // indirect
+	github.com/prometheus/procfs v0.19.2 // indirect
+	github.com/prometheus/prometheus v0.307.3 // indirect
 	github.com/quic-go/qpack v0.5.1 // indirect
 	github.com/quic-go/qpack v0.5.1 // indirect
 	github.com/quic-go/quic-go v0.55.0 // indirect
 	github.com/quic-go/quic-go v0.55.0 // indirect
-	github.com/redis/go-redis/v9 v9.14.1 // indirect
+	github.com/redis/go-redis/v9 v9.16.0 // indirect
 	github.com/regfish/regfish-dnsapi-go v0.1.1 // indirect
 	github.com/regfish/regfish-dnsapi-go v0.1.1 // indirect
 	github.com/robfig/cron/v3 v3.0.1 // indirect
 	github.com/robfig/cron/v3 v3.0.1 // indirect
 	github.com/rs/xid v1.6.0 // indirect
 	github.com/rs/xid v1.6.0 // indirect
 	github.com/sacloud/api-client-go v0.3.3 // indirect
 	github.com/sacloud/api-client-go v0.3.3 // indirect
 	github.com/sacloud/go-http v0.1.9 // indirect
 	github.com/sacloud/go-http v0.1.9 // indirect
-	github.com/sacloud/iaas-api-go v1.19.0 // indirect
+	github.com/sacloud/iaas-api-go v1.21.1 // indirect
 	github.com/sacloud/packages-go v0.0.11 // indirect
 	github.com/sacloud/packages-go v0.0.11 // indirect
 	github.com/sagikazarmark/locafero v0.12.0 // indirect
 	github.com/sagikazarmark/locafero v0.12.0 // indirect
 	github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35 // indirect
 	github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35 // indirect
@@ -305,37 +308,36 @@ require (
 	github.com/stretchr/objx v0.5.3 // indirect
 	github.com/stretchr/objx v0.5.3 // indirect
 	github.com/subosito/gotenv v1.6.0 // indirect
 	github.com/subosito/gotenv v1.6.0 // indirect
 	github.com/technoweenie/multipartstreamer v1.0.1 // indirect
 	github.com/technoweenie/multipartstreamer v1.0.1 // indirect
-	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.43 // indirect
+	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.51 // indirect
 	github.com/timtadh/data-structures v0.6.2 // indirect
 	github.com/timtadh/data-structures v0.6.2 // indirect
 	github.com/timtadh/lexmachine v0.2.3 // indirect
 	github.com/timtadh/lexmachine v0.2.3 // indirect
-	github.com/tinylib/msgp v1.4.0 // indirect
+	github.com/tinylib/msgp v1.5.0 // indirect
 	github.com/tjfoc/gmsm v1.4.1 // indirect
 	github.com/tjfoc/gmsm v1.4.1 // indirect
 	github.com/tklauser/go-sysconf v0.3.15 // indirect
 	github.com/tklauser/go-sysconf v0.3.15 // indirect
 	github.com/tklauser/numcpus v0.10.0 // indirect
 	github.com/tklauser/numcpus v0.10.0 // indirect
 	github.com/transip/gotransip/v6 v6.26.1 // indirect
 	github.com/transip/gotransip/v6 v6.26.1 // indirect
 	github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
 	github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
-	github.com/ugorji/go/codec v1.3.0 // indirect
+	github.com/ugorji/go/codec v1.3.1 // indirect
 	github.com/ultradns/ultradns-go-sdk v1.8.1-20250722213956-faef419 // indirect
 	github.com/ultradns/ultradns-go-sdk v1.8.1-20250722213956-faef419 // indirect
 	github.com/vinyldns/go-vinyldns v0.9.16 // indirect
 	github.com/vinyldns/go-vinyldns v0.9.16 // indirect
-	github.com/volcengine/volc-sdk-golang v1.0.223 // indirect
+	github.com/volcengine/volc-sdk-golang v1.0.226 // indirect
 	github.com/vultr/govultr/v3 v3.24.0 // indirect
 	github.com/vultr/govultr/v3 v3.24.0 // indirect
 	github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
 	github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
 	github.com/x448/float16 v0.8.4 // indirect
 	github.com/x448/float16 v0.8.4 // indirect
-	github.com/yandex-cloud/go-genproto v0.31.0 // indirect
-	github.com/yandex-cloud/go-sdk/services/dns v0.0.12 // indirect
-	github.com/yandex-cloud/go-sdk/v2 v2.19.0 // indirect
+	github.com/yandex-cloud/go-genproto v0.35.0 // indirect
+	github.com/yandex-cloud/go-sdk/services/dns v0.0.17 // indirect
+	github.com/yandex-cloud/go-sdk/v2 v2.25.0 // indirect
 	github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
 	github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
 	github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
 	github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
 	github.com/yusufpapurcu/wmi v1.2.4 // indirect
 	github.com/yusufpapurcu/wmi v1.2.4 // indirect
 	go.etcd.io/bbolt v1.4.3 // indirect
 	go.etcd.io/bbolt v1.4.3 // indirect
-	go.mongodb.org/mongo-driver v1.17.4 // indirect
+	go.mongodb.org/mongo-driver v1.17.6 // indirect
 	go.opentelemetry.io/auto/sdk v1.2.1 // indirect
 	go.opentelemetry.io/auto/sdk v1.2.1 // indirect
 	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect
 	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect
 	go.opentelemetry.io/otel v1.38.0 // indirect
 	go.opentelemetry.io/otel v1.38.0 // indirect
 	go.opentelemetry.io/otel/metric v1.38.0 // indirect
 	go.opentelemetry.io/otel/metric v1.38.0 // indirect
 	go.opentelemetry.io/otel/trace v1.38.0 // indirect
 	go.opentelemetry.io/otel/trace v1.38.0 // indirect
 	go.uber.org/atomic v1.11.0 // indirect
 	go.uber.org/atomic v1.11.0 // indirect
-	go.uber.org/mock v0.6.0 // indirect
 	go.uber.org/multierr v1.11.0 // indirect
 	go.uber.org/multierr v1.11.0 // indirect
 	go.uber.org/ratelimit v0.3.1 // indirect
 	go.uber.org/ratelimit v0.3.1 // indirect
 	go.uber.org/zap v1.27.0 // indirect
 	go.uber.org/zap v1.27.0 // indirect
@@ -349,20 +351,18 @@ require (
 	golang.org/x/text v0.30.0 // indirect
 	golang.org/x/text v0.30.0 // indirect
 	golang.org/x/time v0.14.0 // indirect
 	golang.org/x/time v0.14.0 // indirect
 	golang.org/x/tools v0.38.0 // indirect
 	golang.org/x/tools v0.38.0 // indirect
-	google.golang.org/api v0.252.0 // indirect
-	google.golang.org/genproto/googleapis/api v0.0.0-20251014184007-4626949a642f // indirect
-	google.golang.org/genproto/googleapis/rpc v0.0.0-20251014184007-4626949a642f // indirect
+	google.golang.org/api v0.255.0 // indirect
+	google.golang.org/genproto/googleapis/api v0.0.0-20251103181224-f26f9409b101 // indirect
+	google.golang.org/genproto/googleapis/rpc v0.0.0-20251103181224-f26f9409b101 // indirect
 	google.golang.org/protobuf v1.36.10 // indirect
 	google.golang.org/protobuf v1.36.10 // indirect
 	gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
 	gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
-	gopkg.in/ns1/ns1-go.v2 v2.15.0 // indirect
+	gopkg.in/ns1/ns1-go.v2 v2.15.1 // indirect
 	gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
 	gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
 	gopkg.in/yaml.v2 v2.4.0 // indirect
 	gopkg.in/yaml.v2 v2.4.0 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 	gorm.io/datatypes v1.2.7 // indirect
 	gorm.io/datatypes v1.2.7 // indirect
 	gorm.io/driver/mysql v1.6.0 // indirect
 	gorm.io/driver/mysql v1.6.0 // indirect
 	gorm.io/hints v1.1.2 // indirect
 	gorm.io/hints v1.1.2 // indirect
-	k8s.io/apimachinery v0.34.1 // indirect
-	k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect
 )
 )
 
 
 replace (
 replace (

Разница между файлами не показана из-за своего большого размера
+ 146 - 308
go.sum


+ 15 - 15
internal/geolite/geolite.go

@@ -1,11 +1,11 @@
- package geolite
+package geolite
 
 
 import (
 import (
 	"fmt"
 	"fmt"
-	"net"
+	"net/netip"
 	"sync"
 	"sync"
 
 
-	"github.com/oschwald/geoip2-golang"
+	"github.com/oschwald/geoip2-golang/v2"
 	"github.com/uozi-tech/cosy/geoip"
 	"github.com/uozi-tech/cosy/geoip"
 )
 )
 
 
@@ -64,8 +64,8 @@ func (s *Service) Search(ipStr string) (*IPLocation, error) {
 		return nil, fmt.Errorf("no databases loaded")
 		return nil, fmt.Errorf("no databases loaded")
 	}
 	}
 
 
-	ip := net.ParseIP(ipStr)
-	if ip == nil {
+	ip, err := netip.ParseAddr(ipStr)
+	if err != nil {
 		return nil, fmt.Errorf("invalid IP address: %s", ipStr)
 		return nil, fmt.Errorf("invalid IP address: %s", ipStr)
 	}
 	}
 
 
@@ -78,27 +78,27 @@ func (s *Service) Search(ipStr string) (*IPLocation, error) {
 	if record, err := s.cityDB.City(ip); err == nil {
 	if record, err := s.cityDB.City(ip); err == nil {
 		// Override country code from city database if cosy didn't provide it
 		// Override country code from city database if cosy didn't provide it
 		if loc.RegionCode == "" {
 		if loc.RegionCode == "" {
-			loc.RegionCode = record.Country.IsoCode
+			loc.RegionCode = record.Country.ISOCode
 		}
 		}
 
 
 		if len(record.Subdivisions) > 0 {
 		if len(record.Subdivisions) > 0 {
-			loc.Province = record.Subdivisions[0].Names["en"]
+			loc.Province = record.Subdivisions[0].Names.English
 		}
 		}
 
 
-		loc.City = record.City.Names["en"]
+		loc.City = record.City.Names.English
 
 
 		// Get Chinese names for Chinese regions
 		// Get Chinese names for Chinese regions
 		if loc.RegionCode == "CN" || loc.RegionCode == "HK" ||
 		if loc.RegionCode == "CN" || loc.RegionCode == "HK" ||
 			loc.RegionCode == "MO" || loc.RegionCode == "TW" {
 			loc.RegionCode == "MO" || loc.RegionCode == "TW" {
 			if len(record.Subdivisions) > 0 {
 			if len(record.Subdivisions) > 0 {
-				if cnRegion := record.Subdivisions[0].Names["zh-CN"]; cnRegion != "" {
+				if cnRegion := record.Subdivisions[0].Names.SimplifiedChinese; cnRegion != "" {
 					loc.Province = cnRegion
 					loc.Province = cnRegion
 				}
 				}
 			} else {
 			} else {
 				// If it's a Chinese IP but has no province, mark it as "其它"
 				// If it's a Chinese IP but has no province, mark it as "其它"
 				loc.Province = "其它"
 				loc.Province = "其它"
 			}
 			}
-			if cnCity := record.City.Names["zh-CN"]; cnCity != "" {
+			if cnCity := record.City.Names.SimplifiedChinese; cnCity != "" {
 				loc.City = cnCity
 				loc.City = cnCity
 			}
 			}
 
 
@@ -122,8 +122,8 @@ func (s *Service) SearchWithISO(ipStr string) (*IPLocation, error) {
 		return nil, fmt.Errorf("no databases loaded")
 		return nil, fmt.Errorf("no databases loaded")
 	}
 	}
 
 
-	ip := net.ParseIP(ipStr)
-	if ip == nil {
+	ip, err := netip.ParseAddr(ipStr)
+	if err != nil {
 		return nil, fmt.Errorf("invalid IP address: %s", ipStr)
 		return nil, fmt.Errorf("invalid IP address: %s", ipStr)
 	}
 	}
 
 
@@ -136,14 +136,14 @@ func (s *Service) SearchWithISO(ipStr string) (*IPLocation, error) {
 	if record, err := s.cityDB.City(ip); err == nil {
 	if record, err := s.cityDB.City(ip); err == nil {
 		// Override country code from city database if cosy didn't provide it
 		// Override country code from city database if cosy didn't provide it
 		if loc.RegionCode == "" {
 		if loc.RegionCode == "" {
-			loc.RegionCode = record.Country.IsoCode
+			loc.RegionCode = record.Country.ISOCode
 		}
 		}
 
 
 		if len(record.Subdivisions) > 0 {
 		if len(record.Subdivisions) > 0 {
-			loc.RegionCode = record.Subdivisions[0].Names["en"]
+			loc.RegionCode = record.Subdivisions[0].Names.English
 		}
 		}
 
 
-		loc.RegionCode = record.City.Names["en"]
+		loc.RegionCode = record.City.Names.English
 
 
 		return loc, nil
 		return loc, nil
 	}
 	}

Разница между файлами не показана из-за своего большого размера
+ 227 - 223
pnpm-lock.yaml


Некоторые файлы не были показаны из-за большого количества измененных файлов