From 8f7574f21200caddef8aa1e0bc72f652a70b0e87 Mon Sep 17 00:00:00 2001 From: Jacky Date: Sun, 6 Apr 2025 07:42:20 +0000 Subject: [PATCH] fix(tls): no certificate available --- .../ConfigHistory/ConfigHistory.vue | 24 ++++++++++++++++++- .../components/ConfigHistory/DiffViewer.vue | 7 ++++-- app/src/version.json | 2 +- app/vite.config.ts | 8 +++++++ internal/cert/server_tls.go | 2 +- main.go | 4 +++- 6 files changed, 41 insertions(+), 6 deletions(-) diff --git a/app/src/components/ConfigHistory/ConfigHistory.vue b/app/src/components/ConfigHistory/ConfigHistory.vue index f7e32566..e8c1a8fe 100644 --- a/app/src/components/ConfigHistory/ConfigHistory.vue +++ b/app/src/components/ConfigHistory/ConfigHistory.vue @@ -5,8 +5,8 @@ import type { Key } from 'ant-design-vue/es/_util/type' import config from '@/api/config' import StdPagination from '@/components/StdDesign/StdDataDisplay/StdPagination.vue' import { message } from 'ant-design-vue' +import { defineAsyncComponent } from 'vue' import { datetime } from '../StdDesign/StdDataDisplay/StdTableTransformer' -import DiffViewer from './DiffViewer.vue' // Define props for the component const props = defineProps<{ @@ -17,6 +17,19 @@ const props = defineProps<{ const visible = defineModel('visible') const currentContent = defineModel('currentContent') +// Import DiffViewer asynchronously with loading options +const DiffViewer = defineAsyncComponent({ + loader: () => import('./DiffViewer.vue'), + loadingComponent: { + template: '
', + }, + delay: 200, + timeout: 10000, + errorComponent: { + template: '
', + }, +}) + const loading = ref(false) const records = ref([]) const showDiffViewer = ref(false) @@ -186,4 +199,13 @@ const compareButtonText = computed(() => { display: flex; gap: 8px; } + +.async-loading, +.async-error { + display: flex; + justify-content: center; + align-items: center; + padding: 20px; + min-height: 200px; +} diff --git a/app/src/components/ConfigHistory/DiffViewer.vue b/app/src/components/ConfigHistory/DiffViewer.vue index 91c3d404..e0afd875 100644 --- a/app/src/components/ConfigHistory/DiffViewer.vue +++ b/app/src/components/ConfigHistory/DiffViewer.vue @@ -17,6 +17,9 @@ const emit = defineEmits<{ (e: 'restore'): void }>() +// Import Range class separately to avoid loading the entire ace package +const Range = ace.Range + // Define modal visibility using defineModel with boolean type const visible = defineModel('visible') // Define currentContent using defineModel @@ -253,7 +256,7 @@ function compareAndHighlightLines(leftSession: Ace.EditSession, rightSession: Ac if (!matchedLeftLines.has(i)) { leftSession.addGutterDecoration(i, 'ace_gutter-active-line') leftSession.addMarker( - new ace.Range(i, 0, i, leftLines[i].length || 1), + new Range(i, 0, i, leftLines[i].length || 1), 'diff-line-deleted', 'fullLine', ) @@ -265,7 +268,7 @@ function compareAndHighlightLines(leftSession: Ace.EditSession, rightSession: Ac if (!matchedRightLines.has(j)) { rightSession.addGutterDecoration(j, 'ace_gutter-active-line') rightSession.addMarker( - new ace.Range(j, 0, j, rightLines[j].length || 1), + new Range(j, 0, j, rightLines[j].length || 1), 'diff-line-added', 'fullLine', ) diff --git a/app/src/version.json b/app/src/version.json index c32bcead..a2217691 100644 --- a/app/src/version.json +++ b/app/src/version.json @@ -1 +1 @@ -{"version":"2.0.0-rc.5","build_id":4,"total_build":398} \ No newline at end of file +{"version":"2.0.0-rc.5","build_id":9,"total_build":403} \ No newline at end of file diff --git a/app/vite.config.ts b/app/vite.config.ts index 5d83d97c..d1aa52da 100644 --- a/app/vite.config.ts +++ b/app/vite.config.ts @@ -103,6 +103,14 @@ export default defineConfig(({ mode }) => { }, build: { chunkSizeWarningLimit: 1000, + rollupOptions: { + output: { + manualChunks: { + 'ace-editor': ['ace-builds'], + 'ace-ext': ['ace-builds/src-min-noconflict/ext-language_tools'], + }, + }, + }, }, } }) diff --git a/internal/cert/server_tls.go b/internal/cert/server_tls.go index cc0563ee..7b893aee 100644 --- a/internal/cert/server_tls.go +++ b/internal/cert/server_tls.go @@ -22,7 +22,7 @@ func ReloadServerTLSCertificate() error { return err } - tlsCert.Store(newCert) + tlsCert.Store(&newCert) return nil } diff --git a/main.go b/main.go index 05a3c4a1..09708f0f 100644 --- a/main.go +++ b/main.go @@ -75,12 +75,14 @@ func Program(confPath string) func(state overseer.State) { GetCertificate: func(clientHello *tls.ClientHelloInfo) (*tls.Certificate, error) { return cert.GetServerTLSCertificate() }, + MinVersion: tls.VersionTLS12, } srv.TLSConfig = tlsConfig logger.Info("Starting HTTPS server") - err = srv.ServeTLS(state.Listener, "", "") + tlsListener := tls.NewListener(state.Listener, tlsConfig) + err = srv.Serve(tlsListener) } else { logger.Info("Starting HTTP server") err = srv.Serve(state.Listener)