For the complete documentation index, see llms.txt. This page is also available as Markdown.

Управление параметрами клиента FreeRDP

В статье описаны варианты использования wrapper-скрипта для перехвата и добавления параметров клиента xfreerdp.

Информация ниже основана на логике работы клиента: Если по пути /usr/bin/udsrdp находится исполняемый файл, то этот путь считается более приоритетным по сравнению со стандартным /usr/bin/xfreerdp. Таким образом, при запросе сервиса параметры от брокера будут переданы именно udsrdp.

Передача дополнительных параметров для получения пароля учетной записи пользователя

В случае, когда клиенту необходимо подключиться к опубликованному приложению RemoteApp, но в параметрах запуска xfreerdp от брокера не поступает пароль для подключения пользователя - есть возможность получения пароля от пользователя в всплывающем диалоговом окне.

Для реализации необходимо наличие установленной утилиты zenity в окружении клиента.

Для этого необходимо разместить файл по пути /usr/bin/udsrdp со следующим содержимым:

#!/bin/bash
catchedArgs=""
for arg in "$@"
do
    catchedArgs="$catchedArgs $arg"
done

/usr/bin/xfreerdp ${catchedArgs} /p:$(zenity --entry --title="Password input" --text="Введите пароль:" --hide-text)

Исключение параметров для работы с xfreerdp3

По умолчанию брокер передает параметры в формате, адаптированном для xfreerdp версии 2. В 3й версии клиента xfreerdp был изменен формат передачи некоторых параметров, что может приводить к ошибкам при запуске сервиса. Рассмотрим перехват параметров старого формата, передача которых вызывает ошибки запуска. Для этого необходимо разместить файл по пути /usr/bin/udsrdp со следующим содержимым:

#!/bin/bash
catchedArgs=""
for arg in "$@"
do
    catchedArgs="$catchedArgs $arg"
done

if [[ $catchedArgs == *"/app:"* ]]; then
    catchedArgs="${catchedArgs///app://app:program:}"
fi

if [[ $catchedArgs == *"/cert-ignore"* ]]; then
    catchedArgs="${catchedArgs///cert-ignore//cert:ignore}"
fi

exclude_catchedArgs=${catchedArgs//\/sec:rdp}
exclude_catchedArgs=${exclude_catchedArgs//\/bpp:24}

/usr/bin/xfreerdp ${exclude_catchedArgs}

Передача и исключение параметров для использования единого транспорта для версий xfreerdp2 и xfreerdp3

В случае, если версии клиента xfreerdp у пользователей могут отличаться, можно избежать необходимости создания дополнительных транспортов подключения, модифицируя передаваемые параметры на основании версии клиента. Для этого необходимо разместить файл по пути /usr/bin/udsrdp со следующим содержимым:

Last updated