feat: check guacd availability before RDP/VNC connection

This commit is contained in:
ZacharyZcR
2026-05-13 18:15:40 +08:00
committed by ZacharyZcR
parent ebed4a6d2e
commit a1a442281b
2 changed files with 21 additions and 3 deletions
+14 -3
View File
@@ -1,7 +1,7 @@
import React, { useState, useEffect, useCallback } from "react";
import { GuacamoleDisplay } from "@/features/guacamole/GuacamoleDisplay.tsx";
import { FullScreenAppWrapper } from "@/features/FullScreenAppWrapper.tsx";
import { getGuacamoleTokenFromHost } from "@/main-axios.ts";
import { getGuacamoleTokenFromHost, getGuacdStatus } from "@/main-axios.ts";
import { useTranslation } from "react-i18next";
import { AlertCircle, RefreshCw } from "lucide-react";
import { Button } from "@/components/button.tsx";
@@ -75,8 +75,19 @@ const GuacamoleAppInner: React.FC<GuacamoleAppInnerProps> = ({
useEffect(() => {
setToken(null);
setError(null);
getGuacamoleTokenFromHost(hostId)
.then((result) => setToken(result.token))
getGuacdStatus()
.then((status) => {
if (status.guacd.status !== "connected") {
setError(
"Remote desktop service (guacd) is not available. Please ensure guacd is running and accessible.",
);
return;
}
return getGuacamoleTokenFromHost(hostId);
})
.then((result) => {
if (result) setToken(result.token);
})
.catch((err) => setError(err?.message || t("guacamole.failedToConnect")));
}, [hostId, retryCount]);