akallabeth
98fb56b767
[channels,cliprdr] implement client clipboard direction filter
...
* Filter remote -> local or local -> remote clipboard depending on
setting.
* Filter remote -> local or local -> remote file clipboard
depending on setting.
2023-05-25 16:26:39 +02:00
akallabeth
fc78064ec3
[warnings] fix -Wunused-variable
2023-05-24 08:24:32 +02:00
akallabeth
066276a85a
[warnings] fix -Wsometimes-uninitialized
2023-05-24 08:24:32 +02:00
akallabeth
27d0da9df0
[cmake] remove duplicate setting for position independent code
2023-05-23 08:51:18 +02:00
Armin Novak
b15edda614
[cmake] changed rdpsnd-common to STATIC library
2023-05-22 12:57:16 +02:00
akallabeth
105f0d2366
[channel,audin] move common code to server channel
...
* manage channel related callbacks with default implementations
* use dynamic logger for server audin channel
2023-05-17 13:33:35 +02:00
Pascal Nowack
c5278c874f
channels/audin: Rework API to be closer to documentation
...
The current server side channel handling of AUDIO_INPUT is currently
very constrained:
- Server implementations cannot measure the clients uplink, since the
Incoming Data PDU is currently unhandled and FreeRDPs DSP handling
delays the callback call of ReceiveSamples
- Servers currently cannot prefer a different protocol version
- Servers currently cannot change the used format
To solve these issues without running into the risk that some
simplifications constraint certain API usage, rework the current channel
handling to be very close to the documentation.
This means, that all documented API calls can be made by server
implementations and all documented PDUs, that the server side is
expected to receive are just parsed inside FreeRDP and then forwarded to
the API implementation.
2023-05-17 13:33:35 +02:00
akallabeth
7073aef79f
[channel,cliprdr] add missing include in header
2023-05-12 13:57:56 +02:00
akallabeth
239cd9212e
[channels] fix static linking of common libraries
2023-05-12 08:03:56 +02:00
akallabeth
2b3c8c47a4
[build] fix install with BUILD_SHARED_LIBS=OFF
...
generate proper CMake targets so static linking works again.
2023-05-12 08:03:56 +02:00
Joerg Pulz
61983cd6dc
Replace deprecated ffmpeg functions:
...
avpicture_get_size -> av_image_get_buffer_size
avpicture_fill -> av_image_fill_arrays
av_picture_copy -> av_image_copy
Add missing includes.
This fixes build with ffmpeg-6.x.x
2023-05-02 15:12:07 +02:00
akallabeth
c950ca375c
[client,common] fix value present flag check
...
need to check for COMMAND_LINE_VALUE_PRESENT instad of COMMAND_LINE_ARGUMENT_PRESENT
2023-04-28 07:39:35 +02:00
akallabeth
516668d02b
[fclose] ensure no invalid pointers are passed.
...
fclose has undefined behaviour for NULL pointers, so check for these.
2023-04-28 07:39:35 +02:00
David Fort
0b16fcef18
rail: add missing server-side calls
...
This patch adds support for text_scale and caret_blink messages on the server-side.
2023-04-25 07:27:37 +02:00
Richard Markiewicz
13e52cfae2
[channels,settings] add a setting to ignore invalid devices
2023-04-24 11:29:05 +02:00
Armin Novak
9005e1edfb
[channels,printer] fix printer_save_default_config
2023-04-24 10:58:01 +02:00
Andrey Af
58cdc9e82b
rdpdr_server_drive_close_file_callback remaining length fixed
2023-04-24 09:33:26 +02:00
Pascal Nowack
4be3950fd8
rdpecam/server: Remove wrong assertion
...
Some PDUs, like the Activate Device Request only contain the header.
As a result, the size of the rest of the PDU is 0.
The assertion for the PDU size in device_server_packet_new only
considers the size of the body of the PDU.
When that value is 0, the assertion is hit and the server implementation
crashes.
To fix this issue, simply remove this assertion. Since the allocation
size is always at least the header size, there won't ever be an attempt
to create a stream with a size of 0.
2023-04-19 22:20:04 +02:00
Martin Fleisz
ecb4712a10
channels: Check return value of EnumPrinters
2023-03-23 17:40:08 +01:00
akallabeth
e28760f91e
[cmake] fix OBJECT library link deps
...
Follow up to #8801 , OBJECT libraries need to link dependencies with
PUBLIC so that the library using the OBJECT libraries can link against
these too
2023-03-16 10:58:01 +01:00
Marc-André Moreau
3cc12d5886
use cmake object libraries for built-in virtual channel plugins
2023-03-15 16:20:50 +01:00
Armin Novak
b54d2c1db3
[channels] removed duplicate includes
2023-03-15 08:22:23 +01:00
akallabeth
a5b42f0f84
[includes] untangled circular includes
2023-03-15 08:22:23 +01:00
akallabeth
a360f1ca8c
[build] fix a few compiler warnings
2023-03-13 13:04:45 +01:00
Armin Novak
1bf0bb1a26
[server] fixed build without CHANNEL_AUDIN_SERVER
2023-03-06 21:46:51 +01:00
Armin Novak
3d8cb485f4
[warnings] Fixed strict-prototypes warnings
2023-03-06 10:04:59 +01:00
Armin Novak
1b28bd0d36
[channels,cliprdr] use logger tag macros
2023-03-05 17:55:28 +01:00
Armin Novak
9c56ce1336
[channels,tsmf] drop gstreamer 0.1 support
2023-03-01 15:34:09 +01:00
akallabeth
273bb6a7a8
[build] use static libraries as intermediate
2023-03-01 08:18:34 +01:00
akallabeth
b4e9c8b39f
[build] removed complex libraries
...
* remove obsolete complex libraries helper
* fix static linking
2023-03-01 08:18:34 +01:00
akallabeth
c054666311
[channels] simplified channel subsystem linking
2023-03-01 08:18:34 +01:00
akallabeth
cf9777cd92
[channels] simplified server linking
2023-03-01 08:18:34 +01:00
akallabeth
c3a82daad6
[channels] simplified client linking
2023-03-01 08:18:34 +01:00
akallabeth
0307482506
[channels,rdpsnd] add rdpsnd-common object lib
2023-03-01 08:18:34 +01:00
akallabeth
aa2cb9aa5f
Fixed #8686 : Update h264 to use new FFMPEG API
2023-02-27 09:45:44 +01:00
Armin Novak
6256933e75
[channels,cliprdr] remove clipboard data hex dump
...
just too noisy for logging
2023-02-23 20:28:15 +01:00
Armin Novak
70f6c09ff4
[core] fix persistent bitmap cache setting
...
* Only activate if both, client and server support the capability
* Use settings getter to access setting
2023-01-26 09:30:17 +01:00
Armin Novak
641022b795
[logging] remove __FUNCTION__ from actual message
...
prefer the log formatter to provide that information.
2023-01-25 16:26:39 +01:00
akallabeth
075506f6c8
[winpr,stream] use new Stream_CheckAndLogRequiredLength*
2023-01-25 14:27:32 +01:00
akallabeth
8ed37e68d2
[stream] use logging capacity checks
2023-01-25 14:27:32 +01:00
akallabeth
275741cc75
[core,utils] add drdynvc stringification functions
2023-01-12 22:54:25 +01:00
akallabeth
6d7c07076d
[chanenls,drdynvc] use proper types instead of int
2023-01-12 22:54:25 +01:00
akallabeth
82ba9ede9c
[freerdp] use FREERDP_/UWAC_/RDTK_ prefix for conditional headers
2023-01-10 17:38:00 +01:00
Armin Novak
f1e7cc0d48
[rdpdr] unify header read/write
2023-01-10 11:49:38 +01:00
Armin Novak
920d5ee7a1
[rdpdr] improved version handling
2023-01-10 11:49:38 +01:00
Martin Fleisz
8d917698ea
cliprdr: Fix sending of server-side PDUs
...
The old implementation used `Stream_GetLength` to obtain the amount of
data to send. However some PDUs (i.e. CLIPRDR_FILECONTENTS_REQUEST) are
overallocated as they contain optional data (clipDataId in this case).
We now use the position to determine the actual data written to the PDU
instead of the amount of bytes allocated, avoid sending garbage data to
the client.
2023-01-09 07:47:17 +01:00
Armin Novak
37454c7420
[utils] improve rdpdr packet dump
2022-12-22 15:09:03 +01:00
Armin Novak
833a1b2d24
[channel,rdpdr] use wLog* for server logging
2022-12-22 15:09:03 +01:00
Armin Novak
d5c5473aa9
[channel,rdpdr] use wLog* for client logging
2022-12-22 15:09:03 +01:00
Armin Novak
318b55adc1
[rdpdr] filter empty device announce
2022-12-22 15:09:03 +01:00
akallabeth
29c92af194
[channels,rdpgfx] fixed logger setup
2022-12-18 15:14:30 +01:00
akallabeth
06c070fc4d
[gfx] moved rdpgfx_get_codec_id_string to utils
...
the gfx related stringify helpers are nice to have outside the channel
too so that meaningful logmessages can be written.
2022-12-18 15:14:30 +01:00
akallabeth
9d6a06a197
[channels,rdpdr] fix misleading log entries
...
* Use __FUNCTION__ instead of copying the name to the message
* Fix freerdp_rdpdr_dtyp_string argument to get correct name
2022-12-16 09:42:44 +01:00
Armin Novak
37d7b98449
[channels,rdpdr] refactoring server callbacks
...
* Add callbacks for all messages exchanged between client and server
to allow server implementations to intercept them.
* Unify logging
* Add device tracking
2022-12-15 14:57:29 +01:00
akallabeth
3b5347e229
[channel,dvc] unify and log DVC callbacks
...
* Added a check function that logs errors if the required callbacks are
not set.
* Encapsulate calling in (static) helper functions
2022-12-15 14:57:29 +01:00
akallabeth
1f16250a7b
[channels,rdpsnd] prevend multiple OnOpen calls
...
due to the nature of the sound channel there are multiple listeners
waiting for the server to open the channel and most of them are called
by the server. Only open the channel once.
2022-12-15 14:57:29 +01:00
akallabeth
a2329281a4
[channels,rdpdr] fix possible surface leak
...
* Ensure DeleteSurface is called before CreateSurface: Under certain
conditions it is possible that there already exists a surface with the
same id as the new CreateSurface PDU. Delete the already existing
instance in that case before creating a new one.
* Simplify surface cleanup on shutdown: Use HashTable_Foreach
2022-12-15 14:57:29 +01:00
Armin Novak
df4c076946
[channels,rdpdr] abort on invalid device request
...
If a request references a non existing device abort.
2022-12-15 14:57:29 +01:00
Armin Novak
186e97e0a8
[channels,rdpdr] better logging of device manager
...
if a device could not be found print a better log message
2022-12-15 14:57:29 +01:00
Armin Novak
231babef5e
[channels,rdpdr] improve log message
...
try to stringify magic numbers in log message
2022-12-15 14:57:29 +01:00
akallabeth
4ab9fb4425
[channels,rdpsnd] Add PlayEx callback
...
This new callback is preferred over the older Play callback and provides
the AUDIO_FORMAT as additional argument.
2022-12-14 10:17:30 +01:00
akallabeth
8aa880c0ba
[channels,rdpsnd] Callback on server format
...
When the server sends the format list to the client call a device
callback that provides the details to the audio backend.
2022-12-14 10:17:30 +01:00
akallabeth
babc47e19c
[channels,rdpsnd] fix rdpsnd channel cleanup
...
The rdpsnd channel needs to keep the resources allocated until the last
user (static, dynamic channel) is terminated.
2022-12-13 10:57:34 +01:00
akallabeth
7ab917dca8
Fixed Wsign-compare warnings
2022-12-09 15:58:26 +01:00
akallabeth
7e1065a9b9
Fixed Wshadow warnings
2022-12-09 15:58:26 +01:00
akallabeth
aaae70ff05
Fixed missing const casts
2022-12-09 15:58:26 +01:00
Armin Novak
c3e42de5b5
[drdynvc] assert and proper cleanup
2022-12-09 13:23:00 +01:00
akallabeth
dfcd168af6
[channels,rdp2tcp] only reset event if signalled
2022-12-09 12:30:14 +01:00
Armin Novak
0f4be4befd
[channels] fix addin queue free
...
Only clear messages with an ID of 0
2022-12-09 12:30:14 +01:00
Armin Novak
64c94e06f3
[channel,rdpsnd] fix queue cleanup
...
The argument is of type wMessage* and we only care for messages with an
ID of 0
2022-12-09 12:30:14 +01:00
Armin Novak
b25234da66
[channels] Abort event wain on abortEvent
2022-12-09 12:30:14 +01:00
Armin Novak
ec68b1f2a5
[channels,rdpdr] fix computer name sending
...
The name should be '\0' terminated.
2022-12-08 13:29:46 +01:00
Armin Novak
25b00bc483
[channel,urbdrc] fix type of usb hotplug callback
...
The libusb_hotplug_callback_fn uses LIBUSB_CALL call type
2022-12-07 11:32:59 +01:00
Armin Novak
1422136e81
[channel,cliprdr] append '\0' to format names
2022-12-03 10:53:18 +01:00
Armin Novak
cfe09892be
[channel,cliprdr] log debug information
...
Log cliprdr debug information without compile flags
2022-12-03 10:53:18 +01:00
Armin Novak
e1eacad74c
[scard] fixed memory leak
...
card_id_and_name_* return allocated values, free after use
2022-12-02 15:08:09 +01:00
Armin Novak
a57c480b29
[channel,rdpdr] proper queue cleanup for rdpdr
2022-12-02 15:08:09 +01:00
Armin Novak
bc3904ec65
[channel,smartcard] Fix message cleanup on shutdown
2022-12-02 15:08:09 +01:00
akallabeth
5799fb2018
Replace ConvertFromUnicode and ConvertToUnicode
...
* Use new ConvertUtf8ToWChar, ConvertUtf8NToWChar,
ConvertUtf8ToWCharAlloc and ConvertUtf8NToWCharAlloc
* Use new ConvertWCharToUtf8, ConvertWCharNToUtf8,
ConvertWCharToUtf8Alloc and ConvertWCharNToUtf8Alloc
* Use new Stream UTF16 to/from UTF8 read/write functions
* Use new settings UTF16 to/from UTF8 read/write functions
2022-11-28 10:42:36 +01:00
akallabeth
a6593f2dc1
[rdpdr] fixed server side channel parsing
2022-11-22 15:30:31 +01:00
akallabeth
febc4b3073
[gdi,gfx] Fixed possible memory leaks
...
* WINPR_ASSERT all callbacks required to be set
* Unify cache slot creation/destruction
* Destroy cache slot before setting it
2022-11-22 15:30:31 +01:00
akallabeth
7c224c2427
[drdynvc] fix cleanup in case of no thread
...
If drdynvc is used without an own thread the dynamic channels were not
properly cleaned up on disconnect.
2022-11-22 15:30:31 +01:00
Armin Novak
7c5652c15a
Fixed -Wmissing-prototypes
2022-11-21 10:12:31 +01:00
Armin Novak
476bed5731
Fixed -Wconditional-uninitialized
2022-11-21 10:12:31 +01:00
Armin Novak
6ea2e99d51
Fixed -Wunreachable-code-break
2022-11-21 10:12:31 +01:00
Armin Novak
921315fdbf
Fixed -Wmissing-variable-declarations
2022-11-21 10:12:31 +01:00
Armin Novak
dacebc62a3
Use Stream_CheckAndLogRequiredLength, fix WLog TAG
...
* Log stream length requirement violations
* Use proper defines for WLog tags
2022-11-21 09:57:27 +01:00
David PHAM-VAN
f2e14d68eb
Replace backslashes with underscores in printer names
2022-11-21 08:04:10 +01:00
akallabeth
0f60ac5988
Fixed path validation in drive channel
...
Check that canonical path is a subpath of the shared directory
2022-11-14 09:28:22 +01:00
akallabeth
96aef5f1af
Fixed missing stream length check in drive_file_query_directory
2022-11-14 09:28:22 +01:00
akallabeth
d9e687d7e1
Added missing length check in urb_control_transfer
2022-11-14 09:28:22 +01:00
akallabeth
b366ff19a5
Fixed missing input buffer length check in urbdrc
2022-11-14 09:28:22 +01:00
akallabeth
49bd22aea7
Ensure urb_create_iocompletion uses size_t for calculation
2022-11-14 09:28:22 +01:00
akallabeth
b54ca508ac
Fixed division by zero in urbdrc
2022-11-14 09:28:22 +01:00
Armin Novak
60d2e525f5
[channel rdpdr] Clean up IRP on processing errors
2022-11-11 06:42:45 +01:00
Martin Fleisz
b5e8b419b8
drive: Fix an issue when redirecting drives on Windows
...
CreateFile/GetFileInformationByHandle will fail if used with just a
drive letter i.e. C:/.
This PR fixes that case by using GetFileAttributesExW as a fallback in
case CreateFileW fails.
2022-11-03 15:02:27 +01:00
akallabeth
43c5289928
Replaced memset/ZeroMemory with initializer
...
* Addes WINPR_ASSERT on many occations
* Replaced memset with array initializer
* Replaced ZeroMemory with array initializer
2022-10-14 12:11:01 +02:00
akallabeth
6a2626498b
Disable channel builds if -DWITH_CHANNEL=OFF
2022-10-13 14:38:06 +02:00
Armin Novak
2acf21b592
Improved error checks in server side rdpdr
2022-10-13 13:57:11 +02:00
akallabeth
080e44fc96
Fixed extra-semi-stmt warnings
2022-10-11 13:28:30 +02:00