packages: systemd/pld-rc-inetd-generator.sh - create/remove unit files in n...

baggins baggins at pld-linux.org
Sun Jun 10 19:21:31 CEST 2012


Author: baggins                      Date: Sun Jun 10 17:21:31 2012 GMT
Module: packages                      Tag: HEAD
---- Log message:
- create/remove unit files in normal generator directory
- prefix service and socket units with "rc-inetd-"
- ensure that exit status of the per-connection processes is forgotten, to
  make sure that systemd won't keep around information for numerous possibly
  failed connections
- nowait means "Accept=true" (http://0pointer.de/blog/projects/inetd.html)
- properly set stdin and stderr

---- Files affected:
packages/systemd:
   pld-rc-inetd-generator.sh (1.3 -> 1.4) 

---- Diffs:

================================================================
Index: packages/systemd/pld-rc-inetd-generator.sh
diff -u packages/systemd/pld-rc-inetd-generator.sh:1.3 packages/systemd/pld-rc-inetd-generator.sh:1.4
--- packages/systemd/pld-rc-inetd-generator.sh:1.3	Sun Jun 10 13:07:25 2012
+++ packages/systemd/pld-rc-inetd-generator.sh	Sun Jun 10 19:21:12 2012
@@ -1,8 +1,8 @@
 #!/bin/sh
 
 parse_one_service() {
-	SOCKET_FILE="${CURRENT_SERVICE}.socket"
-	SERVICE_FILE="${CURRENT_SERVICE}.service"
+	SOCKET_FILE="$1/rc-inetd-${CURRENT_SERVICE}.socket"
+	SERVICE_FILE="$1/rc-inetd-${CURRENT_SERVICE}@.service"
 
 	case "$FAMILY" in
 		ipv4)
@@ -35,20 +35,22 @@
 	echo "[Unit]" >>$SERVICE_FILE
 	echo "Description=$SERVICE_NAME" >>$SERVICE_FILE
 	echo >>$SERVICE_FILE
+
 	echo "[Service]" >>$SERVICE_FILE
+	echo "StandardInput=socket" >>$SERVICE_FILE
+	echo "StandardError=syslog" >>$SERVICE_FILE
 
 	echo "[Unit]" >>$SOCKET_FILE
 	echo "Description=$SERVICE_NAME" >>$SOCKET_FILE
 	echo >>$SOCKET_FILE
+
 	echo "[Socket]" >>$SOCKET_FILE
 	echo $__LISTEN >>$SOCKET_FILE
 
 	for i in $FLAGS; do
 		case "$i" in
-			wait)
-				echo "Accept=true" >>$SOCKET_FILE
-				;;
 			nowait)
+				echo "Accept=true" >>$SOCKET_FILE
 				[ "${MAX_CONNECTIONS:-n}" = "n" ] || echo "MaxConnections=$MAX_CONNECTIONS" >>$SOCKET_FILE
 				;;
 			*)
@@ -68,32 +70,32 @@
 	[ "${NICE:-none}" = "none" ] || echo "Nice=$NICE" >>$SERVICE_FILE
 	[ "${CHROOT:-none}" = "none" ] || echo "RootDirectory=$CHROOT" >>$SERVICE_FILE
 	[ "${ENV:-none}" = "none" ] || echo "Environment=$ENV" >>$SERVICE_FILE
-	echo -n "ExecStart=$DAEMON" >>$SERVICE_FILE
+	echo -n "ExecStart=-$DAEMON" >>$SERVICE_FILE
 	if [ "${DAEMONARGS:-none}" = "none" ] ; then
 		echo >>$SERVICE_FILE
 	else
-		echo "$DAEMONARGS" >>$SERVICE_FILE
+		echo " $DAEMONARGS" >>$SERVICE_FILE
 	fi
 
 	if typeset -f pre_start_service 2>&1 >/dev/null ; then
-		echo "#!/bin/sh" >${CURRENT_SERVICE}_pre_start.sh
-		typeset -f pre_start_service >>${CURRENT_SERVICE}_pre_start.sh
-		echo "pre_start_service" >>${CURRENT_SERVICE}_pre_start.sh
-		chmod u+x ${CURRENT_SERVICE}_pre_start.sh
-		echo "ExecStartPre=${CURRENT_SERVICE}_pre_start.sh" >>$SERVICE_FILE
+		echo "#!/bin/sh" >/run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh
+		typeset -f pre_start_service >>/run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh
+		echo "pre_start_service >&2" >>/run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh
+		chmod u+x /run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh
+		echo "ExecStartPre=-/run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh" >>$SERVICE_FILE
 	fi
 
 	if typeset -f pre_stop_service 2>&1 >/dev/null ; then
-		echo "#!/bin/sh" >${CURRENT_SERVICE}_post_stop.sh
-		typeset -f pre_stop_service >>${CURRENT_SERVICE}_post_stop.sh
-		echo "pre_stop_service" >>${CURRENT_SERVICE}_post_stop.sh
-		chmod u+x ${CURRENT_SERVICE}_post_stop.sh
-		echo "ExecStopPost=${CURRENT_SERVICE}_post_stop.sh" >>$SERVICE_FILE
+		echo "#!/bin/sh" >/run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh
+		typeset -f pre_stop_service >>/run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh
+		echo "pre_stop_service >&2" >>/run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh
+		chmod u+x /run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh
+		echo "ExecStopPost=-/run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh" >>$SERVICE_FILE
 	fi
 
 	echo >>$SERVICE_FILE
 	echo "[Install]" >>$SERVICE_FILE
-	echo "Also=${CURRENT_SERVICE}.socket" >>$SERVICE_FILE
+	echo "Also=rc-inetd-${CURRENT_SERVICE}.socket" >>$SERVICE_FILE
 	echo >>$SERVICE_FILE
 
 	echo >>$SOCKET_FILE
@@ -101,6 +103,22 @@
 	echo "WantedBy=sockets.target" >>$SOCKET_FILE
 }
 
+normalunitdir=${1:-/tmp}
+earlyunitdir=${2:-/tmp}
+lateunitdir=${3:-/tmp}
+
+destunitdir=$normalunitdir
+
+rm -f $destunitdir/rc-inetd-*.service \
+	$destunitdir/rc-inetd-*.socket \
+	$destunitdir/sockets.target.wants/rc-inetd-*.socket \
+	/run/rc-inetd/*
+
+mkdir -p $destunitdir/sockets.target.wants \
+	/run/rc-inetd
+
+[ "$1" = "stop" ] && exit 0
+
 SERVICES=$(ls -d /etc/sysconfig/rc-inetd/* 2>/dev/null | grep -Ev '.*(\.rpm(save|new|orig)|~|CVS)')
 for i in $SERVICES; do
 	# unset everything
@@ -130,5 +148,10 @@
 	done
 	[ $DONT_PARSE -eq 0 ] || continue
 
-	parse_one_service
+	parse_one_service $destunitdir
+
+	if [ -f $destunitdir/rc-inetd-${CURRENT_SERVICE}.socket ]; then
+		ln -sf "$destunitdir/rc-inetd-${CURRENT_SERVICE}.socket" \
+			"$destunitdir/sockets.target.wants/rc-inetd-${CURRENT_SERVICE}.socket"
+	fi
 done
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/packages/systemd/pld-rc-inetd-generator.sh?r1=1.3&r2=1.4



More information about the pld-cvs-commit mailing list