Commit c9a2039858 moved the
keyboard functionality associated with the XKB module used by
XUP to a separate module. This prevented the setting of
xrdp.override_keylayout in the config from working on the
login screen and VNC sessions. This commit restores the
override functionality to non-XUP sessions.
xrdp-droppriv.c is erroneously including os_calls.c rather than
os_calls.h
This leads to a link failure on Ubuntu 20.04:-
/usr/bin/ld: xrdp-droppriv.o: undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
The error does not happen with later glibc versions, as libdl is
included in libc for these versions.
(cherry picked from commit b914d3e997ee70544db5fd2e28509bbcae32ddc6)
This is required, as on Debian, pam_limits is not automatically included
for common sessions, and only for "login" sessions and session managers.
So, xrdp has to include it explicitly to make limits take effect.
See https://wiki.debian.org/Limits for details.
This seems a better fit than having it in the [Chansrv] section.
Also fixed a minor logging error relating to the parameter in
chansrv_config.c
(cherry picked from commit 6d2fd1be8451418f01dfbb203929e2838c1a979f)
This is useful for NFS-mounted home directories, where hosts
may otherwise produce colliding chansrv log file names
(cherry picked from commit cfc2e362b47103bc2c786252f331bb26b6ddecb5)
While here, drop exec permission from xrdp-chkpriv.in. The exec
permission will be granted to substituted xrdp-chkpriv script
during `make install` process.
Commit 80fab03198 introduced a way to
prevent waitforx going to the network when trying to open a display,
and hence potentially blocking.
This method turned out to be invalidated by libxcb version 1.16 and
1.17
This change adds an explicit check that the Unix socket for the display
in /tmp/.X11-unix/Xn is open before trying to connect to display ':n'.
This has the same effect.
1) Changed alarm message from "Timed out waiting for RandR outputs" to
"Timed out waiting for X display". The former was confusing, and the
times where this message was triggered were nothing to do with
RandR
2) Don't try to open a display of the form ":n" or ":n.m" directly
(n,m >= 0). If the X server hasn't yet opened its local socket,
the XOpenDisplay() call can go to the network and possibly block
for a long time. Instead, use the (undocumented) "unix:n" display
specification, whih never goes to the network, and doesn't block.
The mismatched versions are now displayed to the user rathe than being
buried in the log. This should aid fault reporting and help users find
distro-introduced problems with an Internet search.
This commit adds a stage into the Xorg connection status to wait for
the capabilities message from the Xorg server. This allows us to move
the xorgxrdp version check to xrdp from the X server for better
reporting to the user.
The login screen uses hardcoded scancode values to identify particular
keys. This is changed for the backspace key for Colemak support, as
the caps lock key has been re-purposed as a backspace key. We now
identify a backspace request by looking at the keysym for the key.
The Colemak keyboard does not have a Caps Lock key:-
1) Keyboard files have a caps_lock_supported flag added to the [General]
section. This is set to false if the keyboardlayout does not have a
Caps Lock key.
2) The caps_lock_supported flag is parsed when reading keymap files
for the login screen/VNC.
3) The flag is also checked when telling xorgxrdp what the scancode for
the caps lock key is.
Colemak is unusual in that it doesn't have a Caps Lock key.
This means we don't need to generate capslock sections in the keymap
file. We add a flag to the keymap file [General] section to indicate
these sections are missing.
A change is also made to the way the Dvorak keymap file (00010409) is
generated, for consistency with Colemak.
Chromium 130 won't save to our filesystem if we don't return a
max filename length.
Dummy parameters were tried for inode counts, but these do not seem to
be necessary. Not also that btrfs foes not return values for these
fields.