blob: 0f07691490990a29bb559aaa7a8c86a4c8e6bcb9 (
plain) (
tree)
|
|
# Copyright (c) 2007..2008 - RZ Uni Freiburg
# Copyright (c) 2008 - OpenSLX GmbH
#
# This program/file is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
#
# If you have any feedback please consult http://openslx.org/feedback and
# send your feedback to feedback@openslx.org
#
# General information about OpenSLX can be found at http://openslx.org
#
# script is included from init via the "." load function - thus it has all
# variables and functions available
# check if the plugin config directory is generally available or if the client
# configuration failed somehow
[ -d /initramfs/plugin-conf ] || error "${init_picfg}" nonfatal
# function to add vnc functionality to xorg server
addvnc2xorg () {
sed -e '/^# autog/a# modified by x11vnc plugin (adding vnc module config)' \
-e '/\"Module\"/a\\ \ Load "vnc"' \
-e '/n \"Device\"/a\\ \ Option "usevnc" "yes"' \
-e '/n \"Device\"/a\\ \ Option "rfbauth" "/etc/X11/vncpasswd"' \
-e '/e \"Generic Mouse\"/a\\ \ InputDevice "VNC Keyboard" "ExtraKeyboard"' \
-e '/e \"Generic Mouse\"/a\\ \ InputDevice "VNC Mouse" "ExtraPointer"' \
-e '/\"CorePointer\"/ {
a\
EndSection\
Section "InputDevice"\
Identifier "VNC Keyboard"\
Driver "rfbkeyb"\
EndSection\
Section "InputDevice"\
Identifier "VNC Mouse"\
Driver "rfbmouse"
}' -i /mnt/etc/X11/xorg.conf
}
# main script
if [ -e /initramfs/plugin-conf/x11vnc.conf ]; then
. /initramfs/plugin-conf/x11vnc.conf
if [ $x11vnc_active -ne 0 ]; then
[ $DEBUGLEVEL -gt 0 ] && echo "executing the 'x11vnc' os-plugin ...";
# configure x11vnc user mode or framebuffer
if [ "$x11vnc_mode" = "x11user" -o "$x11vnc_mode" = "fb" ] ; then
# create config dir for stage 3
mkdir -p /mnt/etc/x11vnc
# default parameters
PARAMS="-bg -forever"
# client restrictions
if [ -z x11vnc_allowed_hosts ]; then
PARAMS="$PARAMS -allow $x11vnc_allowd_hosts"
fi
# mode
case "$x11vnc_mode" in
x11user)
PARAMS="$PARAMS -display :0"
X11VNC_X11=1
;;
fb)
PARAMS="$PARAMS -rawfb console"
;;
esac
# auth type
case "$x11vnc_auth_type" in
passwd)
# use x11vnc passwd style - recommended
echo "$x11vnc_pass" > /mnt/etc/x11vnc/passwd
echo "__BEGIN_VIEWONLY__" >> /mnt/etc/x11vnc/passwd
echo "$x11vnc_viewonlypass" >> /mnt/etc/x11vnc/passwd
# multiuser handling
sed -i "s/,/\n/" /mnt/etc/x11vnc/passwd
# add parameter to commandline
PARAMS="$PARAMS -passwdfile rm:/etc/x11vnc/passwd"
;;
rfbauth)
# use rfbauth
vncpasswd "$x11vnc_pass" > /mnt/etc/x11vnc/passwd
PARAMS="$PARAMS -rfbauth /etc/x11vnc/passwd"
;;
*)
# no password
PARAMS="$PARAMS -nopw"
;;
esac
# force viewonly
if [ "$x11vnc_force_viewonly" = "1" \
-o "$x11vnc_force_viewonly" = "yes" ]; then
PARAMS="$PARAMS -viewonly"
fi
# force localhost
if [ "$x11vnc_force_localhost" = "1" \
-o "$x11vnc_force_localhost" = "yes" ]; then
PARAMS="$PARAMS -localhost"
fi
# enable logging
if [ "$x11vnc_logging" = "1" -o "$x11vnc_logging" = "yes" ]; then
PARAMS="$PARAMS -o /var/log/x11vnc.log"
fi
# shared desktops
if [ "$x11vnc_shared" = "1" -o "$x11vnc_shared" = "yes" ]; then
PARAMS="$PARAMS -shared"
fi
# scale desktop
if [ "$x11vnc_scale" != "" ]; then
PARAMS="$PARAMS -scale $x11vnc_scale"
fi
# write config file
echo "# parameters generated by $0" > /mnt/etc/x11vnc/x11vnc.conf
echo "X11VNC_PARAMS=\"$PARAMS\"" >> /mnt/etc/x11vnc/x11vnc.conf
echo "X11VNC_X11=\"$X11VNC_X11\"" >> /mnt/etc/x11vnc/x11vnc.conf
rllinker "x11vnc" 30 10
[ $DEBUGLEVEL -gt 0 ] && echo "done with 'x11vnc' os-plugin ...";
# x11mod offers access to the running X server via module
elif [ "$x11vnc_mode" = "x11mod" ]; then
# password setting (use stage4 environment)
echo -e "$x11vnc_pass\n$x11vnc_viewonlypass" | chroot /mnt vncpasswd -f \
> /mnt/etc/X11/vncpasswd
( waitfor /mnt/etc/X11/xorg.conf 10000; addvnc2xorg ) &
fi
fi
else
[ $DEBUGLEVEL -gt 2 ] && \
echo "No configuration file found for x11vnc plugin."
fi
|