[Initng-svn] r2933 - initng/initfiles/daemon

svn at initng.thinktux.net svn at initng.thinktux.net
Fri Feb 3 02:34:25 CET 2006


Author: deac
Date: Fri Feb  3 02:34:25 2006
New Revision: 2933

Modified:
   initng/initfiles/daemon/vdr.ii
Log:
vdr: pure sh-code instead suid-/env(_file)-plugins, which does not works at the moment.

Modified: initng/initfiles/daemon/vdr.ii
==============================================================================
--- initng/initfiles/daemon/vdr.ii	(original)
+++ initng/initfiles/daemon/vdr.ii	Fri Feb  3 02:34:25 2006
@@ -1,25 +1,45 @@
 daemon daemon/vdr {
 	need = system/bootmisc;
 	use = daemon/lircd;
-	env LOGNAME=vdr;
-	env USER=vdr;
-	env GROUP=video;
-	env HOME=/var/vdr;
-	env LANG=de_DE;
-	env EPGFILE=${HOME}/epg.data;
-	env SVDRP_PORT=2001;
-	env VDR_EXTRA_OPTIONS=;
-	env_file = /etc/conf.d/vdr;
-	suid = ${USER};
-	sgid = ${GROUP};
-	chdir = ${HOME};
 	respawn;
 	stdall = /var/log/vdr.log;
 	script daemon = {
+		q() {
+			echo "'\''${*}'\''"
+		}
+		LOGNAME=vdr
+		USER=vdr
+		GROUP=video
+		HOME=/var/vdr
+		LANG=de_DE
+		EPGFILE=${HOME}/epg.data
+		CONFIG=/etc/vdr
+		SVDRP_PORT=2001
+		VDR_EXTRA_OPTIONS=
+		. /etc/conf.d/vdr
 		for plugin in ${PLUGINS}
 		do
-			eval plugins=\"\${plugins} --plugin=\'${plugin} \${plugin_${plugin}}\'\"
+			# no joke!
+			eval "plugins=\"\${plugins} --plugin=$(q "\${plugin} \${plugin_${plugin}}")\""
 		done
-		eval exec @/usr/bin/vdr@ --config="'${CONFIG}'" --video="'${HOME}'" --epgfile="'${EPGFILE}'" --port="'${SVDRP_PORT}'" ${VDR_EXTRA_OPTIONS} ${plugins}
+		cd "${HOME}"
+		export LOGNAME USER GROUP HOME LANG
+		# why too complicated? su has a new environment,
+		# HOME for example is definitiv an other value.
+		# so we replace first all vars via eval and then we enter su.
+		# no variable should be replaced!
+		eval "exec @/bin/su@ '${USER}' -c ' \
+			HOME=$(q "${HOME}") \
+			LANG=$(q "${LANG}") \
+			USER=$(q "${USER}") \
+			GROUP=$(q "${GROUP}") \
+			LOGNAME=$(q "${LOGNAME}") \
+			@/usr/bin/vdr@ \
+				--config=$(q "${CONFIG}") \
+				--video=$(q "${HOME}") \
+				--epgfile=$(q "${EPGFILE}") \
+				--port=$(q "${SVDRP_PORT}") \
+				${VDR_EXTRA_OPTIONS} \
+				${plugins}'"
 	};
 }


More information about the Initng-svn mailing list