/* BSD-2-Clause license * * Copyright (c) 2018-2023 NST , sss . * */ #include #include #include #include #include "rdp_backend_api.h" #include "rdp_impl.h" /* this variable used in integer settng name field to indicate used setting */ static const char *setting_used = "1"; bool rdp_set_setting_str(backend_setting_str *setting, void *internals) { rdp_internals *i = internals; #ifdef DEBUG { char buf[128]; snprintf(buf, 127, "rdp backend handling setting string: \"%s: %s\"", setting->name, setting->value); i->core->api_utils->log_msg( (const uint8_t *)buf, strlen(buf), wrdp_log_level_trace, 0); } #endif /* DEBUG */ if (!strcmp(setting->name, "host")) { free(i->my_settings.host.value); i->my_settings.host.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "pcb")) { /* free (i->my_settings.pcb.value); i->my_settings.pcb.value = strdup (setting->value); */ return true; } else if (!strcmp(setting->name, "user") && setting->value) { free(i->my_settings.user.value); i->my_settings.user.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "password") && setting->value) { free(i->my_settings.password.value); i->my_settings.password.value = strdup(setting->value); return true; } /* handle int settings passed as strings */ if (!strcmp(setting->name, "port")) { i->my_settings.port.name = (char *)setting_used; if (setting->value) { i->my_settings.port.value = atoll(setting->value); } return true; } else if (!strcmp(setting->name, "width")) { i->my_settings.width.name = (char *)setting_used; if (setting->value) { i->my_settings.width.value = atoll(setting->value); } return true; } else if (!strcmp(setting->name, "height")) { i->my_settings.height.name = (char *)setting_used; if (setting->value) { i->my_settings.height.value = atoll(setting->value); } return true; } else if (!strcmp(setting->name, "perf")) { i->my_settings.perf.name = (char *)setting_used; if (setting->value) { i->my_settings.perf.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "fntlm")) { i->my_settings.fntlm.name = (char *)setting_used; if (setting->value) { i->my_settings.fntlm.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "nowallp")) { i->my_settings.nowallp.name = (char *)setting_used; if (setting->value) { i->my_settings.nowallp.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "nowdrag")) { i->my_settings.nowdrag.name = (char *)setting_used; if (setting->value) { i->my_settings.nowdrag.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "nomani")) { i->my_settings.nomani.name = (char *)setting_used; if (setting->value) { i->my_settings.nomani.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "notheme")) { i->my_settings.notheme.name = (char *)setting_used; if (setting->value) { i->my_settings.notheme.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "nonla")) { i->my_settings.nonla.name = (char *)setting_used; if (setting->value) { i->my_settings.nonla.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "notls")) { i->my_settings.notls.name = (char *)setting_used; if (setting->value) { i->my_settings.notls.value = atoi(setting->value); } return true; } /*new settings from freerdp header (strings) begin */ else if (!strcmp(setting->name, "Domain") && setting->value) { free(i->my_settings.Domain.value); i->my_settings.Domain.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "PasswordHash") && setting->value) { free(i->my_settings.PasswordHash.value); i->my_settings.PasswordHash.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "AcceptedCert") && setting->value) { free(i->my_settings.AcceptedCert.value); i->my_settings.AcceptedCert.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "ClientHostname") && setting->value) { free(i->my_settings.ClientHostname.value); i->my_settings.ClientHostname.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "ClientProductId") && setting->value) { free(i->my_settings.ClientProductId.value); i->my_settings.ClientProductId.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "AlternateShell") && setting->value) { free(i->my_settings.AlternateShell.value); i->my_settings.AlternateShell.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "ShellWorkingDirectory") && setting->value) { free(i->my_settings.ShellWorkingDirectory.value); i->my_settings.ShellWorkingDirectory.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "ClientAddress") && setting->value) { free(i->my_settings.ClientAddress.value); i->my_settings.ClientAddress.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "ClientDir") && setting->value) { free(i->my_settings.ClientDir.value); i->my_settings.ClientDir.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "DynamicDSTTimeZoneKeyName") && setting->value) { free(i->my_settings.DynamicDSTTimeZoneKeyName.value); i->my_settings.DynamicDSTTimeZoneKeyName.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "RemoteAssistanceSessionId") && setting->value) { free(i->my_settings.RemoteAssistanceSessionId.value); i->my_settings.RemoteAssistanceSessionId.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "RemoteAssistancePassStub") && setting->value) { free(i->my_settings.RemoteAssistancePassStub.value); i->my_settings.RemoteAssistancePassStub.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "RemoteAssistancePassword") && setting->value) { free(i->my_settings.RemoteAssistancePassword.value); i->my_settings.RemoteAssistancePassword.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "RemoteAssistanceRCTicket") && setting->value) { free(i->my_settings.RemoteAssistanceRCTicket.value); i->my_settings.RemoteAssistanceRCTicket.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "AuthenticationServiceClass") && setting->value) { free(i->my_settings.AuthenticationServiceClass.value); i->my_settings.AuthenticationServiceClass.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "AllowedTlsCiphers") && setting->value) { free(i->my_settings.AllowedTlsCiphers.value); i->my_settings.AllowedTlsCiphers.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "NtlmSamFile") && setting->value) { free(i->my_settings.NtlmSamFile.value); i->my_settings.NtlmSamFile.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "PreconnectionBlob") && setting->value) { free(i->my_settings.PreconnectionBlob.value); i->my_settings.PreconnectionBlob.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "RedirectionAcceptedCert") && setting->value) { free(i->my_settings.RedirectionAcceptedCert.value); i->my_settings.RedirectionAcceptedCert.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "KerberosKdc") && setting->value) { free(i->my_settings.KerberosKdc.value); i->my_settings.KerberosKdc.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "KerberosRealm") && setting->value) { free(i->my_settings.KerberosRealm.value); i->my_settings.KerberosRealm.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "CertificateName") && setting->value) { free(i->my_settings.CertificateName.value); i->my_settings.CertificateName.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "CertificateFile") && setting->value) { free(i->my_settings.CertificateFile.value); i->my_settings.CertificateFile.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "PrivateKeyFile") && setting->value) { free(i->my_settings.PrivateKeyFile.value); i->my_settings.PrivateKeyFile.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "CertificateContent") && setting->value) { free(i->my_settings.CertificateContent.value); i->my_settings.CertificateContent.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "PrivateKeyContent") && setting->value) { free(i->my_settings.PrivateKeyContent.value); i->my_settings.PrivateKeyContent.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "WindowTitle") && setting->value) { free(i->my_settings.WindowTitle.value); i->my_settings.WindowTitle.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "WmClass") && setting->value) { free(i->my_settings.WmClass.value); i->my_settings.WmClass.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "ComputerName") && setting->value) { free(i->my_settings.ComputerName.value); i->my_settings.ComputerName.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "ConnectionFile") && setting->value) { free(i->my_settings.ConnectionFile.value); i->my_settings.ConnectionFile.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "AssistanceFile") && setting->value) { free(i->my_settings.AssistanceFile.value); i->my_settings.AssistanceFile.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "HomePath") && setting->value) { free(i->my_settings.HomePath.value); i->my_settings.HomePath.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "ConfigPath") && setting->value) { free(i->my_settings.ConfigPath.value); i->my_settings.ConfigPath.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "CurrentPath") && setting->value) { free(i->my_settings.CurrentPath.value); i->my_settings.CurrentPath.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "DumpRemoteFxFile") && setting->value) { free(i->my_settings.DumpRemoteFxFile.value); i->my_settings.DumpRemoteFxFile.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "PlayRemoteFxFile") && setting->value) { free(i->my_settings.PlayRemoteFxFile.value); i->my_settings.PlayRemoteFxFile.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "GatewayHostname") && setting->value) { free(i->my_settings.GatewayHostname.value); i->my_settings.GatewayHostname.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "GatewayUsername") && setting->value) { free(i->my_settings.GatewayUsername.value); i->my_settings.GatewayUsername.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "GatewayPassword") && setting->value) { free(i->my_settings.GatewayPassword.value); i->my_settings.GatewayPassword.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "GatewayDomain") && setting->value) { free(i->my_settings.GatewayDomain.value); i->my_settings.GatewayDomain.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "GatewayAccessToken") && setting->value) { free(i->my_settings.GatewayAccessToken.value); i->my_settings.GatewayAccessToken.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "GatewayAcceptedCert") && setting->value) { free(i->my_settings.GatewayAcceptedCert.value); i->my_settings.GatewayAcceptedCert.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "ProxyHostname") && setting->value) { free(i->my_settings.ProxyHostname.value); i->my_settings.ProxyHostname.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "RemoteApplicationName") && setting->value) { free(i->my_settings.RemoteApplicationName.value); i->my_settings.RemoteApplicationName.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "RemoteApplicationIcon") && setting->value) { free(i->my_settings.RemoteApplicationIcon.value); i->my_settings.RemoteApplicationIcon.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "RemoteApplicationProgram") && setting->value) { free(i->my_settings.RemoteApplicationProgram.value); i->my_settings.RemoteApplicationProgram.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "RemoteApplicationFile") && setting->value) { free(i->my_settings.RemoteApplicationFile.value); i->my_settings.RemoteApplicationFile.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "RemoteApplicationGuid") && setting->value) { free(i->my_settings.RemoteApplicationGuid.value); i->my_settings.RemoteApplicationGuid.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "RemoteApplicationCmdLine") && setting->value) { free(i->my_settings.RemoteApplicationCmdLine.value); i->my_settings.RemoteApplicationCmdLine.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "ImeFileName") && setting->value) { free(i->my_settings.ImeFileName.value); i->my_settings.ImeFileName.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "DrivesToRedirect") && setting->value) { free(i->my_settings.DrivesToRedirect.value); i->my_settings.DrivesToRedirect.value = strdup(setting->value); return true; } else if (!strcmp(setting->name, "ActionScript") && setting->value) { free(i->my_settings.ActionScript.value); i->my_settings.ActionScript.value = strdup(setting->value); return true; } /*new settings from freerdp header (strings) end */ /* TODO: handle also integer settings passed as strings */ /* new settings from freerdp header (integers as string) begin */ else if (!strcmp(setting->name, "ServerMode")) { i->my_settings.ServerMode.name = (char *)setting_used; if (setting->value) { i->my_settings.ServerMode.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "WaitForOutputBufferFlush")) { i->my_settings.WaitForOutputBufferFlush.name = (char *)setting_used; if (setting->value) { i->my_settings.WaitForOutputBufferFlush.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "MaxTimeInCheckLoop")) { i->my_settings.MaxTimeInCheckLoop.name = (char *)setting_used; if (setting->value) { i->my_settings.MaxTimeInCheckLoop.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "DesktopWidth")) { i->my_settings.DesktopWidth.name = (char *)setting_used; if (setting->value) { i->my_settings.DesktopWidth.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "DesktopHeight")) { i->my_settings.DesktopHeight.name = (char *)setting_used; if (setting->value) { i->my_settings.DesktopHeight.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "Workarea")) { i->my_settings.Workarea.name = (char *)setting_used; if (setting->value) { i->my_settings.Workarea.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "Fullscreen")) { i->my_settings.Fullscreen.name = (char *)setting_used; if (setting->value) { i->my_settings.Fullscreen.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "GrabKeyboard")) { i->my_settings.GrabKeyboard.name = (char *)setting_used; if (setting->value) { i->my_settings.GrabKeyboard.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "Decorations")) { i->my_settings.Decorations.name = (char *)setting_used; if (setting->value) { i->my_settings.Decorations.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "RdpVersion")) { i->my_settings.RdpVersion.name = (char *)setting_used; if (setting->value) { i->my_settings.RdpVersion.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "ColorDepth")) { i->my_settings.ColorDepth.name = (char *)setting_used; if (setting->value) { i->my_settings.ColorDepth.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "ExtSecurity")) { i->my_settings.ExtSecurity.name = (char *)setting_used; if (setting->value) { i->my_settings.ExtSecurity.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "NlaSecurity")) { i->my_settings.NlaSecurity.name = (char *)setting_used; if (setting->value) { i->my_settings.NlaSecurity.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "TlsSecurity")) { i->my_settings.TlsSecurity.name = (char *)setting_used; if (setting->value) { i->my_settings.TlsSecurity.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "RdpSecurity")) { i->my_settings.RdpSecurity.name = (char *)setting_used; if (setting->value) { i->my_settings.RdpSecurity.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "NegotiateSecurityLayer")) { i->my_settings.NegotiateSecurityLayer.name = (char *)setting_used; if (setting->value) { i->my_settings.NegotiateSecurityLayer.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "RestrictedAdminModeRequired")) { i->my_settings.RestrictedAdminModeRequired.name = (char *)setting_used; if (setting->value) { i->my_settings.RestrictedAdminModeRequired.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "MstscCookieMode")) { i->my_settings.MstscCookieMode.name = (char *)setting_used; if (setting->value) { i->my_settings.MstscCookieMode.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "CookieMaxLength")) { i->my_settings.CookieMaxLength.name = (char *)setting_used; if (setting->value) { i->my_settings.CookieMaxLength.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "ClientBuild")) { i->my_settings.ClientBuild.name = (char *)setting_used; if (setting->value) { i->my_settings.ClientBuild.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "KeyboardType")) { i->my_settings.KeyboardType.name = (char *)setting_used; if (setting->value) { i->my_settings.KeyboardType.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "KeyboardSubType")) { i->my_settings.KeyboardSubType.name = (char *)setting_used; if (setting->value) { i->my_settings.KeyboardSubType.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "KeyboardFunctionKey")) { i->my_settings.KeyboardFunctionKey.name = (char *)setting_used; if (setting->value) { i->my_settings.KeyboardFunctionKey.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "KeyboardLayout")) { i->my_settings.KeyboardLayout.name = (char *)setting_used; if (setting->value) { i->my_settings.KeyboardLayout.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "UseRdpSecurityLayer")) { i->my_settings.UseRdpSecurityLayer.name = (char *)setting_used; if (setting->value) { i->my_settings.UseRdpSecurityLayer.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "SaltedChecksum")) { i->my_settings.SaltedChecksum.name = (char *)setting_used; if (setting->value) { i->my_settings.SaltedChecksum.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "ServerPort")) { i->my_settings.ServerPort.name = (char *)setting_used; if (setting->value) { i->my_settings.ServerPort.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "GatewayPort")) { i->my_settings.GatewayPort.name = (char *)setting_used; if (setting->value) { i->my_settings.GatewayPort.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "DesktopResize")) { i->my_settings.DesktopResize.name = (char *)setting_used; if (setting->value) { i->my_settings.DesktopResize.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "ToggleFullscreen")) { i->my_settings.ToggleFullscreen.name = (char *)setting_used; if (setting->value) { i->my_settings.ToggleFullscreen.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "Floatbar")) { i->my_settings.Floatbar.name = (char *)setting_used; if (setting->value) { i->my_settings.Floatbar.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "DesktopPosX")) { i->my_settings.DesktopPosX.name = (char *)setting_used; if (setting->value) { i->my_settings.DesktopPosX.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "DesktopPosY")) { i->my_settings.DesktopPosY.name = (char *)setting_used; if (setting->value) { i->my_settings.DesktopPosY.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "SoftwareGdi")) { i->my_settings.SoftwareGdi.name = (char *)setting_used; if (setting->value) { i->my_settings.SoftwareGdi.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "UnmapButtons")) { i->my_settings.UnmapButtons.name = (char *)setting_used; if (setting->value) { i->my_settings.UnmapButtons.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "PerformanceFlags")) { i->my_settings.PerformanceFlags.name = (char *)setting_used; if (setting->value) { i->my_settings.PerformanceFlags.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "AllowFontSmoothing")) { i->my_settings.AllowFontSmoothing.name = (char *)setting_used; if (setting->value) { i->my_settings.AllowFontSmoothing.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "AllowDesktopComposition")) { i->my_settings.AllowDesktopComposition.name = (char *)setting_used; if (setting->value) { i->my_settings.AllowDesktopComposition.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "DisableWallpaper")) { i->my_settings.DisableWallpaper.name = (char *)setting_used; if (setting->value) { i->my_settings.DisableWallpaper.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "DisableFullWindowDrag")) { i->my_settings.DisableFullWindowDrag.name = (char *)setting_used; if (setting->value) { i->my_settings.DisableFullWindowDrag.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "DisableMenuAnims")) { i->my_settings.DisableMenuAnims.name = (char *)setting_used; if (setting->value) { i->my_settings.DisableMenuAnims.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "DisableThemes")) { i->my_settings.DisableThemes.name = (char *)setting_used; if (setting->value) { i->my_settings.DisableThemes.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "ConnectionType")) { i->my_settings.ConnectionType.name = (char *)setting_used; if (setting->value) { i->my_settings.ConnectionType.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "EncryptionMethods")) { i->my_settings.EncryptionMethods.name = (char *)setting_used; if (setting->value) { i->my_settings.EncryptionMethods.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "EncryptionLevel")) { i->my_settings.EncryptionLevel.name = (char *)setting_used; if (setting->value) { i->my_settings.EncryptionLevel.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "FIPSMode")) { i->my_settings.FIPSMode.name = (char *)setting_used; if (setting->value) { i->my_settings.FIPSMode.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "CompressionEnabled")) { i->my_settings.CompressionEnabled.name = (char *)setting_used; if (setting->value) { i->my_settings.CompressionEnabled.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "LogonNotify")) { i->my_settings.LogonNotify.name = (char *)setting_used; if (setting->value) { i->my_settings.LogonNotify.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "BrushSupportLevel")) { i->my_settings.BrushSupportLevel.name = (char *)setting_used; if (setting->value) { i->my_settings.BrushSupportLevel.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "RemoteApplicationMode")) { i->my_settings.RemoteApplicationMode.name = (char *)setting_used; if (setting->value) { i->my_settings.RemoteApplicationMode.value = atoi(setting->value); } return true; } else if (!strcmp(setting->name, "TcpAckTimeout")) { i->my_settings.TcpAckTimeout.name = (char *)setting_used; if (setting->value) { i->my_settings.TcpAckTimeout.value = atoi(setting->value); } return true; } /* new settings from freerdp header (integers as string) end */ /* error: unhandled setting */ { char buf[128]; snprintf(buf, 127, "rdp_module: unknown setting string: %s", setting->name); i->core->api_utils->log_msg((const uint8_t *)buf, strlen(buf), wrdp_log_level_warning, 0); } return false; } bool rdp_set_setting_int(backend_setting_int *setting, void *internals) { rdp_internals *i = internals; #ifdef DEBUG { char buf[128]; snprintf(buf, 127, "rdp backend handling setting int: \"%s: %ld\"", setting->name, setting->value); i->core->api_utils->log_msg( (const uint8_t *)buf, strlen(buf), wrdp_log_level_trace, 0); } #endif if (!strcmp(setting->name, "port")) { i->my_settings.port.name = (char *)setting_used; i->my_settings.port.value = setting->value; return true; } else if (!strcmp(setting->name, "width")) { i->my_settings.width.name = (char *)setting_used; i->my_settings.width.value = setting->value; return true; } else if (!strcmp(setting->name, "height")) { i->my_settings.height.name = (char *)setting_used; i->my_settings.height.value = setting->value; return true; } else if (!strcmp(setting->name, "perf")) { i->my_settings.perf.name = (char *)setting_used; i->my_settings.perf.value = setting->value; return true; } else if (!strcmp(setting->name, "fntlm")) { i->my_settings.fntlm.name = (char *)setting_used; i->my_settings.fntlm.value = setting->value; return true; } else if (!strcmp(setting->name, "nowallp")) { i->my_settings.nowallp.name = (char *)setting_used; i->my_settings.nowallp.value = setting->value; return true; } else if (!strcmp(setting->name, "nowdrag")) { i->my_settings.nowdrag.name = (char *)setting_used; i->my_settings.nowdrag.value = setting->value; return true; } else if (!strcmp(setting->name, "nomani")) { i->my_settings.nomani.name = (char *)setting_used; i->my_settings.nomani.value = setting->value; return true; } else if (!strcmp(setting->name, "notheme")) { i->my_settings.notheme.name = (char *)setting_used; i->my_settings.notheme.value = setting->value; return true; } else if (!strcmp(setting->name, "nonla")) { i->my_settings.nonla.name = (char *)setting_used; i->my_settings.nonla.value = setting->value; return true; } else if (!strcmp(setting->name, "notls")) { i->my_settings.notls.name = (char *)setting_used; i->my_settings.notls.value = setting->value; return true; } /* new settings from freerdp header (integers) begin */ else if (!strcmp(setting->name, "ServerMode")) { i->my_settings.ServerMode.name = (char *)setting_used; i->my_settings.ServerMode.value = setting->value; return true; } else if (!strcmp(setting->name, "WaitForOutputBufferFlush")) { i->my_settings.WaitForOutputBufferFlush.name = (char *)setting_used; i->my_settings.WaitForOutputBufferFlush.value = setting->value; return true; } else if (!strcmp(setting->name, "MaxTimeInCheckLoop")) { i->my_settings.MaxTimeInCheckLoop.name = (char *)setting_used; i->my_settings.MaxTimeInCheckLoop.value = setting->value; return true; } else if (!strcmp(setting->name, "DesktopWidth")) { i->my_settings.DesktopWidth.name = (char *)setting_used; i->my_settings.DesktopWidth.value = setting->value; return true; } else if (!strcmp(setting->name, "DesktopHeight")) { i->my_settings.DesktopHeight.name = (char *)setting_used; i->my_settings.DesktopHeight.value = setting->value; return true; } else if (!strcmp(setting->name, "Workarea")) { i->my_settings.Workarea.name = (char *)setting_used; i->my_settings.Workarea.value = setting->value; return true; } else if (!strcmp(setting->name, "Fullscreen")) { i->my_settings.Fullscreen.name = (char *)setting_used; i->my_settings.Fullscreen.value = setting->value; return true; } else if (!strcmp(setting->name, "GrabKeyboard")) { i->my_settings.GrabKeyboard.name = (char *)setting_used; i->my_settings.GrabKeyboard.value = setting->value; return true; } else if (!strcmp(setting->name, "Decorations")) { i->my_settings.Decorations.name = (char *)setting_used; i->my_settings.Decorations.value = setting->value; return true; } else if (!strcmp(setting->name, "RdpVersion")) { i->my_settings.RdpVersion.name = (char *)setting_used; i->my_settings.RdpVersion.value = setting->value; return true; } else if (!strcmp(setting->name, "ColorDepth")) { i->my_settings.ColorDepth.name = (char *)setting_used; i->my_settings.ColorDepth.value = setting->value; return true; } else if (!strcmp(setting->name, "ExtSecurity")) { i->my_settings.ExtSecurity.name = (char *)setting_used; i->my_settings.ExtSecurity.value = setting->value; return true; } else if (!strcmp(setting->name, "NlaSecurity")) { i->my_settings.NlaSecurity.name = (char *)setting_used; i->my_settings.NlaSecurity.value = setting->value; return true; } else if (!strcmp(setting->name, "TlsSecurity")) { i->my_settings.TlsSecurity.name = (char *)setting_used; i->my_settings.TlsSecurity.value = setting->value; return true; } else if (!strcmp(setting->name, "RdpSecurity")) { i->my_settings.RdpSecurity.name = (char *)setting_used; i->my_settings.RdpSecurity.value = setting->value; return true; } else if (!strcmp(setting->name, "NegotiateSecurityLayer")) { i->my_settings.NegotiateSecurityLayer.name = (char *)setting_used; i->my_settings.NegotiateSecurityLayer.value = setting->value; return true; } else if (!strcmp(setting->name, "RestrictedAdminModeRequired")) { i->my_settings.RestrictedAdminModeRequired.name = (char *)setting_used; i->my_settings.RestrictedAdminModeRequired.value = setting->value; return true; } else if (!strcmp(setting->name, "MstscCookieMode")) { i->my_settings.MstscCookieMode.name = (char *)setting_used; i->my_settings.MstscCookieMode.value = setting->value; return true; } else if (!strcmp(setting->name, "CookieMaxLength")) { i->my_settings.CookieMaxLength.name = (char *)setting_used; i->my_settings.CookieMaxLength.value = setting->value; return true; } else if (!strcmp(setting->name, "ClientBuild")) { i->my_settings.ClientBuild.name = (char *)setting_used; i->my_settings.ClientBuild.value = setting->value; return true; } else if (!strcmp(setting->name, "KeyboardType")) { i->my_settings.KeyboardType.name = (char *)setting_used; i->my_settings.KeyboardType.value = setting->value; return true; } else if (!strcmp(setting->name, "KeyboardSubType")) { i->my_settings.KeyboardSubType.name = (char *)setting_used; i->my_settings.KeyboardSubType.value = setting->value; return true; } else if (!strcmp(setting->name, "KeyboardFunctionKey")) { i->my_settings.KeyboardFunctionKey.name = (char *)setting_used; i->my_settings.KeyboardFunctionKey.value = setting->value; return true; } else if (!strcmp(setting->name, "KeyboardLayout")) { i->my_settings.KeyboardLayout.name = (char *)setting_used; i->my_settings.KeyboardLayout.value = setting->value; return true; } else if (!strcmp(setting->name, "UseRdpSecurityLayer")) { i->my_settings.UseRdpSecurityLayer.name = (char *)setting_used; i->my_settings.UseRdpSecurityLayer.value = setting->value; return true; } else if (!strcmp(setting->name, "SaltedChecksum")) { i->my_settings.SaltedChecksum.name = (char *)setting_used; i->my_settings.SaltedChecksum.value = setting->value; return true; } else if (!strcmp(setting->name, "ServerPort")) { i->my_settings.ServerPort.name = (char *)setting_used; i->my_settings.ServerPort.value = setting->value; return true; } else if (!strcmp(setting->name, "GatewayPort")) { i->my_settings.GatewayPort.name = (char *)setting_used; i->my_settings.GatewayPort.value = setting->value; return true; } else if (!strcmp(setting->name, "DesktopResize")) { i->my_settings.DesktopResize.name = (char *)setting_used; i->my_settings.DesktopResize.value = setting->value; return true; } else if (!strcmp(setting->name, "ToggleFullscreen")) { i->my_settings.ToggleFullscreen.name = (char *)setting_used; i->my_settings.ToggleFullscreen.value = setting->value; return true; } else if (!strcmp(setting->name, "Floatbar")) { i->my_settings.Floatbar.name = (char *)setting_used; i->my_settings.Floatbar.value = setting->value; return true; } else if (!strcmp(setting->name, "DesktopPosX")) { i->my_settings.DesktopPosX.name = (char *)setting_used; i->my_settings.DesktopPosX.value = setting->value; return true; } else if (!strcmp(setting->name, "DesktopPosY")) { i->my_settings.DesktopPosY.name = (char *)setting_used; i->my_settings.DesktopPosY.value = setting->value; return true; } else if (!strcmp(setting->name, "SoftwareGdi")) { i->my_settings.SoftwareGdi.name = (char *)setting_used; i->my_settings.SoftwareGdi.value = setting->value; return true; } else if (!strcmp(setting->name, "UnmapButtons")) { i->my_settings.UnmapButtons.name = (char *)setting_used; i->my_settings.UnmapButtons.value = setting->value; return true; } else if (!strcmp(setting->name, "PerformanceFlags")) { i->my_settings.PerformanceFlags.name = (char *)setting_used; i->my_settings.PerformanceFlags.value = setting->value; return true; } else if (!strcmp(setting->name, "AllowFontSmoothing")) { i->my_settings.AllowFontSmoothing.name = (char *)setting_used; i->my_settings.AllowFontSmoothing.value = setting->value; return true; } else if (!strcmp(setting->name, "AllowDesktopComposition")) { i->my_settings.AllowDesktopComposition.name = (char *)setting_used; i->my_settings.AllowDesktopComposition.value = setting->value; return true; } else if (!strcmp(setting->name, "DisableWallpaper")) { i->my_settings.DisableWallpaper.name = (char *)setting_used; i->my_settings.DisableWallpaper.value = setting->value; return true; } else if (!strcmp(setting->name, "DisableFullWindowDrag")) { i->my_settings.DisableFullWindowDrag.name = (char *)setting_used; i->my_settings.DisableFullWindowDrag.value = setting->value; return true; } else if (!strcmp(setting->name, "DisableMenuAnims")) { i->my_settings.DisableMenuAnims.name = (char *)setting_used; i->my_settings.DisableMenuAnims.value = setting->value; return true; } else if (!strcmp(setting->name, "DisableThemes")) { i->my_settings.DisableThemes.name = (char *)setting_used; i->my_settings.DisableThemes.value = setting->value; return true; } else if (!strcmp(setting->name, "ConnectionType")) { i->my_settings.ConnectionType.name = (char *)setting_used; i->my_settings.ConnectionType.value = setting->value; return true; } else if (!strcmp(setting->name, "EncryptionMethods")) { i->my_settings.EncryptionMethods.name = (char *)setting_used; i->my_settings.EncryptionMethods.value = setting->value; return true; } else if (!strcmp(setting->name, "EncryptionLevel")) { i->my_settings.EncryptionLevel.name = (char *)setting_used; i->my_settings.EncryptionLevel.value = setting->value; return true; } else if (!strcmp(setting->name, "FIPSMode")) { i->my_settings.FIPSMode.name = (char *)setting_used; i->my_settings.FIPSMode.value = setting->value; return true; } else if (!strcmp(setting->name, "CompressionEnabled")) { i->my_settings.CompressionEnabled.name = (char *)setting_used; i->my_settings.CompressionEnabled.value = setting->value; return true; } else if (!strcmp(setting->name, "LogonNotify")) { i->my_settings.LogonNotify.name = (char *)setting_used; i->my_settings.LogonNotify.value = setting->value; return true; } else if (!strcmp(setting->name, "BrushSupportLevel")) { i->my_settings.BrushSupportLevel.name = (char *)setting_used; i->my_settings.BrushSupportLevel.value = setting->value; return true; } else if (!strcmp(setting->name, "RemoteApplicationMode")) { i->my_settings.RemoteApplicationMode.name = (char *)setting_used; i->my_settings.RemoteApplicationMode.value = setting->value; return true; } else if (!strcmp(setting->name, "TcpAckTimeout")) { i->my_settings.TcpAckTimeout.name = (char *)setting_used; i->my_settings.TcpAckTimeout.value = setting->value; return true; } /* new settings from freerdp header (integers) end */ /* error: unhandled setting */ { char buf[128]; snprintf(buf, 127, "rdp_module: unknown setting int: %s", setting->name); i->core->api_utils->log_msg((const uint8_t *)buf, strlen(buf), wrdp_log_level_warning, 0); } return false; } void rdp_settings_free(rdp_internals *internals) { rdp_internals *i = internals; if (i->my_settings.host.value) { free((void *)i->my_settings.host.value); } if (i->my_settings.pcb.value) { free((void *)i->my_settings.pcb.value); } if (i->my_settings.user.value) { free((void *)i->my_settings.user.value); } if (i->my_settings.password.value) { free((void *)i->my_settings.password.value); } /* new */ if (i->my_settings.Domain.value) { free((void *)i->my_settings.Domain.value); } if (i->my_settings.PasswordHash.value) { free((void *)i->my_settings.PasswordHash.value); } if (i->my_settings.AcceptedCert.value) { free((void *)i->my_settings.AcceptedCert.value); } if (i->my_settings.ClientHostname.value) { free((void *)i->my_settings.ClientHostname.value); } if (i->my_settings.ClientProductId.value) { free((void *)i->my_settings.ClientProductId.value); } if (i->my_settings.AlternateShell.value) { free((void *)i->my_settings.AlternateShell.value); } if (i->my_settings.ShellWorkingDirectory.value) { free((void *)i->my_settings.ShellWorkingDirectory.value); } if (i->my_settings.ClientAddress.value) { free((void *)i->my_settings.ClientAddress.value); } if (i->my_settings.ClientDir.value) { free((void *)i->my_settings.ClientDir.value); } if (i->my_settings.DynamicDSTTimeZoneKeyName.value) { free((void *)i->my_settings.DynamicDSTTimeZoneKeyName.value); } if (i->my_settings.RemoteAssistanceSessionId.value) { free((void *)i->my_settings.RemoteAssistanceSessionId.value); } if (i->my_settings.RemoteAssistancePassStub.value) { free((void *)i->my_settings.RemoteAssistancePassStub.value); } if (i->my_settings.RemoteAssistancePassword.value) { free((void *)i->my_settings.RemoteAssistancePassword.value); } if (i->my_settings.RemoteAssistanceRCTicket.value) { free((void *)i->my_settings.RemoteAssistanceRCTicket.value); } if (i->my_settings.AuthenticationServiceClass.value) { free((void *)i->my_settings.AuthenticationServiceClass.value); } if (i->my_settings.AllowedTlsCiphers.value) { free((void *)i->my_settings.AllowedTlsCiphers.value); } if (i->my_settings.NtlmSamFile.value) { free((void *)i->my_settings.NtlmSamFile.value); } if (i->my_settings.PreconnectionBlob.value) { free((void *)i->my_settings.PreconnectionBlob.value); } if (i->my_settings.RedirectionAcceptedCert.value) { free((void *)i->my_settings.RedirectionAcceptedCert.value); } if (i->my_settings.KerberosKdc.value) { free((void *)i->my_settings.KerberosKdc.value); } if (i->my_settings.KerberosRealm.value) { free((void *)i->my_settings.KerberosRealm.value); } if (i->my_settings.CertificateName.value) { free((void *)i->my_settings.CertificateName.value); } if (i->my_settings.CertificateFile.value) { free((void *)i->my_settings.CertificateFile.value); } if (i->my_settings.PrivateKeyFile.value) { free((void *)i->my_settings.PrivateKeyFile.value); } if (i->my_settings.CertificateContent.value) { free((void *)i->my_settings.CertificateContent.value); } if (i->my_settings.PrivateKeyContent.value) { free((void *)i->my_settings.PrivateKeyContent.value); } if (i->my_settings.WindowTitle.value) { free((void *)i->my_settings.WindowTitle.value); } if (i->my_settings.WmClass.value) { free((void *)i->my_settings.WmClass.value); } if (i->my_settings.ComputerName.value) { free((void *)i->my_settings.ComputerName.value); } if (i->my_settings.ConnectionFile.value) { free((void *)i->my_settings.ConnectionFile.value); } if (i->my_settings.AssistanceFile.value) { free((void *)i->my_settings.AssistanceFile.value); } if (i->my_settings.HomePath.value) { free((void *)i->my_settings.HomePath.value); } if (i->my_settings.ConfigPath.value) { free((void *)i->my_settings.ConfigPath.value); } if (i->my_settings.CurrentPath.value) { free((void *)i->my_settings.CurrentPath.value); } if (i->my_settings.DumpRemoteFxFile.value) { free((void *)i->my_settings.DumpRemoteFxFile.value); } if (i->my_settings.PlayRemoteFxFile.value) { free((void *)i->my_settings.PlayRemoteFxFile.value); } if (i->my_settings.GatewayHostname.value) { free((void *)i->my_settings.GatewayHostname.value); } if (i->my_settings.GatewayUsername.value) { free((void *)i->my_settings.GatewayUsername.value); } if (i->my_settings.GatewayPassword.value) { free((void *)i->my_settings.GatewayPassword.value); } if (i->my_settings.GatewayDomain.value) { free((void *)i->my_settings.GatewayDomain.value); } if (i->my_settings.GatewayAccessToken.value) { free((void *)i->my_settings.GatewayAccessToken.value); } if (i->my_settings.GatewayAcceptedCert.value) { free((void *)i->my_settings.GatewayAcceptedCert.value); } if (i->my_settings.ProxyHostname.value) { free((void *)i->my_settings.ProxyHostname.value); } if (i->my_settings.RemoteApplicationName.value) { free((void *)i->my_settings.RemoteApplicationName.value); } if (i->my_settings.RemoteApplicationIcon.value) { free((void *)i->my_settings.RemoteApplicationIcon.value); } if (i->my_settings.RemoteApplicationProgram.value) { free((void *)i->my_settings.RemoteApplicationProgram.value); } if (i->my_settings.RemoteApplicationFile.value) { free((void *)i->my_settings.RemoteApplicationFile.value); } if (i->my_settings.RemoteApplicationGuid.value) { free((void *)i->my_settings.RemoteApplicationGuid.value); } if (i->my_settings.RemoteApplicationCmdLine.value) { free((void *)i->my_settings.RemoteApplicationCmdLine.value); } if (i->my_settings.ImeFileName.value) { free((void *)i->my_settings.ImeFileName.value); } if (i->my_settings.DrivesToRedirect.value) { free((void *)i->my_settings.DrivesToRedirect.value); } if (i->my_settings.ActionScript.value) { free((void *)i->my_settings.ActionScript.value); } } bool rdp_init_settings(void *internals) { rdp_internals *i = internals; rdpSettings *s = i->instance->context->settings; /* via are not server here ) */ s->ServerMode = FALSE; s->TlsSecurity = !(i->my_settings.notls.value); if (i->my_settings.host.value && i->my_settings.host.value[0]) { s->ServerHostname = strdup((char *)i->my_settings.host.value); } else { const char *msg = "rdp_module: server hostname does not set."; i->core->api_utils->log_msg( (const uint8_t *)msg, strlen(msg), wrdp_log_level_error, 0); return FALSE; } if (i->my_settings.port.name && i->my_settings.port.name[0] == '1') { s->ServerPort = i->my_settings.port.value; } if (i->my_settings.user.value && i->my_settings.user.value[0]) { s->Username = strdup((char *)i->my_settings.user.value); } if (i->my_settings.password.value && i->my_settings.password.value[0]) { s->Password = strdup((char *)i->my_settings.password.value); } if (!i->my_settings.user.value && !i->my_settings.password.value) { /* TODO: disable authentication */ } if (i->my_settings.nowallp.name && i->my_settings.nowallp.name[0] == '1') { s->DisableWallpaper = i->my_settings.nowallp.value; s->PerformanceFlags |= PERF_DISABLE_WALLPAPER; } if (i->my_settings.nowdrag.name && i->my_settings.nowdrag.name[0] == '1') { s->DisableFullWindowDrag = i->my_settings.nowdrag.value; s->PerformanceFlags |= PERF_DISABLE_FULLWINDOWDRAG; } if (i->my_settings.nomani.name && i->my_settings.nomani.name[0] == '1') { s->DisableMenuAnims = i->my_settings.nomani.value; s->PerformanceFlags |= PERF_DISABLE_MENUANIMATIONS; } if (i->my_settings.notheme.name && i->my_settings.notheme.name[0] == '1') { s->DisableThemes = i->my_settings.notheme.value; s->PerformanceFlags |= PERF_DISABLE_THEMING; } if (i->my_settings.nonla.name && i->my_settings.nonla.name[0] == '1') { s->NlaSecurity = !(i->my_settings.nonla.value); } if (i->my_settings.width.name && i->my_settings.width.name[0] == '1') { s->DesktopWidth = i->my_settings.width.value; } if (i->my_settings.height.name && i->my_settings.height.name[0] == '1') { s->DesktopHeight = i->my_settings.height.value; } if (i->my_settings.pcb.value && i->my_settings.pcb.value[0]) { s->SendPreconnectionPdu = TRUE; s->PreconnectionBlob = strdup(i->my_settings.pcb.value); } s->IgnoreCertificate = TRUE; if (i->my_settings.perf.name && i->my_settings.perf.name[0] == '1') { 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; } } /* new settings from freerdp header (strings) begin */ if (i->my_settings.Domain.value) { s->Domain = strdup(i->my_settings.Domain.value); } if (i->my_settings.PasswordHash.value) { s->PasswordHash = strdup(i->my_settings.PasswordHash.value); } if (i->my_settings.AcceptedCert.value) { s->AcceptedCert = strdup(i->my_settings.AcceptedCert.value); } if (i->my_settings.ClientHostname.value) { s->ClientHostname = strdup(i->my_settings.ClientHostname.value); } if (i->my_settings.ClientProductId.value) { s->ClientProductId = strdup(i->my_settings.ClientProductId.value); } if (i->my_settings.AlternateShell.value) { s->AlternateShell = strdup(i->my_settings.AlternateShell.value); } if (i->my_settings.ShellWorkingDirectory.value) { s->ShellWorkingDirectory = strdup(i->my_settings.ShellWorkingDirectory.value); } if (i->my_settings.ClientAddress.value) { s->ClientAddress = strdup(i->my_settings.ClientAddress.value); } if (i->my_settings.ClientDir.value) { s->ClientDir = strdup(i->my_settings.ClientDir.value); } if (i->my_settings.DynamicDSTTimeZoneKeyName.value) { s->DynamicDSTTimeZoneKeyName = strdup(i->my_settings.DynamicDSTTimeZoneKeyName.value); } if (i->my_settings.RemoteAssistanceSessionId.value) { s->RemoteAssistanceSessionId = strdup(i->my_settings.RemoteAssistanceSessionId.value); } if (i->my_settings.RemoteAssistancePassStub.value) { s->RemoteAssistancePassStub = strdup(i->my_settings.RemoteAssistancePassStub.value); } if (i->my_settings.RemoteAssistancePassword.value) { s->RemoteAssistancePassword = strdup(i->my_settings.RemoteAssistancePassword.value); } if (i->my_settings.RemoteAssistanceRCTicket.value) { s->RemoteAssistanceRCTicket = strdup(i->my_settings.RemoteAssistanceRCTicket.value); } if (i->my_settings.AuthenticationServiceClass.value) { s->AuthenticationServiceClass = strdup(i->my_settings.AuthenticationServiceClass.value); } if (i->my_settings.AllowedTlsCiphers.value) { s->AllowedTlsCiphers = strdup(i->my_settings.AllowedTlsCiphers.value); } if (i->my_settings.NtlmSamFile.value) { s->NtlmSamFile = strdup(i->my_settings.NtlmSamFile.value); } if (i->my_settings.PreconnectionBlob.value) { s->PreconnectionBlob = strdup(i->my_settings.PreconnectionBlob.value); } if (i->my_settings.RedirectionAcceptedCert.value) { s->RedirectionAcceptedCert = strdup(i->my_settings.RedirectionAcceptedCert.value); } if (i->my_settings.KerberosKdc.value) { s->KerberosKdc = strdup(i->my_settings.KerberosKdc.value); } if (i->my_settings.KerberosRealm.value) { s->KerberosRealm = strdup(i->my_settings.KerberosRealm.value); } if (i->my_settings.CertificateName.value) { s->CertificateName = strdup(i->my_settings.CertificateName.value); } if (i->my_settings.CertificateFile.value) { s->CertificateFile = strdup(i->my_settings.CertificateFile.value); } if (i->my_settings.PrivateKeyFile.value) { s->PrivateKeyFile = strdup(i->my_settings.PrivateKeyFile.value); } if (i->my_settings.CertificateContent.value) { s->CertificateContent = strdup(i->my_settings.CertificateContent.value); } if (i->my_settings.PrivateKeyContent.value) { s->PrivateKeyContent = strdup(i->my_settings.PrivateKeyContent.value); } if (i->my_settings.WindowTitle.value) { s->WindowTitle = strdup(i->my_settings.WindowTitle.value); } if (i->my_settings.WmClass.value) { s->WmClass = strdup(i->my_settings.WmClass.value); } if (i->my_settings.ComputerName.value) { s->ComputerName = strdup(i->my_settings.ComputerName.value); } if (i->my_settings.ConnectionFile.value) { s->ConnectionFile = strdup(i->my_settings.ConnectionFile.value); } if (i->my_settings.AssistanceFile.value) { s->AssistanceFile = strdup(i->my_settings.AssistanceFile.value); } if (i->my_settings.HomePath.value) { s->HomePath = strdup(i->my_settings.HomePath.value); } if (i->my_settings.ConfigPath.value) { s->ConfigPath = strdup(i->my_settings.ConfigPath.value); } if (i->my_settings.CurrentPath.value) { s->CurrentPath = strdup(i->my_settings.CurrentPath.value); } if (i->my_settings.DumpRemoteFxFile.value) { s->DumpRemoteFxFile = strdup(i->my_settings.DumpRemoteFxFile.value); } if (i->my_settings.PlayRemoteFxFile.value) { s->PlayRemoteFxFile = strdup(i->my_settings.PlayRemoteFxFile.value); } if (i->my_settings.GatewayHostname.value) { s->GatewayHostname = strdup(i->my_settings.GatewayHostname.value); } if (i->my_settings.GatewayUsername.value) { s->GatewayUsername = strdup(i->my_settings.GatewayUsername.value); } if (i->my_settings.GatewayPassword.value) { s->GatewayPassword = strdup(i->my_settings.GatewayPassword.value); } if (i->my_settings.GatewayDomain.value) { s->GatewayDomain = strdup(i->my_settings.GatewayDomain.value); } if (i->my_settings.GatewayAccessToken.value) { s->GatewayAccessToken = strdup(i->my_settings.GatewayAccessToken.value); } if (i->my_settings.GatewayAcceptedCert.value) { s->GatewayAcceptedCert = strdup(i->my_settings.GatewayAcceptedCert.value); } if (i->my_settings.ProxyHostname.value) { s->ProxyHostname = strdup(i->my_settings.ProxyHostname.value); } if (i->my_settings.RemoteApplicationName.value) { s->RemoteApplicationName = strdup(i->my_settings.RemoteApplicationName.value); } if (i->my_settings.RemoteApplicationIcon.value) { s->RemoteApplicationIcon = strdup(i->my_settings.RemoteApplicationIcon.value); } if (i->my_settings.RemoteApplicationProgram.value) { s->RemoteApplicationProgram = strdup(i->my_settings.RemoteApplicationProgram.value); } if (i->my_settings.RemoteApplicationFile.value) { s->RemoteApplicationFile = strdup(i->my_settings.RemoteApplicationFile.value); } if (i->my_settings.RemoteApplicationGuid.value) { s->RemoteApplicationGuid = strdup(i->my_settings.RemoteApplicationGuid.value); } if (i->my_settings.RemoteApplicationCmdLine.value) { s->RemoteApplicationCmdLine = strdup(i->my_settings.RemoteApplicationCmdLine.value); } if (i->my_settings.ImeFileName.value) { s->ImeFileName = strdup(i->my_settings.ImeFileName.value); } if (i->my_settings.DrivesToRedirect.value) { s->DrivesToRedirect = strdup(i->my_settings.DrivesToRedirect.value); } if (i->my_settings.ActionScript.value) { s->ActionScript = strdup(i->my_settings.ActionScript.value); } /* new settings from freerdp header (strings) end */ /* new settings from freerdp header (integers) begin */ if (i->my_settings.ServerMode.name && i->my_settings.ServerMode.name[0] == '1') { s->ServerMode = i->my_settings.ServerMode.value; } if (i->my_settings.WaitForOutputBufferFlush.name && i->my_settings.WaitForOutputBufferFlush.name[0] == '1') { s->WaitForOutputBufferFlush = i->my_settings.WaitForOutputBufferFlush.value; } if (i->my_settings.MaxTimeInCheckLoop.name && i->my_settings.MaxTimeInCheckLoop.name[0] == '1') { s->MaxTimeInCheckLoop = i->my_settings.MaxTimeInCheckLoop.value; } if (i->my_settings.DesktopWidth.name && i->my_settings.DesktopWidth.name[0] == '1') { s->DesktopWidth = i->my_settings.DesktopWidth.value; } if (i->my_settings.Workarea.name && i->my_settings.Workarea.name[0] == '1') { s->Workarea = i->my_settings.Workarea.value; } if (i->my_settings.Fullscreen.name && i->my_settings.Fullscreen.name[0] == '1') { s->Fullscreen = i->my_settings.Fullscreen.value; } if (i->my_settings.GrabKeyboard.name && i->my_settings.GrabKeyboard.name[0] == '1') { s->GrabKeyboard = i->my_settings.GrabKeyboard.value; } if (i->my_settings.Decorations.name && i->my_settings.Decorations.name[0] == '1') { s->Decorations = i->my_settings.Decorations.value; } if (i->my_settings.RdpVersion.name && i->my_settings.RdpVersion.name[0] == '1') { s->RdpVersion = i->my_settings.RdpVersion.value; } if (i->my_settings.ColorDepth.name && i->my_settings.ColorDepth.name[0] == '1') { s->ColorDepth = i->my_settings.ColorDepth.value; } if (i->my_settings.ExtSecurity.name && i->my_settings.ExtSecurity.name[0] == '1') { s->ExtSecurity = i->my_settings.ExtSecurity.value; } if (i->my_settings.NlaSecurity.name && i->my_settings.NlaSecurity.name[0] == '1') { s->NlaSecurity = i->my_settings.NlaSecurity.value; } if (i->my_settings.TlsSecurity.name && i->my_settings.TlsSecurity.name[0] == '1') { s->TlsSecurity = i->my_settings.TlsSecurity.value; } if (i->my_settings.RdpSecurity.name && i->my_settings.RdpSecurity.name[0] == '1') { s->RdpSecurity = i->my_settings.RdpSecurity.value; } if (i->my_settings.NegotiateSecurityLayer.name && i->my_settings.NegotiateSecurityLayer.name[0] == '1') { s->NegotiateSecurityLayer = i->my_settings.NegotiateSecurityLayer.value; } if (i->my_settings.RestrictedAdminModeRequired.name && i->my_settings.RestrictedAdminModeRequired.name[0] == '1') { s->RestrictedAdminModeRequired = i->my_settings.RestrictedAdminModeRequired.value; } if (i->my_settings.MstscCookieMode.name && i->my_settings.MstscCookieMode.name[0] == '1') { s->MstscCookieMode = i->my_settings.MstscCookieMode.value; } if (i->my_settings.CookieMaxLength.name && i->my_settings.CookieMaxLength.name[0] == '1') { s->CookieMaxLength = i->my_settings.CookieMaxLength.value; } if (i->my_settings.ClientBuild.name && i->my_settings.ClientBuild.name[0] == '1') { s->ClientBuild = i->my_settings.ClientBuild.value; } if (i->my_settings.KeyboardType.name && i->my_settings.KeyboardType.name[0] == '1') { s->KeyboardType = i->my_settings.KeyboardType.value; } if (i->my_settings.KeyboardSubType.name && i->my_settings.KeyboardSubType.name[0] == '1') { s->KeyboardSubType = i->my_settings.KeyboardSubType.value; } if (i->my_settings.KeyboardFunctionKey.name && i->my_settings.KeyboardFunctionKey.name[0] == '1') { s->KeyboardFunctionKey = i->my_settings.KeyboardFunctionKey.value; } if (i->my_settings.KeyboardLayout.name && i->my_settings.KeyboardLayout.name[0] == '1') { s->KeyboardLayout = i->my_settings.KeyboardLayout.value; } if (i->my_settings.UseRdpSecurityLayer.name && i->my_settings.UseRdpSecurityLayer.name[0] == '1') { s->UseRdpSecurityLayer = i->my_settings.UseRdpSecurityLayer.value; } if (i->my_settings.SaltedChecksum.name && i->my_settings.SaltedChecksum.name[0] == '1') { s->SaltedChecksum = i->my_settings.SaltedChecksum.value; } if (i->my_settings.ServerPort.name && i->my_settings.ServerPort.name[0] == '1') { s->ServerPort = i->my_settings.ServerPort.value; } if (i->my_settings.GatewayPort.name && i->my_settings.GatewayPort.name[0] == '1') { s->GatewayPort = i->my_settings.GatewayPort.value; } if (i->my_settings.DesktopResize.name && i->my_settings.DesktopResize.name[0] == '1') { s->DesktopResize = i->my_settings.DesktopResize.value; } if (i->my_settings.ToggleFullscreen.name && i->my_settings.ToggleFullscreen.name[0] == '1') { s->ToggleFullscreen = i->my_settings.ToggleFullscreen.value; } if (i->my_settings.Floatbar.name && i->my_settings.Floatbar.name[0] == '1') { s->Floatbar = i->my_settings.Floatbar.value; } if (i->my_settings.DesktopPosX.name && i->my_settings.DesktopPosX.name[0] == '1') { s->DesktopPosX = i->my_settings.DesktopPosX.value; } if (i->my_settings.DesktopPosY.name && i->my_settings.DesktopPosY.name[0] == '1') { s->DesktopPosY = i->my_settings.DesktopPosY.value; } if (i->my_settings.SoftwareGdi.name && i->my_settings.SoftwareGdi.name[0] == '1') { s->SoftwareGdi = i->my_settings.SoftwareGdi.value; } if (i->my_settings.UnmapButtons.name && i->my_settings.UnmapButtons.name[0] == '1') { s->UnmapButtons = i->my_settings.UnmapButtons.value; } if (i->my_settings.PerformanceFlags.name && i->my_settings.PerformanceFlags.name[0] == '1') { s->PerformanceFlags = i->my_settings.PerformanceFlags.value; } if (i->my_settings.AllowFontSmoothing.name && i->my_settings.AllowFontSmoothing.name[0] == '1') { s->AllowFontSmoothing = i->my_settings.AllowFontSmoothing.value; } if (i->my_settings.AllowDesktopComposition.name && i->my_settings.AllowDesktopComposition.name[0] == '1') { s->AllowDesktopComposition = i->my_settings.AllowDesktopComposition.value; } if (i->my_settings.DisableWallpaper.name && i->my_settings.DisableWallpaper.name[0] == '1') { s->DisableWallpaper = i->my_settings.DisableWallpaper.value; } if (i->my_settings.DisableFullWindowDrag.name && i->my_settings.DisableFullWindowDrag.name[0] == '1') { s->DisableFullWindowDrag = i->my_settings.DisableFullWindowDrag.value; } if (i->my_settings.DisableMenuAnims.name && i->my_settings.DisableMenuAnims.name[0] == '1') { s->DisableMenuAnims = i->my_settings.DisableMenuAnims.value; } if (i->my_settings.DisableThemes.name && i->my_settings.DisableThemes.name[0] == '1') { s->DisableThemes = i->my_settings.DisableThemes.value; } if (i->my_settings.ConnectionType.name && i->my_settings.ConnectionType.name[0] == '1') { s->ConnectionType = i->my_settings.ConnectionType.value; } if (i->my_settings.EncryptionMethods.name && i->my_settings.EncryptionMethods.name[0] == '1') { s->EncryptionMethods = i->my_settings.EncryptionMethods.value; } if (i->my_settings.EncryptionLevel.name && i->my_settings.EncryptionLevel.name[0] == '1') { s->EncryptionLevel = i->my_settings.EncryptionLevel.value; } if (i->my_settings.FIPSMode.name && i->my_settings.FIPSMode.name[0] == '1') { s->FIPSMode = i->my_settings.FIPSMode.value; } if (i->my_settings.CompressionEnabled.name && i->my_settings.CompressionEnabled.name[0] == '1') { s->CompressionEnabled = i->my_settings.CompressionEnabled.value; } if (i->my_settings.LogonNotify.name && i->my_settings.LogonNotify.name[0] == '1') { s->LogonNotify = i->my_settings.LogonNotify.value; } if (i->my_settings.BrushSupportLevel.name && i->my_settings.BrushSupportLevel.name[0] == '1') { s->BrushSupportLevel = i->my_settings.BrushSupportLevel.value; } if (i->my_settings.RemoteApplicationMode.name && i->my_settings.RemoteApplicationMode.name[0] == '1') { s->RemoteApplicationMode = i->my_settings.RemoteApplicationMode.value; } if (i->my_settings.TcpAckTimeout.name && i->my_settings.TcpAckTimeout.name[0] == '1') { s->TcpAckTimeout = i->my_settings.TcpAckTimeout.value; } /* new settings from freerdp header (integers) end */ /* TODO: handle rest of options: * fntlm */ return true; }