]> git.pld-linux.org Git - packages/systemd.git/blob - pld-rc-inetd-generator.sh
- don't use name macro in trigger conditions
[packages/systemd.git] / pld-rc-inetd-generator.sh
1 #!/bin/sh
2 #
3 # TODO:
4 #       pre_start_service() and pre_stop_service()
5 #
6 parse_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
91 SERVICES=$(ls -d /etc/sysconfig/rc-inetd/* 2>/dev/null | grep -Ev '.*(\.rpm(save|new|orig)|~|CVS)')
92 for 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
103
104         # Read defaults...
105         . /etc/sysconfig/rc-inetd.conf
106
107         # ...and then config of *this* service.
108         . $i
109
110         CURRENT_SERVICE=$(basename $i)
111         DONT_PARSE=0
112         # check if service is in deny list ?
113         for i in $DENY_SERVICES; do
114                 if [ $i = $CURRENT_SERVICE ]; then
115                         DONT_PARSE=1
116                 fi
117         done
118         [ $DONT_PARSE -eq 0 ] || continue
119
120         parse_one_service
121 done
This page took 0.039044 seconds and 3 git commands to generate.