feat(session): add recording and replay (#1049)

This commit is contained in:
ZacharyZcR
2026-07-14 01:11:20 +08:00
committed by GitHub
parent a3e615b59c
commit c6a2ac69dc
19 changed files with 943 additions and 155 deletions
+15
View File
@@ -30,6 +30,15 @@ export interface GuacamoleConnectionSettings {
export interface GuacamoleToken {
connection: GuacamoleConnectionSettings;
recording?: GuacamoleRecordingMetadata;
}
export interface GuacamoleRecordingMetadata {
hostId: number;
userId: string;
protocol: "rdp" | "vnc" | "telnet";
path: string;
startedAt: string;
}
const CIPHER = "aes-256-cbc";
@@ -127,6 +136,7 @@ export class GuacamoleTokenService {
guacdHost?: string;
guacdPort?: number;
} = {},
recording?: GuacamoleRecordingMetadata,
): string {
const { guacdHost, guacdPort, ...settingsOptions } = options;
const token: GuacamoleToken = {
@@ -144,6 +154,7 @@ export class GuacamoleTokenService {
...settingsOptions,
},
},
recording,
};
return this.encryptToken(token);
}
@@ -156,6 +167,7 @@ export class GuacamoleTokenService {
guacdHost?: string;
guacdPort?: number;
} = {},
recording?: GuacamoleRecordingMetadata,
): string {
const { guacdHost, guacdPort, ...settingsOptions } = options;
const token: GuacamoleToken = {
@@ -171,6 +183,7 @@ export class GuacamoleTokenService {
...settingsOptions,
},
},
recording,
};
return this.encryptToken(token);
}
@@ -183,6 +196,7 @@ export class GuacamoleTokenService {
guacdHost?: string;
guacdPort?: number;
} = {},
recording?: GuacamoleRecordingMetadata,
): string {
const { guacdHost, guacdPort, ...settingsOptions } = options;
const token: GuacamoleToken = {
@@ -198,6 +212,7 @@ export class GuacamoleTokenService {
...settingsOptions,
},
},
recording,
};
return this.encryptToken(token);
}