Commit Graph

65 Commits

Author SHA1 Message Date
matt335672
79bec8110c Unify connection fields for the connected client
The connected client is currently described in two places in
the xrdp_client_info structure:-

1) In the connection_description field. This was introduced as
   field client_ip by commit d797b2cf49
   for xrdp v0.6.0

2) In the client_addr and client_port fields introduced by commit
   25369460a1 for xrdp v0.8.0

This commit unifies these two sets of fields into a single
set of fields describing the connection IP and port (for
AF_INET/AF_INET6 connections only) and a connection description
for all connection types.

The code in os_calls to provide client logging has been simplified
somewhat which should make it easier to add new connection types (e.g.
AF_VSOCK).

The old connection_description field used to be passed to sesman to
inform sesman of the IP address of the client, and also to provide
a string for 'C' field session policy matching. 'C' field session policy
matching does not actually need this string (see #2239), and so now only
the IP field is passed to sesman.
2022-05-18 12:35:07 +01:00
matt335672
275eaf7683 Rework transport connect logic
There are a number of ways the existing transport connect logic in
trans_connect could be improved for POSIX compatibility, and also
slightly tidied up:-
1) The same socket is re-used for multiple connect attempts following
   failure which isn't behaviour defined by POSIX.1-2017 (although it
   works on Linux).
2) An asynchronous connect is started, and then after a short
   delay connect() is called again on the same socket. POSIX.1-2017
   is clear that in this situation EALREADY is returned before the
   connection is established, but is silent on the behaviour expected
   when the connection is established. Returning success is an option,
   but so is returning EISCONN. The current code assumes the connect()
   call will succeed.
3) The code contains two virtually identical, quite complex loops for
   TCP and UNIX sockets, differing only in the calls to create a socket
   and connect it.
4) trans_connect() contains looping and retry logic, but this isn't
   seen as sufficient by the chansrv connect code in xrdp/xrdp_mm.c and
   the Xorg connect code in xup/xup.c. Both of these implement their own
   looping and retry logic on top of the logic in trans_connect(),
   resulting in slightly unpredictable behaviour with regard to
   timeouts.
5) A socket number can technically be zero, but in a couple of places
   this isn't allowed for.

This PR attempts to correct the implementation of trans_connect(),
and also to simplify the areas it is called from.

As part of the PR, the signature of the server_is_term member of the
xrdp module interface is changed to match the signature expected by the
is_term member of a struct trans. This allows for trans_connect()
in xrdp modules to directly access g_is_term() within the main xrdp
executable. At the moment this functionality is only used by the xup
module.
2022-03-31 20:48:07 +01:00
matt335672
d2be050911 Fix neutrinordp regression caused by bd9147d18f 2022-03-29 10:40:32 +01:00
matt335672
0416d32114 Neutrinordp: Add more user info on connect failure 2021-11-25 15:45:17 +00:00
matt335672
b2e39049cb Make msg arg to server_msg() consistently const 2021-11-25 13:26:51 +00:00
matt335672
0b5445b676 Remove unnecessary error from neutrinordp log 2021-10-12 14:37:28 +01:00
matt335672
fd4f19e40a Move erroneous parameter processing section 2021-07-20 12:42:37 +01:00
TOMATO-ONE
e3ffad77ca neutrinordp: Allow fixed keyboard lauout information to be sent to remote. #1933 2021-07-20 01:08:45 +09:00
TOMATO-ONE
e0a482fbfc neutrinordp: Allow keyboard layout information to be sent to remote. #1933 2021-07-20 00:10:53 +09:00
matt335672
20ec03dbe0
Merge pull request #1900 from matt335672/issue1885
Rework VNC text clipboard interface (#1900)
2021-07-07 09:22:57 +01:00
TOMATO-ONE
c9bab54f76 Allow users or administrators to configure the mstsc experience settings. 2021-06-26 20:56:39 +09:00
matt335672
949a81443b Add server_chansrv_in_use() to module interface 2021-06-08 14:11:17 +01:00
matt335672
148000c46b
Merge pull request #1899 from TOMATO-ONE/neutrinordp_add_channel
Allow common channel settings to be overridden for modules as well as chansrv (#1899)
2021-05-28 11:22:08 +01:00
matt335672
52a52daddd Split development option into separate things 2021-05-28 10:57:12 +01:00
TOMATO-ONE
604fa30083 Common channel settings can be overridden for each session type in NeutrinoRDP. 2021-05-27 23:53:30 +09:00
matt335672
b95e14ed2e Removed extra space, breaking astyle check 2021-05-26 09:47:04 +01:00
matt335672
ce10d3a1a8
Merge pull request #1879 from aquesnel/check_formatting
Add checking the code formatting with astyle during CI builds (#1879)
2021-05-26 09:14:59 +01:00
TOMATO-ONE
c6fcb16361 Log the IP address, port, and user name of the NeutrioRDP Proxy connection. #1873
Add comments to [vnc-any] and [neutrinordp-any] secion in xrdp.ini.in .

Logging NeurionoRDP Proxy disconnect.
2021-05-12 22:28:07 +09:00
Alexandre Quesnel
52707ac686 Fixing formatting with astyle 2021-05-08 16:58:11 +00:00
Koichiro IWAO
217edb141d
neutrinolabs: do not log valid parameters as unknown 2021-04-30 00:38:44 +09:00
Koichiro IWAO
aad14384cc
neutrinordp: avoid pampassword leakage
The leakage does not occur in the most usual use case of xrdp.
It occurs in NeutrinoRDP proxy mode with PAM authentication enabled.

Reported by @TOMATO-ONE
2021-04-29 22:16:31 +09:00
Christopher Pitstick
deb66ce766 Resolution switching without reconnecting.
- Based on https://github.com/jsorg71/xrdp/tree/dynamic_monitor
- Tested with xorgxrdp
- Tested with vnc
- Only works with single monitor.
- Update documentation to clarify the difference between MSTSC and
Microsoft Remote Desktop.
- Does not include compatibility with /gfx at this time, which is still
in testing.
- Updates to include ms-rdpedisp.h header for the 2.2.2 specification of
the protocol.
- Adds new dynamic_monitor_layout struct that shares the number of
monitors with xrdp_client_info.h
- Does not allow for BPP changes because the RDP protocol doesn't
support it.
- Option to disable feature as NeutrinoRDP doesn't support it (It was
based on FreeRDP 1.0.1 which didn't yet have this feature.)
- Add CLIENT_MONITOR_DATA_MAXIMUM_MONITORS constant and reference
spec definition.

Depends on https://github.com/neutrinolabs/xorgxrdp/pull/183
2021-04-22 01:34:03 -04:00
aquesnel
920d1c8331
Unify logging in neutrinordp/* (#1807)
Migrate logging to LOG() and LOG_DEVEL() in neutrinordp/* (#1807)
2021-02-22 09:48:55 +00:00
matt335672
5523847540 Allow FuseMountName for chansrv to be absolute path 2020-12-21 12:36:31 +00:00
Matt Burt
1f8bb57fd6 Improve source_info commenting and fix neutrino slow link 2020-10-20 09:55:17 +01:00
matt335672
23b58aeb70 Fix compilation warnings/errors in xrdp-neutrinordp.c 2020-09-07 09:38:23 +01:00
bolkedebruin
5cd36c511c Set max character buffer len to 512 per MS specification
The MS specs determine that the character buffer lenngths
for usernames, domains, passwords, alternate shells, etc
can be up to 512 characters including the mandatory null
terminator.
2020-08-17 10:35:35 +02:00
Jay Sorg
eb56683df0 update the module version 2019-04-25 14:54:25 -07:00
Jay Sorg
c3f7f6bd84 neutrinordp: implement suppress output 2019-04-25 14:54:25 -07:00
daixj
fcb1b825c5 neutrinordp: don't enable remote_app if the INFO_RAIL flag is not set 2018-11-23 17:18:26 +08:00
cocoon
84c160725a workaround for corrupted display with W2K8
workaround for corrupted display like black bars left of cmd with W2K8
2017-12-18 10:39:42 +09:00
Pavel Roskin
6ed4c969f4 Eliminate APP_CC and DEFAULT_CC 2017-03-14 00:21:48 -07:00
Pavel Roskin
b2d3dcf169 Include config_ac.h from all source files 2017-03-04 00:52:34 -08:00
speidy
264aad7603 neutrinordp: add session_info 2017-01-15 08:24:59 +02:00
Pavel Roskin
b8ed23daab Constify the value argument to mod_set_param 2017-01-11 11:59:11 -08:00
Pavel Roskin
f25659d2ee Suppress versioning for modules, tell libtool they are modules
Versioning is for libraries. Modules are not libraries; no code is linked
against them.

Libtool makes sure the modules can be opened by dlopen(). That is already
true for ELF format, but other file formats may need special processing.
2017-01-06 10:52:44 -08:00
volth
26a26ef906 fix build with --enable-xrdpdebug=yes 2017-01-04 19:20:44 +00:00
Pavel Roskin
c21b9a78f4 Distribute all files except git and github specific data
It is better to distribute a few useless file than not to distribute
needed files.
2016-12-18 00:00:11 -08:00
Pavel Roskin
0422734fc7 Merge EXTRA_DEFINES and EXTRA_INCLUDES into AM_CPPFLAGS
AM_CPPFLAGS is a documented Automake variable for C preprocessor flags
that should not be overridden when compiling the package.

There is no need to have two additional variables that are ultimately
merged into AM_CPPFLAGS.

Their names are also confusing. EXTDA_DIST is a documented Automake
variable. Everything else that starts with "EXTRA" is not.
2016-10-20 10:43:02 -07:00
Pavel Roskin
ace7d2c822 Declare unified module interface and use it in modules
This fixes loading modules compiled with a C++ compiler. Remote thandle
type, it's unused. Use tintptr for module data. Don't cast pointers to
long, they won't fit on Win64.
2016-07-08 05:09:09 +00:00
Pavel Roskin
6ab8c5ac6e Don't include X11/Xlib.h for XPoint, define a replacement
XRDP modules are not X11 clients and should not generally need X11
headers. There is no need to match the X11 structure.
2016-07-08 04:29:48 +00:00
Pavel Roskin
aeeb3d2c2e Fix warnings detected by -Wwrite-strings 2016-07-08 04:29:42 +00:00
Pavel Roskin
77b380c0b5 Fix format warnings in log_message() calls 2016-06-21 16:30:16 -07:00
speidy
80b91c0a7b neutrinordp: indentation fixes 2016-05-12 19:02:05 -04:00
speidy
a42cb4842c neutrinordp:
o support for passing domain name to module, using
xrdp.ini module specific parameter
o reduce rail trace logging
2016-05-12 17:22:18 -04:00
speidy
551d7dd58f neutrinordp: support for 32 to 16 bitmap conversion 2016-05-12 17:22:07 -04:00
speidy
f20e06ff42 neutrinordp: added 16bpp to 32bpp pixel color conversion 2016-05-12 17:21:15 -04:00
speidy
eb2bbcfc9f neutrinordp: set nla, program parameters from preamble 2016-05-12 17:20:50 -04:00
Pavel Roskin
ca9cbcafc8 Typo fixes 2016-05-04 23:33:30 -07:00
Pavel Roskin
59a5fb0ddb Move headers from EXTRA_DIST to sources, sort alphabetically
There should be no functional difference.
2016-02-21 23:06:48 -08:00