]> git.pld-linux.org Git - packages/systemd.git/blame - pld-rc-inetd-generator.sh
up to 246.4
[packages/systemd.git] / pld-rc-inetd-generator.sh
CommitLineData
321b94b7 1#!/bin/sh
daa2a0ed 2
321b94b7 3parse_one_service() {
2cdc32ff 4 SOCKET_FILE="$1/rc-inetd-${CURRENT_SERVICE}.socket"
321b94b7
JR
5
6 case "$FAMILY" in
7 ipv4)
8 PORT="0.0.0.0:$PORT"
9 ;;
10 ipv6)
11 PORT="[::]:$PORT"
12 ;;
13 *)
14 esac
15
16 case "$SOCK_TYPE" in
17 stream)
18 [ "$PROTOCOL" = "tcp" ] || return
19 __LISTEN="ListenStream=$PORT"
7ce50f59 20 SERVICE_FILE="$1/rc-inetd-${CURRENT_SERVICE}@.service"
321b94b7
JR
21 ;;
22 dgram)
23 [ "$PROTOCOL" = "udp" ] || return
24 __LISTEN="ListenDatagram=$PORT"
7ce50f59 25 SERVICE_FILE="$1/rc-inetd-${CURRENT_SERVICE}.service"
321b94b7
JR
26 ;;
27 seqpacket)
28 __LISTEN="ListenSequentialPacket=$PORT"
7ce50f59 29 SERVICE_FILE="$1/rc-inetd-${CURRENT_SERVICE}.service"
321b94b7
JR
30 ;;
31 *)
32 return
33 esac
34 :>$SOCKET_FILE
35 :>$SERVICE_FILE
36
37 echo "[Unit]" >>$SERVICE_FILE
38 echo "Description=$SERVICE_NAME" >>$SERVICE_FILE
39 echo >>$SERVICE_FILE
2cdc32ff 40
321b94b7 41 echo "[Service]" >>$SERVICE_FILE
2cdc32ff
JR
42 echo "StandardInput=socket" >>$SERVICE_FILE
43 echo "StandardError=syslog" >>$SERVICE_FILE
321b94b7
JR
44
45 echo "[Unit]" >>$SOCKET_FILE
46 echo "Description=$SERVICE_NAME" >>$SOCKET_FILE
47 echo >>$SOCKET_FILE
2cdc32ff 48
321b94b7
JR
49 echo "[Socket]" >>$SOCKET_FILE
50 echo $__LISTEN >>$SOCKET_FILE
51
52 for i in $FLAGS; do
53 case "$i" in
321b94b7 54 nowait)
2cdc32ff 55 echo "Accept=true" >>$SOCKET_FILE
321b94b7
JR
56 [ "${MAX_CONNECTIONS:-n}" = "n" ] || echo "MaxConnections=$MAX_CONNECTIONS" >>$SOCKET_FILE
57 ;;
58 *)
59 ;;
60 esac
61 done
62
63 if [ "$SERVER" = "tcpd" ] ; then
64 echo "TCPWrapName=$SERVICE_NAME" >>$SOCKET_FILE
65 elif [ $SERVER != $DAEMON ]; then
66 DAEMON="$SERVER $DAEMON"
67 fi
68 [ "${INTERFACE:-none}" = "none" ] || echo "BindToDevice=$INTERFACE" >>$SOCKET_FILE
69
70 echo "User=$USER" >>$SERVICE_FILE
71 [ "${GROUP:-none}" = "none" ] || echo "Group=$GROUP" >>$SERVICE_FILE
72 [ "${NICE:-none}" = "none" ] || echo "Nice=$NICE" >>$SERVICE_FILE
73 [ "${CHROOT:-none}" = "none" ] || echo "RootDirectory=$CHROOT" >>$SERVICE_FILE
74 [ "${ENV:-none}" = "none" ] || echo "Environment=$ENV" >>$SERVICE_FILE
2cdc32ff 75 echo -n "ExecStart=-$DAEMON" >>$SERVICE_FILE
321b94b7
JR
76 if [ "${DAEMONARGS:-none}" = "none" ] ; then
77 echo >>$SERVICE_FILE
78 else
2cdc32ff 79 echo " $DAEMONARGS" >>$SERVICE_FILE
321b94b7
JR
80 fi
81
daa2a0ed 82 if typeset -f pre_start_service 2>&1 >/dev/null ; then
2cdc32ff
JR
83 echo "#!/bin/sh" >/run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh
84 typeset -f pre_start_service >>/run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh
85 echo "pre_start_service >&2" >>/run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh
86 chmod u+x /run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh
87 echo "ExecStartPre=-/run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh" >>$SERVICE_FILE
daa2a0ed
JR
88 fi
89
90 if typeset -f pre_stop_service 2>&1 >/dev/null ; then
2cdc32ff
JR
91 echo "#!/bin/sh" >/run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh
92 typeset -f pre_stop_service >>/run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh
93 echo "pre_stop_service >&2" >>/run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh
94 chmod u+x /run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh
95 echo "ExecStopPost=-/run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh" >>$SERVICE_FILE
daa2a0ed
JR
96 fi
97
321b94b7
JR
98 echo >>$SERVICE_FILE
99 echo "[Install]" >>$SERVICE_FILE
2cdc32ff 100 echo "Also=rc-inetd-${CURRENT_SERVICE}.socket" >>$SERVICE_FILE
321b94b7
JR
101 echo >>$SERVICE_FILE
102
103 echo >>$SOCKET_FILE
104 echo "[Install]" >>$SOCKET_FILE
105 echo "WantedBy=sockets.target" >>$SOCKET_FILE
106}
107
2cdc32ff
JR
108normalunitdir=${1:-/tmp}
109earlyunitdir=${2:-/tmp}
110lateunitdir=${3:-/tmp}
111
112destunitdir=$normalunitdir
113
114rm -f $destunitdir/rc-inetd-*.service \
115 $destunitdir/rc-inetd-*.socket \
116 $destunitdir/sockets.target.wants/rc-inetd-*.socket \
117 /run/rc-inetd/*
118
119mkdir -p $destunitdir/sockets.target.wants \
120 /run/rc-inetd
121
28dacbf5 122SERVICES=$(ls -d /etc/sysconfig/rc-inetd/* 2>/dev/null | grep -Ev '.*(\.rpm(save|new|orig)|~|CVS)')
321b94b7
JR
123for i in $SERVICES; do
124 # unset everything
125 unset SERVICE_NAME SOCK_TYPE PROTOCOL PORT USER
126 unset DAEMON DAEMONARGS MAX_CONNECTIONS GROUP NICE
127 unset FAMILY INTERFACE CHROOT RPCNAME RPCVERSION
128 unset INITGROUPS BANNER ECHO FILTER ENV FLAGS
129 unset SERVER MAX_CONNECTIONS_PER_SOURCE
130 unset CONNECTIONS_PER_SECOND RPCNUMBER
131 unset BANNER_SUCCESS BANNER_FAILURE PASSENV
132 unset SERVICE_TYPE ACCESS_TIMES LOG_TYPE
133 unset LOG_SUCCESS LOG_FAILURE REDIRECT MAX_LOAD
28dacbf5 134
321b94b7
JR
135 # Read defaults...
136 . /etc/sysconfig/rc-inetd.conf
28dacbf5 137
321b94b7
JR
138 # ...and then config of *this* service.
139 . $i
28dacbf5
ER
140
141 CURRENT_SERVICE=$(basename $i)
321b94b7
JR
142 DONT_PARSE=0
143 # check if service is in deny list ?
28dacbf5
ER
144 for i in $DENY_SERVICES; do
145 if [ $i = $CURRENT_SERVICE ]; then
321b94b7
JR
146 DONT_PARSE=1
147 fi
148 done
149 [ $DONT_PARSE -eq 0 ] || continue
150
2cdc32ff
JR
151 parse_one_service $destunitdir
152
153 if [ -f $destunitdir/rc-inetd-${CURRENT_SERVICE}.socket ]; then
154 ln -sf "$destunitdir/rc-inetd-${CURRENT_SERVICE}.socket" \
155 "$destunitdir/sockets.target.wants/rc-inetd-${CURRENT_SERVICE}.socket"
156 fi
321b94b7 157done
This page took 0.046828 seconds and 4 git commands to generate.