feat: add incus terminal

This commit is contained in:
2024-11-07 04:56:19 +07:00
parent 2adde048b0
commit ab9b3368d1
7 changed files with 302 additions and 21 deletions
@@ -18,9 +18,22 @@ type PVESessionProps = {
};
};
export type InteractiveSessionProps = SSHSessionProps | PVESessionProps;
type IncusSessionProps = {
type: "incus";
params: {
client: "vnc" | "xtermjs";
serverId: string;
shell?: string;
};
};
export type InteractiveSessionProps =
| SSHSessionProps
| PVESessionProps
| IncusSessionProps;
const InteractiveSession = ({ type, params }: InteractiveSessionProps) => {
let url = "";
const query = new URLSearchParams({
...params,
});
@@ -30,7 +43,15 @@ const InteractiveSession = ({ type, params }: InteractiveSessionProps) => {
return <Terminal wsUrl={`${BASE_WS_URL}/ws/ssh?${query}`} />;
case "pve":
const url = `${BASE_WS_URL}/ws/pve?${query}`;
url = `${BASE_WS_URL}/ws/pve?${query}`;
return params.client === "vnc" ? (
<VNCViewer url={url} />
) : (
<Terminal wsUrl={url} />
);
case "incus":
url = `${BASE_WS_URL}/ws/incus?${query}`;
return params.client === "vnc" ? (
<VNCViewer url={url} />
) : (
+3 -1
View File
@@ -58,7 +58,9 @@ const XTermJs = forwardRef<XTermRef, XTermJsProps>((props, ref) => {
function resizeTerminal() {
const { cols, rows } = xterm;
ws.send(`\x01${cols},${rows}`);
if (ws.readyState === ws.OPEN) {
ws.send(`\x01${cols},${rows}`);
}
}
function onResize() {