Релиз FreeRDP 1.0, форка проекта rdesktop
После года разработки увидел свет релиз проекта FreeRDP 1.0, предназначенного для организации подключения к терминальным серверам Windows по протоколу RDP и продолжающего развитие RDP-клиента Rdesktop. От Rdesktop проект FreeRDP отличается решением проблем с переключением раскладок, поддержкой особенностей новых версий Windows (Windows 7, Windows 2008), реализацией технологии кэширования битовых карт, переработкой поддержки проброса устройств (доступ к звуковым картам, принтерам, USB-накопителям) и другими дополнительными возможностями.В процессе подготовки FreeRDP 1.0 основные компоненты проекта были полностью переписаны. Если ветка FreeRDP 0.x лишь продолжала развитие кода rdesktop, то FreeRDP 1.x отныне может рассматриваться как полностью самостоятельный и не пересекающийся с rdesktop проект. Наиболее важным изменением, связанным с переработкой кода, является переход на новую лицензию. Начиная с версии FreeRDP 1.0 код распространяется под лицензией Apache, в то время как прошлые версии были доступны под лицензией GPLv2.
Изначально намеченный план по выпуску ещё одного релиза в ветке FreeRDP 0.x - 0.9, отменён. Вместо поддержки устаревшей ветки разработчики решили приложить все свои усилия к развитию переписанной кодовой базы FreeRDP 1.x. Несмотря на то, что список новшеств в версии FreeRDP 1.0 впечатляет, у разработчиков остаётся множество планов, которые ещё предстоит реализовать в будущих выпусках. Например, среди приоритетных задач на будущее упоминается обеспечение поддержки протокола RDP8 и реализация возможности работы FreeRDP в роли RDP-сервера, а не только клиента.
Основные новшества FreeRDP 1.0:
- Поддержка технологии RemoteFX, позволяющей оптимизировать трансляцию клиенту видео и текста, а также обеспечить задействование средств 3D-акселерации (DirectX) через предоставление доступа к виртуализированному представлению физического GPU для гостевых систем, запущенных под управлением гипервизора Hyper-V. В FreeRDP подготовлена реализация как декодера RemoteFX, так и кодировщика, при создании которых задействованы оптимизации с использованием инструкций SSE2 (Intel) и NEON (ARM);
- Реализация RDP-расширения NSCodec с реализацией кодека, обеспечивающего быстрое и эффективное кодирование изображений;
- Поддержка работы с сервисом RemoteApp, предоставляющим доступ к приложениям, размещенным на стороне сервера, но работающим с полной интеграцией в окружение клиента (доступ не к целому рабочему столу, а к отдельному приложению по RDP, с которым пользователь работает как с обычным локальным приложением);
- Поддержка перенаправления мультимедиа потоков (Multimedia Redirection) с использованием FFmpeg, что позволяет увеличить эффективность передачи зукового и видео контента поверх протокола RDP. При использовании Multimedia Redirection с сервера по сети передаётся изначально сжатый мультимедиа поток, декодирование которого осуществляется на стороне клиента;
- Поддержка аутентификации с использованием NTLMv2, реализация функций проверки валидности сертификатов и обеспечение работы других механизмов безопасности RDP, соответствующих требованиям FIPS;
- Представлена реализация трёх клиентских интерфейсов: xfreerdp - официальный клиент для работы в X11, поддерживающий RemoteApp и реализующий работу GDI поверх X11. dfreerdp - клиент с поддержкой работы поверх DirectFB с программной реализацией GDI (libfreerdp-gdi). wfreerdp - клиент для платформы Windows. В качестве графического интерфейса также предлагается использовать универсальное приложение Remmina, написанное с использованием библиотеки GTK+ и поддерживающее расширение функциональности через подключение плагинов (доступны плагины с поддержкой протоколов RDP, VNC, NX, XDMCP и SSH).
- Представлена экспериментальная реализация RDP-сервера xfreerdp-server, пока поддерживающего только работу через RemoteFX и трансляцию событий от мыши и клавиатуры;
- Добавлены новые виртуальные каналы для проброса различных устройств между клиентом и сервером:
- cliprdr - перенаправление буфера обмена для приложений, вызываемых через RemoteApp;
- drdynvc - реализация динамических виртуальных каналов, в качестве примера представлен канал audin для проброса звука (поддерживается ALSA и PulseAudio)
- tsmf - проброс мультимедиа потоков (поддерживается FFmpeg, ALSA и PulseAudio);
- rdpdr - проброс различных типов устройств, таких как диск, параллельный порт, последовательный порт, принтер (поддерживается CUPS) и устройства для чтения смарт-карт;
- rdpsnd - проброс звука (поддерживается ALSA и PulseAudio).
- Новая система сборки, основанная на использовании cmake;
- Переработанная внутренняя архитектура проекта. Ядром выступает библиотека libfreerdp-core с серверной и клиентской реализацией базового протокола. Операции кэширования вынесены в библиотеку libfreerdp-cache. Распаковка битмапов и операции кодирвоания/декодирования контента реализованы в библиотеке libfreerdp-codec. В libfreerdp-kbd реализованы функции работы с клавиатурными раскладками, в libfreerdp-channels функции управления виртуальными каналами, в libfreerdp-gdi представлена переносимая реализация GDI, в libfreerdp-rail функции поддержки RemoteApp, в libfreerdp-utils - вспомогательные функции.
© OpenNet