for operating systems other than GNU/Linux.
mcookie is a part of util-linux. Usually only GNU/Linux systems have it.
Do not die even if mcookie is not found. Use the previous pure perl code
to generate cookie as fallback.
Support both defaults and mandatory system config files
This commit introduces support for optional basic system-wide
configuration of vncserver.
The format and syntax of /etc/tigervnc/vncserver* match
that of $HOME/.vnc/config exactly.
Allows /etc/tigervnc/vncserver-config-defaults as well as
/etc/tigervnc/vncserver-config-mandatory. The former is optional
and sets user-overrideable vncserver settings. The latter is
optional, but if it exists takes precedence over all user
$HOME/.vnc/config settings of the same setting name. In the
case where /etc/tigervnc/vncserver-config-mandatory overrides
a setting in $HOME/.vnc/config, the user will be warned that
it has happened.
WARNING: Settings in /etc/tigervnc/vncserver-config-mandatory
are easily subverted by passing args to vncserver on the CLI.
The man page indicates this warning.
This commit also introduces (should have been separate) examination
of all config file settings (not just @ARGV!) when determining
whether or not $HOME/.vnc/passwd needs to be created. That is,
if /etc/tigervnc/vncserver* or $HOME/.vnc/config indicate that
we are NOT using VNC-native authentication, then we don't need
a $HOME/.vnc/passwd created.
Code cleanup:
$xstartup was renamed $xstartupFile for consistency with other
"file" variable names.
For VNC-auth checking, to determine if $HOME/.vnc/passwd needed
creation, the 3-string check against lc($arg2) was in 2 places
and was changed to a simple grep against the new @vncAuthStrings
Old harmless copy/paste from code above left code confusing as it was reusing the filehandle "XSTARTUP" to write out $vncUserDir/config. This new small change uses a more topical filehandle name for the task at hand.
Launch vncconfig directly from vncserver, not from xstartup. Justification: vncconfig is necessary to enable basic functionality of the TigerVNC system (clipboard transfer, most notably.) It isn't always going to be in the PATH, and in fact, there might be more than one version of it on the system (for instance, a version from RealVNC in /usr/bin and a version from TigerVNC in /opt/TigerVNC/bin.) If it is desirable to disable vncconfig under certain circumstances, then I would suggest adding a command-line option to vncserver to accomplish that.
Always look for the Java classes in ../vnc/classes first before looking in the system locations. This prevents TigerVNC from picking up the Java classes from a RealVNC installation.
Always exit Xvnc whenever the user exits the window manager, and provide a -fg switch to allow Xvnc to run in the foreground (necessary for some grid computing environments)
Change font path logic such that XFS is used if it is available and running, otherwise Xvnc is started with no -fp argument. If this fails, then Xvnc is restarted using the automatically-generated font path.
Attempt to build a reasonable font path for the system and start Xvnc with this font path. Failing that, attempt to use the X Font Server (xfs.) Note that XFS is not generally available on SuSE and Ubuntu, so it cannot be used as the default font path.
Better default xstartup file which attempts to launch the user's chosen window manager before falling back to twm. This is borrowed from TurboVNC 0.5.1.
Allow Xvnc, vncpasswd, etc. to be run from an arbitrary directory, even if the directory is not part of the PATH. Look for xauth in /usr/X11R6/bin to support older Linux systems.