This might be a useful thread for you: https://sourceforge.net/p/freerdp/mailman/freerdp-devel/thread/CAAD4mYgNe2NvYA2ua8wBJrCrbTsWdcEFky0ZmeigBZvLtWmY2A%40mail.gmail.com/#msg36379264
On Wed, Sep 26, 2018 at 4:18 AM R0b0t1 via FreeRDP-devel < freerdp-devel@lists.sourceforge.net> wrote: > On Wed, Sep 26, 2018 at 9:11 AM, Armin Novak via FreeRDP-devel > <freerdp-devel@lists.sourceforge.net> wrote: > > Hi, > > > > > > Better try the opposite approach. > > > > If you check the sample client, there already is a settings struct > > allocated with default values when > > freerdp_client_settings_parse_command_line is called. > > > > Populate this struct instance with your connection data and you're set. > > > > > > regards > > > > Armin > > > > In a similar vein, look at what is populated in the struct by the > various FreeRDP options given to the parse_command_line function. Some > of the security options in particular are not very straightforward. > > Some actual interfaces to programs (GPG?) construct a command line and > run the program with it instead of using their constituent libraries. > > This could definitely use better documentation, but to not be a lot of > work it would have had to have been done when the features were added. > > Cheers, > R0b0t1 > > > > > On 9/26/18 2:11 AM, Alexandr via FreeRDP-devel wrote: > >> Good day. > >> I have problem with writing rdp client. > >> I can't find proper way to pass rdpSetting structure > >> > >> my code: > >> > >> i->instance = freerdp_new(); > >> if(!i->instance) > >> { > >> WLog_ERR(TAG, "Failed to create FreeRDP instance"); > >> goto error; > >> } > >> i->instance->PreConnect = rdp_pre_connect; > >> i->instance->PostConnect = rdp_post_connect; > >> i->instance->VerifyCertificate = rdp_verify_certificate; > >> i->instance->ReceiveChannelData = rdp_receive_channel_data; > >> i->instance->ContextNew = rdp_context_new; > >> i->instance->ContextFree = rdp_context_free; > >> i->instance->ContextSize = sizeof(my_rdp_context); > >> i->settings = freerdp_settings_new(0); > >> if(!i->settings) > >> { > >> WLog_ERR(TAG, "Failed to create FreeRDP settings"); > >> goto error; > >> } > >> if (!freerdp_context_new(i->instance)) > >> { > >> WLog_ERR(TAG, "Failed to create FreeRDP context"); > >> goto error; > >> } > >> ((my_rdp_context*)i->instance->context)->my_internals = > >> internals; > >> i->instance->settings = i->settings; > >> i->settings->instance = i->instance; > >> i->instance->context->settings = i->settings; > >> > >> .... > >> .... > >> > >> > >> rdpSettings *s = i->instance->settings; > >> > >> s->ServerMode = FALSE; > >> > >> > >> s->TlsSecurity = !(i->my_settings.notls.value); > >> s->ServerHostname = strdup((char*)i->my_settings.host.value); > >> s->ServerPort = i->my_settings.port.value; > >> if(i->my_settings.user.value) > >> { > >> s->Username = strdup((char*)i->my_settings.user.value); > >> } > >> if(i->my_settings.pass.value) > >> { > >> s->Password = strdup((char*)i->my_settings.pass.value); > >> } > >> if(!i->my_settings.user.value && !i->my_settings.pass.value) > >> { > >> /* TODO: desable authentication */ > >> } > >> if(i->my_settings.nowallp.value) > >> { > >> s->DisableWallpaper = i->my_settings.nowallp.value; > >> s->PerformanceFlags |= PERF_DISABLE_WALLPAPER; > >> } > >> if(i->my_settings.nowdrag.value) > >> { > >> s->DisableFullWindowDrag = i- > >>> my_settings.nowdrag.value; > >> s->PerformanceFlags |= PERF_DISABLE_FULLWINDOWDRAG; > >> } > >> if(i->my_settings.nomani.value) > >> { > >> s->DisableMenuAnims = i->my_settings.nomani.value; > >> s->PerformanceFlags |= PERF_DISABLE_MENUANIMATIONS; > >> } > >> if(i->my_settings.notheme.value) > >> { > >> s->DisableThemes = i->my_settings.notheme.value; > >> s->PerformanceFlags |= PERF_DISABLE_THEMING; > >> } > >> s->NlaSecurity = !(i->my_settings.nonla.value); > >> s->DesktopWidth = i->my_settings.width.value; > >> s->DesktopHeight = i->my_settings.height.value; > >> if(i->my_settings.pcb.value) > >> { > >> s->SendPreconnectionPdu = TRUE; > >> s->PreconnectionBlob = strdup(i- > >>> my_settings.pcb.value); > >> } > >> > >> s->SoftwareGdi = TRUE; > >> s->IgnoreCertificate = TRUE; > >> s->NegotiateSecurityLayer = TRUE; > >> s->RdpSecurity = TRUE; > >> s->ExtSecurity = FALSE; > >> s->Authentication = TRUE; > >> > >> switch (i->my_settings.perf.value) > >> { > >> case 0: > >> // LAN > >> s->PerformanceFlags = PERF_FLAG_NONE; > >> s->ConnectionType = CONNECTION_TYPE_LAN; > >> s->AllowFontSmoothing = TRUE; > >> break; > >> case 1: > >> // Broadband > >> s->PerformanceFlags = PERF_DISABLE_WALLPAPER; > >> s->ConnectionType = > >> CONNECTION_TYPE_BROADBAND_HIGH; > >> break; > >> case 2: > >> // Modem > >> s->PerformanceFlags = > >> PERF_DISABLE_WALLPAPER | > >> PERF_DISABLE_FULLWINDOWDRAG | > >> PERF_DISABLE_MENUANIMATIONS | > >> PERF_DISABLE_THEMING; > >> s->ConnectionType = CONNECTION_TYPE_MODEM; > >> break; > >> } > >> > >> > >> .... > >> .... > >> > >> > >> freerdp_connect(i->instance); > >> > >> the problem is what freerdp_connect using rdpSettings from instance- > >>> context->rdp which is not copied from instance->settings, also > >> structure definition of rdp_rdp is not exposed for external programs to > >> use via api headers, so my questions is how to pass my settings > >> properly ? > >> > >> i can't find any samples or documentation on how to use it, except few > >> clients which handling commandline (which is not my usecase) > >> > >> thx in advance. > >> > >> > >> > >> _______________________________________________ > >> FreeRDP-devel mailing list > >> FreeRDP-devel@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/freerdp-devel > > > > > > > > _______________________________________________ > > FreeRDP-devel mailing list > > FreeRDP-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/freerdp-devel > > > _______________________________________________ > FreeRDP-devel mailing list > FreeRDP-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/freerdp-devel > -- ☸ _______________________________________________ FreeRDP-devel mailing list FreeRDP-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freerdp-devel