Milestone 5: deliver embedded RDP sessions and lifecycle hardening

This commit is contained in:
Keith Smith
2026-03-03 18:59:26 -07:00
parent 230a401386
commit 36006bd4aa
2941 changed files with 724359 additions and 77 deletions

View File

@@ -0,0 +1,22 @@
#ifndef FREERDP_BUILD_CONFIG_H
#define FREERDP_BUILD_CONFIG_H
#define FREERDP_DATA_PATH "${NATIVE_FREERDP_DATA_PATH}"
#define FREERDP_KEYMAP_PATH "${NATIVE_FREERDP_KEYMAP_PATH}"
#define FREERDP_PLUGIN_PATH "${NATIVE_FREERDP_PLUGIN_PATH}"
#define FREERDP_INSTALL_PREFIX "${NATIVE_FREERDP_INSTALL_PREFIX}"
#define FREERDP_LIBRARY_PATH "${NATIVE_FREERDP_LIBRARY_PATH}"
#define FREERDP_ADDIN_PATH "${NATIVE_FREERDP_ADDIN_PATH}"
#define FREERDP_SHARED_LIBRARY_SUFFIX "${CMAKE_SHARED_LIBRARY_SUFFIX}"
#define FREERDP_SHARED_LIBRARY_PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}"
#define FREERDP_VENDOR_STRING "${VENDOR}" /** @since version 3.3.0 */
#define FREERDP_PRODUCT_STRING "${PRODUCT}" /** @since version 3.3.0 */
#define FREERDP_PROXY_PLUGINDIR "${NATIVE_FREERDP_PROXY_PLUGINDIR}" /** @since version 3.3.0 */
#endif /* FREERDP_BUILD_CONFIG_H */

View File

@@ -0,0 +1,11 @@
#ifndef FREERDP_BUILD_FLAGS_H
#define FREERDP_BUILD_FLAGS_H
#define FREERDP_CFLAGS "${CURRENT_C_FLAGS}"
#define FREERDP_COMPILER_ID "${CMAKE_C_COMPILER_ID}"
#define FREERDP_COMPILER_VERSION "${CMAKE_C_COMPILER_VERSION}"
#define FREERDP_TARGET_ARCH "${TARGET_ARCH}"
#define FREERDP_BUILD_CONFIG "${FREERDP_BUILD_CONFIG}"
#define FREERDP_BUILD_TYPE "${CURRENT_BUILD_CONFIG}"
#endif /* FREERDP_BUILD_FLAGS_H */

View File

@@ -0,0 +1,248 @@
#ifndef FREERDP_CONFIG_H
#define FREERDP_CONFIG_H
#include <winpr/config.h>
/* Include files */
#cmakedefine FREERDP_HAVE_VALGRIND_MEMCHECK_H
/* Features */
#cmakedefine SWRESAMPLE_FOUND
#cmakedefine AVRESAMPLE_FOUND
/* Options */
/** If set the rdpSettings struct is opaque and internals can only be accessed
* through getters/setters
*
* \since version 3.0.0
*/
#cmakedefine WITH_OPAQUE_SETTINGS
#cmakedefine WITH_ADD_PLUGIN_TO_RPATH
#cmakedefine WITH_PROFILER
#cmakedefine WITH_GPROF
#cmakedefine WITH_SIMD
#cmakedefine WITH_AVX2
#cmakedefine WITH_CUPS
#cmakedefine WITH_JPEG
#cmakedefine WITH_WIN8
#cmakedefine WITH_AAD
#cmakedefine WITH_CAIRO
#cmakedefine WITH_SWSCALE
#cmakedefine WITH_RDPSND_DSOUND
#cmakedefine WITH_WINMM
#cmakedefine WITH_MACAUDIO
#cmakedefine WITH_OSS
#cmakedefine WITH_ALSA
#cmakedefine WITH_PULSE
#cmakedefine WITH_IOSAUDIO
#cmakedefine WITH_OPENSLES
#cmakedefine WITH_GSM
#cmakedefine WITH_LAME
/** If defined Opus codec support is available.
*
* \since version 3.0.0
*/
#cmakedefine WITH_OPUS
#cmakedefine WITH_FAAD2
#cmakedefine WITH_FAAC
#cmakedefine WITH_SOXR
#cmakedefine WITH_GFX_H264
#cmakedefine WITH_OPENH264
#cmakedefine WITH_OPENH264_LOADING
#cmakedefine WITH_VIDEO_FFMPEG
#cmakedefine WITH_DSP_EXPERIMENTAL
#cmakedefine WITH_DSP_FFMPEG
#cmakedefine WITH_OPENCL
#cmakedefine WITH_MEDIA_FOUNDATION
#cmakedefine WITH_MEDIACODEC
#cmakedefine WITH_VAAPI
#cmakedefine WITH_CHANNELS
#cmakedefine WITH_CLIENT_CHANNELS
#cmakedefine WITH_SERVER_CHANNELS
#cmakedefine WITH_CHANNEL_GFXREDIR
#cmakedefine WITH_CHANNEL_RDPAPPLIST
/* Plugins */
#cmakedefine WITH_RDPDR
/* Channels */
#cmakedefine CHANNEL_AINPUT
#cmakedefine CHANNEL_AINPUT_CLIENT
#cmakedefine CHANNEL_AINPUT_SERVER
#cmakedefine CHANNEL_AUDIN
#cmakedefine CHANNEL_AUDIN_CLIENT
#cmakedefine CHANNEL_AUDIN_SERVER
#cmakedefine CHANNEL_CLIPRDR
#cmakedefine CHANNEL_CLIPRDR_CLIENT
#cmakedefine CHANNEL_CLIPRDR_SERVER
#cmakedefine CHANNEL_DISP
#cmakedefine CHANNEL_DISP_CLIENT
#cmakedefine CHANNEL_DISP_SERVER
#cmakedefine CHANNEL_DRDYNVC
#cmakedefine CHANNEL_DRDYNVC_CLIENT
#cmakedefine CHANNEL_DRDYNVC_SERVER
#cmakedefine CHANNEL_DRIVE
#cmakedefine CHANNEL_DRIVE_CLIENT
#cmakedefine CHANNEL_DRIVE_SERVER
#cmakedefine CHANNEL_ECHO
#cmakedefine CHANNEL_ECHO_CLIENT
#cmakedefine CHANNEL_ECHO_SERVER
#cmakedefine CHANNEL_ENCOMSP
#cmakedefine CHANNEL_ENCOMSP_CLIENT
#cmakedefine CHANNEL_ENCOMSP_SERVER
#cmakedefine CHANNEL_GEOMETRY
#cmakedefine CHANNEL_GEOMETRY_CLIENT
#cmakedefine CHANNEL_GEOMETRY_SERVER
#cmakedefine CHANNEL_GFXREDIR
#cmakedefine CHANNEL_GFXREDIR_CLIENT
#cmakedefine CHANNEL_GFXREDIR_SERVER
/** If defined location channel support is available.
*
* \since version 3.0.0
*/
#cmakedefine CHANNEL_LOCATION
/** If defined location client side channel support is available.
*
* \since version 3.0.0
*/
#cmakedefine CHANNEL_LOCATION_CLIENT
/** If defined location server side channel support is available.
*
* \since version 3.0.0
*/
#cmakedefine CHANNEL_LOCATION_SERVER
#cmakedefine CHANNEL_PARALLEL
#cmakedefine CHANNEL_PARALLEL_CLIENT
#cmakedefine CHANNEL_PARALLEL_SERVER
#cmakedefine CHANNEL_PRINTER
#cmakedefine CHANNEL_PRINTER_CLIENT
#cmakedefine CHANNEL_PRINTER_SERVER
#cmakedefine CHANNEL_RAIL
#cmakedefine CHANNEL_RAIL_CLIENT
#cmakedefine CHANNEL_RAIL_SERVER
#cmakedefine CHANNEL_RDPAPPLIST
#cmakedefine CHANNEL_RDPAPPLIST_CLIENT
#cmakedefine CHANNEL_RDPAPPLIST_SERVER
#cmakedefine CHANNEL_RDPDR
#cmakedefine CHANNEL_RDPDR_CLIENT
#cmakedefine CHANNEL_RDPDR_SERVER
#cmakedefine CHANNEL_RDPECAM
#cmakedefine CHANNEL_RDPECAM_CLIENT
#cmakedefine CHANNEL_RDPECAM_SERVER
#cmakedefine CHANNEL_RDPEAR
#cmakedefine CHANNEL_RDPEAR_CLIENT
#cmakedefine CHANNEL_RDPEAR_SERVER
#cmakedefine CHANNEL_RDPEI
#cmakedefine CHANNEL_RDPEI_CLIENT
#cmakedefine CHANNEL_RDPEI_SERVER
#cmakedefine CHANNEL_RDPGFX
#cmakedefine CHANNEL_RDPGFX_CLIENT
#cmakedefine CHANNEL_RDPGFX_SERVER
/** If defined mouse cursor channel support is available.
*
* \since version 3.0.0
*/
#cmakedefine CHANNEL_RDPEMSC
/** If defined mouse cursor channel support is available.
*
* \since version 3.0.0
*/
#cmakedefine CHANNEL_RDPEMSC_CLIENT
/** If defined mouse cursor channel support is available.
*
* \since version 3.0.0
*/
#cmakedefine CHANNEL_RDPEMSC_SERVER
#cmakedefine CHANNEL_RDPSND
#cmakedefine CHANNEL_RDPSND_CLIENT
#cmakedefine CHANNEL_RDPSND_SERVER
#cmakedefine CHANNEL_REMDESK
#cmakedefine CHANNEL_REMDESK_CLIENT
#cmakedefine CHANNEL_REMDESK_SERVER
#cmakedefine CHANNEL_SERIAL
#cmakedefine CHANNEL_SERIAL_CLIENT
#cmakedefine CHANNEL_SERIAL_SERVER
#cmakedefine CHANNEL_SMARTCARD
#cmakedefine CHANNEL_SMARTCARD_CLIENT
#cmakedefine CHANNEL_SMARTCARD_SERVER
#cmakedefine CHANNEL_SSHAGENT
#cmakedefine CHANNEL_SSHAGENT_CLIENT
#cmakedefine CHANNEL_SSHAGENT_SERVER
#cmakedefine CHANNEL_TELEMETRY
#cmakedefine CHANNEL_TELEMETRY_CLIENT
#cmakedefine CHANNEL_TELEMETRY_SERVER
#cmakedefine CHANNEL_TSMF
#cmakedefine CHANNEL_TSMF_CLIENT
#cmakedefine CHANNEL_TSMF_SERVER
#cmakedefine CHANNEL_URBDRC
#cmakedefine CHANNEL_URBDRC_CLIENT
#cmakedefine CHANNEL_URBDRC_SERVER
#cmakedefine CHANNEL_VIDEO
#cmakedefine CHANNEL_VIDEO_CLIENT
#cmakedefine CHANNEL_VIDEO_SERVER
/* Debug */
#cmakedefine WITH_DEBUG_CERTIFICATE
#cmakedefine WITH_DEBUG_CAPABILITIES
#cmakedefine WITH_DEBUG_CHANNELS
#cmakedefine WITH_DEBUG_CLIPRDR
#cmakedefine WITH_DEBUG_CODECS
#cmakedefine WITH_DEBUG_RDPGFX
#cmakedefine WITH_DEBUG_DVC
#cmakedefine WITH_DEBUG_TSMF
#cmakedefine WITH_DEBUG_KBD
#cmakedefine WITH_DEBUG_LICENSE
#cmakedefine WITH_DEBUG_NEGO
#cmakedefine WITH_DEBUG_NLA
#cmakedefine WITH_DEBUG_TSG
#cmakedefine WITH_DEBUG_RAIL
#cmakedefine WITH_DEBUG_RDP
#cmakedefine WITH_DEBUG_REDIR
#cmakedefine WITH_DEBUG_RDPDR
#cmakedefine WITH_DEBUG_RFX
#cmakedefine WITH_DEBUG_SCARD
#cmakedefine WITH_DEBUG_SND
#cmakedefine WITH_DEBUG_SVC
#cmakedefine WITH_DEBUG_RDPEI
#cmakedefine WITH_DEBUG_TIMEZONE
#cmakedefine WITH_DEBUG_URBDRC
#cmakedefine WITH_DEBUG_TRANSPORT
#cmakedefine WITH_DEBUG_WND
#cmakedefine WITH_DEBUG_X11
#cmakedefine WITH_DEBUG_X11_LOCAL_MOVESIZE
#cmakedefine WITH_DEBUG_XV
#cmakedefine WITH_DEBUG_RINGBUFFER
/* Proxy */
#cmakedefine WITH_PROXY_MODULES
#cmakedefine WITH_PROXY_EMULATE_SMARTCARD
/** If defined linux/vm_sockets.h support is available.
*
* \since version 3.0.0
*/
#cmakedefine HAVE_AF_VSOCK_H
/** If library is build without these do permanently hide symbols
*
* \since version 3.17.2
*/
#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
#cmakedefine WITHOUT_FREERDP_3x_DEPRECATED
#endif
/** Build FILE_DIRECTORY_INFORMATION::FileName with type WCHAR instead of char
*
* @since version 3.20.0
*/
#cmakedefine WITH_WCHAR_FILE_DIRECTORY_INFORMATION
#endif /* FREERDP_CONFIG_H */

View File

@@ -0,0 +1,123 @@
/**
* FreeRDP: A Remote Desktop Protocol Implementation
* Internal settings header for functions not exported
*
* Copyright 2023 Armin Novak <armin.novak@thincast.com>
* Copyright 2023 Thincast Technologies GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef FREERDP_SETTINGS_KEYS_H
#define FREERDP_SETTINGS_KEYS_H
#include <freerdp/api.h>
#ifdef __cplusplus
extern "C"
{
#endif
/** A list of available settings keys of type BOOL
*
* \since version 3.0.0
*/
typedef enum
{
@SETTINGS_KEYS_BOOL@
} FreeRDP_Settings_Keys_Bool;
/** A list of available settings keys of type INT16
*
* \since version 3.0.0
*/
typedef enum
{
@SETTINGS_KEYS_INT16@
} FreeRDP_Settings_Keys_Int16;
/** A list of available settings keys of type UINT16
*
* \since version 3.0.0
*/
typedef enum
{
@SETTINGS_KEYS_UINT16@
} FreeRDP_Settings_Keys_UInt16;
/** A list of available settings keys of type INT32
*
* \since version 3.0.0
*/
typedef enum
{
@SETTINGS_KEYS_INT32@
} FreeRDP_Settings_Keys_Int32;
/** A list of available settings keys of type UINT32
*
* \since version 3.0.0
*/
typedef enum
{
@SETTINGS_KEYS_UINT32@
} FreeRDP_Settings_Keys_UInt32;
/** A list of available settings keys of type INT64
*
* \since version 3.0.0
*/
typedef enum
{
@SETTINGS_KEYS_INT64@
} FreeRDP_Settings_Keys_Int64;
/** A list of available settings keys of type UINT64
*
* \since version 3.0.0
*/
typedef enum
{
@SETTINGS_KEYS_UINT64@
} FreeRDP_Settings_Keys_UInt64;
/** A list of available settings keys of type STRING
*
* \since version 3.0.0
*/
typedef enum
{
@SETTINGS_KEYS_STRING@
} FreeRDP_Settings_Keys_String;
/** A list of available settings keys of type POINTER
*
* \since version 3.0.0
*/
typedef enum
{
@SETTINGS_KEYS_POINTER@
} FreeRDP_Settings_Keys_Pointer;
/** Highest index in the rdpSettings stable API
*
* \since version 3.0.0
*/
#define FreeRDP_Settings_StableAPI_MAX 5312
#ifdef __cplusplus
}
#endif
#endif /* FREERDP_SETTINGS_KEYS_H */

View File

@@ -0,0 +1,35 @@
/**
* FreeRDP: A Remote Desktop Protocol Implementation
* Version includes
*
* Copyright 2013 Thincast Technologies GmbH
* Copyright 2013 Bernhard Miklautz <bernhard.miklautz@thincast.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef FREERDP_VERSION_H
#define FREERDP_VERSION_H
#define FREERDP_VERSION_MAJOR ${FREERDP_VERSION_MAJOR}
#define FREERDP_VERSION_MINOR ${FREERDP_VERSION_MINOR}
#define FREERDP_VERSION_REVISION ${FREERDP_VERSION_REVISION}
#define FREERDP_VERSION_SUFFIX "${FREERDP_VERSION_SUFFIX}"
#define FREERDP_API_VERSION "${FREERDP_API_VERSION}"
#define FREERDP_VERSION "${FREERDP_VERSION}"
#define FREERDP_VERSION_FULL "${FREERDP_VERSION_FULL}"
#define FREERDP_GIT_REVISION "${GIT_REVISION}"
#define FREERDP_USER_AGENT "FreeRDP/${FREERDP_VERSION_FULL}"
#define FREERDP_VENDOR "${VENDOR}"
#define FREERDP_PRODUCT "${PRODUCT}"
#endif /* FREERDP_VERSION_H */