[FreeNX-kNX] Working Cups printing with Fedora core5
Marcel kraan
marcel at kraan.net
Mon Nov 27 17:56:29 UTC 2006
Yes we must change a vew things.
But the nxnode script is also working on fedora core 6
with cups 1.1 and nxclient 1.5 running
Alastair Johnson wrote:
> Thanks for getting this all together in one post. I have a couple of
> clarifications that might save somebody some trouble.
>
> 1. You need cups 1.1.x for this to work. Many FC5 users will now have cups
> 1.2.x because yum will have updated it. These users will need to downgrade to
> 1.1.x and add cups* to the exclude line in /etc/yum.conf until we can work
> out how to support cups 1.2.x. This applies to other distros too.
>
> 2. The method of determining $printhost described below is fedora-specific.
> Using 'hostname' or 'uname -n' should work more generally. Unfortunately the
> hostname is sometimes present in /etc/hosts against the localhost address, so
> the name may still resolve to localhost. To cover this I think we should have
> $printhost as an option in node.conf and only use the hostname if this isn't
> set.
>
> I don't like the 'kill all processes for this user' idea, but I don't have a
> better solution at the moment.
>
> On Monday 27 November 2006 13:59, Marcel kraan wrote:
>> changed nxnode:
>> NXNODE - Version 1.5.0-50 OS (GPL)
>>
>>
>> I have here a complete working nxnode script for fedora core5.
>> I have added many extras and changed some functions
>>
>>
>> 1.
>> This is add on the end of the node_terminate_session function:
>> This will clean up the userspace on the server.
>> All processes will be killed. not clean but very efective
>>
>> # quickkill script by marcel at kraan.net
>> if [ "$USER" != "root" ]; then
>> /bin/kill -9 `ps axuw |grep $USER | /bin/awk '{print $2}'`
>>
>> fi
>>
>>
>>
>> 2.
>> At the srat of the session i have added the IPP_PORT section
>> This is for printing NON kde applications
>>
>> # ok, lets make the session dir first:
>>
>> sess_id="$SERVER_NAME-$display-$uniqueid"
>> [ "$EXPORT_SESSIONID" = "1" ] && export NXSESSIONID="$sess_id"
>>
>>
>> ###########################################################################
>> ############## # added by marcel at kraan.net added to the environment for
>> printing non kde applications # this is not working in the add_printer
>> function
>> IPP_PORT=$(node_cupsd_get_port)
>> export IPP_PORT
>>
>> ###########################################################################
>> ##############
>>
>> 3.
>> I have added this part for the cups printing
>> Cups printing works only when you print to your hostname on the server and
>> not to localhost
>>
>> Alastair thinks the change from localhost to actual hostname is needed
>> because CUPS uses token-based authentication for localhost instead of the
>> usual challenge-response methods. Normally this is fine, but since we are
>> port-forwarding to a non-local cups we need the challenge-response, so we
>> need something that resolves to the local machine but isn't localhost (or
>> 127.0.0.1 for that matter)
>>
>>
>> #################################################################
>> # by marcel at kraan.net and Alastair Johnson
>> # get the server hostname cups printing could not via localhost
>>
>> if [ -f /etc/sysconfig/network ] ; then
>> . /etc/sysconfig/network
>> if [ "$NETWORKING" = "yes" ] ; then
>> printhost="$HOSTNAME"
>> else
>> printhost="localhost"
>> fi
>> fi
>>
>> if [ "$type" = "smb" ]
>> then
>>
>> DEVICE_URI="smb://$username:$password@$printhost:$port/$share"
>> NAME="$share"
>> else
>>
>> DEVICE_URI="ipp://$username:$password@$printhost:$port/printers/$printer"
>> NAME="$printer"
>> fi
>>
>> MODEL=$($PATH_BIN/nxclient -printer "$NAME" -display :$display)
>> [ -z "$MODEL" -o "$MODEL" = "cancel: aborted" ] && return
>>
>> PUBLIC="-u allow:$USER"
>> [ "$public" == "1" ] && PUBLIC=""
>> /usr/sbin/lpadmin -p "$NAME" -E -v "$DEVICE_URI" -m "$MODEL"
>> $PUBLIC [ "$defaultPrinter" = "1" ] && /usr/sbin/lpadmin -d "$NAME"
>>
>> #################################################################
>>
>>
>>
>>
>> 4.
>> At his place i post the entire nxnode script.
>> The smbmounting is still not working well and clean.
>>
>>
>> #!/bin/bash
>>
>> # Free implementation of nxserver components
>> #
>> # nxnode does accept (for now):
>> #
>> # --startsession
>> # --terminate
>> # --smbmount
>> # (smbmount is not implemented yet)
>> #
>> # Copyright (c) 2004 by Fabian Franz.
>> #
>> # License: GNU GPL, version 2
>> #
>> # CVS: $Id: nxnode,v 1.77 2005/08/02 15:20:18 fabianx Exp $
>> #
>> # 21.06.2004: - Full reconnection support
>>
>> # Read the config file
>> . $(PATH=$(cd $(dirname $0) && pwd):$PATH which nxloadconfig) --userconf
>>
>> echo "NX> 1000 NXNODE - Version $NX_VERSION $NX_LICENSE"
>>
>> if [ "$1" != "--check" -a "$1" != "--setkey" -a "$1" != "--agent" ]
>> then
>> read CMDLINE
>>
>> CMDLINE="a=b&$CMDLINE"
>> fi
>>
>> # --------
>>
>> # following two functions are Copyright by Klaus Knopper
>>
>> # same for strings
>> stringinstring(){
>> case "$2" in *$1*) return 0;; esac
>> return 1
>> }
>>
>> # Reread boot command line; echo last parameter's argument or return false.
>> getparam(){
>> stringinstring "&$1=" "$CMDLINE" || return 1
>> echo "$CMDLINE" | tr "&" "\n" | egrep "^"$1"=" | awk -F= '{ VAL=$2 } END {
>> print VAL }' return 0
>> }
>>
>> find_app()
>> {
>> set -- $*
>> which $1 2>/dev/null
>> }
>>
>> getparam_user()
>> {
>> [ $UID -eq 0 ] && echo $(getparam user)
>> [ $UID -eq 0 ] || $(whoami)
>> }
>>
>> node_abort()
>> {
>> echo "$@" 1>&2
>> exit 1
>> }
>>
>> getparam_sessionid()
>> {
>> sessionid=$(getparam sessionid)
>>
>> [ -n "$sessionid" ] || sessionid=$(getparam session_id)
>> [ -n "$sessionid" ] || node_abort "NX> 500 Error: missing parameter
>> session id" echo $sessionid
>> }
>>
>>
>> node_terminate_agent()
>> {
>> AGENT_PID=$(cat $USER_FAKE_HOME/.nx/C-$1/pids/agent 2>/dev/null)
>> [ -n "$AGENT_PID" ] && kill $AGENT_PID 2>/dev/null
>> }
>>
>> node_terminate_session()
>> {
>> [ -d "$USER_FAKE_HOME/.nx/C-$1/" ] || return
>> AGENT_PID=$(cat $USER_FAKE_HOME/.nx/C-$1/pids/agent 2>/dev/null)
>> if [ -n "$AGENT_PID" ]
>> then
>> kill $AGENT_PID 2>/dev/null
>> if ! [ "$virtualdesktop" = "0" -a "$rootless" != "1" ]
>> then
>> sleep 1
>> kill -0 $AGENT_PID 2>/dev/null && kill -9 $AGENT_PID 2>/dev/null
>> fi
>> fi
>> # remove possible leftover display ...
>> display=$(echo $1 | rev | cut -d"-" -f2 | rev)
>> rm -f /tmp/.X$display-lock
>> rm -f /tmp/.X11-unix/X$display
>>
>> # remove cookie
>> $COMMAND_XAUTH -v source $USER_FAKE_HOME/.nx/C-$1/scripts/authority
>>> /dev/null 2>&1 [ "$SESSION_LOG_CLEAN" = "1" ] && rm -rf
>> $USER_FAKE_HOME/.nx/C-$1/ [ "$SESSION_LOG_CLEAN" = "0" -a "$2" = "failed" ]
>> && mv $USER_FAKE_HOME/.nx/C-$1/ $USER_FAKE_HOME/.nx/F-C-$1/ [
>> "$SESSION_LOG_CLEAN" = "0" -a "$2" != "failed" ] && mv
>> $USER_FAKE_HOME/.nx/C-$1/ $USER_FAKE_HOME/.nx/T-C-$1/
>>
>> # quickkill script by marcel at kraan.net
>> if [ "$USER" != "root" ]; then
>> /bin/kill -9 `ps axuw |grep $USER | /bin/awk '{print $2}'`
>>
>> fi
>>
>>
>> }
>>
>> node_fail_restore_session()
>> {
>> echo "NX> 1004 Error: Could not resume session. nxagent process could not
>> be found." node_terminate_session "$sess_id" "failed"
>> exit 1
>> }
>>
>> node_suspend_session()
>> {
>> AGENT_PID=$(cat $USER_FAKE_HOME/.nx/C-$1/pids/agent 2>/dev/null)
>> if [ -n "$AGENT_PID" ]
>> then
>> kill -0 $AGENT_PID || return 1
>> kill -HUP $AGENT_PID && return 0
>> fi
>> return 1
>> }
>>
>> # ---------
>> #stringinstring "$CMD"
>>
>> node_start_applications()
>> {
>> # close input and output file descriptors
>> exec 0<&-
>> exec 1>&-
>> exec 2>&-
>>
>> . /etc/profile
>> [ -f ~/.bash_profile ] && . ~/.bash_profile
>>
>> mkdir -p $USER_FAKE_HOME/.nx/C-$sess_id/pids/
>>
>> STARTX=""
>> case $type in
>> unix-kde)
>> STARTX=$COMMAND_START_KDE
>> ;;
>> unix-gnome)
>> STARTX=$COMMAND_START_GNOME
>> ;;
>> unix-cde)
>> STARTX=$COMMAND_START_CDE
>> ;;
>> unix-application)
>> [ "$application" = "xterm" ] && application="$COMMAND_XTERM"
>> STARTX=$application
>> ;;
>> unix-default)
>> if [ -x "$HOME/$USER_X_STARTUP_SCRIPT" ]; then
>> STARTX="$HOME/$USER_X_STARTUP_SCRIPT"
>> elif which "$DEFAULT_X_SESSION" >/dev/null 2>&1 ; then
>> STARTX="$DEFAULT_X_SESSION"
>> fi
>> ;;
>> esac
>> [ -n "$STARTX" ] || return
>>
>> if [ "$mediahelper" = "esd" ]
>> then
>> # Set Espeaker variable
>> let ESPEAKER=$display+7000
>> export ESPEAKER="127.0.0.1:$ESPEAKER"
>>
>> # Do not spawn new ESD daemons
>> export ESD_NO_SPAWN="yes"
>>
>> # Check for config file directive
>> if [ "$ENABLE_ESD_PRELOAD" = "1" -a -x "$(find_app $ESD_BIN_PRELOAD)" ]
>> then
>> STARTX="$ESD_BIN_PRELOAD $STARTX"
>>
>> echo "Info: NXNODE - Using $ESD_BIN_PRELOAD wrapper script." >>
>> $USER_FAKE_HOME/.nx/C-$sess_id/session fi
>> elif [ "$mediahelper" = "artsd" ]
>> then
>> # Overwrite users mcoprc
>> echo -n "GlobalComm=Arts::X11GlobalComm" > $HOME/.mcoprc
>> if [ "$ENABLE_ARTSD_PRELOAD" = "1" -a -x "$(find_app $ARTSD_BIN_PRELOAD)"
>> ] then
>> STARTX="$ARTSD_BIN_PRELOAD $STARTX"
>> echo "Info: NXNODE - Using $ARTSD_BIN_PRELOAD wrapper script." >>
>> $USER_FAKE_HOME/.nx/C-$sess_id/session fi
>> fi
>>
>> [ "$virtualdesktop" = "0" -a "$rootless" != "1" ] && export
>> LD_PRELOAD="$APPLICATION_LIBRARY_PRELOAD:$LD_PRELOAD" if [
>> "$virtualdesktop" = "1" -a "$type" = "unix-application" -a "$DEFAULT_X_WM"
>> != "" -a -x "$(find_app $DEFAULT_X_WM)" ] then
>> DISPLAY=unix:$display $DEFAULT_X_WM
>>>> $USER_FAKE_HOME/.nx/C-$sess_id/session 2>&1 & WM_PID=$!
>> fi
>> DISPLAY=unix:$display $STARTX >>$USER_FAKE_HOME/.nx/C-$sess_id/session
>> 2>&1 & APP_PID=$!
>> mkdir -p $USER_FAKE_HOME/.nx/C-$sess_id/pids/
>> echo "$APP_PID" > $USER_FAKE_HOME/.nx/C-$sess_id/pids/applications
>> wait $APP_PID
>> if [ -n "$WM_PID" ]
>> then
>> # kill the WM after application is finished?
>> [ "$KILL_DEFAULT_X_WM" = "1" ] && kill $WM_PID 2>/dev/null
>> # or just wait until it finishes?
>> [ "$KILL_DEFAULT_X_WM" = "1" ] || wait $WM_PID
>> fi
>> rm -f $USER_FAKE_HOME/.nx/C-$sess_id/pids/applications
>>
>> # Do not terminate agent in case of rootless agent mode.
>> # The agent times out after a while by itself anyway.
>> [ "$virtualdesktop" = "1" -o "$rootless" != "1" ] && node_terminate_agent
>> $sess_id }
>>
>> node_start_agent()
>> {
>> # Ok, now we do some wicked fd magic.
>> #
>> # first part:
>> #
>> # nxagent's fd #2 -> fd #3
>>
>> # second part:
>> #
>> # fd #1 -> #4
>> # fd #3 -> #1
>> # tee | node_start_monitor
>>
>> # third part
>> # fd #4 -> #1
>>
>> # => all output of nxagent goes to tee | node_start_monitor, while
>> # leaving all other output flow through like normally.
>>
>> # preparations
>> exec 3>&2
>> exec 4>&1
>>
>> {
>>
>> {
>>
>> export
>> DISPLAY="nx/nx,options=$USER_FAKE_HOME/.nx/C-$sess_id/options:$display"
>> export XAUTHORITY="$USER_FAKE_HOME/.nx/C-$sess_id/authority"
>> export HOME="$USER_FAKE_HOME"
>>
>> # backwards compatibility
>> K=""
>> [ -n "$keyboard" ] && K="-keyboard $keyboard"
>> [ -n "$kbtype" ] && K="-kbtype $kbtype"
>> B=""
>> [ -n "$backingstore" -a "$ENABLE_2_0_0_BACKEND" != "1" ] && B="-bs
>> $backingstore" G=""
>> [ -n "$geometry" ] && G="-geometry $geometry"
>> R="-D"
>> [ "$rootless" = "1" ] && R="-R"
>> vncfullscreen=""
>> [ "$geometry" = "fullscreen" -a "$type" = "vnc" ] &&
>> vncfullscreen="-fullscreen" && G="" [ "$geometry" = "fullscreen" -a "$type"
>> = "windows" ] && G="-geometry `echo $screeninfo | cut -d"x" -f1,2`"
>>
>> if [ "$type" = "windows" ]
>> then
>> # nxdesktop session (Windows RDP)
>> [ "$SET_LD_LIBRARY_PATH" = "1" ] && export
>> LD_LIBRARY_PATH="$AGENT_LIBRARY_PATH:$LD_LIBRARY_PATH" U=""
>> P=""
>> D=""
>> [ -n "$agent_user" ] && U="-u $agent_user"
>> [ -n "$agent_password" ] && P="-p -"
>> [ -n "$agent_domain" ] && D="-d $agent_domain"
>> echo "$agent_password" | $PATH_BIN/nxdesktop -name "NX -
>> $user@$SERVER_NAME:$display - $session (GPL Edition)" -option
>> "$USER_FAKE_HOME/.nx/C-$sess_id/options" $K $G $U $P $D $agent_server
>> $AGENT_EXTRA_OPTIONS_RDP 2>&3 & elif [ "$type" = "vnc" ]
>> then
>> # nxviewer session (VNC RFP)
>> [ "$SET_LD_LIBRARY_PATH" = "1" ] && export
>> LD_LIBRARY_PATH="$AGENT_LIBRARY_PATH:$LD_LIBRARY_PATH" mkdir -p
>> $USER_FAKE_HOME/.nx/C-$sess_id/scripts/
>> echo "$agent_password" | $PATH_BIN/nxpasswd
>> $USER_FAKE_HOME/.nx/C-$sess_id/scripts/.passwd doit $PATH_BIN/nxviewer
>> -encodings tight hextile copyrect raw -passwd
>> $USER_FAKE_HOME/.nx/C-$sess_id/scripts/.passwd -name "NX -
>> $user@$SERVER_NAME:$display - $session (GPL Edition)" -option
>> "$USER_FAKE_HOME/.nx/C-$sess_id/options" $vncfullscreen $G $K $agent_server
>> $AGENT_EXTRA_OPTIONS_RFB 2>&3 &
>> elif [ "$R" = "-R" -a "$rootless" != "1" ]
>> then
>> # nxproxy single application mode session
>> [ "$SET_LD_LIBRARY_PATH" = "1" ] && export
>> LD_LIBRARY_PATH="$PROXY_LIBRARY_PATH:$LD_LIBRARY_PATH" $PATH_BIN/nxproxy -C
>> :$display $PROXY_EXTRA_OPTIONS 2>&3 &
>> else
>> # nxagent session (X11)
>> [ "$SET_LD_LIBRARY_PATH" = "1" ] && export
>> LD_LIBRARY_PATH="$AGENT_LIBRARY_PATH:$LD_LIBRARY_PATH" P="-nopersistent"
>> OLD_IFS=$IFS
>> IFS=","
>> [ "$ENABLE_PERSISTENT_SESSION" = "all" ] && P="-persistent"
>> [ "$ENABLE_PERSISTENT_SESSION" = "all" ] || for USERNAME in
>> $ENABLE_PERSISTENT_SESSION; do [ "${USERNAME:0:1}" != "@" ] && [ "$USER" =
>> "$USERNAME" ] && P="-persistent" && break ; [ "${USERNAME:0:1}" = "@" ] &&
>> [ -z $(groups "$USER" | egrep "^${USERNAME:1}:") ] && P="-persistent" &&
>> break ; done
>> for USERNAME in $DISABLE_PERSISTENT_SESSION; do
>> [ "${USERNAME:0:1}" != "@" ] && [ "$USER" = "$USERNAME" ] &&
>> P="-nopersistent" && break ; [ "${USERNAME:0:1}" = "@" ] && [ -z $(groups
>> "$USER" | egrep "^${USERNAME:1}:") ] && P="-nopersistent" && break ; done
>> IFS=$OLD_IFS
>> FP=""
>> [ -n "$AGENT_FONT_SERVER" ] && FP="-fp $AGENT_FONT_SERVER"
>> PATH="$PATH_BIN:$PATH" $PATH_BIN/nxagent $P $R -name "NX -
>> $user@$SERVER_NAME:$display - $session (GPL Edition)" -option
>> "$USER_FAKE_HOME/.nx/C-$sess_id/options" $K $G $B $FP :$display
>> $AGENT_EXTRA_OPTIONS_X 2>&3 & fi
>> PID=$!
>> mkdir -p $USER_FAKE_HOME/.nx/C-$sess_id/pids/
>> echo "$PID" > $USER_FAKE_HOME/.nx/C-$sess_id/pids/agent
>> wait $PID
>> AGENT_EXIT_STATUS=$?
>> failed=""
>> if [ $AGENT_EXIT_STATUS -ne 0 ]
>> then
>> echo "NX> 1004 Error: NX Agent exited with exit status 1."
>> failed="failed"
>> fi
>> echo "NX> 1006 Session status: closed"
>>
>> rm -f $USER_FAKE_HOME/.nx/C-$sess_id/pids/agent
>> node_terminate_session "$sess_id" $failed
>>
>> # remove possible leftovers of nxagent
>> rm -f /tmp/.X$display-lock
>> rm -f /tmp/.X11-unix/X$display
>> } 3>&1 1>&4 | tee $USER_FAKE_HOME/.nx/C-$sess_id/session |
>> node_start_monitor; } 4>&1 }
>>
>> node_kill_proxy()
>> {
>> # Info: Proxy running in server mode with pid '5279'.
>> PROXY_PID=$(grep "Info: Proxy running in server mode with pid"
>> $USER_FAKE_HOME/.nx/C-$1/session | cut -d"'" -f2) sleep 2
>> [ -n "$PROXY_PID" ] && kill $PROXY_PID 2>/dev/null
>> }
>>
>> node_cupsd_stop()
>> {
>> [ -e "$USER_FAKE_HOME/.nx/C-$sess_id/pids/cupsd" ] || return
>> NODE_CUPSD_PID=$(cat "$USER_FAKE_HOME/.nx/C-$sess_id/pids/cupsd")
>> # Check for a running userspace cupsd, look if its still active
>> # and kill it if so
>> ( [ -n "$NODE_CUPSD_PID" ] && kill -0 $NODE_CUPSD_PID && kill
>> $NODE_CUPSD_PID && sleep 2 && kill -0 $NODE_CUPSD_PID && kill -9
>> $NODE_CUPSD_PID ) 2>/dev/null
>> # delete pid file
>> rm -f "$USER_FAKE_HOME/.nx/C-$sess_id/pids/cupsd"
>> # remove all printers
>> echo >"$USER_FAKE_HOME/.nx/C-$sess_id/cups/printers.conf"
>> }
>>
>> node_cupsd_setup()
>> {
>> let NODE_CUPSD_PORT=$display+9000 # offset 9000 for userspace cupsd's
>> export NODE_CUPSD_PORT
>> mkdir -p "$USER_FAKE_HOME/.nx/C-$sess_id/pids/"
>> [ -e "$USER_FAKE_HOME/.nx/C-$sess_id/pids/cupsd" ] && return
>> touch "$USER_FAKE_HOME/.nx/C-$sess_id/pids/cupsd"
>>
>> mkdir -p $USER_FAKE_HOME/.nx/C-$sess_id/cups/spool/tmp
>> $USER_FAKE_HOME/.nx/C-$sess_id/cups/spool/certs
>> $USER_FAKE_HOME/.nx/C-$sess_id/cups/ppd ln -sf spool/certs
>> $USER_FAKE_HOME/.nx/C-$sess_id/cups/certs
>> cat <<EOF > $USER_FAKE_HOME/.nx/C-$sess_id/cups/cupsd.conf
>> AccessLog /dev/null
>> ErrorLog error_log
>> PageLog page_log
>> LogLevel info
>> TempDir $USER_FAKE_HOME/.nx/C-$sess_id/cups/spool/tmp
>> RequestRoot $USER_FAKE_HOME/.nx/C-$sess_id/cups/spool
>> ServerRoot $USER_FAKE_HOME/.nx/C-$sess_id/cups/
>> Port $NODE_CUPSD_PORT
>> Browsing Off
>> ServerName localhost
>>
>> <Location />
>> Order Deny,Allow
>> Deny From All
>> Allow from 127.0.0.1
>> </Location>
>> EOF
>> touch $USER_FAKE_HOME/.nx/C-$sess_id/cups/printers.conf
>> $USER_FAKE_HOME/.nx/C-$sess_id/cups/classes.conf
>>
>> # copy mime.* files
>> cp "$CUPS_ETC"/mime.* "$USER_FAKE_HOME/.nx/C-$sess_id/cups/"
>>
>> # start cupsd
>> $COMMAND_CUPSD -f -c "$USER_FAKE_HOME/.nx/C-$sess_id/cups/cupsd.conf"
>> &>/dev/null </dev/null & CUPSD_PID=$!
>> sleep 3
>> echo $CUPSD_PID >"$USER_FAKE_HOME/.nx/C-$sess_id/pids/cupsd"
>> # setup KDE
>> if [ "$ENABLE_KDE_CUPS" = "1" -a -e "$KDE_PRINTRC" ]
>> then
>> if egrep -q "^Port=" "$KDE_PRINTRC"
>> then
>> perl -pi -e 's/^Port=.*/Port='"$NODE_CUPSD_PORT"'/g' "$KDE_PRINTRC"
>> else
>> echo "[CUPS]" >> "$KDE_PRINTRC"
>> echo "Port=$NODE_CUPSD_PORT" >> "$KDE_PRINTRC"
>> fi
>> fi
>>
>> }
>>
>> node_cupsd_reload()
>> {
>> [ -e "$USER_FAKE_HOME/.nx/C-$sess_id/pids/cupsd" ] || return
>> NODE_CUPSD_PID=$(cat "$USER_FAKE_HOME/.nx/C-$sess_id/pids/cupsd")
>> [ -n "$NODE_CUPSD_PID" ] && kill -0 $NODE_CUPSD_PID && kill -HUP
>> $NODE_CUPSD_PID }
>>
>> node_cupsd_get_port()
>> {
>> node_cupsd_setup
>> echo $NODE_CUPSD_PORT
>> }
>>
>> node_umount_smb()
>> {
>> [ -e "$USER_FAKE_HOME/.nx/C-$sess_id/scripts/mpoint" ] || return
>> cat "$USER_FAKE_HOME/.nx/C-$sess_id/scripts/mpoint" | while read mpoint
>> do
>> $COMMAND_SMBUMOUNT "$mpoint" >/dev/null 2>/dev/null
>> done
>> }
>>
>>
>> node_stop_services()
>> {
>> node_umount_smb
>> node_cupsd_stop
>> }
>>
>> node_emergency_exit()
>> {
>> # umount shares & stop printers
>> node_stop_services
>>
>> # kill the session
>> node_terminate_session "$sess_id" "failed"
>>
>> echo "NX> 1004 Error: Emergency exit due to kill signal."
>> }
>>
>> #
>> # Monitoring the nxagent: Its also kind of a "state-machine"
>> # as it has to keep track of different
>> # connection states and react differently.
>> #
>>
>> node_start_monitor_2_0_0()
>> {
>> TAIL_PID=""
>> SUSPEND_STATUS="$2"
>> SESSION_STATUS=""
>>
>> while read line
>> do
>> #
>> # Catch tail pid
>> #
>>
>> if stringinstring "Info: tail -f running with pid" "$line"
>> then
>> TAIL_PID=$(echo $line | cut -d"'" -f2)
>> fi
>>
>> #
>> # Session messages
>> #
>>
>> if stringinstring "Session: Starting session at" "$line"
>> then
>> echo "NX> 1009 Session status: starting"
>> fi
>>
>> if stringinstring "Session: Suspending session at" "$line"
>> then
>> echo "NX> 1009 Session status: suspending"
>> fi
>>
>> if stringinstring "Session: Terminating session at" "$line"
>> then
>> echo "NX> 1009 Session status: terminating"
>> fi
>>
>> if stringinstring "Session: Resuming session at" "$line"
>> then
>> echo "NX> 1009 Session status: resuming"
>> fi
>>
>>
>> #
>> # Session suspend
>> #
>>
>> if stringinstring "Session: Session suspended at" "$line"
>> then
>> echo "NX> 1005 Session status: suspended"
>> # umount shares & stop printers
>>
>> if [ "$SUSPEND_STATUS" = "Running" ]
>> then
>> node_suspend_session $sess_id
>> SUSPEND_STATUS=""
>> else
>> node_stop_services
>> fi
>> fi
>>
>> #
>> # Watchdog termination
>> #
>>
>> if stringinstring "Info: Watchdog running with pid" "$line"
>> then
>> WATCHDOG_PID=$(echo $line | cut -d"'" -f2)
>> fi
>>
>> if stringinstring "Info: Waiting the watchdog process to complete."
>> "$line" then
>> # Kill the watchdog
>> kill $WATCHDOG_PID 2>/dev/null
>> fi
>>
>> #
>> # Session is running
>> #
>>
>> if stringinstring "Info: Waiting for connection from" "$line"
>> then
>> echo "NX> 710 Session status: running"
>> echo "NX> 1002 Commit"
>> echo "NX> 1006 Session status: running"
>> fi
>>
>> #
>> # Reconnection success!
>> #
>>
>> if stringinstring "Session: Session resumed at" "$line"
>> then
>> echo "NX> 718 Session restore succeded"
>> if [ "$1" = "restore" ]
>> then
>> kill $TAIL_PID
>> break
>> fi
>> fi
>>
>> #
>> # Reconnection failure
>> #
>>
>> if stringinstring "Session: Display failure detected at" "$line"
>> then
>> echo "NX> 596 Error: Session $1 failed. Reason was: $line"
>> if [ "$1" = "restore" ]
>> then
>> kill $TAIL_PID
>> break
>> fi
>> fi
>> done
>>
>> trap "" EXIT
>>
>> [ "$1" = "restore" ] || node_stop_services
>> # close all open file descriptors
>> exec 0<&-
>> exec 1>&-
>> exec 2>&-
>> exit 0
>> }
>>
>> node_start_monitor_1_5_0()
>> {
>> RUNNING=0
>> TAIL_PID=""
>> SUSPEND_STATUS="$2"
>>
>> while read line
>> do
>> #
>> # Catch tail pid
>> #
>>
>> if stringinstring "Info: tail -f running with pid" "$line"
>> then
>> TAIL_PID=$(echo $line | cut -d"'" -f2)
>> fi
>>
>> #
>> # Detect nxagent syntax errors
>> #
>>
>> #SYNTAX=""
>>
>> #stringinstring "Unrecognized option:" "$line" && SYNTAX="yes"
>> #stringinstring "NXAGENT: Fatal IO error on display" "$line" &&
>> SYNTAX="yes" #stringinstring "NXAGENT: Unable to open display" "$line" &&
>> SYNTAX="yes" #if [ -n "$SYNTAX" ]
>> #then
>> # kill $TAIL_PID 2>/dev/null
>> # echo "NX> 1004 Error: nxagent failed to start with: $line"
>> # [ "$SESSION_LOG_CLEAN" = "1" ] && rm -rf
>> $USER_FAKE_HOME/.nx/C-$sess_id/ # [ "$SESSION_LOG_CLEAN" = "1" ] || mv
>> $USER_FAKE_HOME/.nx/C-$sess_id/ $USER_FAKE_HOME/.nx/F-C-$sess_id/ # break
>> #fi
>>
>> #
>> # Session suspend
>> #
>>
>> if stringinstring "Info: Session suspended." "$line"
>> then
>> echo "NX> 1005 Session status: suspended"
>> # umount shares & stop printers
>>
>> if [ "$SUSPEND_STATUS" = "Running" ]
>> then
>> node_suspend_session $sess_id
>> SUSPEND_STATUS=""
>> else
>> node_stop_services
>> fi
>> fi
>>
>> #
>> # Proxy termination
>> #
>>
>> if stringinstring "Info: Waiting for a further signal to complete."
>> "$line" then
>> # Kill the proxy
>> kill -HUP $PROXY_PID 2>/dev/null
>> fi
>>
>> #
>> # Session end
>> #
>>
>> if stringinstring "Info: End of session requested by " "$line" && [
>> "$RECONNECT" = "0" ] && ! stringinstring "'SIGHUP'" "$line" then
>> echo "NX> 1009 Session status: terminating"
>> kill -HUP $PROXY_PID 2>/dev/null
>> fi
>>
>> #
>> # Session is running
>> #
>>
>> if stringinstring "Info: Waiting for connection from" "$line"
>> then
>> echo "NX> 710 Session status: running"
>> echo "NX> 1002 Commit"
>> echo "NX> 1006 Session status: running"
>> fi
>>
>> #
>> # Status = Running - Do _not_ fail anymore.
>> #
>>
>> if stringinstring "Info: Connection with remote proxy established."
>> "$line" then
>> RUNNING=1
>> fi
>>
>> #
>> # Catch proxy pid
>> #
>>
>> if stringinstring "Info: Proxy running in server mode with pid" "$line"
>> then
>> PROXY_PID=$(echo $line | cut -d"'" -f2)
>> fi
>>
>> #
>> # Reconnection success!
>> #
>>
>> if stringinstring "Info: Reconnection succeded." "$line"
>> then
>> echo "NX> 718 Session restore succeded"
>> if [ "$1" = "restore" ]
>> then
>> kill $TAIL_PID
>> break
>> fi
>> fi
>>
>> #
>> # Reconnection failure
>> #
>>
>> if stringinstring "Info: Reconnection failed:" "$line"
>> then
>> echo "NX> 1005 Session status: suspended"
>> echo "NX> 596 Error: Session restore failed. Reason was: $line"
>> if [ "$1" = "restore" ]
>> then
>> kill $TAIL_PID
>> break
>> fi
>> fi
>>
>> #
>> # Error handling.
>> #
>>
>> #if stringinstring "Error: Connection with remote host" "$line" && [
>> "$RUNNING" = "0" ] #then
>> # kill $TAIL_PID 2>/dev/null
>> # echo "NX> 1004 Error:"
>> # echo "Session '$sess_id' has failed after reaching usable state."
>> # [ "$SESSION_LOG_CLEAN" = "1" ] && rm -rf
>> $USER_FAKE_HOME/.nx/C-$sess_id/ # [ "$SESSION_LOG_CLEAN" = "1" ] || mv
>> $USER_FAKE_HOME/.nx/C-$sess_id/ $USER_FAKE_HOME/.nx/F-C-$sess_id/ # break
>> #fi
>> done
>>
>> trap "" EXIT
>>
>> [ "$1" = "restore" ] || node_stop_services
>> # close all open file descriptors
>> exec 0<&-
>> exec 1>&-
>> exec 2>&-
>> exit 0
>> }
>>
>> node_start_monitor()
>> {
>> [ "$ENABLE_2_0_0_BACKEND" = "1" ] && node_start_monitor_2_0_0 "$@"
>> [ "$ENABLE_2_0_0_BACKEND" = "1" ] || node_start_monitor_1_5_0 "$@"
>> }
>>
>> node_startsession()
>> {
>>
>> #
>> user=knoppix&userip=192.168.1.66&uniqueid=6A8269CC467264EAEF6349D062689755&
>> display=1000&session=lappi%5ffull&type=unix%2dkde&cache=8M&images=32M&cookie
>> =84765070afee043cf83f85d21130145f&link=lan&render=1&backingstore=when_reques
>> ted&imagecompressionmethod=0&geometry=fullscreen&keyboard=fr&media=0&samba=1
>> &agent_server=&agent_user=&agent_password=
>>
>> user=$(getparam user)
>> userip=$(getparam userip)
>> uniqueid=$(getparam uniqueid)
>> display=$(getparam display)
>> session=$(getparam session)
>> type=$(getparam type | sed 's/%2d/-/g')
>> application=$(getparam application)
>> cache=$(getparam cache)
>> images=$(getparam images)
>> cookie=$(getparam cookie)
>> link=$(getparam link)
>> virtualdesktop=$(getparam virtualdesktop)
>> render=$(getparam render)
>> backingstore=$(getparam backingstore)
>> imagecompressionmethod=$(getparam imagecompressionmethod)
>> imagecompressionlevel=$(getparam imagecompressionlevel)
>> geometry=$(getparam geometry)
>> keyboard=$(getparam keyboard)
>> kbtype=$(getparam kbtype)
>> media=$(getparam media)
>> mediahelper=$(getparam mediahelper)
>> sync=$(getparam sync)
>> samba=$(getparam samba)
>> cups=$(getparam cups)
>> agent_server=$(getparam agent_server)
>> agent_user=$(getparam agent_user)
>> agent_password=$(getparam agent_password)
>> agent_domain=$(getparam agent_domain)
>> screeninfo=$(getparam screeninfo)
>> nodelay=$(getparam nodelay)
>> [ "$PROXY_TCP_NODELAY" = "0" ] && nodelay=0
>>
>> # 1.5.0 options
>> rdpcolors=$(getparam rdpcolors)
>> rdpcache=$(getparam rdpcache)
>> http=$(getparam http)
>>
>> # nxclient > 1.5.0-106 variables
>> resize=$(getparam resize)
>> keybd=$(getparam keybd)
>> kbload=$(getparam kbload)
>> keymap=$(getparam keymap)
>>
>> rootless=0
>> # Its still the clients decision
>> [ "$ENABLE_ROOTLESS_MODE" = "1" ] && rootless=$(getparam rootless)
>>
>> # FreeNX specific variables
>> clientproto=$(getparam clientproto)
>> status=$(getparam status)
>> host=$(getparam host)
>>
>> fullscreen=""
>> [ "$geometry" = "fullscreen" ] && fullscreen="1"
>>
>> [ "$EXPORT_USERIP" = "1" ] && export NXUSERIP="$userip"
>>
>> ssl_tunnel=$(getparam encryption)
>> [ -z "$ssl_tunnel" ] && ssl_tunnel=0
>>
>> if [ "$ssl_tunnel" = "1" ]
>> then
>> # we need to use the IP of the "calling" server now
>> userip=$(echo $SSH_CLIENT $SSH2_CLIENT | cut -d" " -f1 | sed
>> 's/::ffff://g') [ -z "$userip" ] && userip="127.0.0.1"
>> [ -z "$userip" -a "$host" != "127.0.0.1" ] && userip="*"
>> fi
>>
>> # ok, lets make the session dir first:
>>
>> sess_id="$SERVER_NAME-$display-$uniqueid"
>> [ "$EXPORT_SESSIONID" = "1" ] && export NXSESSIONID="$sess_id"
>>
>> ##########################################################################
>> ############### # added by marcel at kraan.net added to the environment for
>> printing non kde applications # this is not working in the add_printer
>> function
>> IPP_PORT=$(node_cupsd_get_port)
>> export IPP_PORT
>> ##########################################################################
>> ###############
>>
>> OLD_UMASK=$(umask)
>> umask 0022
>> mkdir -p $USER_FAKE_HOME
>> umask 0077
>> mkdir -p $USER_FAKE_HOME/.nx/C-$sess_id
>> umask $OLD_UMASK
>>
>> #
>> cache=8M,images=32M,pack=nopack,link=lan,type=unix-kde,cleanup=0,accept=192
>> .168.1.66,cookie=E38A94A77F975443AF04EC911881B120,id=Knoppix-1000-6A8269CC46
>> 7264EAEF6349D062689755,samba=1,render=1:1000
>>
>> PACK=""
>> [ -z "$imagecompressionlevel" ] && imagecompressionlevel="9"
>>
>> [ "$imagecompressionmethod" = "0" ] && PACK="pack=nopack,"
>> [ "$imagecompressionmethod" = "1" ] &&
>> PACK="pack=16m-jpeg-$imagecompressionlevel," [ "$imagecompressionmethod" =
>> "2" ] && PACK="pack=16m-png-9,"
>>
>> proxy_cookie=$(echo $[$RANDOM*$RANDOM] | $COMMAND_MD5SUM | cut -d" " -f1)
>>
>> if [ "$clientproto" = "1.5.0" ]
>> then
>> # enable fake cookie authentication
>> cookie=$proxy_cookie
>> fi
>>
>> # write options file
>> [ -z "$samba" ] && samba=0
>> [ -z "$media" ] && media=0
>> [ -z "$nodelay" ] && nodelay=1
>>
>> CACHE="cache=$cache,"
>> [ -z "$cache" ] && CACHE=""
>> IMAGES="images=$images,"
>> [ -z "$images" ] && IMAGES=""
>>
>> ACCEPT="accept=$userip,"
>> [ "$userip" = "*" ] && ACCEPT=""
>>
>> OLD_UMASK=$(umask)
>> umask 0077
>>
>> cat << EOF > $USER_FAKE_HOME/.nx/C-$sess_id/options
>> ${kbtype:+kbtype=$kbtype,}${kbload:+kbload=$kbload,}${keymap:+keymap=$keyma
>> p,}${resize:+resize=$resize,}${CACHE}${IMAGES}${PACK}link=$link,nodelay=$nod
>> elay,type=$type,cleanup=0,${ACCEPT}cookie=$proxy_cookie,id=$sess_id,samba=$s
>> amba,media=$media${sync:+,sync=$sync}${cups:+,cups=$cups}${keybd:+,keybd=$ke
>> ybd}${http:+,http=$http}${rdpcolors:+,rdpcolors=$rdpcolors}${rdpcache:+,rdpc
>> ache=$rdpcache}${fullscreen:+,fullscreen=1}:$display EOF
>> umask $OLD_UMASK
>> #samba=$samba,
>> #cache=$cache,images=$images,pack=nopack,link=$link,type=$type,cleanup=0,a
>> ccept=$userip,cookie=$proxy_cookie,id=$sess_id
>> #samba=$samba,media=$media,render=$render:$display
>>
>> # write xauth script file
>>
>> $COMMAND_XAUTH >/dev/null 2>&1 <<EOF
>> add localhost:$display MIT-MAGIC-COOKIE-1 $cookie
>> add unix:$display MIT-MAGIC-COOKIE-1 $cookie
>> exit
>> EOF
>>
>> $COMMAND_XAUTH -f "$USER_FAKE_HOME/.nx/C-$sess_id/authority" >/dev/null
>> 2>&1 <<EOF add localhost:$display MIT-MAGIC-COOKIE-1 $cookie
>> add unix:$display MIT-MAGIC-COOKIE-1 $cookie
>> exit
>> EOF
>>
>> mkdir -m700 $USER_FAKE_HOME/.nx/C-$sess_id/scripts/ 2>/dev/null || chmod
>> 700 $USER_FAKE_HOME/.nx/C-$sess_id/scripts/
>>
>> cat << EOF >$USER_FAKE_HOME/.nx/C-$sess_id/scripts/authority
>> remove localhost:$display
>> remove unix:$display
>> exit
>> EOF
>>
>> if [ "$1" = "restore" ]
>> then
>> echo > $USER_FAKE_HOME/.nx/C-$sess_id/session
>> sh -c 'echo "Info: tail -f running with pid '\'\$$\''."; exec tail -n1 -f
>> '$USER_FAKE_HOME'/.nx/C-'$sess_id'/session' | node_start_monitor "$1"
>> "$status" &
>>
>> MONITOR_PID=$!
>> export MONITOR_PID
>>
>> mkdir -p $USER_FAKE_HOME/.nx/C-$sess_id/pids/
>> echo "$MONITOR_PID" > $USER_FAKE_HOME/.nx/C-$sess_id/pids/monitor
>>
>> node_suspend_session $sess_id || { echo "Info: Reconnection failed: NX
>> Agent process could not be found."
>>
>> >>$USER_FAKE_HOME'/.nx/C-'$sess_id'/session'; node_fail_restore_session; }
>>
>> else
>> node_start_agent &
>> node_start_applications &
>> fi
>>
>> if which "$NODE_AUTOSTART" >/dev/null 2>&1
>> then
>> sess_id="$SERVER_NAME-$display-$uniqueid"
>> # go into background immediately
>> NXSESSIONID="$sess_id" DISPLAY=unix:$display "$NODE_AUTOSTART" "$1"
>>> /dev/null 2>&1 & # dont't wait for this child!
>> disown $!
>> fi
>>
>> cat << EOF
>> NX> 700 Session id: $sess_id
>> NX> 705 Session display: $display
>> NX> 703 Session type: $type
>> NX> 701 Proxy cookie: $proxy_cookie
>> NX> 702 Proxy IP: $userip
>> NX> 706 Agent cookie: $cookie
>> NX> 704 Session cache: $type
>> NX> 707 SSL tunneling: $ssl_tunnel
>> EOF
>>
>> # collection ...
>>
>> # NX> 1004 Error:
>> #Session 'Knoppix-1000-40EFB9F64FA55C64C41C72CA39EBD720' has failed after
>> reaching usable state. Session directory
>> '/home/knoppix/.nx/F-C-Knoppix-1000-40EFB9F64FA55C64C41C72CA39EBD720' will
>> be not deleted to allow for further investigation.
>>
>> if [ -n "$MONITOR_PID" ]
>> then
>> wait "$MONITOR_PID"
>> rm -f $USER_FAKE_HOME/.nx/C-$sess_id/pids/monitor
>> fi
>> wait # for all children
>> }
>>
>> cmd_node_terminate()
>> {
>> sessionid=$(getparam_sessionid)
>> echo "NX> 716 Terminating session $sessionid on user request."
>> display=$(cd $USER_FAKE_HOME/.nx/; echo C-$SERVER_NAME-*-$sessionid | rev
>> |cut -d"-" -f2 |rev) node_terminate_session
>> "$SERVER_NAME-$display-$sessionid"
>> }
>>
>>
>> cmd_node_suspend()
>> {
>> sessionid=$(getparam_sessionid)
>> echo "NX> 716 Suspending session $sessionid on user request."
>> display=$(cd $USER_FAKE_HOME/.nx/; echo C-$SERVER_NAME-*-$sessionid | rev
>> | cut -d"-" -f2 |rev) node_suspend_session
>> "$SERVER_NAME-$display-$sessionid"
>> }
>>
>> cmd_node_smbmount()
>> {
>> sessionid=$(getparam_sessionid)
>> port=$(getparam port)
>> username=$(getparam username)
>> password=$(getparam password)
>> share=$(getparam share)
>> computername=$(getparam computername)
>> dir=$(getparam dir | sed 's|$(SHARES)|MyShares|g')
>> rdir=$(getparam dir | sed 's|$(SHARES)/||g')
>> display=$(cd $USER_FAKE_HOME/.nx/; echo C-$SERVER_NAME-*-$sessionid |
>> rev|cut -d"-" -f2| rev) mkdir -p "$HOME/$dir"
>>
>> ##################### begin ##############
>> sleep 7
>> ERROR=$(PASSWD="$password" "$COMMAND_SMBMOUNT" "//$computername/$rdir"
>> "$HOME/$dir" -o user="$username,ip=127.0.0.1,port=$port" 2>&1)
>> #TEST="$COMMAND_SMBMOUNT //$computername/$rdir $HOME/$dir -o
>> user=$username,pass=$password,ip=127.0.0.1,port=$port" 2>&1
>> #$PATH_BIN/nxclient -dialog ok -caption "NXServer Message" -message "This
>> command to mount: $TEST" -noautokill -display :$display & #exec $TEST;
>> ##################### end #################
>>
>>
>> if [ $? -eq 0 ]
>> then
>> $PATH_BIN/nxclient -dialog ok -caption "NXServer Message" -message "Info:
>> Share: '//$computername/$rdir' mounted on: '$HOME/$dir'" -noautokill
>> -display :$display &
>> echo "$HOME/$dir" >>
>> "$USER_FAKE_HOME/.nx/C-$SERVER_NAME-$display-$sessionid/scripts/mpoint"
>> else
>> $PATH_BIN/nxclient -dialog ok -caption "NXServer Message" -message "Info:
>> Share: '//$computername/$rdir' failed to mount: $ERROR" -noautokill
>> -display :$display &
>> fi
>> }
>>
>> cmd_node_addprinter()
>> {
>> sessionid=$(getparam_sessionid)
>> type=$(getparam type)
>> port=$(getparam port)
>> username=$(getparam username)
>> password=$(getparam password)
>> share=$(getparam share)
>> printer=$(getparam printer)
>> computername=$(getparam computername)
>> public=$(getparam public)
>> model=$(getparam model)
>> defaultPrinter=$(getparam defaultPrinter)
>> display=$(cd $USER_FAKE_HOME/.nx/; echo C-$SERVER_NAME-*-$sessionid | rev
>> | cut -d"-" -f2 | rev) sess_id="$SERVER_NAME-$display-$sessionid"
>> # this will also setup the userspace cupsd
>> IPP_PORT=$(node_cupsd_get_port)
>> export IPP_PORT
>>
>> #################################################################
>> # by marcel at kraan.net
>> # get the server hostname cups printing could not via localhost
>>
>> if [ -f /etc/sysconfig/network ] ; then
>> . /etc/sysconfig/network
>> if [ "$NETWORKING" = "yes" ] ; then
>> printhost="$HOSTNAME"
>> else
>> printhost="localhost"
>> fi
>> fi
>>
>> if [ "$type" = "smb" ]
>> then
>> DEVICE_URI="smb://$username:$password@$printhost:$port/$share"
>> NAME="$share"
>> else
>> #DEVICE_URI="ipp://localhost:$port/printers/$printer"
>> DEVICE_URI="ipp://$username:$password@$printhost:$port/printers/$printer"
>> NAME="$printer"
>> fi
>> #MODEL=$($PATH_BIN/nxclient -printer "$NAME" -noautokill -display
>> :$display) MODEL=$($PATH_BIN/nxclient -printer "$NAME" -display :$display)
>> [ -z "$MODEL" -o "$MODEL" = "cancel: aborted" ] && return
>>
>> PUBLIC="-u allow:$USER"
>> [ "$public" == "1" ] && PUBLIC=""
>> /usr/sbin/lpadmin -p "$NAME" -E -v "$DEVICE_URI" -m "$MODEL" $PUBLIC
>> [ "$defaultPrinter" = "1" ] && /usr/sbin/lpadmin -d "$NAME"
>>
>> #################################################################
>> }
>>
>>
>> case "$1" in
>> --startsession)
>> node_startsession
>> ;;
>> --resumesession)
>> node_startsession "restore"
>> ;;
>> --terminate)
>> cmd_node_terminate
>> ;;
>> --suspend)
>> cmd_node_suspend
>> ;;
>> --smbmount)
>> cmd_node_smbmount &>/dev/null </dev/null &
>> ;;
>> --addprinter)
>> cmd_node_addprinter &>/dev/null </dev/null &
>> ;;
>> --check)
>> echo "NX> 716 finished"
>> ;;
>> --agent)
>> echo "NX> 716 Starting NX Agent ..."
>> shift
>> [ "$SET_LD_LIBRARY_PATH" = "1" ] && export
>> LD_LIBRARY_PATH="$AGENT_LIBRARY_PATH:$LD_LIBRARY_PATH"
>> PATH="$PATH:$PATH_BIN" $PATH_BIN/nxagent -name "NX Agent Test - Args: $@"
>> $@ echo "NX> 716 NX Agent exited with status: $?"
>> ;;
>> --setkey)
>> mkdir -m 700 -p $HOME/.ssh
>> if ! grep -q "$(cat $NX_ETC_DIR/users.id_dsa.pub)"
>> $HOME/.ssh/$SSH_AUTHORIZED_KEYS 2>/dev/null then
>> cat $NX_ETC_DIR/users.id_dsa.pub >> $HOME/.ssh/$SSH_AUTHORIZED_KEYS
>> chmod 600 $HOME/.ssh/$SSH_AUTHORIZED_KEYS
>> echo "NX> 716 Public key added to: $HOME/.ssh/$SSH_AUTHORIZED_KEYS"
>> else
>> echo "NX> 716 Public key is already present in:
>> $HOME/.ssh/$SSH_AUTHORIZED_KEYS" fi
>> ;;
>> *)
>> echo "NX> 500 Error: Command not found"
>> ;;
>> esac
>> echo "NX> 1001 Bye."
>
> ________________________________________________________________
> Were you helped on this list with your FreeNX problem?
> Then please write up the solution in the FreeNX Wiki/FAQ:
> http://openfacts.berlios.de/index-en.phtml?title=FreeNX_FAQ
> Don't forget to check the NX Knowledge Base:
> http://www.nomachine.com/kb/
>
> ________________________________________________________________
> FreeNX-kNX mailing list --- FreeNX-kNX at kde.org
> https://mail.kde.org/mailman/listinfo/freenx-knx
> ________________________________________________________________
More information about the FreeNX-kNX
mailing list