Commit Graph

32 Commits

Author SHA1 Message Date
matt335672 c9a2039858 Move and rename xrdp_load_keyboard_layout()
xrdp_load_keyboard_layout() is used exclusively by the xup module to
work out the parameters to pass to xorgxrdp for XKB. This function
does not need to be called locally from the SEC module.

This commit moves the function to xrdp/lang.c and renames it as
xrdp_init_xkb_layout(). The module interface is modified so that xup can
call this function. Other modules do not need to call it.
2024-08-05 10:44:10 +01:00
matt335672 ae836fb543 Update module interfaces with new calls for resizing
This commit DOES NOT compile.

This change alters these module interface calls:-
1) mod_server_monitor_resize() (Call from xrdp to module). Updated.
2) server_reset() (Call from module to xrdp). Replaced.

The mod_server_monitor_resize() call is updated :-
1) to allow a monitor list to be passed in for a multimon resize
2) with an 'in_progress' return value which tells the caller whether or
   not to expect a callback.

The server_reset() call served two purposes up until now:-
1) To allow a module to resize a single monitor session. There
   is no way to request a multi-monitor resize from the module
2) (with bpp == 0) To signal to the mm resize state machine that
   a server screen resize hsa finished.

This is split into two calls:-
1) client_monitor_resize() to allow a mdule to request a
   multimon resize.
2) server_monitor_resize_done(). This is called by a module
   when a resize is completed.
2024-02-15 16:48:13 +00:00
matt335672 8af430e197
Fix regression in using window message names (#2925)
FreeRDP defines macros WM_LBUTTONUP, WM_LBUTTONDOWN, WM_RBUTTONUP
and WM_RBUTTONDOWN. These conflict with the definitions we have in
xrdp_constants.h. Because the FreeRDP system includes followed the local
includes however, the compiler did not emit a diagnostic for this -
see gcc bug #16358.

This PR rearranges the includes for NeutrinoRDP so the macro
redefinitions are flagged by the compiler.
2024-01-31 19:06:59 -05:00
matt335672 5ed9b96530 Add missing include guards 2023-01-31 09:30:36 +00: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 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
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 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
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
Matt Burt 1f8bb57fd6 Improve source_info commenting and fix neutrino slow link 2020-10-20 09:55:17 +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
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 aeeb3d2c2e Fix warnings detected by -Wwrite-strings 2016-07-08 04:29:42 +00: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
Pavel Roskin ca9cbcafc8 Typo fixes 2016-05-04 23:33:30 -07:00
Pavel Roskin f8cb1588ef Replace "charactor" with "character" everywhere 2016-01-30 17:33:04 -08:00
Jay Sorg 4a553e07af update the module API 2015-07-10 21:57:04 -07:00
Jay Sorg 89cbe76f57 neutrinordp: minor changes, coding style, log level
Conflicts:
	neutrinordp/xrdp-neutrinordp.c
	neutrinordp/xrdp-neutrinordp.h
2014-05-20 01:36:53 +03:00
Jay Sorg 2aad1b2d5d work on neutrinordp proxy, cursor and glyph 2013-06-23 21:17:14 -07:00
Jay Sorg 862ee8b914 started adding neutrinordp module 2013-05-03 00:37:11 -07:00