Thinstation - великолепная платформа для сборки тонкого клиента. Но вот некоторые вещи приходится допиливать руками…
Ситуация такая: есть несколько серверов windows terminal server, где работают наши юзеры, и нам надо сделать балансировку при подключении юзеров. Для балансировки используем haproxy. Нюанс в том, что мы хотим использовать балансировку по rdp-cookie, в котором в том числе передаётся **username. **Это нам даст попадание попадание пользователя на тот же сервер в ту же сессию, если у его тонкого клиента поменялся IP или пользователь заходит с соседнего тонкого клиента.
Так в чём проблема? Мы не хотим использовать полноценный оконный менеджер, а по-умолчанию, окно подключения в thinstation есть только у freerdp, а вот при загрузке в сессию rdesktop нам через балансировщик бросает сразу на терминальный сервер в сессию, где уже выводится стандартная виндовая форма ввода логина-пароля. А нам нужен именно rdesktop
Хитрость всего лишь в том, что необходимо подменить бинарник freerdp на бинарник rdesktop и добавить в сборку keymaps, чтобы в rdesktop корректно работала клавиатура
-
Собираем rdesktop из исходников (сборка подробно описана здесь) В Pkgfile обязательно надо добавить параметр -datarootdir=/usr/lib для configure, чтобы keymaps искались в /usr/lib/ вместо /usr/share/ по-умолчанию
./configure -prefix=/usr/ -enable-smartcard -datarootdir=/usr/lib/
-
Разархивируем rdesktop#{версия}-{релиз}.pkg.tar.gz
-
Копируем из bin бинарник rdesktop в /build/packages/freerdp/bin/ и меняем его название на xfreerdp, а из share всю папку rdesktop (она как раз содержит keymaps) в /build/packages/freerdp/lib/
-
Правим /build/packages/freerdp/etc/cmd/freerdp.options, чтобы параметры из окна подключения добавлялись верно, с минусами, а не слэшами
SERVER_ARG=""; USER_ARG="-u "; PASSWORD_ARG="-p "