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