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