Files
ome-cockpit/ui/rdp.js
T
root 91222faffe Add Network Design Studio with multi-U Dell rack designer.
Includes rack catalog/API, Visio-style drag-and-drop, faceplate assets, readable nameplates, and theme/RDP UI updates so multi-U placement stays correct during design.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 01:18:14 +02:00

54 lines
1.7 KiB
JavaScript

(() => {
function looksLikeIdrac(node) {
const blob = `${node?.name || ""} ${node?.sub_type || ""} ${node?.ip || ""}`;
return !!node?.is_idrac || /idrac|bmc/i.test(blob);
}
function openRdpPopout(node = {}) {
const rdpIps = Array.isArray(node.rdp_ips) ? node.rdp_ips.filter(Boolean) : [];
const host = (node.host || node.rdp_host || rdpIps[0] || node.ip || "").trim();
if (!host && !node.allowEmpty) {
alert("No RDP / OS IP resolved yet — enter the Windows OS address in the RDP popout.");
}
const q = new URLSearchParams({
host: host || "",
name: node.name || host || "RDP session",
model: node.model || "",
st: node.service_tag || "",
id: node.id != null ? String(node.id) : "",
os_hostname: node.os_hostname || "",
idrac_ip: node.idrac_ip || (looksLikeIdrac(node) ? node.ip || "" : ""),
});
if (rdpIps.length) q.set("rdp_ips", rdpIps.join(","));
if (looksLikeIdrac(node) || node.is_windows) q.set("windows", "1");
const w = 780;
const h = 760;
const left = Math.max(0, Math.round((window.screen.width - w) / 2));
const top = Math.max(0, Math.round((window.screen.height - h) / 2));
const features = [
"popup=yes",
`width=${w}`,
`height=${h}`,
`left=${left}`,
`top=${top}`,
"resizable=yes",
"scrollbars=yes",
].join(",");
const win = window.open(`/rdp-popout.html?${q.toString()}`, `ome-rdp-${node.id || host || "x"}`, features);
if (!win) {
alert("Popout blocked — allow popups for this site, or open RDP from Quick Connect again.");
return null;
}
try {
win.focus();
} catch (_) {}
return win;
}
window.cockpitRdp = {
open: openRdpPopout,
looksLikeIdrac,
};
})();