You've already forked AstralRinth
cont: fix(frontend): dont assume wss for panel pingtest as well (#6421)
* fix(frontend): dont assume wss for panel pingtest as well * fix(frontend): wss assumptions * chore: fix export * chore: prettier
This commit is contained in:
committed by
GitHub
parent
336050f4df
commit
486b467af2
@@ -43,6 +43,7 @@ export { XHRUploadClient } from './platform/xhr-upload-client'
|
|||||||
export { clearNodeAuthState, nodeAuthState, setNodeAuthState } from './state/node-auth'
|
export { clearNodeAuthState, nodeAuthState, setNodeAuthState } from './state/node-auth'
|
||||||
export * from './types'
|
export * from './types'
|
||||||
export { withJWTRetry } from './utils/jwt-retry'
|
export { withJWTRetry } from './utils/jwt-retry'
|
||||||
|
export { getNodeWebSocketUrl } from './utils/node-url'
|
||||||
export {
|
export {
|
||||||
type ParsedSseEvent,
|
type ParsedSseEvent,
|
||||||
type ParsedSseItem,
|
type ParsedSseItem,
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
const NODE_FS_PATH_REGEX = /\/modrinth\/v\d+\/fs\/?$/
|
const NODE_FS_PATH_REGEX = /\/modrinth\/v\d+\/fs\/?$/
|
||||||
const HTTP_SCHEME_REGEX = /^https?:\/\//i
|
const HTTP_SCHEME_REGEX = /^https?:\/\//i
|
||||||
const WS_SCHEME_REGEX = /^wss?:\/\//i
|
const WS_SCHEME_REGEX = /^wss?:\/\//i
|
||||||
|
const HTTP_SECURE_SCHEME_REGEX = /^https:\/\//i
|
||||||
|
const HTTP_INSECURE_SCHEME_REGEX = /^http:\/\//i
|
||||||
|
|
||||||
export function getNodeBaseUrl(url: string): string {
|
export function getNodeBaseUrl(url: string): string {
|
||||||
const baseUrl = url.replace(NODE_FS_PATH_REGEX, '')
|
const baseUrl = url.replace(NODE_FS_PATH_REGEX, '')
|
||||||
@@ -8,5 +10,9 @@ export function getNodeBaseUrl(url: string): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function getNodeWebSocketUrl(url: string): string {
|
export function getNodeWebSocketUrl(url: string): string {
|
||||||
return WS_SCHEME_REGEX.test(url) ? url : `wss://${url}`
|
if (WS_SCHEME_REGEX.test(url)) return url
|
||||||
|
if (HTTP_SECURE_SCHEME_REGEX.test(url)) return url.replace(HTTP_SECURE_SCHEME_REGEX, 'wss://')
|
||||||
|
if (HTTP_INSECURE_SCHEME_REGEX.test(url)) return url.replace(HTTP_INSECURE_SCHEME_REGEX, 'ws://')
|
||||||
|
|
||||||
|
return `wss://${url}`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -344,7 +344,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { Archon, Labrinth } from '@modrinth/api-client'
|
import type { Archon, Labrinth } from '@modrinth/api-client'
|
||||||
import { ModrinthApiError } from '@modrinth/api-client'
|
import { getNodeWebSocketUrl, ModrinthApiError } from '@modrinth/api-client'
|
||||||
import {
|
import {
|
||||||
BoxesIcon,
|
BoxesIcon,
|
||||||
CheckIcon,
|
CheckIcon,
|
||||||
@@ -1299,9 +1299,15 @@ async function testNodeReachability(): Promise<boolean> {
|
|||||||
const nodeInstance = serverData.value?.node?.instance
|
const nodeInstance = serverData.value?.node?.instance
|
||||||
if (!nodeInstance) return false
|
if (!nodeInstance) return false
|
||||||
|
|
||||||
const wsUrl = `wss://${nodeInstance}/pingtest`
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
const auth = await client.archon.servers_v0.getWebSocketAuth(props.serverId)
|
||||||
|
const authUrl = getNodeWebSocketUrl(auth.url)
|
||||||
|
const protocol = authUrl.toLowerCase().startsWith('ws://') ? 'ws' : 'wss'
|
||||||
|
const wsUrl = getNodeWebSocketUrl(`${nodeInstance}/pingtest`).replace(
|
||||||
|
/^wss?:\/\//i,
|
||||||
|
`${protocol}://`,
|
||||||
|
)
|
||||||
|
|
||||||
return await new Promise((resolve) => {
|
return await new Promise((resolve) => {
|
||||||
const socket = new WebSocket(wsUrl)
|
const socket = new WebSocket(wsUrl)
|
||||||
const timeout = setTimeout(() => {
|
const timeout = setTimeout(() => {
|
||||||
@@ -1326,7 +1332,7 @@ async function testNodeReachability(): Promise<boolean> {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`Failed to ping node ${wsUrl}:`, error)
|
console.error(`Failed to ping node ${nodeInstance}:`, error)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user