Skip to content

Conchshell 2.6.0 (macOS + Linux)

Choose a tag to compare

@github-actions github-actions released this 28 Jul 18:54

RDP работает по-настоящему

RDP был заглушкой: connect всегда возвращал «не реализовано». Теперь это рабочий клиент на IronRDP — подключение через NLA, поток кадров, клавиатура, мышь, буфер обмена и перенос файлов. Проверено на живом Windows-хосте, а не на моках.

  • Подключение: TCP → X.224 → TLS 1.3 → CredSSP/NTLM → MCS → лицензирование → capability exchange, около 3 секунд.
  • Клавиатура: физические клавиши вместо keyCode, поэтому левый и правый Ctrl больше не путаются, а numpad не сливается со стрелками.
  • Не-ASCII печатается символами, а не позициями клавиш. Скан-код называет позицию, и удалённый хост толкует её своей раскладкой: клавиша «ж» на английской раскладке сервера приезжает как ;. Синхронизировать раскладки — заведомо проигрышная игра, поэтому кириллица уходит Unicode-событиями, и раскладка на той стороне перестаёт иметь значение. Переключать язык в Windows не нужно.
  • Cmd работает как Ctrl. Cmd+C/V/X/A внутри сессии делают то, что вы от них ждёте. Cmd+Q, Cmd+W, Cmd+M и Cmd+H остаются локальными — из полноэкранной сессии всегда есть выход, плюс Cmd+Shift+Esc возвращает клавиатуру принудительно.
  • Буфер обмена в обе стороны и перенос файлов Mac → Windows: копируете в Finder, вставляете в проводнике.

Проверка подлинности серверов

Раньше приложение не проверяло, с кем разговаривает: любой ключ SSH и любой сертификат RDP принимались молча. Соединение шифровалось, но подмена сервера была незаметна.

Теперь при первом подключении показывается отпечаток — в том же формате, что печатает ssh-keygen -lf, так что его можно сверить глазами. При изменении ключа появляется отдельное, более строгое предупреждение.

Чтобы это не превратилось в стену диалогов, ваш ~/.ssh/known_hosts импортируется автоматически. Не импортируются хешированные записи (имя в них необратимо), записи центров сертификации и хосты с противоречивыми ключами — ложная тревога обесценила бы саму тревогу.

Пароль и подпись ключом больше не отправляются непроверенному серверу: решение принимается до аутентификации.

Кириллица в локальном терминале

Приложение, запущенное из Finder, не получает от системы ни одной переменной локали, и оболочка работала в локали C — там кириллица не символы, а байты. Отсюда кракозябры при вставке. Теперь оболочке передаётся ваша локаль.

Прочее

  • SFTP-подключение по ключу не могло работать в принципе: в разбор ключа передавался путь к файлу вместо его содержимого.
  • В лог не попадали никакие предупреждения — фильтр по умолчанию пропускал только ошибки. Из-за этого объяснения отказов вроде «это папка, сожмите её сначала» писались в никуда.
  • Добавлен CI: тесты, проверка типов, паритет локалей.

Тесты: Rust 453, фронтенд 874.