- Protocol::Rdp with RdpConfig (domain, password mode, certificate policy, TLS-only fallback, fixed or tab-sized resolution, SOCKS5/HTTP proxy, SSH tunnel); migration 008 adds rdp_config and drops the protocol CHECK constraint so new protocols no longer need a rebuild. - Session manager: connect_rdp dials directly, via the shared proxy module (proxy password from the secret store) or an SSH tunnel; the server certificate goes through the known-hosts check (key type rdp-tls); a tab-sized desktop uses the tab's reported pixel size, and resizes wait until the server opens Display Control. Rejected NLA passwords count as auth failures, so a saved one is asked again. - The VNC viewer becomes DesktopView for both protocols; a small adapter turns its keysyms and pointer masks into RDP scancodes, Unicode keys, buttons and wheel events. For RDP, Paste Clipboard types the text. - Profile editor RDP section, Quick Connect, badges, docs. Verified against xrdp in the app: logon, desktop, input, and connections through SOCKS5 and HTTP CONNECT relays. Not verified here: Windows/NLA servers, the SSH tunnel route, and Display Control resizing (xrdp 0.9.24 never opened the channel).
57 lines
2.1 KiB
SQL
57 lines
2.1 KiB
SQL
-- Migration 008: RDP protocol support
|
|
-- Adds an rdp_config column and drops the protocol CHECK constraint: protocol ids are validated
|
|
-- in code (Protocol::from_id), and each new protocol needed a table rebuild only to extend it.
|
|
|
|
CREATE TABLE IF NOT EXISTS profiles_new (
|
|
id TEXT PRIMARY KEY,
|
|
display_name TEXT NOT NULL,
|
|
description TEXT DEFAULT '',
|
|
protocol TEXT NOT NULL,
|
|
host TEXT NOT NULL,
|
|
port INTEGER NOT NULL,
|
|
username TEXT DEFAULT '',
|
|
tags TEXT DEFAULT '[]',
|
|
folder TEXT DEFAULT '',
|
|
environment TEXT DEFAULT '',
|
|
notes TEXT DEFAULT '',
|
|
favourite INTEGER DEFAULT 0,
|
|
last_connected TEXT,
|
|
connect_timeout INTEGER DEFAULT 30,
|
|
read_timeout INTEGER DEFAULT 0,
|
|
terminal_font_family TEXT DEFAULT '',
|
|
terminal_font_size INTEGER DEFAULT 14,
|
|
terminal_scrollback INTEGER DEFAULT 10000,
|
|
terminal_cursor_style TEXT DEFAULT 'block',
|
|
ssh_config TEXT,
|
|
telnet_config TEXT,
|
|
raw_config TEXT,
|
|
github_config TEXT,
|
|
vnc_config TEXT,
|
|
irc_config TEXT,
|
|
serial_config TEXT,
|
|
rdp_config TEXT,
|
|
created_at TEXT NOT NULL,
|
|
updated_at TEXT NOT NULL
|
|
);
|
|
|
|
INSERT OR IGNORE INTO profiles_new (
|
|
id, display_name, description, protocol, host, port, username, tags, folder, environment,
|
|
notes, favourite, last_connected, connect_timeout, read_timeout, terminal_font_family,
|
|
terminal_font_size, terminal_scrollback, terminal_cursor_style, ssh_config, telnet_config,
|
|
raw_config, github_config, vnc_config, irc_config, serial_config, rdp_config, created_at,
|
|
updated_at
|
|
)
|
|
SELECT
|
|
id, display_name, description, protocol, host, port, username, tags, folder, environment,
|
|
notes, favourite, last_connected, connect_timeout, read_timeout, terminal_font_family,
|
|
terminal_font_size, terminal_scrollback, terminal_cursor_style, ssh_config, telnet_config,
|
|
raw_config, github_config, vnc_config, irc_config, serial_config, NULL, created_at,
|
|
updated_at
|
|
FROM profiles;
|
|
|
|
DROP TABLE profiles;
|
|
|
|
ALTER TABLE profiles_new RENAME TO profiles;
|
|
|
|
INSERT INTO schema_version (version, applied_at) VALUES (8, datetime('now'));
|