rpms/freenx-server/devel freenx-server-0.7.3-fixes.patch, NONE, 1.1 freenx-server.spec, 1.7, 1.8 freenx-server-0.7.2-sharing_and_multimedia_fixes.patch, 1.1, NONE

athimm athimm at fedoraproject.org
Sat Jul 25 22:29:31 UTC 2009


Author: athimm

Update of /cvs/extras/rpms/freenx-server/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv8906/freenx-server/devel

Modified Files:
	freenx-server.spec 
Added Files:
	freenx-server-0.7.3-fixes.patch 
Removed Files:
	freenx-server-0.7.2-sharing_and_multimedia_fixes.patch 
Log Message:
- Use some patches from up to svn 613 (dated 2008-09-01).
- Add keymap.patch from Fedora bug #506470.
- Add cups listing patch from Fedora bug #509879.
- Add dependency for misc fonts Fedora bug #467494.
- Fix stale X11 displays from Fedora bug #492402.
- Fix authorized_keys*2* syncing, may fix Fedora bug #503822.
- Move %post parts to nxserver startup, fixes Fedora bug #474720.
- Copy ssh keys on first start, fixes Fedora bug #235592.
- Add init script with CentOS patches that ensures /tmp/.X11-unix
  always exists, fixes Fedora bug #437655.



freenx-server-0.7.3-fixes.patch:
 ChangeLog            |   17 ++++++
 Makefile             |    4 -
 init.d/freenx-server |   83 +++++++++++++++++++++++++++-----
 node.conf.sample     |    7 ++
 nxloadconfig         |   35 +++++++++++--
 nxnode               |  132 ++++++++++++++++++++++++++++++++++++++++++++++-----
 nxprint              |    3 -
 nxredir/nxsmb        |    5 +
 nxserver             |  114 +++++++++++++++++++++++++-------------------
 9 files changed, 317 insertions(+), 83 deletions(-)

--- NEW FILE freenx-server-0.7.3-fixes.patch ---
diff -Naur freenx-server-0.7.3/ChangeLog freenx-server.svn613.plusfixes/ChangeLog
--- freenx-server-0.7.3/ChangeLog	2008-08-22 02:44:43.000000000 +0200
+++ freenx-server.svn613.plusfixes/ChangeLog	2008-09-01 22:42:31.000000000 +0200
@@ -1,3 +1,20 @@
+xx.11.2008 FreeNX 0.7.4
+	* Opened the 0.7.4 development.
+	* Fixed missing export of NX_ETC_DIR in Makefile,
+	  so node.conf.sample is installed correctly.
+	  (fabianx at bat.berlios.de)
+	* Fixed broken round-robin load balance algorithm.
+	  (fabianx at bat.berlios.de)
+	* Fixed --terminate|--suspend|--force-terminate for
+	  load balancing case.
+	  (fabianx at bat.berlios.de)
+	* Fixed --terminate|--suspend|--force-terminate for
+	  usermode case.
+	  (fabianx at bat.berlios.de)
+	* Fixed non-encrypted session mode. You might need to
+	  set EXTERNAL_PROXY_IP in node.conf.
+	  (fabianx at bat.berlios.de)
+
 18.08.2008 FreeNX 0.7.3 "Priscilla One Year Edition"
 	* Opened the 0.7.3 development.
 	* Added logging of failed authentication attempts
diff -Naur freenx-server-0.7.3/init.d/freenx-server freenx-server.svn613.plusfixes/init.d/freenx-server
--- freenx-server-0.7.3/init.d/freenx-server	2008-03-02 11:29:52.000000000 +0100
+++ freenx-server.svn613.plusfixes/init.d/freenx-server	2009-07-25 22:15:28.000000000 +0200
@@ -8,21 +8,78 @@
 #
 # SVN: $Id: freenx-server 485 2008-03-02 10:29:52Z fabianx $
 #
+# Modified to be chkconfig compatible by Johnny Hughes <johnny at centos.org>
+#
+# chkconfig: 2345 91 35
+# description: Creates /tmp/.X11-unix/ if required and cleans up dead \
+#              NX sessions.
+
 
 # Read the config file
-. $(PATH=$(cd $(dirname $0) && pwd):$PATH which nxloadconfig) --
+. /usr/libexec/nx/nxloadconfig --
+
+# Source function library.
+. /etc/init.d/functions
+prog="freenx-server"
+
+start() {
+	runuser -s /bin/bash - nx -c "$PATH_BIN/nxserver --cleanup" > /dev/null 2>&1 < /dev/null
+	if [ ! -d "/tmp/.X11-unix" ]; then
+	  mkdir -m1777 /tmp/.X11-unix/
+	  ret=$?
+	else
+	  X11_owner=`/bin/ls -ald /tmp/.X11-unix | /bin/gawk {'print $3'}`
+          if [ "$X11_owner" != "root" ]; then
+	    /bin/chown root /tmp/.X11-unix
+          fi
+	  ret=0
+	fi
+	if [ $ret -eq 0 ]; then
+	  touch /var/lock/subsys/freenx-server
+	  action $"Starting $prog: " /bin/true
+	else
+	  action $"Starting $prog: " /bin/false
+	fi
+	echo
+	return $ret
+}
+
+stop() {
+	runuser -s /bin/bash - nx -c "$PATH_BIN/nxserver --cleanup" > /dev/null 2>&1 < /dev/null
+	if [ -e "/var/lock/subsys/freenx-server" ]; then
+	  rm -f /var/lock/subsys/freenx-server
+	  ret=$?
+	else
+	  ret=0
+	fi
+	if [ $ret -eq 0 ]; then
+	  action $"Stopping $prog: " /bin/true
+	else
+	  action $"Stopping $prog: " /bin/false
+	fi
+	echo
+	return $ret
+}
+
+restart() {
+	echo $"Restarting $prog:"
+	stop
+	start
+}
 
 case "$1" in
-	start)
-		[ ! -d "/tmp/.X11-unix" ] && mkdir -m1755 /tmp/.X11-unix/
-		$PATH_BIN/nxserver --cleanup
-		$PATH_BIN/nxserver --start
-	;;
-	stop)
-		$PATH_BIN/nxserver --stop
-		$PATH_BIN/nxserver --cleanup
-	;;	
-	*)
-		echo "Usage: $0 <start|stop>"
-	;;
+  start)
+        start
+        ;;
+  stop)
+        stop
+        ;;
+  restart)
+        restart
+        ;;
+  *)
+        echo $"Usage: $prog {start|stop|restart}"
+        exit 1
 esac
+
+exit $?
diff -Naur freenx-server-0.7.3/Makefile freenx-server.svn613.plusfixes/Makefile
--- freenx-server-0.7.3/Makefile	2008-08-18 04:16:25.000000000 +0200
+++ freenx-server.svn613.plusfixes/Makefile	2008-08-25 04:41:44.000000000 +0200
@@ -8,7 +8,7 @@
 all:
 	cd nxviewer-passwd && xmkmf && make Makefiles && make depend
 	source nxloadconfig &&\
-	export PATH_BIN PATH_LIB CUPS_BACKEND NX_VERSION &&\
+	export PATH_BIN PATH_LIB CUPS_BACKEND NX_VERSION NX_ETC_DIR &&\
 	for i in $(SUBDIRS) ; \
 	do\
 		echo "making" all "in $$i..."; \
@@ -44,5 +44,5 @@
 
 install:
 	source nxloadconfig &&\
-	export PATH_BIN PATH_LIB CUPS_BACKEND NX_VERSION &&\
+	export PATH_BIN PATH_LIB CUPS_BACKEND NX_VERSION NX_ETC_DIR &&\
 	$(MAKE) nxenv_install
diff -Naur freenx-server-0.7.3/node.conf.sample freenx-server.svn613.plusfixes/node.conf.sample
--- freenx-server-0.7.3/node.conf.sample	2008-08-22 02:44:43.000000000 +0200
+++ freenx-server.svn613.plusfixes/node.conf.sample	2008-09-01 22:42:31.000000000 +0200
@@ -37,7 +37,7 @@
 #
 #           https://mail.kde.org/mailman/listinfo/freenx-knx
 #
-# SVN: $Id: node.conf.sample 580 2008-08-22 00:44:43Z fabianx $
+# SVN: $Id: node.conf.sample 613 2008-09-01 20:42:31Z fabianx $
 
 #########################################################################
 # General FreeNX directives
@@ -47,6 +47,11 @@
 # different than the default hostname (as returned by `hostname`)
 #SERVER_NAME="$(hostname)"
 
+# The node ip which is used by NX Node in unecnrypted session mode.
+# Set it if you want to use a specific external ip or the autodetection
+# is not working.
+#EXTERNAL_PROXY_IP=""
+
 # The port number where local 'sshd' is listening.
 #SSHD_PORT=22
 
diff -Naur freenx-server-0.7.3/nxloadconfig freenx-server.svn613.plusfixes/nxloadconfig
--- freenx-server-0.7.3/nxloadconfig	2008-08-22 02:44:43.000000000 +0200
+++ freenx-server.svn613.plusfixes/nxloadconfig	2009-07-26 00:19:30.000000000 +0200
@@ -5,7 +5,7 @@
 #
 # License: GPL, version 2
 #
-# SVN: $Id: nxloadconfig 580 2008-08-22 00:44:43Z fabianx $
+# SVN: $Id: nxloadconfig 613 2008-09-01 20:42:31Z fabianx $
 #
 # ========================================================================
 
@@ -52,7 +52,7 @@
 # DO NOT TOUCH unless you REALLY know what you are doing
 #########################################################################
 
-NX_VERSION=3.2.0-73
+NX_VERSION=3.2.0-74-SVN
 NX_LICENSE="OS (GPL, using backend: %BACKEND%)"
 
 # Where can different nx components be found
@@ -85,6 +85,7 @@
 # General FreeNX directives
 
 SERVER_NAME="$(hostname)"
+EXTERNAL_PROXY_IP=""
 SSHD_PORT=22
 
 # Authentication / Security directives
@@ -104,11 +105,28 @@
 
 # Restriction directives
 
-DISPLAY_BASE=1000
+#JJK: DISPLAY_BASE=1000
+#JJK: Change DISPLAY_BASE to 2000 to avoid conflict of DISPLAY_BASE+7000 with nasd
+DISPLAY_BASE=2000
 SESSION_LIMIT=200
 SESSION_USER_LIMIT="" #Calculated
 DISPLAY_LIMIT=200
 
+#JJK: Added the following to allow printing when using cifs mount
+#JJK: Note the smb print port (#139) must then be tunnelled manually
+#JJK: from <DISPLAY+3000+SMBPORT_OFFSET> on the server to port 139 on the host
+#JJK: by running on the client: 
+#JJK:   ssh ... -R <DISPLAY+3000+SMBPORT_OFFSET>:<client name>:139
+#JJK: If SAMBA_MOUNT_SHARE_PROTOCOL="smbfs" (technically, if it doesn't equal
+#JJK  'cifs' or in most cases 'both') then the ssh tunnel is automatically
+#JJK: set up from port <DISPLAY+3000> on the server to port 139 
+#JJK: on the remote client.
+#JJK: Note in *all* cases, the cups printer on the client is accessed from 
+#JJK: the server via the command line, using the following -h flag:
+#JJK:   -h localhost:<DISPLAY+9000> [-P <printer name>]
+#JJK: or via the CUPS web browser using:
+#JJK:   http://localhost:<DISPLAY+9000>
+SMBPORT_OFFSET=8000
 ENABLE_PERSISTENT_SESSION="all"
 DISABLE_PERSISTENT_SESSION=""
 
@@ -166,7 +184,11 @@
 ENABLE_CUPS_SEAMLESS="0"
 CUPS_SEAMLESS_DELAY="10"
 ENABLE_FOOMATIC="1"
-COMMAND_FOOMATIC="/usr/lib/cups/driver/foomatic-ppdfile"
+#JJK: COMMAND_FOOMATIC="/usr/lib/cups/driver/foomatic-ppdfile"
+COMMAND_FOOMATIC="/usr/bin/foomatic-ppdfile"
+
+#JJK: added the following path referenced in nxprint
+PPD_DIR="/usr/share/cups/model" #JJK: Note /usr/share/ppd on some systems
 
 CUPS_BACKEND="/usr/lib/cups/backend"
 CUPS_IPP_BACKEND="$CUPS_BACKEND/nxipp"
@@ -185,7 +207,8 @@
 DEFAULT_X_WM=""
 KILL_DEFAULT_X_WM="1"
 USER_X_STARTUP_SCRIPT=.Xclients
-DEFAULT_X_SESSION=/etc/X11/xdm/Xsession
+#JJK: DEFAULT_X_SESSION=/etc/X11/xdm/Xsession
+DEFAULT_X_SESSION=/etc/X11/xinit/Xsession
 COMMAND_START_KDE=startkde
 COMMAND_START_GNOME=gnome-session
 COMMAND_START_CDE=cdwm
@@ -315,7 +338,7 @@
 [ -z "$AGENT_LIBRARY_PATH" ] && AGENT_LIBRARY_PATH=$PATH_LIB
 [ -z "$PROXY_LIBRARY_PATH" ] && PROXY_LIBRARY_PATH=$PATH_LIB
 [ -z "$APPLICATION_LIBRARY_PATH" ] && APPLICATION_LIBRARY_PATH=$PATH_LIB
-[ -z "$APPLICATION_LIBRARY_PRELOAD" ] && APPLICATION_LIBRARY_PRELOAD="$APPLICATION_LIBRARY_PATH/libX11.so.6.2:$APPLICATION_LIBRARY_PATH/libXext.so.6.4:$APPLICATION_LIBRARY_PATH/libXcomp.so:$APPLICATION_LIBRARY_PATH/libXcompext.so:$APPLICATION_LIBRARY_PATH/libXrender.so.1.2"
+[ -z "$APPLICATION_LIBRARY_PRELOAD" ] && APPLICATION_LIBRARY_PRELOAD="$APPLICATION_LIBRARY_PATH/libX11.so.6:$APPLICATION_LIBRARY_PATH/libXext.so.6:$APPLICATION_LIBRARY_PATH/libXcomp.so.3:$APPLICATION_LIBRARY_PATH/libXcompext.so.3:$APPLICATION_LIBRARY_PATH/libXrender.so.1"
 
 NX_BACKEND_VERSION=$(strings $PATH_BIN/nxagent 2>/dev/null | egrep 'NXAGENT - Version' | sed 's/.*Version //g')
 
diff -Naur freenx-server-0.7.3/nxnode freenx-server.svn613.plusfixes/nxnode
--- freenx-server-0.7.3/nxnode	2008-08-22 02:44:43.000000000 +0200
+++ freenx-server.svn613.plusfixes/nxnode	2009-07-25 17:59:33.000000000 +0200
@@ -13,13 +13,27 @@
 #
 # License: GNU GPL, version 2
 #
-# SVN: $Id: nxnode 580 2008-08-22 00:44:43Z fabianx $
+# SVN: $Id: nxnode 613 2008-09-01 20:42:31Z fabianx $
 #
 # 21.06.2004: - Full reconnection support
 
 # Read the config file
 . $(PATH=$(cd $(dirname $0) && pwd):$PATH which nxloadconfig) --userconf
 
+#JJK: Added	following 'if' stanza as a kluge since the following variables
+#JJK: need to be set in cmd_node_smbmount node_umount_smb 
+#JJK: but they are currently set only in startsession which is called 
+#JJK: separately from nxserver via ssh so environment variables 
+#JJK: aren't preserved.
+if [[ "$SAMBA_MOUNT_SHARE_PROTOCOL" = "cifs" || \
+	 ( "$SAMBA_MOUNT_SHARE_PROTOCOL" = "both" && \
+	  `which "$COMMAND_SMBMOUNT_CIFS"` && `which "$COMMAND_SMBUMOUNT_CIFS"` ) \
+			]] > /dev/null 2>&1; then
+	COMMAND_SMBMOUNT=$COMMAND_SMBMOUNT_CIFS
+	COMMAND_SMBUMOUNT=$COMMAND_SMBUMOUNT_CIFS
+	SAMBA_MOUNT_SHARE_PROTOCOL="cifs"
+fi
+
 #
 # -----------------------------------------------------------------------------
 # Startup of nxnode
@@ -540,7 +554,8 @@
 		
 		# Start the agent
 		
-		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 $AGENT_EXTRA_OPTIONS_X :$display 2>&3 &
+		#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 $AGENT_EXTRA_OPTIONS_X :$display 2>&3 &
+		PATH="$PATH_BIN:$PATH" $PATH_BIN/nxagent $R -name "NX - $user@$SERVER_NAME:$display - $session (GPL Edition)" -option "$USER_FAKE_HOME/.nx/C-$sess_id/options" $B $FP $AGENT_EXTRA_OPTIONS_X :$display 2>&3 &
 	fi
 	
 	#
@@ -620,11 +635,27 @@
 	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" "$USER_FAKE_HOME/.nx/C-$sess_id/cups/cache"
+	mkdir -p "$USER_FAKE_HOME/.nx/C-$sess_id/cups/log" #JJK cups log file home
+
+#JJK: Modifications to cupsd.conf
+#JJK:   - Added SystemGroup line in order to add $USER to SystemGroup
+#JJK:   - Moved all the log files to log/<log>
+#JJK:   - Set AccessLog to: log/access_log (was /dev/null)
+#JJK:   - Added listening on $NODE_CUPSD_PORT
+#JJK:	         Listen localhost: $NODE_CUPSD_PORT
+#JJK:   - Removed following line because directive is specific to Debian
+#JJK:       PidFile $USER_FAKE_HOME/.nx/C-$sess_id/pids/cupsd
+#JJK:   -  Access restrictions borrowed from /etc/cups/cupsd.conf
+#JJK:   -  Default policy borrowed from /etc/cups/cupsd.conf but modified
+#JJK:        to allow Add, Delete, and Default printer without (password)
+#JJK:        authentication
+#JJK:   - Note for more detailed logging set: LogLevel debug
 
 cat <<EOF > $USER_FAKE_HOME/.nx/C-$sess_id/cups/cupsd.conf
-AccessLog /dev/null
-ErrorLog error_log
-PageLog page_log
+SystemGroup sys root $USER
+AccessLog log/access_log
+ErrorLog log/error_log
+PageLog log/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
@@ -632,19 +663,60 @@
 StateDir $USER_FAKE_HOME/.nx/C-$sess_id/cups/
 CacheDir $USER_FAKE_HOME/.nx/C-$sess_id/cups/cache
 
+Listen localhost:$NODE_CUPSD_PORT
 Listen $NODE_CUPSD_SOCKET
 Browsing Off
 ServerName localhost
-PidFile $USER_FAKE_HOME/.nx/C-$sess_id/pids/cupsd
 
+#JJK:  Restrict access to the server...
 <Location />
 Order Deny,Allow
 Deny From All
 Allow from 127.0.0.1
 </Location>
 
+#JJK: Restrict access to the admin pages...
+<Location /admin>
+  Encryption Required
+  Order allow,deny
+  Allow localhost
+</Location>
+
+#JJK: Restrict access to configuration files...
+<Location /admin/conf>
+  AuthType Basic
+  Require user @SYSTEM
+  Order allow,deny
+  Allow localhost
+</Location>
+
 # Allow everything for anonymous, because we are protected through UNIX socket
+#JJK: Since allowing access via $NODE_CUPSD_PORT, need to add protection
 <Policy default>
+  #JJK: Job-related operations must be done by the owner or an adminstrator...
+  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>
+    Require user @OWNER @SYSTEM
+    Order deny,allow
+  </Limit>
+
+  #JJK:All administration operations require an adminstrator to authenticate...
+  <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Add-Class CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs>
+    AuthType Basic
+    Require user @SYSTEM
+    Order deny,allow
+  </Limit>
+
+  #JJK: Except need to allow these for nxnode to work
+  <Limit CUPS-Add-Printer CUPS-Delete-Printer CUPS-Set-Default>
+    Order deny,allow
+  </Limit>
+
+  # Only the owner or an administrator can cancel or authenticate a job...
+  <Limit Cancel-Job CUPS-Authenticate-Job>
+    Require user @OWNER @SYSTEM
+    Order deny,allow
+  </Limit>
+
   <Limit All>
     AuthType None
     Order deny,allow
@@ -656,9 +728,17 @@
 
 	# copy mime.* files
 	cp -af "$CUPS_ETC"/mime.* "$USER_FAKE_HOME/.nx/C-$sess_id/cups/"
+	#JJK: Also copy over pstoraster.convs
+	cp -af "$CUPS_ETC"/mime.* "$CUPS_ETC"/pstoraster.convs "$USER_FAKE_HOME/.nx/C-$sess_id/cups/"
 
 	# start cupsd
-	$COMMAND_CUPSD -c "$USER_FAKE_HOME/.nx/C-$sess_id/cups/cupsd.conf" &>/dev/null </dev/null
+#JJK: Note the directive PidFile in the original cupsd.conf intended for 
+#JJK: recording the pid is a Debianism. Instead, we will use the non-daemon
+#JJK: form of cupsd and capture the pid directly
+#JJK:	$COMMAND_CUPSD -c "$USER_FAKE_HOME/.nx/C-$sess_id/cups/cupsd.conf" &>/dev/null </dev/null
+	$COMMAND_CUPSD -F -c "$USER_FAKE_HOME/.nx/C-$sess_id/cups/cupsd.conf" &>/dev/null </dev/null &
+	NODE_CUPSD_PID=$!
+	echo $NODE_CUPSD_PID >"$USER_FAKE_HOME/.nx/C-$sess_id/pids/cupsd"
 
 	# setup KDE
 	if [ "$ENABLE_KDE_CUPS" = "1" -a -e "$KDE_PRINTRC" ]
@@ -700,6 +780,7 @@
 	cat "$USER_FAKE_HOME/.nx/C-$sess_id/scripts/mpoint" | while read mpoint
 	do
 		$COMMAND_SMBUMOUNT "$mpoint" >/dev/null 2>/dev/null
+		rmdir "$mpoint" >/dev/null 2>/dev/null #JJK:Remove mount point if empty
 	done
 }
 
@@ -1078,6 +1159,8 @@
 	# Rootless fix from 2x nxserver 1.5.0
 	realtype=$type
 	[ "$type" = "unix-application" -o "$type" = "unix-default" ] && realtype="unix-desktop"
+	[ "$type" = "unix-gnome" ] && realtype="gnome"
+	[ "$type" = "unix-kde" ] && realtype="kde"
 
 	# NX 2.1.0 file-sharing port options
 	client=$(getparam client)
@@ -1116,6 +1199,7 @@
 
 			COMMAND_SMBMOUNT=/bin/true
 			COMMAND_SMBUMOUNT=/bin/true
+			smbport=139    #JJK: still may want to do printer sharing...
 		else # smbfs
 			smbport=139
 		fi
@@ -1184,6 +1268,17 @@
 		[ -z "$userip" -a "$host" = "127.0.0.1" ] && userip="127.0.0.1"
 		[ -z "$userip" ] && userip="*"
 	fi
+
+	# We need our own external IP
+	proxyip="$EXTERNAL_PROXY_IP"
+
+	if [ -z "$proxyip" -a -n "$host" ]
+	then
+		[ "$host" = "127.0.0.1" ] && host=$(hostname)
+		proxyip=$(ping -c1 "$host" | grep 'PING' | cut -d'(' -f2 | cut -d')' -f1)
+	fi
+	
+	[ -z "$proxyip" ] && proxyip="127.0.0.1"
 	
 	# ok, lets make the session dir first:
 	
@@ -1245,7 +1340,7 @@
 	umask 0077
 
 cat << EOF > "$USER_FAKE_HOME/.nx/C-$sess_id/options"
-${keyboard:+keyboard=$keyboard,}${kbtype:+kbtype=$kbtype,}${kbload:+kbload=$kbload,}${keymap:+keymap=$keymap,}${resize:+resize=$resize,}${CACHE}${IMAGES}${PACK}link=$link,nodelay=$nodelay,type=$realtype,cleanup=0,${ACCEPT}cookie=$proxy_cookie,id=$sess_id,samba=$samba,media=$media${sync:+,sync=$sync}${cups:+,cups=$cups}${keybd:+,keybd=$keybd}${aux:+,aux=$aux}${http:+,http=$http}${rdpcolors:+,rdpcolors=$rdpcolors}${rdpcache:+,rdpcache=$rdpcache}${fullscreen:+,fullscreen=1}${clipboard:+,clipboard=$clipboard}${menu:+,menu=$menu}:$display
+nx/nx,${keyboard:+keyboard=$keyboard,}${kbtype:+kbtype=$kbtype,}${kbload:+kbload=$kbload,}${keymap:+keymap=$keymap,}${geometry:+geometry=$geometry,}${client:+client=$client,}${resize:+resize=$resize,}${CACHE}${IMAGES}${PACK}link=$link,nodelay=$nodelay,type=$realtype${clipboard:+,clipboard=$clipboard}${composite:+composite=$composite},cleanup=0,product=LFE/None/LFEN/None,shmem=1,${backingstore:+backingstore=$backingstore,}shpix=1,${ACCEPT}cookie=$proxy_cookie,id=$sess_id,samba=$samba,media=$media${sync:+,sync=$sync}${cups:+,cups=$cups}${keybd:+,keybd=$keybd}${aux:+,aux=$aux}${http:+,http=$http}${rdpcolors:+,rdpcolors=$rdpcolors}${rdpcache:+,rdpcache=$rdpcache}${fullscreen:+,fullscreen=1}${menu:+,menu=$menu}:$display
 EOF
 	umask $OLD_UMASK
 #samba=$samba,
@@ -1316,7 +1411,7 @@
 NX> 705 Session display: $display
 NX> 703 Session type: $type
 NX> 701 Proxy cookie: $proxy_cookie
-NX> 702 Proxy IP: $userip
+NX> 702 Proxy IP: $proxyip
 NX> 706 Agent cookie: $cookie
 NX> 704 Session cache: $type
 NX> 707 SSL tunneling: $ssl_tunnel
@@ -1373,7 +1468,8 @@
 	password=$(getparam password)
 	share=$(getparam share)
 	computername=$(getparam computername)
-	dir=$(getparam dir | sed 's|$(SHARES)|MyShares|g')
+#JJK:	dir=$(getparam dir | sed 's|$(SHARES)|MyShares|g')
+	dir=$(getparam dir | sed 's/\(%24\|\$\)(SHARES)/MyShares/g')
 	# rdir=$(getparam dir | sed 's|$(SHARES)/||g')
 	display=$(cd $USER_FAKE_HOME/.nx/; echo C-$SERVER_NAME-*-$sessionid | awk 'BEGIN {FS="-"} {i=NF-1; print $i}') 
 	mkdir -p "$HOME/$dir"
@@ -1393,6 +1489,7 @@
 		echo "$HOME/$dir" >> "$USER_FAKE_HOME/.nx/C-$SERVER_NAME-$display-$sessionid/scripts/mpoint"
 	else
 		$PATH_BIN/nxdialog -dialog ok -caption "NXServer Message" -message "Info: Share: '//$computername/$share' failed to mount: $error" -display :$display &
+		rmdir "$HOME/$dir" >/dev/null 2>/dev/null #JJK: Remove mount point if empty
 	fi
 }
 
@@ -1415,6 +1512,12 @@
 	# this will also setup the userspace cupsd
 	export CUPS_SERVER=$(node_cupsd_get_socket)
 	
+#JJK: The following if-stanza kludge added to enable printing when smbport=cifs
+#JJK: since smb printing won't work when forwarded over port 445
+	if [ "$SAMBA_MOUNT_SHARE_PROTOCOL" = "cifs" ] ; then
+		let port=$port+$SMBPORT_OFFSET
+	fi
+
 	if [ "$type" = "smb" ]
 	then
 		if [ -x "$CUPS_BACKEND/nxsmb" ]
@@ -1443,6 +1546,9 @@
 
 	if [ "$ENABLE_CUPS_SEAMLESS" != "1" ]
 	then
+        #JJK: Export the following variables for use by nxdialog/nxprint
+        #JJK: Note they are also exported in nxdialog but doesn't help there
+	    export ENABLE_FOOMATIC COMMAND_FOOMATIC PPD_DIR
 		MODEL=$($PATH_BIN/nxdialog -printer "$NAME" -display :$display)
 		[ -z "$MODEL" -o "$MODEL" = "cancel: aborted" ] && return
 	else
@@ -1450,7 +1556,11 @@
 		MODEL="download_cached"
 	fi
 	
-	PUBLIC="-u allow:$USER"
+#JJK: I like to also allow 'guest' so you can do things like print
+#JJK: testpages from the CUPS web interface. Note this is required
+#JJK: even for the original user to print test pages	
+#JJK:	PUBLIC="-u allow:$USER"
+	PUBLIC="-u allow:$USER,guest"	
 	[ "$public" == "1" ] && PUBLIC=""
 
 	if [ "$MODEL" = "download_new" -o "$MODEL" = "download_cached" ]
diff -Naur freenx-server-0.7.3/nxprint freenx-server.svn613.plusfixes/nxprint
--- freenx-server-0.7.3/nxprint	2008-03-11 00:01:03.000000000 +0100
+++ freenx-server.svn613.plusfixes/nxprint	2009-07-25 17:32:00.000000000 +0200
@@ -51,7 +51,8 @@
 	if [ -z "$(find $UTILITY_DRIVERS_CACHE.all -mmin -60 2> /dev/null)" ]
 	then
 		{ 
-		cd /usr/share/ppd/
+#JJK:		cd /usr/share/ppd/
+		cd $PPD_DIR
 		awk -F '"' '/\*Manufacturer:/ { a[FILENAME]=$2 }
 			    /\*NickName:/ { b[FILENAME]=$2 } 
 			    END { 
diff -Naur freenx-server-0.7.3/nxredir/nxsmb freenx-server.svn613.plusfixes/nxredir/nxsmb
--- freenx-server-0.7.3/nxredir/nxsmb	2008-03-14 21:52:47.000000000 +0100
+++ freenx-server.svn613.plusfixes/nxredir/nxsmb	2009-07-25 18:15:06.000000000 +0200
@@ -18,6 +18,11 @@
 PROTOCOL=$(echo $DEVICE_URI | cut -d/ -f4)
 PRINTER=$(echo $DEVICE_URI | cut -d/ -f5)
 
+if [ "$#" -eq 0 ]
+then
+	exit 0
+fi
+
 if [ -z "$PRINTER" ] # old style setup
 then
 	echo "Warning: Not using nxredir library. The DEVICE_URI is not in the right format."
diff -Naur freenx-server-0.7.3/nxserver freenx-server.svn613.plusfixes/nxserver
--- freenx-server-0.7.3/nxserver	2008-08-22 02:44:43.000000000 +0200
+++ freenx-server.svn613.plusfixes/nxserver	2009-07-25 21:49:06.000000000 +0200
@@ -11,12 +11,28 @@
 #
 # License: GNU GPL, version 2
 #
-# SVN: $Id: nxserver 580 2008-08-22 00:44:43Z fabianx $
+# SVN: $Id: nxserver 612 2008-08-25 03:28:15Z fabianx $
 #
 
 # Read the config file
 . $(PATH=$(cd $(dirname $0) && pwd):$PATH which nxloadconfig) --
 
+if test ! -e $NX_ETC_DIR/users.id_dsa; then
+  $COMMAND_SSH_KEYGEN -q -t dsa -N "" -f $NX_ETC_DIR/users.id_dsa
+fi
+
+if test ! -e $NX_ETC_DIR/client.id_dsa.key -o ! -e $NX_ETC_DIR/server.id_dsa.pub.key; then
+  $COMMAND_SSH_KEYGEN -q -t dsa -N "" -f $NX_ETC_DIR/local.id_dsa
+  mv -f $NX_ETC_DIR/local.id_dsa $NX_ETC_DIR/client.id_dsa.key
+  mv -f $NX_ETC_DIR/local.id_dsa.pub $NX_ETC_DIR/server.id_dsa.pub.key
+  chmod 0600 $NX_ETC_DIR/client.id_dsa.key $NX_ETC_DIR/server.id_dsa.pub.key
+fi
+
+if test ! -s $NX_HOME_DIR/.ssh/known_hosts -a -e /etc/ssh/ssh_host_rsa_key.pub; then
+  echo -n "127.0.0.1 " > $NX_HOME_DIR/.ssh/known_hosts
+  cat /etc/ssh/ssh_host_rsa_key.pub >> $NX_HOME_DIR/.ssh/known_hosts 2>/dev/null
+fi
+
 # following two functions are Copyright by Klaus Knopper
 
 stringinstring(){
@@ -1192,7 +1208,7 @@
 	# Lock held
 
 	SERVER_LB_NR=$(cat $NX_SESS_DIR/round-robin 2>/dev/null)
-	let SERVER_LB_NR=(SERVER_LB_NR+1) % SERVER_LB_NR_OF_HOSTS
+	let SERVER_LB_NR=(SERVER_LB_NR+1)%SERVER_LB_NR_OF_HOSTS
 	echo $SERVER_LB_NR >$NX_SESS_DIR/round-robin
 
 	# Exit critical section
@@ -1436,7 +1452,7 @@
 			done
 
 			# Check if there is already an agent running on that display on that host
-			let AGENT_DISPLAY=$SESS_DISPLAY+6000
+			let AGENT_DISPLAY=$SESS_DISPLAY-$DISPLAY_BASE+6000
 			if $COMMAND_NETCAT -z "$SERVER_HOST" $AGENT_DISPLAY 2>/dev/null
 			then
 				log 2 "Warning: Stray nxagent without .nX$SESS_DISPLAY-lock found on host:port $SERVER_HOST:$AGENT_DISPLAY."
@@ -1961,71 +1977,71 @@
 	session_history "$user" "$sessid"
 }
 
-cmd_terminate()
+cmd_execute()
+{
+	cmd_host="$1"
+	cmd_user="$2"
+	cmd_cmd="$3"
+
+	if [ "$ENABLE_USERMODE_AUTHENTICATION" = "1" ]
+	then
+		sh -c "$cmd_cmd"
+	elif [ "$cmd_host" = "127.0.0.1" -o "$cmd_host" = "localhost" ]
+	then
+		su - "$cmd_user" -c "$cmd_cmd"
+	else
+		ssh "$cmd_host" su - "$cmd_user" -c "'$cmd_cmd'"
+	fi
+}
+
+cmd_terminate_or_send()
 {
-	CMD_PARAMS=$(cmd_parse_3_params "$2")
-	[ -z "$CMD_PARAMS" ] && exit 1
-	for i in $CMD_PARAMS;
+	CMD="$1"
+
+	if [ "$CMD" = "--broadcast" ]
+	then
+		CMD_PARAMS=$(session_find_all)
+		[ -z "$CMD_PARAMS" ] && cmd_abort "Error: No running session could be found."
+	else
+		CMD_PARAMS=$(cmd_parse_3_params "$2")
+		[ -z "$CMD_PARAMS" ] && exit 1
+		shift
+	fi
+	shift
+
+	for i in $CMD_PARAMS
 	do
 			CMDLINE=$(session_get_cmdline $i)
 			cmd_sessionid=$(getparam sessionId)
+			cmd_display=$(getparam display)
 			cmd_user=$(getparam userName)
 			cmd_type=$(getparam type)
 			cmd_status=$(getparam status)
+			cmd_host=$(getparam host)
 
 			# is it a "good" session?
-			case "$1" in 
+			case "$CMD" in 
 			--suspend)
 				if [ "$cmd_status" = "Running" ] && stringinstring "unix-" "$cmd_type"
 				then
-					echo "sessionid=$cmd_sessionid" | su - "$cmd_user" -c "$PATH_BIN/nxnode --suspend"
+					echo "sessionid=$cmd_sessionid" | cmd_execute "$cmd_host" "$cmd_user" "$PATH_BIN/nxnode --suspend"
 				fi
 			;;
 			--terminate)
-				echo "sessionid=$cmd_sessionid" | su - "$cmd_user" -c "$PATH_BIN/nxnode --terminate"
+				echo "sessionid=$cmd_sessionid" | cmd_execute "$cmd_host" "$cmd_user" "$PATH_BIN/nxnode --terminate"
 			;;
 			--force-terminate)
-				echo "sessionid=$cmd_sessionid" | su - "$cmd_user" -c "$PATH_BIN/nxnode --terminate"
+				echo "sessionid=$cmd_sessionid" | cmd_execute "$cmd_host" "$cmd_user" "$PATH_BIN/nxnode --terminate"
 				session_close $cmd_sessionid
 			;;
-			esac
-	done
-
-}
-
-cmd_send()
-{
-	if [ "$1" = "--broadcast" ]
-	then
-	  CMD_PARAMS=$(session_find_all)
-	  [ -z "$CMD_PARAMS" ] && cmd_abort "Error: No running session could be found."
-	else
-	  CMD_PARAMS=$(cmd_parse_3_params "$2")
-	  [ -z "$CMD_PARAMS" ] && exit 1
-	  shift
-	fi
-	shift
-	for i in $CMD_PARAMS;
-	do
-			CMDLINE=$(session_get_cmdline $i)
-			cmd_display=$(getparam display)
-			cmd_user=$(getparam userName)
-			cmd_type=$(getparam type)
-			cmd_status=$(getparam status)
-			cmd_host=$(getparam host)
-
-			# is it a "good" session?
-			if [ "$cmd_status" = "Running" ] && stringinstring "unix-" "$cmd_type"
-			then
-				if [ "$cmd_host" = "127.0.0.1" -o "$cmd_host" = "localhost" ]
+			--send|--broadcast)
+				# is it a "good" session?
+				if [ "$cmd_status" = "Running" ] && stringinstring "unix-" "$cmd_type"
 				then
-					su - "$cmd_user" -c "$PATH_BIN/nxdialog --dialog ok --caption \"NX Administrator Message\" --message \"$@\" -display \":$cmd_display\" &"
-				else
-					ssh $cmd_host su - "$cmd_user" -c "'$PATH_BIN/nxdialog --dialog ok --caption \"NX Administrator Message\" --message \"$@\" -display \":$cmd_display\" &'"
+					cmd_execute "$cmd_host" "$cmd_user" "$PATH_BIN/nxdialog --dialog ok --caption \"NX Administrator Message\" --message \"$@\" -display \":$cmd_display\" &"
 				fi
-			fi
+			esac
 	done
-	#nxnode_start --send "$CMD_PARAMS"
 }
 
 #
@@ -2099,13 +2115,13 @@
 		cmd_history "$@"
 	;;
 	--terminate|--suspend|--force-terminate)
-		cmd_terminate "$@"
+		cmd_terminate_or_send "$@"
 	;;
 	--cleanup)
-		cmd_terminate "--force-terminate" "*"
+		cmd_terminate_or_send "--force-terminate" "*"
 	;;
 	--send|--broadcast)
-		cmd_send "$@"
+		cmd_terminate_or_send "$@"
 	;;
 	*)
 		cmd_abort "Error: Function $CMD not implemented yet."


Index: freenx-server.spec
===================================================================
RCS file: /cvs/extras/rpms/freenx-server/devel/freenx-server.spec,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -p -r1.7 -r1.8
--- freenx-server.spec	24 Jul 2009 23:10:47 -0000	1.7
+++ freenx-server.spec	25 Jul 2009 22:29:31 -0000	1.8
@@ -1,3 +1,5 @@
+%bcond_with oldx11
+
 %define _pkglibdir %{_libdir}/nx
 %define _pkgdatadir %{_datadir}/nx
 %define _pkglibexecdir %{_libexecdir}/nx
@@ -11,15 +13,20 @@ Group: Applications/Internet
 URL: http://freenx.berlios.de/
 Source0: http://download.berlios.de/freenx/%{name}-%{version}.tar.gz
 Source1: freenx.logrotate
-Patch0: freenx-server-0.7.2-sharing_and_multimedia_fixes.patch
+Patch0: freenx-server-0.7.3-fixes.patch
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
 BuildRequires: imake, redhat-release
 Requires: nx, %{_pkglibdir}
 Requires: openssh-server nc expect which perl
 Requires: xorg-x11-server-Xorg xorg-x11-apps
 Requires: /usr/lib/cups/backend
+%if %{with oldx11}
+Requires: fonts-xorg-base
+%else
+Requires: xorg-x11-fonts-misc
+%endif
 
-Obsoletes: freenx <= %{version}-%{release}
+Obsoletes: freenx < %{version}-%{release}
 Provides: freenx = %{version}-%{release}
 
 %description
@@ -30,7 +37,7 @@ under the GPL. FreeNX-server is a GPL im
 
 %prep
 %setup -q
-%patch0 -p1 -b .sharing_and_multimedia
+%patch0 -p1 -b .fixes
 
 sed -i -e's,\$NX_DIR/bin,%{_pkglibexecdir},g'\
   -e's,\$NX_DIR/lib,%{_pkglibdir},g'\
@@ -45,12 +52,21 @@ make
 %install
 rm -rf %{buildroot}
 make install DESTDIR=%{buildroot} NX_ETC_DIR=/etc/nxserver
+cp -a %{buildroot}/etc/nxserver/node.conf.sample \
+      %{buildroot}/etc/nxserver/node.conf
+
+touch \
+ %{buildroot}/etc/nxserver/users.id_dsa \
+ %{buildroot}/etc/nxserver/users.id_dsa.pub \
+ %{buildroot}/etc/nxserver/client.id_dsa.key \
+ %{buildroot}/etc/nxserver/server.id_dsa.pub.key
 
+# Create the nx user home
 mkdir -p %{buildroot}/var/lib/nxserver/home/.ssh
 ln -s /etc/nxserver/server.id_dsa.pub.key \
-  %{buildroot}/var/lib/nxserver/home/.ssh/authorized_keys
+  %{buildroot}/var/lib/nxserver/home/.ssh/authorized_keys2
 chmod 0700 %{buildroot}/var/lib/nxserver/home{,/.ssh}
-
+touch %{buildroot}/var/lib/nxserver/home/.ssh/known_hosts
 mkdir -p %{buildroot}/var/lib/nxserver/db/closed
 mkdir -p %{buildroot}/var/lib/nxserver/db/running
 mkdir -p %{buildroot}/var/lib/nxserver/db/failed
@@ -60,7 +76,10 @@ mkdir -p %{buildroot}/var/log/nx
 chmod 0700 %{buildroot}/var/log/nx
 
 mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d
-cp -pr %SOURCE1 %{buildroot}%{_sysconfdir}/logrotate.d/freenx-server
+install -p %{SOURCE1} %{buildroot}%{_sysconfdir}/logrotate.d/freenx-server
+
+mkdir -p %{buildroot}%{_sysconfdir}/init.d
+install -p init.d/freenx-server %{buildroot}%{_sysconfdir}/init.d/freenx-server
 
 %clean
 rm -rf %{buildroot}
@@ -70,21 +89,16 @@ rm -rf %{buildroot}
   || %{_sbindir}/usermod -d /var/lib/nxserver/home -s %{_pkglibexecdir}/nxserver nx 2>/dev/null || :
 
 %post
-if test ! -e /etc/nxserver/users.id_dsa; then
-  %{_bindir}/ssh-keygen -q -t dsa -N "" -f /etc/nxserver/users.id_dsa
+/sbin/chkconfig --add freenx-server
+# Not a real service, just to make sure we have /tmp/.X11-unix
+/sbin/service freenx-server start > /dev/null 2>&1
+
+%preun
+if [ $1 = 0 ]; then
+        /sbin/service freenx-server stop > /dev/null 2>&1
+        /sbin/chkconfig --del freenx-server
 fi
 
-if ! test -e /etc/nxserver/client.id_dsa.key -a -e /etc/nxserver/server.id_dsa.pub.key; then
-  %{_bindir}/ssh-keygen -q -t dsa -N "" -f /etc/nxserver/local.id_dsa
-  mv -f /etc/nxserver/local.id_dsa /etc/nxserver/client.id_dsa.key
-  mv -f /etc/nxserver/local.id_dsa.pub /etc/nxserver/server.id_dsa.pub.key
-fi
-
-echo -n "127.0.0.1 " > /var/lib/nxserver/home/.ssh/known_hosts
-# We do depend on openssh-server, but package installation != key
-# creation time. See also Fedora bug #235592
-cat /etc/ssh/ssh_host_rsa_key.pub >> /var/lib/nxserver/home/.ssh/known_hosts 2>/dev/null
-chown nx:root /var/lib/nxserver/home/.ssh/known_hosts
 
 %files
 %defattr(-,root,root,-)
@@ -93,18 +107,31 @@ chown nx:root /var/lib/nxserver/home/.ss
 %{_pkglibexecdir}/*
 %{_pkglibdir}/*
 /usr/lib/cups/backend/nxsmb
-%defattr(-,nx,root,-)
-/etc/nxserver
-/var/lib/nxserver
-/var/log/nx
+%dir %attr(-,nx,root) /etc/nxserver
+/etc/nxserver/node.conf.sample
+%config(noreplace) /etc/nxserver/node.conf
+%ghost %attr(-,nx,root) /etc/nxserver/users.id_dsa
+%ghost %attr(-,nx,root) /etc/nxserver/users.id_dsa.pub
+%ghost %attr(-,nx,root) /etc/nxserver/client.id_dsa.key
+%ghost %attr(-,nx,root) /etc/nxserver/server.id_dsa.pub.key
+%attr(-,nx,root) /var/lib/nxserver
+%ghost %attr(-,nx,root) /var/lib/nxserver/home/.ssh/known_hosts
+%attr(-,nx,root) /var/log/nx
 %config(noreplace) %{_sysconfdir}/logrotate.d/freenx-server
+%{_sysconfdir}/init.d/freenx-server
 
 %changelog
-* Fri Jul 24 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.7.3-13
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
-
-* Tue Feb 24 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.7.3-12
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+* Sat Jul 25 2009 Axel Thimm <Axel.Thimm at ATrpms.net> - 0.7.3-13
+- Use some patches from up to svn 613 (dated 2008-09-01).
+- Add keymap.patch from Fedora bug #506470.
+- Add cups listing patch from Fedora bug #509879.
+- Add dependency for misc fonts Fedora bug #467494.
+- Fix stale X11 displays from Fedora bug #492402.
+- Fix authorized_keys*2* syncing, may fix Fedora bug #503822.
+- Move %post parts to nxserver startup, fixes Fedora bug #474720.
+- Copy ssh keys on first start, fixes Fedora bug #235592.
+- Add init script with CentOS patches that ensures /tmp/.X11-unix
+  always exists, fixes Fedora bug #437655.
 
 * Sun Aug 24 2008 Axel Thimm <Axel.Thimm at ATrpms.net> - 0.7.3-11
 - Rebase patch to 0.7.2 to avoid fuzz=0 rejection on recent rpm.


--- freenx-server-0.7.2-sharing_and_multimedia_fixes.patch DELETED ---




More information about the scm-commits mailing list