int WLog_FileAppender_Open(wLog* log, wLogFileAppender* appender) { DWORD ProcessId; ProcessId = GetCurrentProcessId(); if (!appender->FilePath) { appender->FilePath = GetKnownSubPath(KNOWN_PATH_TEMP, "wlog"); } if (!PathFileExistsA(appender->FilePath)) { CreateDirectoryA(appender->FilePath, 0); UnixChangeFileMode(appender->FilePath, 0xFFFF); } if (!appender->FileName) { appender->FileName = (char*) malloc(256); sprintf_s(appender->FileName, 256, "%u.log", (unsigned int) ProcessId); } if (!appender->FullFileName) { appender->FullFileName = GetCombinedPath(appender->FilePath, appender->FileName); } appender->FileDescriptor = fopen(appender->FullFileName, "a+"); if (!appender->FileDescriptor) return -1; return 0; }
char* WLog_Message_GetOutputFileName(int id, const char* ext) { DWORD ProcessId; char* FilePath; char* FileName; char* FullFileName; ProcessId = GetCurrentProcessId(); FilePath = GetKnownSubPath(KNOWN_PATH_TEMP, "wlog"); if (!PathFileExistsA(FilePath)) CreateDirectoryA(FilePath, NULL); FileName = (char*) malloc(256); if (id >= 0) sprintf_s(FileName, 256, "%u-%d.%s", (unsigned int) ProcessId, id, ext); else sprintf_s(FileName, 256, "%u.%s", (unsigned int) ProcessId, ext); FullFileName = GetCombinedPath(FilePath, FileName); free(FileName); free(FilePath); return FullFileName; }
int TestFreeRDPCodecProgressive(int argc, char* argv[]) { char* ms_sample_path; char name[8192]; SYSTEMTIME systemTime; WINPR_UNUSED(argc); WINPR_UNUSED(argv); GetSystemTime(&systemTime); sprintf_s(name, sizeof(name), "EGFX_PROGRESSIVE_MS_SAMPLE-%04"PRIu16"%02"PRIu16"%02"PRIu16"%02"PRIu16"%02"PRIu16"%02"PRIu16"%04"PRIu16, systemTime.wYear, systemTime.wMonth, systemTime.wDay, systemTime.wHour, systemTime.wMinute, systemTime.wSecond, systemTime.wMilliseconds); ms_sample_path = GetKnownSubPath(KNOWN_PATH_TEMP, name); if (!ms_sample_path) { printf("Memory allocation failed\n"); return -1; } if (PathFileExistsA(ms_sample_path)) return test_progressive_ms_sample(ms_sample_path); free(ms_sample_path); return 0; }
int TestFreeRDPCodecProgressive(int argc, char* argv[]) { char* ms_sample_path; ms_sample_path = GetKnownSubPath(KNOWN_PATH_TEMP, "EGFX_PROGRESSIVE_MS_SAMPLE"); if (!ms_sample_path) { printf("Memory allocation failed\n"); return -1; } if (PathFileExistsA(ms_sample_path)) return test_progressive_ms_sample(ms_sample_path); free(ms_sample_path); return 0; }
static BOOL WLog_BinaryAppender_Open(wLog* log, wLogAppender* appender) { wLogBinaryAppender* binaryAppender; if (!log || !appender) return FALSE; binaryAppender = (wLogBinaryAppender *)appender; if (!binaryAppender->FileName) { binaryAppender->FileName = (char*) malloc(MAX_PATH); if (!binaryAppender->FileName) return FALSE; sprintf_s(binaryAppender->FileName, MAX_PATH, "%"PRIu32".wlog", GetCurrentProcessId()); } if (!binaryAppender->FilePath) { binaryAppender->FilePath = GetKnownSubPath(KNOWN_PATH_TEMP, "wlog"); if (!binaryAppender->FilePath) return FALSE; } if (!binaryAppender->FullFileName) { binaryAppender->FullFileName = GetCombinedPath(binaryAppender->FilePath, binaryAppender->FileName); if (!binaryAppender->FullFileName) return FALSE; } if (!PathFileExistsA(binaryAppender->FilePath)) { if (!PathMakePathA(binaryAppender->FilePath, 0)) return FALSE; UnixChangeFileMode(binaryAppender->FilePath, 0xFFFF); } binaryAppender->FileDescriptor = fopen(binaryAppender->FullFileName, "a+"); if (!binaryAppender->FileDescriptor) return FALSE; return TRUE; }
BOOL WLog_FileAppender_Open(wLog* log, wLogFileAppender* appender) { if (!log || !appender) return FALSE; if (!appender->FilePath) { appender->FilePath = GetKnownSubPath(KNOWN_PATH_TEMP, "wlog"); if (!appender->FilePath) return FALSE; } if (!appender->FileName) { appender->FileName = (char*) malloc(MAX_PATH); if (!appender->FileName) return FALSE; sprintf_s(appender->FileName, MAX_PATH, "%u.log", (unsigned int) GetCurrentProcessId()); } if (!appender->FullFileName) { appender->FullFileName = GetCombinedPath(appender->FilePath, appender->FileName); if (!appender->FullFileName) return FALSE; } if (!PathFileExistsA(appender->FilePath)) { if (!PathMakePathA(appender->FilePath, 0)) return FALSE; UnixChangeFileMode(appender->FilePath, 0xFFFF); } appender->FileDescriptor = fopen(appender->FullFileName, "a+"); if (!appender->FileDescriptor) return FALSE; return TRUE; }
rdpSettings* freerdp_settings_new(DWORD flags) { char* base; rdpSettings* settings; settings = (rdpSettings*) calloc(1, sizeof(rdpSettings)); if (!settings) return NULL; settings->ServerMode = (flags & FREERDP_SETTINGS_SERVER_MODE) ? TRUE : FALSE; settings->WaitForOutputBufferFlush = TRUE; settings->DesktopWidth = 1024; settings->DesktopHeight = 768; settings->Workarea = FALSE; settings->Fullscreen = FALSE; settings->GrabKeyboard = TRUE; settings->Decorations = TRUE; settings->RdpVersion = 7; settings->ColorDepth = 16; settings->ExtSecurity = FALSE; settings->NlaSecurity = TRUE; settings->TlsSecurity = TRUE; settings->RdpSecurity = TRUE; settings->NegotiateSecurityLayer = TRUE; settings->RestrictedAdminModeRequired = FALSE; settings->MstscCookieMode = FALSE; settings->CookieMaxLength = DEFAULT_COOKIE_MAX_LENGTH; settings->ClientBuild = 2600; settings->KeyboardType = 4; settings->KeyboardSubType = 0; settings->KeyboardFunctionKey = 12; settings->KeyboardLayout = 0; settings->UseRdpSecurityLayer = FALSE; settings->SaltedChecksum = TRUE; settings->ServerPort = 3389; settings->GatewayPort = 443; settings->DesktopResize = TRUE; settings->ToggleFullscreen = TRUE; settings->DesktopPosX = 0; settings->DesktopPosY = 0; settings->PerformanceFlags = PERF_FLAG_NONE; settings->AllowFontSmoothing = FALSE; settings->AllowDesktopComposition = FALSE; settings->DisableWallpaper = TRUE; settings->DisableFullWindowDrag = TRUE; settings->DisableMenuAnims = TRUE; settings->DisableThemes = FALSE; settings->ConnectionType = CONNECTION_TYPE_LAN; settings->EncryptionMethods = ENCRYPTION_METHOD_NONE; settings->EncryptionLevel = ENCRYPTION_LEVEL_NONE; settings->CompressionEnabled = TRUE; if (settings->ServerMode) settings->CompressionLevel = PACKET_COMPR_TYPE_RDP61; else settings->CompressionLevel = PACKET_COMPR_TYPE_RDP61; settings->Authentication = TRUE; settings->AuthenticationOnly = FALSE; settings->CredentialsFromStdin = FALSE; settings->DisableCredentialsDelegation = FALSE; settings->AuthenticationLevel = 2; settings->ChannelCount = 0; settings->ChannelDefArraySize = 32; settings->ChannelDefArray = (CHANNEL_DEF*) calloc(settings->ChannelDefArraySize, sizeof(CHANNEL_DEF)); if (!settings->ChannelDefArray) goto out_fail; settings->MonitorCount = 0; settings->MonitorDefArraySize = 32; settings->MonitorDefArray = (rdpMonitor*) calloc(settings->MonitorDefArraySize, sizeof(rdpMonitor)); if (!settings->MonitorDefArray) goto out_fail; settings->MonitorLocalShiftX = 0; settings->MonitorLocalShiftY = 0; settings->MonitorIds = (UINT32*) calloc(16, sizeof(UINT32)); if(!settings->MonitorIds) goto out_fail; if (!settings_get_computer_name(settings)) goto out_fail; settings->ReceivedCapabilities = calloc(1, 32); if (!settings->ReceivedCapabilities) goto out_fail; settings->OrderSupport = calloc(1, 32); if (!settings->OrderSupport) goto out_fail; settings->OrderSupport[NEG_DSTBLT_INDEX] = TRUE; settings->OrderSupport[NEG_PATBLT_INDEX] = TRUE; settings->OrderSupport[NEG_SCRBLT_INDEX] = TRUE; settings->OrderSupport[NEG_OPAQUE_RECT_INDEX] = TRUE; settings->OrderSupport[NEG_DRAWNINEGRID_INDEX] = TRUE; settings->OrderSupport[NEG_MULTIDSTBLT_INDEX] = TRUE; settings->OrderSupport[NEG_MULTIPATBLT_INDEX] = TRUE; settings->OrderSupport[NEG_MULTISCRBLT_INDEX] = TRUE; settings->OrderSupport[NEG_MULTIOPAQUERECT_INDEX] = TRUE; settings->OrderSupport[NEG_MULTI_DRAWNINEGRID_INDEX] = TRUE; settings->OrderSupport[NEG_LINETO_INDEX] = TRUE; settings->OrderSupport[NEG_POLYLINE_INDEX] = TRUE; settings->OrderSupport[NEG_MEMBLT_INDEX] = TRUE; settings->OrderSupport[NEG_MEM3BLT_INDEX] = TRUE; settings->OrderSupport[NEG_SAVEBITMAP_INDEX] = TRUE; settings->OrderSupport[NEG_GLYPH_INDEX_INDEX] = TRUE; settings->OrderSupport[NEG_FAST_INDEX_INDEX] = TRUE; settings->OrderSupport[NEG_FAST_GLYPH_INDEX] = TRUE; settings->OrderSupport[NEG_POLYGON_SC_INDEX] = TRUE; settings->OrderSupport[NEG_POLYGON_CB_INDEX] = TRUE; settings->OrderSupport[NEG_ELLIPSE_SC_INDEX] = TRUE; settings->OrderSupport[NEG_ELLIPSE_CB_INDEX] = TRUE; settings->ClientProductId = calloc(1, 32); if (!settings->ClientProductId) goto out_fail; settings->ClientHostname = calloc(1, 32); if (!settings->ClientHostname) goto out_fail; gethostname(settings->ClientHostname, 31); settings->ClientHostname[31] = 0; settings->ColorPointerFlag = TRUE; settings->LargePointerFlag = TRUE; settings->PointerCacheSize = 20; settings->SoundBeepsEnabled = TRUE; settings->DrawGdiPlusEnabled = FALSE; settings->DrawAllowSkipAlpha = TRUE; settings->DrawAllowColorSubsampling = FALSE; settings->DrawAllowDynamicColorFidelity = FALSE; settings->FrameMarkerCommandEnabled = TRUE; settings->SurfaceFrameMarkerEnabled = TRUE; settings->BitmapCacheV3Enabled = FALSE; settings->BitmapCacheEnabled = TRUE; settings->BitmapCachePersistEnabled = FALSE; settings->AllowCacheWaitingList = TRUE; settings->BitmapCacheV2NumCells = 5; settings->BitmapCacheV2CellInfo = (BITMAP_CACHE_V2_CELL_INFO*) malloc(sizeof(BITMAP_CACHE_V2_CELL_INFO) * 6); if (!settings->BitmapCacheV2CellInfo) goto out_fail; settings->BitmapCacheV2CellInfo[0].numEntries = 600; settings->BitmapCacheV2CellInfo[0].persistent = FALSE; settings->BitmapCacheV2CellInfo[1].numEntries = 600; settings->BitmapCacheV2CellInfo[1].persistent = FALSE; settings->BitmapCacheV2CellInfo[2].numEntries = 2048; settings->BitmapCacheV2CellInfo[2].persistent = FALSE; settings->BitmapCacheV2CellInfo[3].numEntries = 4096; settings->BitmapCacheV2CellInfo[3].persistent = FALSE; settings->BitmapCacheV2CellInfo[4].numEntries = 2048; settings->BitmapCacheV2CellInfo[4].persistent = FALSE; settings->NoBitmapCompressionHeader = TRUE; settings->RefreshRect = TRUE; settings->SuppressOutput = TRUE; settings->GlyphSupportLevel = GLYPH_SUPPORT_FULL; settings->GlyphCache = malloc(sizeof(GLYPH_CACHE_DEFINITION) * 10); if(!settings->GlyphCache) goto out_fail; settings->FragCache = malloc(sizeof(GLYPH_CACHE_DEFINITION)); if(!settings->FragCache) goto out_fail; settings->GlyphCache[0].cacheEntries = 254; settings->GlyphCache[0].cacheMaximumCellSize = 4; settings->GlyphCache[1].cacheEntries = 254; settings->GlyphCache[1].cacheMaximumCellSize = 4; settings->GlyphCache[2].cacheEntries = 254; settings->GlyphCache[2].cacheMaximumCellSize = 8; settings->GlyphCache[3].cacheEntries = 254; settings->GlyphCache[3].cacheMaximumCellSize = 8; settings->GlyphCache[4].cacheEntries = 254; settings->GlyphCache[4].cacheMaximumCellSize = 16; settings->GlyphCache[5].cacheEntries = 254; settings->GlyphCache[5].cacheMaximumCellSize = 32; settings->GlyphCache[6].cacheEntries = 254; settings->GlyphCache[6].cacheMaximumCellSize = 64; settings->GlyphCache[7].cacheEntries = 254; settings->GlyphCache[7].cacheMaximumCellSize = 128; settings->GlyphCache[8].cacheEntries = 254; settings->GlyphCache[8].cacheMaximumCellSize = 256; settings->GlyphCache[9].cacheEntries = 64; settings->GlyphCache[9].cacheMaximumCellSize = 256; settings->FragCache->cacheEntries = 256; settings->FragCache->cacheMaximumCellSize = 256; settings->OffscreenSupportLevel = TRUE; settings->OffscreenCacheSize = 7680; settings->OffscreenCacheEntries = 2000; settings->DrawNineGridCacheSize = 2560; settings->DrawNineGridCacheEntries = 256; settings->ClientDir = _strdup(client_dll); if (!settings->ClientDir) goto out_fail; settings->RemoteAppNumIconCaches = 3; settings->RemoteAppNumIconCacheEntries = 12; settings->VirtualChannelChunkSize = CHANNEL_CHUNK_LENGTH; settings->MultifragMaxRequestSize = 0xFFFF; settings->GatewayUseSameCredentials = FALSE; settings->GatewayBypassLocal = FALSE; settings->GatewayRpcTransport = TRUE; settings->GatewayHttpTransport = TRUE; settings->GatewayUdpTransport = TRUE; settings->FastPathInput = TRUE; settings->FastPathOutput = TRUE; settings->FrameAcknowledge = 2; settings->MouseMotion = TRUE; settings->NSCodecColorLossLevel = 3; settings->NSCodecAllowSubsampling = TRUE; settings->NSCodecAllowDynamicColorFidelity = TRUE; settings->AutoReconnectionEnabled = FALSE; settings->AutoReconnectMaxRetries = 20; settings->GfxThinClient = TRUE; settings->GfxSmallCache = FALSE; settings->GfxProgressive = FALSE; settings->GfxProgressiveV2 = FALSE; settings->GfxH264 = FALSE; settings->ClientAutoReconnectCookie = (ARC_CS_PRIVATE_PACKET*) calloc(1, sizeof(ARC_CS_PRIVATE_PACKET)); if (!settings->ClientAutoReconnectCookie) goto out_fail; settings->ServerAutoReconnectCookie = (ARC_SC_PRIVATE_PACKET*) calloc(1, sizeof(ARC_SC_PRIVATE_PACKET)); if (!settings->ServerAutoReconnectCookie) goto out_fail; settings->ClientTimeZone = (TIME_ZONE_INFO*) calloc(1,sizeof(TIME_ZONE_INFO)); if (!settings->ClientTimeZone) goto out_fail; settings->DeviceArraySize = 16; settings->DeviceArray = (RDPDR_DEVICE**) calloc(1, sizeof(RDPDR_DEVICE*) * settings->DeviceArraySize); if (!settings->DeviceArray) goto out_fail; settings->StaticChannelArraySize = 16; settings->StaticChannelArray = (ADDIN_ARGV**) calloc(1, sizeof(ADDIN_ARGV*) * settings->StaticChannelArraySize); if (!settings->StaticChannelArray) goto out_fail; settings->DynamicChannelArraySize = 16; settings->DynamicChannelArray = (ADDIN_ARGV**) calloc(1, sizeof(ADDIN_ARGV*) * settings->DynamicChannelArraySize); if(!settings->DynamicChannelArray) goto out_fail; settings->HomePath = GetKnownPath(KNOWN_PATH_HOME); if (!settings->HomePath) goto out_fail; /* For default FreeRDP continue using same config directory * as in old releases. * Custom builds use <Vendor>/<Product> as config folder. */ if (_stricmp(FREERDP_VENDOR_STRING, FREERDP_PRODUCT_STRING)) { base = GetKnownSubPath(KNOWN_PATH_XDG_CONFIG_HOME, FREERDP_VENDOR_STRING); if (base) { settings->ConfigPath = GetCombinedPath( base, FREERDP_PRODUCT_STRING); } free (base); } else { int i; char product[sizeof(FREERDP_PRODUCT_STRING)]; memset(product, 0, sizeof(product)); for (i=0; i<sizeof(product); i++) product[i] = tolower(FREERDP_PRODUCT_STRING[i]); settings->ConfigPath = GetKnownSubPath( KNOWN_PATH_XDG_CONFIG_HOME, product); } if (!settings->ConfigPath) goto out_fail; settings_load_hkey_local_machine(settings); settings->SettingsModified = (BYTE*) calloc(1, sizeof(rdpSettings) / 8 ); if(!settings->SettingsModified) goto out_fail; return settings; out_fail: free(settings->HomePath); free(settings->ConfigPath); free(settings->DynamicChannelArray); free(settings->StaticChannelArray); free(settings->DeviceArray); free(settings->ClientTimeZone); free(settings->ServerAutoReconnectCookie); free(settings->ClientAutoReconnectCookie); free(settings->ClientDir); free(settings->FragCache); free(settings->GlyphCache); free(settings->BitmapCacheV2CellInfo); free(settings->ClientProductId); free(settings->ClientHostname); free(settings->OrderSupport); free(settings->ReceivedCapabilities); free(settings->ComputerName); free(settings->MonitorIds); free(settings->MonitorDefArray); free(settings->ChannelDefArray); free(settings); return NULL; }
rdpSettings* freerdp_settings_new(DWORD flags) { rdpSettings* settings; settings = (rdpSettings*) malloc(sizeof(rdpSettings)); if (settings) { ZeroMemory(settings, sizeof(rdpSettings)); settings->ServerMode = (flags & FREERDP_SETTINGS_SERVER_MODE) ? TRUE : FALSE; settings->DesktopWidth = 1024; settings->DesktopHeight = 768; settings->Workarea = FALSE; settings->Fullscreen = FALSE; settings->GrabKeyboard = TRUE; settings->Decorations = TRUE; settings->RdpVersion = 7; settings->ColorDepth = 16; settings->ExtSecurity = FALSE; settings->NlaSecurity = TRUE; settings->TlsSecurity = TRUE; settings->RdpSecurity = TRUE; settings->NegotiateSecurityLayer = TRUE; settings->RestrictedAdminModeRequired = FALSE; settings->MstscCookieMode = FALSE; settings->CookieMaxLength = DEFAULT_COOKIE_MAX_LENGTH; settings->ClientBuild = 2600; settings->KeyboardType = 4; settings->KeyboardSubType = 0; settings->KeyboardFunctionKey = 12; settings->KeyboardLayout = 0; settings->DisableEncryption = FALSE; settings->SaltedChecksum = TRUE; settings->ServerPort = 3389; settings->DesktopResize = TRUE; settings->ToggleFullscreen = TRUE; settings->DesktopPosX = 0; settings->DesktopPosY = 0; settings->PerformanceFlags = PERF_FLAG_NONE; settings->AllowFontSmoothing = FALSE; settings->AllowDesktopComposition = FALSE; settings->DisableWallpaper = TRUE; settings->DisableFullWindowDrag = TRUE; settings->DisableMenuAnims = TRUE; settings->DisableThemes = FALSE; settings->ConnectionType = CONNECTION_TYPE_LAN; settings->AutoReconnectionEnabled = TRUE; settings->EncryptionMethods = ENCRYPTION_METHOD_NONE; settings->EncryptionLevel = ENCRYPTION_LEVEL_NONE; settings->Authentication = TRUE; settings->AuthenticationOnly = FALSE; settings->CredentialsFromStdin = FALSE; settings->ChannelCount = 0; settings->ChannelDefArraySize = 32; settings->ChannelDefArray = (rdpChannel*) malloc(sizeof(rdpChannel) * settings->ChannelDefArraySize); ZeroMemory(settings->ChannelDefArray, sizeof(rdpChannel) * settings->ChannelDefArraySize); settings->MonitorCount = 0; settings->MonitorDefArraySize = 32; settings->MonitorDefArray = (rdpMonitor*) malloc(sizeof(rdpMonitor) * settings->MonitorDefArraySize); ZeroMemory(settings->MonitorDefArray, sizeof(rdpMonitor) * settings->MonitorDefArraySize); settings_get_computer_name(settings); settings->ReceivedCapabilities = malloc(32); settings->OrderSupport = malloc(32); ZeroMemory(settings->ReceivedCapabilities, 32); ZeroMemory(settings->OrderSupport, 32); settings->OrderSupport[NEG_DSTBLT_INDEX] = TRUE; settings->OrderSupport[NEG_PATBLT_INDEX] = TRUE; settings->OrderSupport[NEG_SCRBLT_INDEX] = TRUE; settings->OrderSupport[NEG_OPAQUE_RECT_INDEX] = TRUE; settings->OrderSupport[NEG_DRAWNINEGRID_INDEX] = TRUE; settings->OrderSupport[NEG_MULTIDSTBLT_INDEX] = TRUE; settings->OrderSupport[NEG_MULTIPATBLT_INDEX] = TRUE; settings->OrderSupport[NEG_MULTISCRBLT_INDEX] = TRUE; settings->OrderSupport[NEG_MULTIOPAQUERECT_INDEX] = TRUE; settings->OrderSupport[NEG_MULTI_DRAWNINEGRID_INDEX] = TRUE; settings->OrderSupport[NEG_LINETO_INDEX] = TRUE; settings->OrderSupport[NEG_POLYLINE_INDEX] = TRUE; settings->OrderSupport[NEG_MEMBLT_INDEX] = TRUE; settings->OrderSupport[NEG_MEM3BLT_INDEX] = TRUE; settings->OrderSupport[NEG_SAVEBITMAP_INDEX] = TRUE; settings->OrderSupport[NEG_GLYPH_INDEX_INDEX] = TRUE; settings->OrderSupport[NEG_FAST_INDEX_INDEX] = TRUE; settings->OrderSupport[NEG_FAST_GLYPH_INDEX] = TRUE; settings->OrderSupport[NEG_POLYGON_SC_INDEX] = TRUE; settings->OrderSupport[NEG_POLYGON_CB_INDEX] = TRUE; settings->OrderSupport[NEG_ELLIPSE_SC_INDEX] = TRUE; settings->OrderSupport[NEG_ELLIPSE_CB_INDEX] = TRUE; settings->ClientHostname = malloc(32); settings->ClientProductId = malloc(32); ZeroMemory(settings->ClientHostname, 32); ZeroMemory(settings->ClientProductId, 32); gethostname(settings->ClientHostname, 31); settings->ClientHostname[31] = 0; settings->ColorPointerFlag = TRUE; settings->LargePointerFlag = TRUE; settings->PointerCacheSize = 20; settings->SoundBeepsEnabled = TRUE; settings->DrawGdiPlusEnabled = FALSE; settings->FrameMarkerCommandEnabled = FALSE; settings->BitmapCacheV3Enabled = FALSE; settings->BitmapCacheEnabled = TRUE; settings->BitmapCachePersistEnabled = FALSE; settings->AllowCacheWaitingList = TRUE; settings->BitmapCacheV2NumCells = 5; settings->BitmapCacheV2CellInfo = (BITMAP_CACHE_V2_CELL_INFO*) malloc(sizeof(BITMAP_CACHE_V2_CELL_INFO) * 6); settings->BitmapCacheV2CellInfo[0].numEntries = 600; settings->BitmapCacheV2CellInfo[0].persistent = FALSE; settings->BitmapCacheV2CellInfo[1].numEntries = 600; settings->BitmapCacheV2CellInfo[1].persistent = FALSE; settings->BitmapCacheV2CellInfo[2].numEntries = 2048; settings->BitmapCacheV2CellInfo[2].persistent = FALSE; settings->BitmapCacheV2CellInfo[3].numEntries = 4096; settings->BitmapCacheV2CellInfo[3].persistent = FALSE; settings->BitmapCacheV2CellInfo[4].numEntries = 2048; settings->BitmapCacheV2CellInfo[4].persistent = FALSE; settings->NoBitmapCompressionHeader = TRUE; settings->RefreshRect = TRUE; settings->SuppressOutput = TRUE; settings->GlyphSupportLevel = GLYPH_SUPPORT_FULL; settings->GlyphCache = malloc(sizeof(GLYPH_CACHE_DEFINITION) * 10); settings->FragCache = malloc(sizeof(GLYPH_CACHE_DEFINITION)); settings->GlyphCache[0].cacheEntries = 254; settings->GlyphCache[0].cacheMaximumCellSize = 4; settings->GlyphCache[1].cacheEntries = 254; settings->GlyphCache[1].cacheMaximumCellSize = 4; settings->GlyphCache[2].cacheEntries = 254; settings->GlyphCache[2].cacheMaximumCellSize = 8; settings->GlyphCache[3].cacheEntries = 254; settings->GlyphCache[3].cacheMaximumCellSize = 8; settings->GlyphCache[4].cacheEntries = 254; settings->GlyphCache[4].cacheMaximumCellSize = 16; settings->GlyphCache[5].cacheEntries = 254; settings->GlyphCache[5].cacheMaximumCellSize = 32; settings->GlyphCache[6].cacheEntries = 254; settings->GlyphCache[6].cacheMaximumCellSize = 64; settings->GlyphCache[7].cacheEntries = 254; settings->GlyphCache[7].cacheMaximumCellSize = 128; settings->GlyphCache[8].cacheEntries = 254; settings->GlyphCache[8].cacheMaximumCellSize = 256; settings->GlyphCache[9].cacheEntries = 64; settings->GlyphCache[9].cacheMaximumCellSize = 256; settings->FragCache->cacheEntries = 256; settings->FragCache->cacheMaximumCellSize = 256; settings->OffscreenSupportLevel = TRUE; settings->OffscreenCacheSize = 7680; settings->OffscreenCacheEntries = 2000; settings->DrawNineGridCacheSize = 2560; settings->DrawNineGridCacheEntries = 256; settings->ClientDir = _strdup(client_dll); settings->RemoteAppNumIconCaches = 3; settings->RemoteAppNumIconCacheEntries = 12; settings->VirtualChannelChunkSize = CHANNEL_CHUNK_LENGTH; settings->MultifragMaxRequestSize = 0xFFFF; settings->GatewayUseSameCredentials = TRUE; settings->FastPathInput = TRUE; settings->FastPathOutput = TRUE; settings->FrameAcknowledge = 2; settings->MouseMotion = TRUE; settings->AutoReconnectionEnabled = TRUE; settings->AutoReconnectMaxRetries = 20; settings->ClientAutoReconnectCookie = (ARC_CS_PRIVATE_PACKET*) malloc(sizeof(ARC_CS_PRIVATE_PACKET)); settings->ServerAutoReconnectCookie = (ARC_SC_PRIVATE_PACKET*) malloc(sizeof(ARC_SC_PRIVATE_PACKET)); ZeroMemory(settings->ClientAutoReconnectCookie, sizeof(ARC_CS_PRIVATE_PACKET)); ZeroMemory(settings->ServerAutoReconnectCookie, sizeof(ARC_SC_PRIVATE_PACKET)); settings->ClientTimeZone = (TIME_ZONE_INFO*) malloc(sizeof(TIME_ZONE_INFO)); ZeroMemory(settings->ClientTimeZone, sizeof(TIME_ZONE_INFO)); settings->DeviceArraySize = 16; settings->DeviceArray = (RDPDR_DEVICE**) malloc(sizeof(RDPDR_DEVICE*) * settings->DeviceArraySize); ZeroMemory(settings->DeviceArray, sizeof(RDPDR_DEVICE*) * settings->DeviceArraySize); settings->StaticChannelArraySize = 16; settings->StaticChannelArray = (ADDIN_ARGV**) malloc(sizeof(ADDIN_ARGV*) * settings->StaticChannelArraySize); ZeroMemory(settings->StaticChannelArray, sizeof(ADDIN_ARGV*) * settings->StaticChannelArraySize); settings->DynamicChannelArraySize = 16; settings->DynamicChannelArray = (ADDIN_ARGV**) malloc(sizeof(ADDIN_ARGV*) * settings->DynamicChannelArraySize); ZeroMemory(settings->DynamicChannelArray, sizeof(ADDIN_ARGV*) * settings->DynamicChannelArraySize); settings->HomePath = GetKnownPath(KNOWN_PATH_HOME); settings->ConfigPath = GetKnownSubPath(KNOWN_PATH_XDG_CONFIG_HOME, "freerdp"); settings_load_hkey_local_machine(settings); settings->SettingsModified = (BYTE*) malloc(sizeof(rdpSettings) / 8 ); ZeroMemory(settings->SettingsModified, sizeof(rdpSettings) / 8); } return settings; }
int main(int argc, char* argv[]) { WSADATA wsaData; freerdp_listener* instance; char* file; char name[MAX_PATH]; long port = 3389, i; BOOL localOnly = FALSE; errno = 0; for (i = 1; i < argc; i++) { char* arg = argv[i]; if (strncmp(arg, "--fast", 7) == 0) test_dump_rfx_realtime = FALSE; else if (strncmp(arg, "--port=", 7) == 0) { StrSep(&arg, "="); if (!arg) return -1; port = strtol(arg, NULL, 10); if ((port < 1) || (port > 0xFFFF) || (errno != 0)) return -1; } else if (strcmp(arg, "--local-only")) localOnly = TRUE; else if (strncmp(arg, "--", 2)) test_pcap_file = arg; } WTSRegisterWtsApiFunctionTable(FreeRDP_InitWtsApi()); winpr_InitializeSSL(WINPR_SSL_INIT_DEFAULT); instance = freerdp_listener_new(); if (!instance) return -1; instance->PeerAccepted = test_peer_accepted; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { freerdp_listener_free(instance); return -1; } /* Open the server socket and start listening. */ sprintf_s(name, sizeof(name), "tfreerdp-server.%ld", port); file = GetKnownSubPath(KNOWN_PATH_TEMP, name); if (!file) { freerdp_listener_free(instance); WSACleanup(); return -1; } if ((localOnly || instance->Open(instance, NULL, port)) && instance->OpenLocal(instance, file)) { /* Entering the server main loop. In a real server the listener can be run in its own thread. */ test_server_mainloop(instance); } free(file); freerdp_listener_free(instance); WSACleanup(); return 0; }