Commit Graph

1459 Commits

Author SHA1 Message Date
Bernhard Miklautz
d625edbe97 gfx/pointer: add support to set pointer
Extend rdp_pointer with function SetPosition. Can then be used by
clients support setting pointer by server which might be used in
shadowing scenarios.
2015-02-02 10:57:31 +01:00
Roland Kaufmann
d930431169 Forward layout ID of Programmer Dvorak to server
The Programmer Dvorak keyboard layout is supported by Xkb but support
in Windows is only available through an open-source add-on driver. It
is plausible that those that use this layout in X11 also installs this
driver on Windows instead of using the standard Dvorak variant there.

This changeset recognizes Programmer Dvorak as its own variant, and
assigns this a layout ID which matches the one used in the Windows
driver so that it will be selected when you logon. If this layout is
not available, it will now revert to the regular United States layout.

Tested with Ubuntu Precise 12.04 connecting to Windows 7 SP1.
2015-01-30 21:22:59 +01:00
Marc-André Moreau
3a906caa4a freerdp: add event handle usage instead of file descriptors 2015-01-29 22:57:58 -05:00
Armin Novak
3c7b611041 Added destination buffer width to h264_decompress. 2015-01-22 13:23:59 +01:00
Mike McDonald
b184a7531f Merge branch 'master' of https://github.com/awakecoding/FreeRDP into awakecoding-staging 2015-01-20 08:09:00 -05:00
Armin Novak
3139a412fa Fixed argument for freerdp_channels_client_load, using proper type now. 2015-01-20 11:32:04 +01:00
Armin Novak
a1a2cf2257 Added freerdp_channels_disconnect 2015-01-20 11:10:39 +01:00
Norbert Federa
344362a8a3 clients: fix "focus in event" issues
The input->FocusInEvent callback implementations (normal and fast-path) have
always sent the mouse position even if the pointer was outside of the freerdp
client area. In addition xfreerdp used the wrong pointer coordinates which
were relative to the root window instead of its own.
On focus-in the pointer position must only be sent if the pointer is
currently within the program's client area. However, the clients had no way
to pass that information to input->FocusInEvent which required an API change.

- removed mouse pointer x, y parameters from input interface's FocusInEvent
- clients are responsible to call input->MouseEvent on focus-in if necessary
- fixed xfreerdp and wfreerdp accordingly
2015-01-16 18:40:57 +01:00
Martin Haimberger
bba342a6be added set_error_info function
if an error_info is set, a TS_SET_ERROR_INFO_PDU
will be sent to the client on disconnect with
the error_info
2015-01-13 08:09:36 -08:00
Mike McDonald
b21331cf1a First cut at server side implementation of RDPDR drive redirection. 2014-12-27 21:17:34 -05:00
Marc-André Moreau
265e8b9e9d cliprdr/server: make channel thread optional 2014-12-18 11:11:36 -05:00
Marc-André Moreau
afce8061b3 cliprdr/server: split add Open/Close callbacks 2014-12-18 10:46:23 -05:00
Marc-André Moreau
a69eaddecd channels/cliprdr: add missing messages in cliprdr server 2014-12-15 17:05:32 -05:00
Marc-André Moreau
736bcf2bd6 libfreerdp-core: fix async input mode for FocusInEvent, KeyboardPauseEvent 2014-12-15 11:35:35 -05:00
Norbert Federa
939f1c639a Standard RDP Security Layer Levels/Method Overhaul
[MS-RDPBCGR] Section 5.3 describes the encryption level and method values for
standard RDP security.

Looking at the current usage of these values in the FreeRDP code gives me
reason to believe that there is a certain lack of understanding of how these
values should be handled.

The encryption level is only configured on the server side in the "Encryption
Level" setting found in the Remote Desktop Session Host Configuration RDP-Tcp
properties dialog and this value is never transferred from the client to the
server over the wire.
The possible options are "None", "Low", "Client Compatible", "High" and
"FIPS Compliant". The client receices this value in the Server Security Data
block (TS_UD_SC_SEC1), probably only for informational purposes and maybe to
give the client the possibility to verify if the server's decision for the
encryption method confirms to the server's encryption level.
The possible encryption methods are "NONE", "40BIT", "56BIT", "128BIT" and
"FIPS" and the RDP client advertises the ones it supports to the server in the
Client Security Data block (TS_UD_CS_SEC).
The server's configured encryption level value restricts the possible final
encryption method.
Something that I was not able to find in the documentation is the priority
level of the individual encryption methods based on which the server makes its
final method decision if there are several options.
My analysis with Windows Servers reveiled that the order is 128, 56, 40, FIPS.
The server only chooses FIPS if the level is "FIPS Comliant" or if it is the
only method advertised by the client.

Bottom line:
* FreeRDP's client side does not need to set settings->EncryptionLevel
(which was done quite frequently).
* FreeRDP's server side does not have to set the supported encryption methods
list in settings->EncryptionMethods

Changes in this commit:

Removed unnecessary/confusing changes of EncryptionLevel/Methods settings

Refactor settings->DisableEncryption
* This value actually means "Advanced RDP Encryption (NLA/TLS) is NOT used"
* The old name caused lots of confusion among developers
* Renamed it to "UseRdpSecurityLayer" (the compare logic stays untouched)

Any client's setting of settings->EncryptionMethods were annihilated
* All clients "want" to set all supported methods
* Some clients forgot 56bit because 56bit was not supported at the time the
code was written
* settings->EncryptionMethods was overwritten anyways in nego_connect()
* Removed all client side settings of settings->EncryptionMethods
The default is "None" (0)
* Changed nego_connect() to advertise all supported methods if
settings->EncryptionMethods is 0 (None)
* Added a commandline option /encryption-methods:comma separated list of the
values "40", "56", "128", "FIPS". E.g. /encryption-methods:56,128
* Print warning if server chooses non-advertised method

Verify received level and method in client's gcc_read_server_security_data
* Only accept valid/known encryption methods
* Verify encryption level/method combinations according to MS-RDPBCGR 5.3.2

Server implementations can now set settings->EncryptionLevel
* The default for settings->EncryptionLevel is 0 (None)
* nego_send_negotiation_response() changes it to ClientCompatible in that case
* default to ClientCompatible if the server implementation set an invalid level

Fix server's gcc_write_server_security_data
* Verify server encryption level value set by server implementations
* Choose rdp encryption method based on level and supported client methods
* Moved FIPS to the lowest priority (only used if other methods are possible)

Updated sample server
* Support RDP Security (RdpKeyFile was not set)
* Added commented sample code for setting the security level
2014-12-12 02:17:12 +01:00
Marc-André Moreau
fdd2dc7601 freerdp: patch valgrind leaks, cleanup 2014-12-03 14:17:27 -05:00
Marc-André Moreau
6ccce86140 Merge branch 'master' of github.com:FreeRDP/FreeRDP
Conflicts:
	winpr/libwinpr/thread/thread.c
2014-12-03 10:10:50 -05:00
Marc-André Moreau
c17a831367 Merge pull request #2240 from nfedera/fix-2014-12-01-01
xfreerdp: pinch/pan fixes and smart-sizing
2014-12-02 14:04:49 -05:00
Armin Novak
e6fa0911a3 Fixed missing extern C 2014-12-01 13:12:51 +01:00
Norbert Federa
25f66d2e6d xfreerdp: added smart sizing, mt gesture fixes
- removed setting ScalingFactor
- added settings SmartSizingWidth and SmartSizingHeight
- changed option /smart-sizing to optionally support <width>x<height>
- consolidated transformation of input event coordinates
- rdp8 gfx ignored scaling and panning offsets: fixed
- never resize window on panning/pinching
- simplified keyboard multitouch gesture debugging emulation
- disabled keyboard multitouch gesture emulation debug code via define
2014-12-01 11:56:44 +01:00
Marc-André Moreau
ba5389d9d0 Merge branch 'master' of github.com:awakecoding/FreeRDP 2014-11-21 15:10:48 -05:00
Marc-André Moreau
7881ec762e server/shadow: avoid sending pointer updates when not active, fix remdesk leak 2014-11-21 15:10:39 -05:00
Hardening
ed6f380434 Add server-side RDPEI
This patch mutualize code between client and server for RDPEI. And add support for
the server-side.
2014-11-20 22:19:29 +01:00
Marc-André Moreau
1c9231acf8 libfreerdp-rail: remove 2014-11-12 19:51:17 -05:00
Marc-André Moreau
ddedc574f3 freerdp: remove tcp, uds utils 2014-11-12 14:06:34 -05:00
Marc-André Moreau
8c98cbc247 libfreerdp-utils: remove old time utils 2014-11-12 13:45:03 -05:00
Marc-André Moreau
986dae429b freerdp: remove deprecated svc_plugin.c utils 2014-11-12 13:34:07 -05:00
Marc-André Moreau
0e7c95c421 freerdp: remove deprecated eventing system 2014-11-12 13:18:18 -05:00
Marc-André Moreau
589c21d819 libfreerdp-utils: remove rail utils 2014-11-12 10:18:53 -05:00
Marc-André Moreau
a48ed7239d Merge branch 'master' of github.com:FreeRDP/FreeRDP
Conflicts:
	libfreerdp/core/update.c
2014-11-11 09:55:48 -05:00
Marc-André Moreau
ee7299ec3f channels/tsmf: remove dependency on deprecated eventing system 2014-11-10 16:33:34 -05:00
Marc-André Moreau
a6bb185760 channels/tsmf: add new callback interface 2014-11-07 18:33:45 -05:00
Marc-André Moreau
04299bb18b shadow: improve pointer updates 2014-11-07 13:51:10 -05:00
Vic Lee
8eaeeebecc libfreerdp-core: support continuous auto-detection. 2014-11-07 16:18:49 +08:00
Hardening
e04f90eada Offer to disable bulk compression when using remoteFx
This patch adds a skipCompression field in surface commands struct so that
we can disable bulk compression with remoteFx.
2014-11-04 16:14:53 +01:00
Vic Lee
18428a43d0 libfreerdp-core: distinguish continuous/connect-time autodetect. 2014-11-04 13:41:04 +08:00
Hardening
7b108f1aa8 Merge pull request #2141 from zhangzl2013/polyline
fix polyline.
2014-10-31 22:15:13 +01:00
Norbert Federa
62dbcac0c7 xfreerdp: fix glyph index primary drawing order
The fOpRedundant field of the GlyphIndex primary drawing order
(MS-RDPEGDI, chapter 2.2.2.2.1.1.2.13) was neglected which resulted in some
severe text rendering errors.
2014-10-29 20:56:26 +01:00
Vic Lee
152d525a05 libfreerdp-core: server-side auto-detect feature. 2014-10-29 00:49:49 +08:00
Marc-André Moreau
f01bb56ac5 channels/cliprdr: add missing clipboard data format definitions 2014-10-23 18:33:10 -04:00
Marc-André Moreau
f76f8e3599 channels/cliprdr: add missing callbacks and message definitions 2014-10-23 18:17:53 -04:00
Marc-André Moreau
1c7ed224b6 wfreerdp: start preparing cliprdr code for migration to cliprdr callback interface 2014-10-23 15:38:19 -04:00
Marc-André Moreau
23e4963102 xfreerdp: remove dependency on clrconv 2014-10-21 22:19:11 -04:00
Marc-André Moreau
5f95f0776f libfreerdp-codec: add freerdp_image_copy_from_monochrome replacement function for deprecated freerdp_mono_image_convert 2014-10-21 21:56:10 -04:00
Marc-André Moreau
0aab1e7ee5 libfreerdp-codec: fix and enhance cursor image conversion 2014-10-21 20:46:15 -04:00
Marc-André Moreau
83ecddd6c1 xfreerdp: replace cliprdr to wire format conversion 2014-10-17 20:40:11 -04:00
Marc-André Moreau
a1e660d92e freerdp: unify clipboard standard format id definitions 2014-10-16 22:20:12 -04:00
Marc-André Moreau
334dec3c1f winpr: add pragma pack, bitmap + clipboard definitions 2014-10-16 21:45:47 -04:00
Marc-André Moreau
1d47b16f3c Merge branch 'master' of github.com:FreeRDP/FreeRDP 2014-10-14 20:59:37 -04:00
Marc-André Moreau
00e3533230 libfreerdp-core: expose API for FreeRDS WTSVirtualChannelRead 2014-10-10 17:19:38 -04:00
Marc-André Moreau
11ae267518 libfreerdp-core: expose new API to allow FreeRDS virtual channel hooking 2014-10-10 16:11:42 -04:00
Marc-André Moreau
9ce862edc8 Merge pull request #2135 from erbth/wfreerdp
Added lock key synchronization to wfreerdp
2014-10-09 09:05:58 -04:00
Zhang Zhaolong
3de5c62bf3 fix polyline. 2014-10-09 18:11:38 +08:00
erbth
58c392e72e Added lock key synchronization to wfreerdp 2014-10-03 16:27:47 +02:00
Bernhard Miklautz
f40053577f core: add support for set keyboard indicators PDU
Server Set Keyboard Indicators PDU MS-RDPBCGR 2.2.8.2.1

* add server side code
* add support for client callback
2014-10-03 12:10:44 +02:00
Marc-André Moreau
abd87ace55 rdtk: initial commit 2014-09-29 16:08:08 -04:00
Marc-André Moreau
6eeace868b shadow: start bitmap font loader 2014-09-28 21:41:12 -04:00
Marc-André Moreau
668aa17a22 shadow: add X11 PAM authentication 2014-09-26 19:03:48 -04:00
Marc-André Moreau
ca1cec64d8 libfreerdp-core: update RDP8 virtual channels 2014-09-25 17:31:05 -04:00
Marc-André Moreau
4f1fae38bb freerdp: fix headers for C++ 2014-09-25 14:15:57 -04:00
Marc-André Moreau
8b1ad6a6cd libfreerdp-gdi: remove some dead code 2014-09-25 10:39:23 -04:00
Marc-André Moreau
c762a4d5a2 Merge branch 'master' of github.com:awakecoding/FreeRDP into shadow 2014-09-25 10:35:14 -04:00
Marc-André Moreau
bbf4732470 Merge branch 'master' of github.com:FreeRDP/FreeRDP
Conflicts:
	libfreerdp/gdi/gdi.c
2014-09-25 10:34:56 -04:00
Marc-André Moreau
86b4123cf0 Merge pull request #2101 from eledoux/ports
Ports
2014-09-25 10:38:07 -04:00
Marc-André Moreau
8123a1d9b8 libfreerdp-codec: refactor NSCodec 2014-09-23 20:00:26 -04:00
Marc-André Moreau
c4ad706c34 libfreerdp-core: improve bitmap codec negotiation 2014-09-21 15:40:27 -04:00
Marc-André Moreau
45b9a5454e libfreerdp-codec: improve compressor interfaces 2014-09-20 15:25:33 -04:00
Marc-André Moreau
3ddbb128cc libfreerdp-core: add SurfaceFrameBits function to combine frame marker with surface commands 2014-09-19 14:23:17 -04:00
Marc-André Moreau
aa2e6dacbb shadow: fix frame acks + bitmap negotiation 2014-09-19 12:06:12 -04:00
Marc-André Moreau
09fc388e03 shadow: add RefreshRect/SuppressOutput support 2014-09-18 22:18:58 -04:00
Marc-André Moreau
aa7571648c shadow: start using message queue 2014-09-18 17:22:44 -04:00
Marc-André Moreau
7ef55ab9b7 shadow: improve subsystem structure 2014-09-18 15:43:11 -04:00
Marc-André Moreau
527638c691 shadow: delay subsystem initialization for monitor enumeration 2014-09-18 13:06:49 -04:00
Marc-André Moreau
48d15998e7 shadow: add common subsystem code 2014-09-17 22:58:57 -04:00
Marc-André Moreau
e84e7928e3 server/shadow: split into library + executable 2014-09-17 21:18:47 -04:00
Marc-André Moreau
6afd621d4c Merge branch 'master' of github.com:awakecoding/FreeRDP into shadow
Conflicts:
	server/Mac/mf_audin.c
	server/Mac/mf_event.c
	server/Mac/mf_info.c
	server/Mac/mf_mountain_lion.c
	server/Mac/mf_peer.c
	server/Mac/mf_rdpsnd.c
	server/Mac/mfreerdp.c
	server/shadow/CMakeLists.txt
2014-09-17 20:15:01 -04:00
Marc-André Moreau
02c1bf14ce libfreerdp-gdi: fix gdi_init 2014-09-17 19:44:59 -04:00
Marc-André Moreau
2a5192b027 Merge branch 'master' of github.com:awakecoding/FreeRDP into egfx
Conflicts:
	client/Windows/wf_cliprdr.h
	client/Windows/wf_event.h
	client/X11/xf_client.c
	client/X11/xf_gdi.c
	libfreerdp/gdi/gdi.c
	server/Mac/mf_input.c
2014-09-17 19:09:56 -04:00
Marc-André Moreau
73471eb1f0 libfreerdp-gdi: fix 8bpp mode 2014-09-17 18:30:09 -04:00
Marc-André Moreau
1c646da826 Merge branch 'egfx' of github.com:awakecoding/FreeRDP into shadow 2014-09-17 15:17:05 -04:00
Marc-André Moreau
fb4e5d352b libfreerdp-codec: add proper 16bpp output format support 2014-09-17 12:17:41 -04:00
Marc-André Moreau
1b7a84419c xfreerdp: partial fix for X11 16bpp mode 2014-09-16 19:12:26 -04:00
Marc-André Moreau
c40d8155a6 libfreerdp-gdi: fix SurfaceToSurface overlapping copies 2014-09-16 17:41:24 -04:00
Marc-André Moreau
1837c34e6e libfreerdp-codec: add BGR support to egfx 2014-09-16 16:55:47 -04:00
Bernhard Miklautz
89297a69cd rdpsnd server: fix duplicated prototype 2014-09-16 19:26:33 +02:00
Emmanuel Ledoux
e9749c6b3f serial: ability to turn on the permissive mode from the command line 2014-09-16 12:08:33 +02:00
Marc-André Moreau
b25258e8c6 libfreerdp-gdi: add support for ABGR plain colors 2014-09-15 16:28:53 -04:00
Marc-André Moreau
501386b790 libfreerdp-gdi: partial support for internal ABGR buffer format 2014-09-15 16:08:06 -04:00
Marc-André Moreau
abb841e533 libfreerdp-codec: add RGB/BGR color conversion to freerdp_image_copy 2014-09-15 14:59:45 -04:00
Armin Novak
a9644a26a0 Removed obsolete headers and defines. 2014-09-15 08:55:00 +02:00
Armin Novak
2f519d7f16 Replaced logging in libfreerdp with wlog defines. 2014-09-15 08:48:46 +02:00
Marc-André Moreau
06dc76bce2 shadow/mac: add initial screen capture support 2014-09-14 20:08:38 -04:00
Marc-André Moreau
b7351e0795 Merge branch 'egfx' of github.com:awakecoding/FreeRDP into shadow 2014-09-13 12:04:02 -04:00
Marc-André Moreau
b0d27beae3 mfreerdp: add egfx support 2014-09-13 12:02:53 -04:00
Marc-André Moreau
198f94fe03 libfreerdp-gdi: add RDP8 graphics pipeline support 2014-09-12 14:57:44 -04:00
Marc-André Moreau
45d2bab95d xfreerdp: optimize bitmap updates 2014-09-11 22:29:09 -04:00
Marc-André Moreau
a3cdcc1641 libfreerdp-gdi: fix and cleanup new bitmap update code 2014-09-11 20:46:15 -04:00
Marc-André Moreau
5b2a465ee6 libfreerdp-gdi: start optimizing gdi bitmap update 2014-09-11 20:12:32 -04:00
Marc-André Moreau
938e2abcd4 Merge pull request #2088 from bmiklautz/fix/rdpsndv5
rdpsnd server side: misc fixes
2014-09-11 14:02:54 -04:00
Bernhard Miklautz
96cd479c99 rdpsnd_server_handle_messages: change return type
With BOOL as return type it is not possible to differentiate between
success and "no data can be read" (when a channel read would block).

rdpsnd_server_handle_messages returns now int with the following
possible values:

-1 if no data could be read
0 error (like connection close) (formerly FALSE)
1 succsess (also if further bytes need to be read) (formerly TRUE)

Not using -1 for error cases was chosen to be compatible with the BOOL
return values used before.
2014-09-11 13:45:23 +02:00