• Bug#1106607: freerdp3: Please add -DCHANNEL_RDP2TCP=ON -DCHANNEL_RDP2TC

    From Arnaud Rebillout@21:1/5 to All on Tue May 27 06:30:02 2025
    Source: freerdp3
    Version: 3.15.0+dfsg-2.1
    Severity: normal
    User: devel@kali.org
    Usertags: origin-kali

    Dear Maintainer,

    as reported on the Kali Linux bug tracker at https://bugs.kali.org/view.php?id=9197, the rdp2tcp "channel client"
    is missing in freerdp3, while it was built in freerdp2. Logs:

    ```
    $ xfreerdp3 /v:127.0.0.1 /u:'xxxxxx' /d:'xxxx' /cert:ignore /dynamic-resolution /rdp2tcp:"rdp2tcp"
    [09:55:59:528] [9945:000026da] [WARN][com.freerdp.client.x11] - [load_map_from_xkbfile]: : keycode: 0x08 -> no RDP scancode found
    [09:55:59:528] [9945:000026da] [WARN][com.freerdp.client.x11] - [load_map_from_xkbfile]: : keycode: 0x5D -> no RDP scancode found
    [09:55:59:529] [9945:000026da] [ERROR][com.winpr.library] - [LoadLibraryA]: failed with /usr/lib/x86_64-linux-gnu/freerdp3/librdp2tcp-client.so: cannot open shared object file: No such file or directory
    [09:55:59:529] [9945:000026da] [WARN][com.freerdp.addin] - [freerdp_load_channel_addin_entry]: Failed to load channel rdp2tcp [(null)]
    [09:55:59:529] [9945:000026da] [ERROR][com.winpr.library] - [LoadLibraryA]: failed with /usr/lib/x86_64-linux-gnu/freerdp3/librdp2tcp-client.so: cannot open shared object file: No such file or directory
    [09:55:59:529] [9945:000026da] [WARN][com.freerdp.addin] - [freerdp_load_channel_addin_entry]: Failed to load channel rdp2tcp [(null)]
    [09:55:59:531] [9945:000026da] [ERROR][com.freerdp.client.common] - [freerdp_client_load_channels]: Failed to load addins [00000000]
    [09:55:59:531] [9945:000026da] [ERROR][com.freerdp.core] - [freerdp_connect_begin]: ERRCONNECT_PRE_CONNECT_FAILED [0x00020001]
    [09:55:59:531] [9945:000026da] [ERROR][com.freerdp.core] - [freerdp_connect_begin]: freerdp_pre_connect failed: CLIENT_STATE_PRECONNECT_PASSED
    ```

    I was curious to see if other things were missing, so I compared the
    logs between two builds:
    * freerdp2_2.11.7+dfsg1-6_amd64.log
    * freerdp3_3.15.0+dfsg-2.1_amd64.log

    And compared the stuff that's built-in:

    ```
    $ grep -E 'Adding (STATIC|DYNAMIC) ' freerdp2_2.11.7+dfsg1-6_amd64.log | LC_ALL=C sort -u
    -- Adding DYNAMIC channel client "disp": Display Update Virtual Channel Extension
    -- Adding DYNAMIC channel client "geometry": Geometry tracking Virtual Channel Extension
    -- Adding DYNAMIC channel client "rdpei": Input Virtual Channel Extension
    -- Adding DYNAMIC channel client "rdpgfx": Graphics Pipeline Extension
    -- Adding DYNAMIC channel client "urbdrc": USB Devices Virtual Channel Extension
    -- Adding DYNAMIC channel client "video": Video optimized remoting Virtual Channel Extension
    -- Adding DYNAMIC channel client server "ainput": Advanced Input Virtual Channel Extension
    -- Adding DYNAMIC channel client server "audin": Audio Input Redirection Virtual Channel Extension
    -- Adding DYNAMIC channel client server "echo": Echo Virtual Channel Extension -- Adding DYNAMIC channel server "rdpecam": Video Capture Virtual Channel Extension
    -- Adding DYNAMIC channel server "telemetry": Telemetry Virtual Channel Extension
    -- Adding STATIC channel client "rail": Remote Programs Virtual Channel Extension
    -- Adding STATIC channel client "rdp2tcp": Tunneling TCP over RDP
    -- Adding STATIC channel client server "cliprdr": Clipboard Virtual Channel Extension
    -- Adding STATIC channel client server "drdynvc": Dynamic Virtual Channel Extension
    -- Adding STATIC channel client server "encomsp": Multiparty Virtual Channel Extension
    -- Adding STATIC channel client server "rdpdr": Device Redirection Virtual Channel Extension
    -- Adding STATIC channel client server "rdpsnd": Audio Output Virtual Channel Extension
    -- Adding STATIC channel client server "remdesk": Remote Assistance Virtual Channel Extension

    $ grep -E 'Adding (STATIC|DYNAMIC) ' freerdp3_3.15.0+dfsg-2.1_amd64.log | LC_ALL=C sort -u
    -- Adding DYNAMIC channel client "geometry": Geometry tracking Virtual Channel Extension
    -- Adding DYNAMIC channel client "rdpear": Authentication redirection Virtual Channel Extension
    -- Adding DYNAMIC channel client "urbdrc": USB Devices Virtual Channel Extension
    -- Adding DYNAMIC channel client "video": Video optimized remoting Virtual Channel Extension
    -- Adding DYNAMIC channel client server "ainput": Advanced Input Virtual Channel Extension
    -- Adding DYNAMIC channel client server "audin": Audio Input Redirection Virtual Channel Extension
    -- Adding DYNAMIC channel client server "disp": Display Update Virtual Channel Extension
    -- Adding DYNAMIC channel client server "echo": Echo Virtual Channel Extension -- Adding DYNAMIC channel client server "location": Location Virtual Channel Extension
    -- Adding DYNAMIC channel client server "rdpecam": Video Capture Virtual Channel Extension
    -- Adding DYNAMIC channel client server "rdpei": Input Virtual Channel Extension
    -- Adding DYNAMIC channel client server "rdpgfx": Graphics Pipeline Extension -- Adding DYNAMIC channel server "rdpemsc": Mouse Cursor Virtual Channel Extension
    -- Adding DYNAMIC channel server "telemetry": Telemetry Virtual Channel Extension
    -- Adding STATIC channel client server "cliprdr": Clipboard Virtual Channel Extension
    -- Adding STATIC channel client server "drdynvc": Dynamic Virtual Channel Extension
    -- Adding STATIC channel client server "encomsp": Multiparty Virtual Channel Extension
    -- Adding STATIC channel client server "rail": Remote Programs Virtual Channel Extension
    -- Adding STATIC channel client server "rdpdr": Device Redirection Virtual Channel Extension
    -- Adding STATIC channel client server "rdpsnd": Audio Output Virtual Channel Extension
    -- Adding STATIC channel client server "remdesk": Remote Assistance Virtual Channel Extension
    ```

    The two outputs are a bit hard to compare, because some things used to
    be "client" and are now "client server". But still, after doing a diff side-by-side, it seems that the only thing missing in freerdp3 is
    rdp2tcp. I don't know why it's not automatically selected, but it can be
    fixed with:

    ```
    -DCHANNEL_RDP2TCP=ON -DCHANNEL_RDP2TCP_CLIENT=ON
    ```

    Please consider adding this change to prevent a regression for xfreerdp
    users. Thanks in advance,

    Arnaud

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)