Thinstation 5. Делаем окно подключения для rdesktop

Thinstation — великолепная платформа для сборки тонкого клиента. Но вот некоторые вещи приходится допиливать руками…

Ситуация такая: есть несколько серверов windows terminal server, где работают наши юзеры, и нам надо сделать балансировку при подключении юзеров. Для балансировки используем haproxy. Нюанс в том, что мы хотим использовать балансировку по rdp-cookie, в котором в том числе передаётся username. Это нам даст попадание попадание пользователя на тот же сервер в ту же сессию, если у его тонкого клиента поменялся IP или пользователь заходит с соседнего тонкого клиента.
Так в чём проблема? Мы не хотим использовать полноценный оконный менеджер, а по-умолчанию, окно подключения в thinstation есть только у freerdp, а вот при загрузке в сессию rdesktop нам через балансировщик бросает сразу на терминальный сервер в сессию, где уже выводится стандартная виндовая форма ввода логина-пароля. А нам нужен именно rdesktop

Хитрость всего лишь в том, что необходимо подменить бинарник freerdp на бинарник rdesktop и добавить в сборку keymaps, чтобы в rdesktop корректно работала клавиатура

  1. Собираем rdesktop из исходников (сборка подробно описана здесь)

    В Pkgfile обязательно надо добавить параметр —datarootdir=/usr/lib для configure, чтобы keymaps искались в /usr/lib/ вместо /usr/share/ по-умолчанию
    ./configure     —prefix=/usr
    —enable-smartcard
    —datarootdir=/usr/lib

  2. Разархивируем rdesktop#{версия}-{релиз}.pkg.tar.gz
  3. Копируем из bin бинарник rdesktop в /build/packages/freerdp/bin/ и меняем его название на xfreerdp, а из share всю папку rdesktop (она как раз содержит keymaps) в /build/packages/freerdp/lib/
  4. Правим /build/packages/freerdp/etc/cmd/freerdp.options, чтобы параметры из окна подключения добавлялись верно, с минусами, а не слэшами
    freerdp.options
    SERVER_ARG=""; USER_ARG="-u "; PASSWORD_ARG="-p "