Armin Novak
a86218c761
[codec,rfx] fix numTile update
...
ensure there are enough tiles allocated before setting
2023-04-05 20:41:42 +02:00
Armin Novak
50ce5b834d
[core,server] warn if cert not RDP security compatible
2023-03-28 17:19:03 +02:00
David Fort
b7b46b8123
[codecs] make progressive honor threading flags
...
Progressive codec was not honoring the threading flags in settings like does
remoteFX, so even when no multiple threads decoding was asked, progressive was
using multiple threads anyway. This patch fixes it.
2023-03-20 15:32:28 +01:00
akallabeth
a5b42f0f84
[includes] untangled circular includes
2023-03-15 08:22:23 +01:00
akallabeth
61779694ee
[includes] improved c++ guards
2023-03-15 08:22:23 +01:00
akallabeth
7e44d447f0
[documentation] document Authenticate and AuthenticateEx
2023-03-13 09:36:07 +01:00
Armin Novak
e9bc54e8b7
[core] improve logging in freerdp_set_last_error
2023-03-13 09:36:07 +01:00
Marc-André Moreau
b34bad2b50
fix and improve cJSON detection
2023-03-11 08:20:10 +01:00
fifthdegree
7f54770fd0
fixup! Implement support for RDS AAD
2023-03-10 16:38:07 +01:00
akallabeth
157d71e802
[core,aad] migrate to cJSON parser library
2023-03-10 16:38:07 +01:00
akallabeth
f5423caace
[auth,aad] add freerdp* argument to callback
2023-03-10 16:38:07 +01:00
fifthdegree
4cbfa006f2
Implement support for RDS AAD
...
Have a working implementation of the RDS AAD enhanced security mechanism
for Azure AD logons
2023-03-10 16:38:07 +01:00
fifthdegree
5df4d4c934
Implement a basic JSON parser
2023-03-10 16:38:07 +01:00
fifthdegree
8d6c92c037
Implement base64url encoding/decoding
...
Tweak the base64 functions to allow for encoding and decoding base64url
as well
2023-03-10 16:38:07 +01:00
Martin Fleisz
093bf79837
common:: Fix const issues with current rdp file API
2023-03-08 14:08:34 +01:00
Joan Torres
7c24da917e
Add RDSTLS security protocol
...
The client tries to connect using RDSTLS only when it has received a
server redirection PDU with LB_PASSWORD_IS_ENCRYPTED flag.
The server exposes RDSTLS on negotiation if it has been configured on settings.
Then authenticates a client using configured credentials from settings:
RedirectionGuid, Username, Domain, Password.
2023-03-08 14:05:00 +01:00
Armin Novak
1bf0bb1a26
[server] fixed build without CHANNEL_AUDIN_SERVER
2023-03-06 21:46:51 +01:00
Armin Novak
7722961fcc
[client,common] simplify file clipboard API
2023-03-05 17:55:28 +01:00
Armin Novak
bfea14a5b1
[cliprdr] deactivate local file paste if not supported
...
if the file clipboard was compiled without FUSE do not announce the
availability.
2023-03-05 17:55:28 +01:00
Armin Novak
39c06a4683
[client,common] fix file copy client to server
2023-03-05 17:55:28 +01:00
Armin Novak
60998a62b4
[utils] added FILEDESCRIPTORW read/write routines
2023-03-05 17:55:28 +01:00
Armin Novak
ba128f4661
[client] move file clipboard to client common
2023-03-05 17:55:28 +01:00
Armin Novak
73158a040a
[client,common] add warning functions
...
Added helper functions to inform a user about current state of a client
in use:
* freerdp_client_warn_exeprimental warns about unstable clients
* freerdp_client_warn_deprecated warns about clients to be dropped
2023-03-01 13:45:13 +01:00
Armin Novak
ae8f0106bd
[core,redirect] extract and check redirection cert
...
* extract the certificate from the redirection PDU
* if there is a certificate provided accept it if it matches the
redirection target certificate without further user checks
2023-02-28 15:49:58 +01:00
Armin Novak
acc5e2d301
[client,common] use non blocking IO
...
when reading from stdin use non blocking IO so that we can check if the
session terminated in between.
2023-02-28 09:47:54 +01:00
Armin Novak
4398126dde
[utils,signal] remove terminal reset
2023-02-28 09:47:54 +01:00
akallabeth
b342194d4b
[includes] add missing c++ guards
2023-02-27 17:31:52 +01:00
akallabeth
adce7378c3
[core,cache] make protocol caches private
...
most protocol internal caches do not need to be exposed. this reduces
the public API and allows us to more easily improve/change this during a
release cycle
2023-02-27 17:31:52 +01:00
Marc-André Moreau
3a8dce07ea
expose last NLA/CredSSP SSPI error code (freerdp_get_nla_sspi_error)
2023-02-24 13:19:19 -05:00
Armin Novak
3c160ff8b1
[build] remove unused option WITH_DEBUG_X11_CLIPRDR
2023-02-23 20:28:15 +01:00
Armin Novak
f357312584
[utils] term signal cleanup handlers
...
add functions to register/unregister termination cleanup handlers
2023-02-23 20:28:15 +01:00
Armin Novak
d8d4d044ff
[clipboard] cleanup definitions
...
* remove definitions for clipboard formats that are dynamically registered
* fix length of converted clipboard string
2023-02-23 20:28:15 +01:00
Armin Novak
b8a709ccda
[client,x11] fixed file clipboard cache
...
if files are pasted in different file-browser (or e.g. xclip is used)
the data was retrieved in wrong format.
2023-02-21 16:42:54 +01:00
Armin Novak
68d3bcb99a
[clipboard] remove linux specifics from channels/cliprdr.h
2023-02-21 16:42:54 +01:00
akallabeth
2d94ff3f9e
[settings] remove obsolete keys
...
* CertificateFile and CertificateContent are no longer used
* PrivateKeyFile and PrivateKeyContent are no longer used
2023-02-16 10:06:17 +01:00
Armin Novak
25023d3a3a
[client,scard] fix missing callback instance arg
...
every callback requires context, add freerdp* instance just as the
Authenticate et al callbacks already have
2023-02-15 13:34:18 +01:00
Armin Novak
5d97a03bf4
[client] auto intialize callbacks
...
initialize all message/user query callbacks with client_cli_*
2023-02-15 13:34:18 +01:00
Armin Novak
a7dac52a42
[license] updated copyright headers
2023-02-12 20:17:11 +01:00
akallabeth
081e187db8
[crypto] add function to determine if RSA is in use
2023-02-12 20:17:11 +01:00
akallabeth
af371bef6a
[crypto] rename rdpRsaKey to rdpPrivateKey
2023-02-12 20:17:11 +01:00
akallabeth
b869927407
[proxy,config] extract PEM from config file
...
* Read a PEM file if provided via config
* Base64 decode if the certificate/private key are provided in the
config file
2023-02-12 20:17:11 +01:00
akallabeth
1d3c6518fa
[crypto] added PEM file read/write helpers
2023-02-12 20:17:11 +01:00
akallabeth
4499a55f43
[core,smartcardlogon] use rdpCertificate
2023-02-12 20:17:11 +01:00
akallabeth
9b51df8b10
[core,crypto] refactor certificate management
...
* Properly split certificate_store, certificate_data, certificate and
private key functions to files
* Prefix all functions with freerdp_ to have a unique name
* Update certificate store to use one file per host instead of
known_hosts2
* Merge CryptoCert and rdpCertificate
2023-02-12 20:17:11 +01:00
Martin Fleisz
4b9fb8fff9
proxy: Fix NLA to TLS fallback connection
...
Currently the proxy's TLS fallback if an NLA connection attempt failed
is broken. There are two issues with the current code that this PR
fixes:
- freerdp_reconnect is used which requires an already established
connection to work correctly. This is not the case since the NLA
connectin attempt failed. This resulted in a seemingly working TLS
connection but i.e. channels where missing/not working.
- The fallback connection attempt just altered the NLA security setting
in the instance's settings. However these settings have been already
modified by the NLA connection attempt so we need to create a copy of
the original connection settings before doing the first connect.
The PR also introduces freerdp_reset_context which restores the initial
connection settings for the given instance.
2023-02-09 12:49:47 +01:00
Armin Novak
a7c0a8c5f1
[autodetect] expose AUTODETECT_STATE
2023-02-09 12:34:27 +01:00
Armin Novak
7b140a12c7
[autodetect] add pointer for custom user data
2023-02-09 12:34:27 +01:00
akallabeth
2eda0aa2ea
[core,settings] remove unused setting
2023-02-03 11:24:32 +01:00
akallabeth
7c1007b1b6
[core,crypto] removed rsa functions from public API
...
should only be used internally
2023-02-03 11:09:59 +01:00
akallabeth
a3152871ab
[core,crypto] refactor rsa functions
...
* public encrypt/decrypt take rdpCertInfo data as argument
* private encrypt/decrypt take rdpRsaKey as argument
* Add missing length arguments
2023-02-03 11:09:59 +01:00
akallabeth
2c2e9602b3
[core] refactor certificate handling
...
* Remove duplications in rdpRsaKey, reuse rdpCertificate for public
components
* Move all private key and certificate code to certificate.c,
remove the tssk_* variables from gcc
* Handle update of client and server random keys in wrapping functions
* Simplify gcc_write_server_security_data, use certificate.c functions
to write the certificate data
* Refactor security_establish_keys, use the random values stored in
settings directly
2023-02-03 11:09:59 +01:00
Armin Novak
cd48e17740
[gateway,settings] add GatewayAutoConsent option
...
with this option the client automatically accepts consent messages of
the gateway server.
2023-02-03 11:08:46 +01:00
akallabeth
ee07a13130
[cleanup] fix compiler warnings
2023-01-26 09:30:17 +01:00
akallabeth
f26079edf2
[proxy] implement dynamic channel filter
...
* Allow modules to configure intercept channels
* Allow modules to rewrite packets
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
Armin Novak
c01979fba1
[utils] added rdp_cluster_info_flags_to_string
2023-01-23 09:17:01 +01:00
Armin Novak
8dc6287d7a
[setttings] added ServerSessionRedirectionVersionMask
2023-01-23 09:17:01 +01:00
akallabeth
60424ef76f
[core] fixed client/server early capapbility flags
2023-01-20 10:57:30 +01:00
akallabeth
2fc5eaeb80
[core] implemented CS_CORE::EarlyCapabilityFlags filter
...
* Added missing definitions for RNS_UD_CS_SUPPORT_SKIP_CHANNELJOIN
and RNS_UD_SC_SKIP_CHANNELJOIN_SUPPORTED flags
* Updated stringification functions for these flags
* Implemented client and server EarlyCapabilityFlags filter for
these flags as FreeRDP currently does not implement them.
2023-01-20 10:57:30 +01:00
Armin Novak
9e331a6fcb
[settings] add string functions for encryption
2023-01-18 09:55:06 +01:00
akallabeth
5104df2e22
[core,server] use redirection functions
...
* Modify callback to take a rdpRedirection* structure
* Use send function from redirection.c
2023-01-17 12:25:31 +01:00
akallabeth
a2c7aa8de1
[core] restructure redirection
...
* Expose redirection functions via public API
* Add getter/setter for public API
2023-01-17 12:25:31 +01:00
akallabeth
05dab47cbd
[core,settings] add missing redirection options
...
* RedirectionGuid
* TargetCertificate
2023-01-17 12:25:31 +01:00
Armin Novak
dd0d130f48
[crypto] make tls.h a private header
...
no need to uselessly export symbols that are not usable outside the
project
2023-01-14 08:50:26 +01:00
Rozhuk Ivan
a111b78530
[core] Rename TLS functions
...
Rename tls_ to freerdp_tls_ to avoid namespace conflicts with libtls
and probaly other tls crypto libs.
2023-01-14 08:50:26 +01:00
akallabeth
275741cc75
[core,utils] add drdynvc stringification functions
2023-01-12 22:54:25 +01:00
Armin Novak
070353bf90
added SDL2 client
2023-01-10 17:38:00 +01:00
akallabeth
82ba9ede9c
[freerdp] use FREERDP_/UWAC_/RDTK_ prefix for conditional headers
2023-01-10 17:38:00 +01:00
Armin Novak
d66b165b8e
[client,common] common touch handling
2023-01-10 17:38:00 +01:00
Armin Novak
c7868e7a3f
[proxy,rdpdr] added translation layer for rdpdr versions
...
rdpdr filesystem has 2 different versions and mstsc uses the older one
under certain conditions.
2023-01-10 11:49:38 +01:00
Armin Novak
f1e7cc0d48
[rdpdr] unify header read/write
2023-01-10 11:49:38 +01:00
Armin Novak
58c4517700
[rdpdr] improved debug log
2023-01-10 11:49:38 +01:00
Armin Novak
78eb6ce3a8
[codec] add flag for freerdp_image_copy
...
Add FREERDP_KEEP_DST_ALPHA to copy and keep the destination alpha value
2023-01-10 11:49:02 +01:00
David Fort
07d9baad6d
crypto: export getSslMethod utility function
2022-12-23 08:42:45 +01:00
Armin Novak
37454c7420
[utils] improve rdpdr packet dump
2022-12-22 15:09:03 +01:00
Armin Novak
c82ddbbcc4
[server,proxy] fixed logger namespace
2022-12-22 15:09:03 +01:00
David Fort
b283daafd7
tls: cleanup and add some methods to do handshakes asynchronously
...
This patch does a few cleanups to allow creating TLS and DTLS contexts.
It also introduces tls_accept_ex and tls_connect_ex that can start the SSL handshake,
and it can be finished by calling tls_handshake
2022-12-19 10:46:06 +01:00
Armin Novak
d6ab9d5f63
[server,shadow] abort connection if a resize fails
...
The shadow server tries to resize the client to use a compatible
resolution. If that fails, e.g. if there is another resize request after
the disconnect/reconnect sequence, abort the connection.
2022-12-19 10:38:18 +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
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
b5e2c2a81d
[settings] added stringify function for RDPDR_RTYP_*
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
David Fort
a1febe11f0
multi-transport: refactor multi-transport handling
...
Prepare the parts of the code that handle multi-transport to really establish
UDP connections and manage alternative transports.
2022-12-13 15:54:33 +01:00
David Fort
deb79c3f90
fix typo
2022-12-13 15:54:33 +01:00
Armin Novak
f5724c0c13
[core,input] Fixed API for KBD_FLAGS_DOWN use
...
KBD_FLAGS_DOWN indicates a key repeat, so it must be absent on first
keypress.
2022-12-13 14:37:05 +01:00
akallabeth
f67a7aa16a
[build] added WITH_DEBUG_CODECS
...
A new build option to enable more verbose logging in some video codecs.
2022-12-13 13:38:25 +01:00
akallabeth
37ab25e19d
Fixed all Wdocumentation warnings
2022-12-12 14:24:55 +01:00
akallabeth
d3e9210985
[core] added freerdp_is_active_state
...
Since client and server use different states to indicate the connection
is activated, add this convenience function to determine that
2022-12-12 12:59:32 +01:00
Armin Novak
5f81005ecb
[transport] remove polling loop
...
We no longer have a blocking polling loop in transport. Instead assume
there is more data after a packet was processed and let the transport
try again. If there is another packet ready, this repeats until only a
partly received (or no new data available) situation is reached.
2022-12-12 12:59:32 +01:00
akallabeth
cb5c98aab0
[core,client] Add PostFinalDisconnect callback
...
To have more fine granied control add a new callback.
Now you have the following callback pairs:
* PreConnect <--> PostFinalDisconnect
* PostConnect <--> PostDisconnect
2022-12-09 12:30:14 +01:00
Armin Novak
3e3ed445b4
[client,file] add rdgiskdcproxy to settings
...
Adds a new option FreeRDP_KerberosRdgIsKdc to manually set the KDC url
to the gateway server url
2022-12-06 14:07:53 +01:00
akallabeth
ca5684c968
[settings,caps] Removed ColorPointerFlag
...
* The setting is obsolete and can be replaced by a constant
* Only check the receive function for proper value and print a warning
2022-12-06 09:08:12 +01:00
akallabeth
97fd183d39
[core,settings] Added ColorPointerCacheSize
2022-12-06 09:08:12 +01:00
Armin Novak
ff266e9575
furter added settings documentation
2022-12-02 15:25:08 +01:00
akallabeth
d898f04e41
[core,settings] Added settings function docs
...
* Document settings functions
* Make rdpSettings* checks more uniform
2022-12-02 15:25:08 +01:00
David Fort
d59c0a49c3
proxy: fix channel shift between front and back
...
When some channels are filtered, some misalignement of channel ids could happen.
This patch keeps track of the back and front channel ids to correctly identify a
channel and send packets with the correct channel id.
2022-11-30 11:38:08 +01:00
akallabeth
2ac2f43503
[freerdp,settings] Add UTF16 helper functions
...
This new function allows get or set settings as WCHAR
string directly. Converts the string automatically from/to utf-8
internally
2022-11-28 10:42:36 +01:00
Armin Novak
c5e425242a
[settings] Typo in GatewayHttpExtAuthSspiNtlm
2022-11-23 11:19:21 +01:00