Commit Graph

572 Commits

Author SHA1 Message Date
Justin Terry (VM) 50bd624cc4 Implements XRDP over vsock
1. Implements the ability to use AV_VSOCK for the transport rather than TCP.
2. Updates the ini file to be able to conditionally turn this feature on.
2017-11-07 18:20:45 -08:00
Koichiro IWAO a6fd518a48 fix typo s/Roration/Rotation/ 2017-11-06 16:18:42 +09:00
Koichiro IWAO 2475893402 Constify extended mouse events 2017-11-06 16:18:42 +09:00
Koichiro IWAO 27aef96e81 Constify mouse event flags, use the MS name for constants 2017-11-06 16:18:42 +09:00
Koichiro IWAO 4a2818e183 Add some more Input Capability Set constants 2017-11-06 16:18:42 +09:00
Koichiro IWAO 2411a0be14 log: add log level TRACE
TRACE means more verbose than DEBUG. syslog doesn't have more verbose
level than DEBUG, map TRACE to DEBUG for syslog.
2017-10-13 15:09:33 +09:00
Koichiro IWAO 00bf62bd42 common: prevent raw use of snprintf 2017-10-03 21:55:08 +09:00
Koichiro IWAO ced3a4817f xrdp: constify input event type 2017-10-02 09:39:48 +09:00
Koichiro IWAO f9ab4df7f2 common: fix g_write_ip_address() didn't return correct IP address
Fixes: #878.
2017-09-26 10:54:08 +09:00
Jay Sorg 021a78f4c6 chansrv: sound, use WAVE_FORMAT_AAC not WAVE_FORMAT_AAC_MS 2017-08-04 17:24:57 -07:00
Jay Sorg bf0d56c314 chansrv: sound, add aac 2017-08-04 17:24:57 -07:00
Koichiro IWAO 4d14f344fd fix indent, no logic change 2017-08-01 08:40:30 +09:00
Koichiro IWAO 04187945a8 move base64 functions to base64.c 2017-08-01 08:40:30 +09:00
Koichiro IWAO eae5cdf1fd pass through except for the first '='
if "foo=ba=r" is found in ini files, it should be parsed like this.
      key : foo
    value : ba=r
2017-08-01 08:40:30 +09:00
Koichiro IWAO d57e02626d add base64_decode function 2017-08-01 08:40:30 +09:00
Koichiro IWAO dbaf23e93b chansrv: constify wFormatTag 2017-07-25 11:40:04 +09:00
Ian Geiser 324a334315 append a / to ensure the full path is created even when the config variable lacks a trailing / 2017-07-19 10:35:37 +09:00
Koichiro IWAO aa0721a90e common: fix more glitches in IPv4 initialization 2017-07-14 21:21:15 +09:00
Ian Geiser 4b87548b71 Use g_create_path instead of g_create_dir
Rename g_mk_temp_dir to g_mk_socket_path
2017-07-14 20:52:38 +09:00
Koichiro IWAO 8d5010a202 common: use log_message 2017-07-13 13:41:26 +09:00
Koichiro IWAO 8c74fcb80c common: fix a glitch with IPv4 struct initialization
Pointed out by: andrecbarros
Closes: #803
2017-07-10 11:58:10 +09:00
Koichiro IWAO aa4b90d250 Change log level DEBUG -> WARNING
since unavailability of ssl protocols defined in config file
may weaken security and it is important for users.
2017-07-06 13:14:27 +09:00
Koichiro IWAO 455c341efc Reword log messages in ssl_get_protocols_from_string() 2017-07-06 13:14:27 +09:00
Jay Sorg 8d63c32899 move openssl calls to common/libssl.c, check for defines 2017-06-22 11:47:48 +09:00
Koichiro IWAO 088bd2d811 common: implement g_file_readable for WIN32 2017-06-12 16:57:04 +09:00
Koichiro IWAO 65c1fe87d7 Log user-friendly message when certificate/privkey is inaccessible
We shouldn't assume that xrdp daemon is running under root privilege.
In many cases, root privilege is not really needed for xrdp daemon.
xrdp may fail to load certificate/privkey due to lack of permissions
when running under user privilege. Checking existence of files is not
enough and xrdp should output user-friendly log in such case.

Reported by Debian user in bug 856436 [1].

[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=856436
2017-06-12 16:57:04 +09:00
Koichiro IWAO 0e7844ab02 Constify MCS connectionType 2017-06-06 10:04:48 +09:00
Koichiro IWAO c7f8e360fd common: separate sockets macros into basename and fullpath
since sometimes socket directory is obtained from environment variable.
2017-05-16 10:41:06 +09:00
Jay Sorg 2c96908ea5 common: if SSL_shutdown fails, only call one more time 2017-05-10 14:56:20 -07:00
Jay Sorg 75fd3fcf89 common: ssl_tls_write / read return 0 on socket close 2017-05-10 14:56:20 -07:00
MichaelSweden 5c668dc420 Removed error message while falling back to IPv4 (issue #714) 2017-04-25 09:31:22 +09:00
MichaelSweden 106ae2cd43 Fix to handle OS disabled IPv6, issue #714.
- Changes made only in the os_calls.c file.
- Exported functions changed: g_tcp_bind g_tcp_bind_address g_tcp_connect
- Support three network configurations:
  1) Normal network, with IPv6
  2) Partly disabled IPv6 via sysctl.conf
  3) Total disabled IPv6 via grub
2017-04-25 09:31:22 +09:00
Pavel Roskin 148afd1170 Rename file_loc.h to xrdp_sockets.h, install it
Include xrdp_sockets.h directly, not through headers.
2017-03-28 00:59:16 -07:00
speidy 2f382d2a16 libxrdp: print connected client name to log 2017-03-21 22:02:29 -07:00
Pavel Roskin 95506a169f Log socket fd in g_sck_accept(), fix AF_UNIX logging 2017-03-21 21:59:50 -07:00
Pavel Roskin 43899b7e0c Allocate space for tls_ciphers dynamically 2017-03-21 10:39:40 -07:00
Pavel Roskin 58c9cb43e9 Make socket directory configurable, don't hardcode /tmp/.xrdp
Use XRDP_SOCKET_PATH in file_loc.h

Don't define any non-socket paths in file_loc.h, they should come from
the makefiles.

Define all paths unconditionally, they should not be defined elsewhere.

Pass XRDP_SOCKET_PATH as environment variable to the backends.
2017-03-17 22:25:05 -07:00
Pavel Roskin 6ed4c969f4 Eliminate APP_CC and DEFAULT_CC 2017-03-14 00:21:48 -07:00
Pavel Roskin 30a7a947b1 Don't include config_ac.h from any header files 2017-03-04 00:52:34 -08:00
Pavel Roskin b2d3dcf169 Include config_ac.h from all source files 2017-03-04 00:52:34 -08:00
Koichiro IWAO c126f81d9a add comment to keep xorgxrdp/x11rdp compatibility 2017-02-27 14:17:25 +09:00
Koichiro IWAO e94ab10e14 TLS: new method to specify SSL/TLS version
SSL/TLS protocols only listed in ssl_protocols should be used.
The name "ssl_protocols" comes from nginx.

Resolves #428.
2017-02-27 14:17:25 +09:00
Jay Sorg 657f6f3756 common: use select for SSL_ERROR_WANT_READ, SSL_ERROR_WANT_WRITE tls errors 2017-02-25 20:52:27 -08:00
Jay Sorg e0ac84aaa4 change some casts to long long 2017-02-22 20:39:56 -08:00
Jay Sorg c5e9bc7851 common: print list items as pointers 2017-02-22 20:39:56 -08:00
Jay Sorg 7825246d7a fix warning new since stdint.h change 2017-02-22 20:39:56 -08:00
Pavel Roskin f8d22ce673 aarch64 doesn't require pointers to be aligned 2017-02-13 21:00:22 -08:00
Pavel Roskin dc1e341f5a Constify input arguments of ssl_mod_exp() and ssl_gen_key_xrdp1() 2017-02-02 21:39:10 -08:00
Pavel Roskin 6a3f0a75bd Remove support for OpenSSL older than 0.9.8
It's hard to find an older version of OpenSSL even on long term support
distros.
2017-02-02 21:39:10 -08:00
Jay Sorg d7967ec897 minor arch.h change 2017-01-29 23:14:33 -08:00
Jay Sorg 3b84314a1a arch.h changes to include stdint.h 2017-01-29 23:14:33 -08:00
mirabilos 6257bae23f Add GNU/kFreeBSD support (#645)
* GNU/kFreeBSD is a FreeBSD variant, for code purposes.

* GNU/kFreeBSD uses GNU/Linux-ish init scripts, however.
2017-01-26 23:02:41 -02:00
Idan Freiberg 19375dda7a Merge pull request #426 from metalefty/log-tls-version-and-cipher
TLS: log TLS version and cipher
2017-01-16 07:26:51 +02:00
Idan Freiberg a64e1789c5 Merge pull request #615 from speidy/channels_fixes
Channels improvements
2017-01-15 08:55:00 +02:00
Pavel Roskin f1a521204a Remove redundant function declarations 2017-01-11 23:25:42 -08:00
Koichiro IWAO c89c1318f8 obey coding standard, no logic change 2017-01-12 09:28:22 +09:00
speidy 94cdbdcee6 libxrdp: change channel_code into a meaningful name 2017-01-06 07:59:49 +02:00
Pavel Roskin 6664aac00f Use "void" for empty argument list in declarations
In C, an empty argument list in a declaration means that the function
can accept any arguments. Use "void" instead, it means "no arguments".

C++ treats void and empty list as "no arguments".
2017-01-05 17:27:20 -08:00
volth 26a26ef906 fix build with --enable-xrdpdebug=yes 2017-01-04 19:20:44 +00:00
volth 37b4a14b54 fix build with --enable-xrdpdebug=yes 2017-01-04 13:00:01 +00:00
metalefty 25e5243ecf Merge pull request #553 from jsorg71/libpainter
add libpainter for drawing when client does not have minimum orders
2016-12-20 17:00:48 +09:00
Jay Sorg 1f51586769 add libpainter for drawing when client does not have minimum orders 2016-12-15 21:17:50 -08:00
speidy 4697354044 xrdp_constants: move CAPSET constants to their place 2016-12-13 19:35:56 -05:00
speidy 917aadd2d1 libxrdp: more constants 2016-12-13 18:18:34 -05:00
speidy 3dc0f2860c Merge branch 'surface_cmds' of git://github.com/speidy/xrdp into surface_cmds 2016-12-13 15:08:37 -05:00
speidy 5e39bb1f87 libxrdp: caps, group caps require fastpath output, use FASTPATH_OUTPUT_SUPPORTED constant 2016-12-13 15:05:39 -05:00
Speidy a0cf6030df Merge branch 'devel' of https://github.com/neutrinolabs/xrdp into surface_cmds 2016-12-12 15:51:39 -08:00
jsorg71 5966de4ee2 Merge pull request #536 from jsorg71/unicode
add unicode support
2016-12-11 17:15:34 -08:00
Jay Sorg c264862afe change some magics to defines 2016-12-10 01:06:45 -08:00
Jay Sorg 2f8d3ba9da add unicode support 2016-12-10 00:11:28 -08:00
Pavel Roskin d97155e2f6 Don't use colon to separate IPv6 address from the port
IPv6 addresses can have colons in their names, so the final colon can be
confusing.
2016-12-09 08:42:56 -08:00
speidy 8a0fec5e66 o send RFX tiles as stream (Stream Surface Bits Command)
o silent frame ack logging
o support surface commands in capsets
o fix some wrong constants
2016-12-08 20:12:00 -05:00
Jay Sorg 9a517b34f0 vnc: code cleanup 2016-12-04 15:39:10 -08:00
metalefty 943dec86ca Merge pull request #512 from speidy/devel
xrdp_encoder: do not initialize for non-UNIX rdp clients
2016-12-02 15:25:48 +09:00
Pavel Roskin c6307aa2b0 Use pkg-config to discover OpenSSL
All supported versions of OpenSSL have pkg-config files.
2016-11-29 17:00:09 -08:00
Pavel Roskin 06f4f72e28 Add -ldl to libcommon link flags if it's needed for dlopen() 2016-11-29 16:25:37 -08:00
speidy 1fe048b63d xrdp_encoder: do not initialize for non-UNIX rdp clients
xrdp_encoder: comment about temporary workaround
2016-11-29 15:25:14 -05:00
Koichiro IWAO 849a8075c5 common: If IPv6 not supported, fall back to IPv4
The system to run xrdp does not necessarily support IPv6 even though
it is compiled with IPv6.

Fixes #432.
2016-11-22 16:40:54 +09:00
Koichiro IWAO 40e8194122 TLS: log TLS version and cipher 2016-11-22 10:50:30 +09:00
Itamar Reis Peixoto 7cc1dd2ba8 Merge pull request #460 from metalefty/ipv6/logs
common: Fix client IP address logging when IPv6 is enabled
2016-11-20 16:00:26 -02:00
Pavel Roskin 2dcc69b752 Use g_get_strerror() instead of strerror(errno) for portability 2016-11-08 14:08:51 -08:00
Pavel Roskin 1fe368c5b3 Install headers used by X11rdp and xorgxrdp
Installing the headers makes it possible to compile xorgxrdp as a
separate package, without xrdp sources.
2016-11-06 22:36:13 -08:00
Koichiro IWAO dcf36b592b common: Address family it not always AF_INET6
even if XRDP_ENABLE_IPV6 defined.
2016-11-04 17:31:36 +09:00
Koichiro IWAO b2118450f4 common: Fix client IP address logging when IPv6 is enabled
g_tcp_accept() and g_sck_accept() should use sockadd_in6 when IPv6 is
enabled. The former code logs client IP address always "0.0.0.0" in such
case.

Fixes #412.
2016-11-04 17:31:36 +09:00
Pavel Roskin 4324084d58 Use static inline functions for OpenSSL 1.0 backport
Conditional preprocessor directives spread throughout the code set a bad
example.

The new backport code is located in one place. The compiler checks
argument types. The backport code has no access to the caller variables.
The main code has all advantages of the new, more compact API.
2016-11-01 11:09:15 -07:00
Dominik George e5cf45d1ac
Add backwards compatibility to OpenSSL < 1.1.0. 2016-10-27 22:40:48 +02:00
Dominik George 1b5fb8f1c8
Fix ssl_calls for OpenSSL 1.1.0, closes #458. 2016-10-27 21:56:22 +02:00
Pavel Roskin 6fef1e4eb5 Use const pointers in function arguments when possible 2016-10-17 08:54:07 -07:00
Pavel Roskin bc868b96b1 Remove text2bool() from log.h, there is no such function 2016-10-17 08:54:07 -07:00
Pavel Roskin a618d4f757 Don't use final newline in log calls, it's already appended 2016-10-17 08:54:07 -07:00
Pavel Roskin 7d03d1a3e9 Fix outgoing connections on Mac OSX
connect() on an already established connection returns error with errno
set to EISCONN. Treat it as success.
2016-09-08 22:28:38 -07:00
Pavel Roskin 5465b8c85e Add socklen_t check with substitution, use socklen_t as needed 2016-09-08 20:26:19 -07:00
Pavel Roskin 6f4ffa769c Improve debug information when closing a socket
Don't assume AF_INET family. Don't assume the socket is connected. Report
local address and port. Don't try to close non-sockets and invalid file
descriptors. Report errors getting socket information and closing the
socket. Use more appropriate log levels.
2016-09-08 20:26:19 -07:00
Jay Sorg 8f747e37ca always set SSL_OP_NO_SSLv2 in TLS options 2016-08-25 11:38:03 -07:00
Alex Illsley 47124df4ed new options for xrdp.ini disableSSlv3=yes and tls_ciphers=HIGH and code to implement 2016-08-25 11:20:47 -07:00
Koichiro IWAO ceb4b7b2a4 Fix clipboard when text/filename contains non-ASCII characters
broken by #314. This is compatible with the fix introduced in #314.

To use non-ASCII text/filename in clipboard, chansrv needs to be run
with LC_CTYPE=*.UTF-8 because the behaviour of mbstowcs(3) function
called in chansrv depends on LC_CTYPE[1].  However #314 made
LC_CTYPE=C in chansrv context.  Even if LANG and LC_* are set in
.bashrc, /etc/profile, /etc/locale.conf or something like that,
it doesn't affect in chansrv context because chansrv doesn't source
any of them unlike sesman.

So do not set LC_CTYPE to blank or "C" in g_init() in order to get
g_mbstowcs and g_wcstombs to work properly with non-ASCII UTF-8
characters in any context.

Setting LC_CTYPE to *.UTF-8 doesn't obstruct applying system
language in RHEL [2].

[1] Linux man page says:
      The behavior of mbstowcs() depends on the LC_CTYPE category of
      the current locale.

[2] https://bugzilla.redhat.com/show_bug.cgi?id=1290820
2016-08-18 13:27:55 +09:00
Jay Sorg f4f23b0a7d Include stdint.h, don't redefine MAX/MIN constants if already defined 2016-08-12 12:16:14 -07:00
Jay Sorg d35e57b117 Pixman fixes 2016-08-11 22:18:26 -07:00
Jay Sorg bb7bac2d9b add region intersect 2016-08-08 23:12:52 -07:00
Jay Sorg 58c777783b add more advances region support using pixman 2016-08-08 20:02:10 -07:00