Initial commit
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
// Connection configuration types
|
||||
|
||||
export interface ConnectionConfig {
|
||||
id: string
|
||||
name: string
|
||||
// Primary endpoint
|
||||
primary: EndpointConfig
|
||||
// Fallback endpoints for cluster failover
|
||||
fallbacks: EndpointConfig[]
|
||||
// Certificate trust
|
||||
certFingerprint?: string
|
||||
trusted: boolean
|
||||
// Connection state
|
||||
status: ConnectionStatus
|
||||
// Cluster info (populated after connection)
|
||||
clusterName?: string
|
||||
isCluster: boolean
|
||||
}
|
||||
|
||||
export interface EndpointConfig {
|
||||
url: string // e.g., "https://192.168.1.10:8006"
|
||||
node?: string // Node name (for display)
|
||||
token?: string // API token (stored in keyring, not in config)
|
||||
}
|
||||
|
||||
export type ConnectionStatus =
|
||||
| 'disconnected'
|
||||
| 'connecting'
|
||||
| 'connected'
|
||||
| 'failed'
|
||||
| 'failover'
|
||||
|
||||
export interface CertificateInfo {
|
||||
fingerprint: string
|
||||
issuer: string
|
||||
subject: string
|
||||
validFrom: string
|
||||
validTo: string
|
||||
selfSigned: boolean
|
||||
}
|
||||
|
||||
export interface ConnectionCredentials {
|
||||
connectionId: string
|
||||
apiToken: string
|
||||
}
|
||||
Vendored
+48
@@ -0,0 +1,48 @@
|
||||
// Custom type declarations for @novnc/novnc v1.7.0
|
||||
// The @types/novnc package is outdated and doesn't match the modern API
|
||||
|
||||
declare module '@novnc/novnc/core/rfb.js' {
|
||||
export default class RFB extends EventTarget {
|
||||
constructor(target: HTMLElement, url: string, options?: RFBOptions);
|
||||
disconnect(): void;
|
||||
sendCtrlAltDel(): void;
|
||||
clipboardPasteFrom(text: string): void;
|
||||
addEventListener<K extends keyof RFBEventMap>(
|
||||
type: K,
|
||||
listener: (ev: RFBEventMap[K]) => void,
|
||||
options?: boolean | AddEventListenerOptions,
|
||||
): void;
|
||||
addEventListener(
|
||||
type: string,
|
||||
listener: EventListenerOrEventListenerObject,
|
||||
options?: boolean | AddEventListenerOptions,
|
||||
): void;
|
||||
removeEventListener<K extends keyof RFBEventMap>(
|
||||
type: K,
|
||||
listener: (ev: RFBEventMap[K]) => void,
|
||||
options?: boolean | EventListenerOptions,
|
||||
): void;
|
||||
removeEventListener(
|
||||
type: string,
|
||||
listener: EventListenerOrEventListenerObject,
|
||||
options?: boolean | EventListenerOptions,
|
||||
): void;
|
||||
}
|
||||
|
||||
export interface RFBOptions {
|
||||
credentials?: { password?: string; target?: string; securityType?: string };
|
||||
shared?: boolean;
|
||||
repeaterID?: string;
|
||||
wsProtocols?: string[];
|
||||
}
|
||||
|
||||
export interface RFBEventMap {
|
||||
connect: Event;
|
||||
disconnect: CustomEvent<{ clean: boolean; reason: string }>;
|
||||
credentialsrequired: CustomEvent<{ types: string[] }>;
|
||||
clipboard: CustomEvent<{ text: string }>;
|
||||
bell: Event;
|
||||
focus: Event;
|
||||
blur: Event;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,229 @@
|
||||
// Proxmox API types
|
||||
|
||||
export interface ProxmoxNode {
|
||||
node: string
|
||||
status: 'online' | 'offline'
|
||||
cpu: number
|
||||
maxcpu: number
|
||||
mem: number
|
||||
maxmem: number
|
||||
disk: number
|
||||
maxdisk: number
|
||||
uptime: number
|
||||
level: string
|
||||
id: string
|
||||
type: 'node'
|
||||
}
|
||||
|
||||
export interface ProxmoxVM {
|
||||
vmid: number
|
||||
name: string
|
||||
status: 'running' | 'stopped' | 'paused' | 'suspended'
|
||||
type: 'qemu' | 'lxc'
|
||||
node: string
|
||||
cpu: number
|
||||
cpus: number
|
||||
mem: number
|
||||
maxmem: number
|
||||
disk: number
|
||||
maxdisk: number
|
||||
uptime: number
|
||||
netin: number
|
||||
netout: number
|
||||
diskread: number
|
||||
diskwrite: number
|
||||
pid?: number
|
||||
template?: number
|
||||
lock?: string
|
||||
tags?: string
|
||||
}
|
||||
|
||||
export interface ProxmoxStorage {
|
||||
storage: string
|
||||
type: string
|
||||
content: string
|
||||
active: number
|
||||
enabled: number
|
||||
shared: number
|
||||
used: number
|
||||
total: number
|
||||
avail: number
|
||||
node: string
|
||||
}
|
||||
|
||||
export interface ProxmoxStorageContent {
|
||||
content: string
|
||||
ctime: number
|
||||
format?: string
|
||||
size?: number
|
||||
subtype?: string
|
||||
volid: string
|
||||
}
|
||||
|
||||
export interface ProxmoxStorageDetail {
|
||||
storage: string
|
||||
type: string
|
||||
content: string
|
||||
active: number
|
||||
enabled: number
|
||||
shared: number
|
||||
used: number
|
||||
total: number
|
||||
avail: number
|
||||
node: string
|
||||
}
|
||||
|
||||
export interface ProxmoxTask {
|
||||
upid: string
|
||||
node: string
|
||||
pid: number
|
||||
pstart: number
|
||||
starttime: number
|
||||
endtime?: number
|
||||
type: string
|
||||
id: string
|
||||
user: string
|
||||
status?: string
|
||||
exitstatus?: string
|
||||
}
|
||||
|
||||
export interface ProxmoxClusterStatus {
|
||||
type: 'node' | 'cluster'
|
||||
name: string
|
||||
id: string
|
||||
nodeid?: number
|
||||
version?: number
|
||||
local?: number
|
||||
online?: number
|
||||
nodes?: ClusterNode[]
|
||||
}
|
||||
|
||||
export interface ClusterNode {
|
||||
name: string
|
||||
nodeid: number
|
||||
online: number
|
||||
local?: number
|
||||
ip?: string
|
||||
}
|
||||
|
||||
export interface ProxmoxSnapshot {
|
||||
name: string
|
||||
description: string
|
||||
snaptime: number
|
||||
vmstate: number
|
||||
parent?: string
|
||||
}
|
||||
|
||||
export interface ProxmoxBackup {
|
||||
volid: string
|
||||
backupid: string
|
||||
'backup-type': string
|
||||
'backup-id': string
|
||||
'backup-time': number
|
||||
storage: string
|
||||
size: number
|
||||
ctime: number
|
||||
}
|
||||
|
||||
export interface ProxmoxBackupJob {
|
||||
id: string
|
||||
store: string
|
||||
schedule: string
|
||||
all: number
|
||||
enabled: number
|
||||
node?: string
|
||||
vmid?: string
|
||||
compress?: string
|
||||
mode?: string
|
||||
quiet?: number
|
||||
}
|
||||
|
||||
export interface BackupJobConfig {
|
||||
id?: string
|
||||
storage: string
|
||||
schedule: string
|
||||
mode: 'snapshot' | 'stop' | 'suspend'
|
||||
compression: 'zstd' | 'lz4' | 'gzip' | 'none'
|
||||
all: boolean
|
||||
vmid?: string
|
||||
enabled: boolean
|
||||
node?: string
|
||||
}
|
||||
|
||||
export interface RestoreConfig {
|
||||
volid: string
|
||||
node: string
|
||||
storage: string
|
||||
vmid?: number
|
||||
}
|
||||
|
||||
export interface ProxmoxDisk {
|
||||
device: string
|
||||
size: number
|
||||
storage: string
|
||||
format: string
|
||||
usage?: string
|
||||
}
|
||||
|
||||
export interface AddDiskConfig {
|
||||
storage: string
|
||||
size: number
|
||||
busType: 'scsi' | 'virtio' | 'ide' | 'sata'
|
||||
}
|
||||
|
||||
export interface ResizeDiskConfig {
|
||||
disk: string
|
||||
size: number
|
||||
}
|
||||
|
||||
export interface MoveDiskConfig {
|
||||
disk: string
|
||||
storage: string
|
||||
}
|
||||
|
||||
export interface ProxmoxNetwork {
|
||||
name: string
|
||||
model: string
|
||||
macaddr: string
|
||||
bridge?: string
|
||||
tag?: number
|
||||
firewall?: number
|
||||
link_down?: number
|
||||
}
|
||||
|
||||
export interface AddNICConfig {
|
||||
bridge: string
|
||||
model: string
|
||||
macaddr?: string
|
||||
tag?: number
|
||||
firewall?: boolean
|
||||
}
|
||||
|
||||
export interface EditNICConfig {
|
||||
bridge?: string
|
||||
model?: string
|
||||
tag?: number
|
||||
firewall?: boolean
|
||||
}
|
||||
|
||||
export interface CreateSnapshotConfig {
|
||||
name: string
|
||||
description?: string
|
||||
vmstate?: boolean
|
||||
}
|
||||
|
||||
// Console proxy types
|
||||
export interface VNCProxyResponse {
|
||||
ticket: string
|
||||
port: number
|
||||
cert: string
|
||||
}
|
||||
|
||||
export interface TermProxyResponse {
|
||||
ticket: string
|
||||
port: number
|
||||
}
|
||||
|
||||
export interface WebSocketInfo {
|
||||
url: string
|
||||
}
|
||||
Reference in New Issue
Block a user