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

Reply via email to