Skip to content

Commit 8330c74

Browse files
committed
fix: rustfs version
1 parent f03c485 commit 8330c74

4 files changed

Lines changed: 64 additions & 59 deletions

File tree

‎components/app-sidebar.vue‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import { useRoute } from 'vue-router'
2525
import type { AppConfig, NavItem } from '~/types/app-config'
2626
2727
const appConfig = useAppConfig() as unknown as AppConfig
28-
const $config = useNuxtApp().$config
2928
const route = useRoute()
3029
const { t } = useI18n()
3130
const { state } = useSidebar()
@@ -174,7 +173,7 @@ const getLabel = (item: NavItem) => t(item.label)
174173

175174
<SidebarFooter class="mt-auto flex flex-col gap-3 px-2 pb-2">
176175
<!--添加一块显示版本的地方 -->
177-
<div class="text-sm border-t py-2 text-center">RUSTFS {{ $config?.public.release?.version || 'unknown' }}</div>
176+
<div class="text-sm border-t py-2 text-center">RUSTFS {{ $siteConfig?.release?.version || '' }}</div>
178177
</SidebarFooter>
179178

180179
<SidebarRail />

‎nuxt.config.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export default defineNuxtConfig({
5353

5454
// 版本信息
5555
release: {
56-
version: process.env.VERSION || 'dev-0.0.0',
56+
version: process.env.VERSION || '',
5757
date: process.env.RELEASE_DATE || new Date().toISOString().slice(0, 10),
5858
},
5959

‎utils/config-helpers.ts‎

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,18 @@ interface ServerConfigResponse {
5454
}
5555
}
5656

57+
/**
58+
* Version configuration response type (partial config, used for merging)
59+
*/
60+
interface VersionConfigResponse {
61+
/** Release version */
62+
version?: string
63+
/** Release date */
64+
date?: string
65+
/** Version information */
66+
versionInfo?: string
67+
}
68+
5769
/**
5870
* Configuration retrieval result
5971
*/
@@ -86,6 +98,7 @@ const STORAGE_KEY = 'rustfs-server-host'
8698
const DEFAULT_REGION = 'us-east-1'
8799
const API_PATH = '/rustfs/admin/v3'
88100
const CONFIG_PATH = '/rustfs/console/config.json'
101+
const VERSION_PATH = '/rustfs/console/version'
89102
const REQUEST_TIMEOUT = 5000
90103

91104
// ============================================================================
@@ -211,7 +224,7 @@ export const getCurrentBrowserConfig = (): ConfigResult => {
211224
/**
212225
* Fetch raw configuration data from server
213226
*/
214-
const fetchRawConfigFromServer = async (serverHost: string): Promise<ServerConfigResponse | null> => {
227+
export const fetchRawConfigFromServer = async (serverHost: string): Promise<ServerConfigResponse | null> => {
215228
const configUrl = `${serverHost}${CONFIG_PATH}`
216229

217230
try {
@@ -241,6 +254,41 @@ const fetchRawConfigFromServer = async (serverHost: string): Promise<ServerConfi
241254
}
242255
}
243256

257+
/**
258+
* Fetch version configuration data from server
259+
*/
260+
export const fetchVersionConfigFromServer = async (serverHost: string): Promise<VersionConfigResponse | null> => {
261+
const configUrl = `${serverHost}${VERSION_PATH}`
262+
263+
try {
264+
const response = await fetch(configUrl, {
265+
method: 'GET',
266+
headers: { 'Content-Type': 'application/json' },
267+
signal: AbortSignal.timeout(REQUEST_TIMEOUT),
268+
})
269+
270+
if (!response.ok) {
271+
logger.warn(`Failed to fetch version config from ${configUrl}: ${response.status} ${response.statusText}`)
272+
return null
273+
}
274+
275+
const data: VersionConfigResponse = await response.json()
276+
277+
if (!(typeof data === 'object' && data !== null)) {
278+
logger.warn('Invalid version config: not a valid object')
279+
return null
280+
}
281+
282+
logger.info(`Successfully loaded version config from server: ${configUrl}`)
283+
return data
284+
} catch (error) {
285+
logger.warn(
286+
`Error fetching version config from server: ${error instanceof Error ? error.message : 'Unknown error'}`
287+
)
288+
return null
289+
}
290+
}
291+
244292
/**
245293
* Merge server configuration with default configuration
246294
*/

‎utils/config.ts‎

Lines changed: 13 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import {
77
getCurrentBrowserConfig,
88
getServerDefaultConfig,
99
fetchConfigFromServer,
10+
fetchRawConfigFromServer,
11+
fetchVersionConfigFromServer,
1012
} from './config-helpers'
1113

1214
export interface RustFSConfig {
@@ -33,25 +35,6 @@ let configCacheTime = 0
3335
const CACHE_DURATION = 60000 // 1分钟缓存
3436

3537
export const configManager = {
36-
// 获取当前host配置
37-
getCurrentHostConfig(): SiteConfig {
38-
// 优先使用localStorage中保存的配置
39-
const storedResult = getStoredHostConfig()
40-
if (storedResult.config) {
41-
return storedResult.config
42-
}
43-
44-
// 使用当前浏览器地址
45-
const browserResult = getCurrentBrowserConfig()
46-
if (browserResult.config) {
47-
return browserResult.config
48-
}
49-
50-
// 服务端fallback
51-
const defaultResult = getServerDefaultConfig()
52-
return defaultResult.config!
53-
},
54-
5538
// 从 nuxt runtimeconfig 读取配置
5639
loadRuntimeConfig(): SiteConfig | null {
5740
try {
@@ -111,38 +94,35 @@ export const configManager = {
11194
if (storedResult.config) {
11295
config = storedResult.config
11396
} else {
114-
// // 2. 尝试从服务器获取配置 (当前浏览器host:9001/config.json)
115-
// const serverConfig = await this.loadConfigFromServer()
116-
// if (serverConfig) {
117-
// config = serverConfig
118-
// } else {
119-
// 3. 使用当前浏览器地址
97+
// 2. 使用当前浏览器地址
12098
const browserResult = getCurrentBrowserConfig()
12199
if (browserResult.config) {
122100
config = browserResult.config
123101
} else {
124-
// 4. 使用 runtimeconfig
102+
// 3. 使用 runtimeconfig
125103
const runtimeConfig = this.loadRuntimeConfig()
126104
if (runtimeConfig) {
127105
config = runtimeConfig
128106
} else {
129-
// 5. 最后使用服务端默认值
107+
// 4. 最后使用localhost默认值
130108
const defaultResult = getServerDefaultConfig()
131109
config = defaultResult.config!
132110
}
133-
// }
134111
}
135112
}
136113

137-
// 无论配置来源如何,最后必须使用服务器的release信息
114+
// get version config from server
138115
try {
139-
const serverConfig = await this.loadConfigFromServer()
140-
if (serverConfig && serverConfig.release && serverConfig.release.version && serverConfig.release.date) {
141-
config.release = serverConfig.release
116+
// get version config from server api (next version)
117+
const serverConfig = await fetchRawConfigFromServer(config.serverHost)
118+
if (serverConfig && serverConfig?.release?.version && serverConfig?.release?.date) {
119+
config.release = {
120+
version: serverConfig.release.version,
121+
date: serverConfig.release.date,
122+
}
142123
}
143124
} catch (error) {
144125
logger.warn('Failed to get release info from server:', error)
145-
// 继续使用现有的release信息,不影响其他配置
146126
}
147127

148128
// 缓存配置
@@ -162,26 +142,4 @@ export const configManager = {
162142
const config = await this.loadConfig()
163143
return !!(config?.serverHost && config?.api?.baseURL)
164144
},
165-
166-
// 强制从服务器重新加载配置并更新缓存
167-
async reloadConfigFromServer(): Promise<SiteConfig | null> {
168-
try {
169-
// 清除缓存
170-
this.clearCache()
171-
172-
// 从服务器加载配置
173-
const config = await this.loadConfigFromServer()
174-
if (config) {
175-
// 更新缓存
176-
configCache = config
177-
configCacheTime = Date.now()
178-
logger.info('Configuration reloaded from server successfully')
179-
}
180-
return config
181-
} catch (error) {
182-
const configError = handleConfigError(error, 'reloading config from server')
183-
logger.error('Failed to reload config from server:', configError.message)
184-
return null
185-
}
186-
},
187145
}

0 commit comments

Comments
 (0)