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.
SSL_CTX_set_ecdh_auto() was introduced for OpenSSL 1.0.2. It
has no effect for OpenSSL 1.1.0 and later. For versions before
1.0.2 and after (and including 1.1.0) it should not be called.
The macro was erroneously being called twice for OpenSSL 3.0.0 and
later - this has also been remedied
The code to determine the socket address of chansrv when using
a manually started xrdp-chansrv may need some help determining
the UID of the session.
This commit allows a UID to be optionally specified in the
DISPLAY() function, if the code is unable to determine the
UID automatically from the connection parameters.
If a manual chansrvport is entered, xrdp now logs what it is
connecting to, to assist in debugging.
Chansrv now checks for the user sockdir being present. If it
isn't, it connects to chansrv and requests it be created.
This also needs the sesman port to be added to the chansrv
config struct.
The sesman tools have some private functions to make syncronous calls
to sesman over SCP. This commit moves these calls to a new module
scp_sync in libipm so that they can be utilised by other parts of
xrdp (i.e. chansrv)