RabbitRemoteControl icon indicating copy to clipboard operation
RabbitRemoteControl copied to clipboard

Issues with FreeRDP integration

Open akallabeth opened this issue 1 year ago • 1 comments

The FreeRDP plugin forces antiquated drawing paths:

  1. OnChannelConnectedEventHandler does not handle GFX channel setup
  2. With FreeRDP 3 we´ve added some common channel setup code, call freerdp_client_OnChannelConnectedEventHandler if not handled in your own function (same for Disconnect handler)
  3. cb_authenticate_ex does not handle reason which is getting more important with each version ;)
  4. m_szRedirectionSoundParameters why do you force a specific backend? just let it be autodetected?
  5. you lack all setup of authentication related options, check the client/common/cmdline.c for details. (this is most likely the source of https://github.com/FreeRDP/FreeRDP/issues/9937 ) overall, either you check which settings are modified with which command line with freerdp_client_settings_parse_command_line_arguments_ex or you use it directly from your application
  6. smartcard authentication and related stuff is not handled in UI
  7. your RabbitRemoteControl.sh is unnecessary, check RPATH settings ( https://cmake.org/cmake/help/latest/prop_tgt/INSTALL_RPATH.html )
  8. your library and exe installations do not properly set filenames / SOVERSION (got /tmp/release/bin/RabbitRemoteControlApp-v0.0.26-52-g8ae67434 as well as /tmp/release/bin/RabbitRemoteControlApp, /tmp/release/lib/libRabbitCommon.so.v2.0.3-1-g891d8b7 and /tmp/release/lib/libRabbitCommon.so but there should be /tmp/release/lib/libRabbitCommon.so -> /tmp/release/lib/libRabbitCommon.so.2 -> /tmp/release/lib/libRabbitCommon.so.2.0 -> /tmp/release/lib/libRabbitCommon.so.2.0.3 where /tmp/release/lib/libRabbitCommon.so is only insalled with development stuff
  9. your certificate related stuff, better use VerifyX509Certificate callback for your things and store the manually accepted certificates in your own certificate store instead of reusing the one of FreeRDP (you can use the qt certificate classes to check if a certificate is self signed or actually signed by an accepted authority and then only manually accept unsigned ones)
  10. better call freerdp_connect from the same thread all RDP related stuff is running in and not in cbClientStart
  11. you can call WaitForMultipleObjects with a timeout of 0 to not block in your processing routine
  12. rdpSettings are going to be opaque in future versions, you can build a version with that already with -DWITH_OPAQUE_SETTINGS=ON with FreeRDP 3.x versions

akallabeth avatar Mar 06 '24 12:03 akallabeth

m_szRedirectionSoundParameters why do you force a specific backend? just let it be autodetected?

Yes. I guess this is handled by the backend freerdp_client. The front-end only deals with UI dependencies. Reinvention of development can be avoided.

KangLin avatar Apr 10 '24 07:04 KangLin

@akallabeth Thank you review. Fix in v0.0.27.

KangLin avatar Aug 15 '24 03:08 KangLin